Key Features
-
Model loading
-
Materials and textures
-
Shadows and lighting
-
Blending and transparency
-
Skybox and camera motion
Controls
Camera
-
WASD — pan camera
-
Q,E — zoom in and our
-
O, P — tilt left and right
-
Mouse — move camera direction
-
C + (1), (2) or (3) — switch camera mode: ground, flying, fixed
Other:
-
R — wireframe mode
-
F — fullscreen mode
-
J + (1), (2), (3) or (4) — switch light types: point, directional, spot, or turn off
-
L — randomise diffuse colour
-
K +(1), (2) or (3) — switch shadow mode: double, soft shadows, or turn off
Challenges in development
This project tested my creativity and abilities as an architect and programmer.
The most difficult component was creating realistic shadows. And it's impossible to state that I did it flawlessly. The scene features two types of rendering shadows: "imposter" and planar shadows. While imposter is simply a static image rendered beneath the model, planar shadows are thrown by objects that use the point light source.
I was unable to blend the planar shadows with the ground due to a lack of shadow blending skills. As a workaround, I used the accumulation buffer for the existing shadow to generate a second layer that created a more transparent shadow from the second point light source.
This resulted in a cunning outcome. Because each shadow layer is rendered by two light sources, the illusion is that both layers are semi-transparent, but the area of overlap provides a darker layer.
Then, in addition to the "double shadow illusion," I used the same accumulation buffer technique to create "soft shadows."
This time, I produced two more layers, displacing them by a small amount from their original position to create the appearance of smoother edges from a distance. The only disadvantage was the performance cost.
(In depth report is provided with a downloadable link)



