Beck Lavender

Game Programmer, UK

Menu

Skip to content
  • Home
  • About
  • Career
    • Playtonic Games
    • 22cans
  • Projects
    • Yooka-Laylee
    • The Zelda Dungeon Generator
    • Godus
    • More…
  • Education
  • Blog
  • Contact

Interactive 3D Environment

University Project

University Project: Interactive 3D environment created using Direct3D and C++. Very open brief allowing students to design their own environments as long as they were relatively large in scale, populated with both dynamic and static objects, allowed first/third person navigation, and contained interactive elements. Appropriate rendering techniques were implemented based on the environment chosen. Pair project, expansion on rendering engine created for Lights and Shadows project.

Our environment: Terrain begins desert and barren, but completing a block puzzle in the centre of the scene causes rain to fall. The terrain then becomes grassy, water level rises and plants grow.

FEATURES:
  • Reflection
  • Refraction
  • Shadow Mapping
  • Bump Mapping
  • Terrain Generation
  • Collision
  • First Person Navigation and Object Interaction
  • Bill Boarding
  • Day/Night cycle
    And more!

Tap on image to read feature description.

Click on image to read feature description.

REFRACTION: Texture created based on camera’s position and view of everything below the water. Everything above the water is clipped. Refraction and Reflection textures combined, based on Fresnel calculation with camera's height.
REFRACTION: Texture created based on camera’s position and view of everything below the water. Everything above the water is clipped. Refraction and Reflection textures combined, based on Fresnel calculation with camera’s height.
REFLECTION: Texture created using view matrix with inversed pitch and modified Y position. Everything on the opposite side of the reflective surface is clipped...
REFLECTION: Texture created using view matrix with inversed pitch and modified Y position. Everything on the opposite side of the reflective surface is clipped…
REFLECTION: ...Sampled based on position in relation to camera when rendering the water/mirror.
REFLECTION: …Sampled based on position in relation to camera when rendering the water/mirror.
SHADOW MAPPING: Scene rendered from light’s point of view, depth written to shadow map texture. Shadow map texture sampled in order to determine whether specific pixels are lit or in shadow (comparing depth in relation to camera to that in relation to light.)
SHADOW MAPPING: Scene rendered from light’s point of view, depth written to shadow map texture. Shadow map texture sampled in order to determine whether specific pixels are lit or in shadow (comparing depth in relation to camera to that in relation to light.)
BILL BOARDING: Rain texture is applied to a billboard which constantly updates its position/rotation based on the position and orientation of the camera. Alpha blending used to enable transparency.
BILL BOARDING: Rain texture is applied to a billboard which constantly updates its position/rotation based on the position and orientation of the camera. Alpha blending used to enable transparency.
COLLISION AND OBJECT INTERACTION: Collision spheres used for block/camera and block/block collision. To push a block, direction is determined based on position of camera in relation to block, and then block is translated accordingly.
COLLISION AND OBJECT INTERACTION: Collision spheres used for block/camera and block/block collision. To push a block, direction is determined based on position of camera in relation to block, and then block is translated accordingly.
Day/Night cycle achieved by lerping between two different sky dome textures. Barren/Lush transformation achieved in the same way.
Day/Night cycle achieved by lerping between two different sky dome textures. Barren/Lush transformation achieved in the same way.
TERRAIN GENERATION: Bases generated vertex heights on greyscale image. Darker areas produce a lower Y value and lighter areas higher...
TERRAIN GENERATION: Bases generated vertex heights on greyscale image. Darker areas produce a lower Y value and lighter areas higher…
TERRAIN GENERATION: ...Camera height based on corresponding height map value when traversing the map in first person view.
TERRAIN GENERATION: …Camera height based on corresponding height map value when traversing the map in first person view.
BUMP MAPPING: Normal map used to disturb normal on terrain and water surfaces...
BUMP MAPPING: Normal map used to disturb normal on terrain and water surfaces…
BUMP MAPPING: ...This is tiled in order to avoid stretch.
BUMP MAPPING: …This is tiled in order to avoid stretch.
BUMP MAPPING: On the water, two bump maps are applied, tiled and translated differently to create a ripple effect.
BUMP MAPPING: On the water, two bump maps are applied, tiled and translated differently to create a ripple effect.
Tree growth simulated by gradually increasing the number of indices rendered for each. Each tree is assigned a different random growth speed.
Tree growth simulated by gradually increasing the number of indices rendered for each. Each tree is assigned a different random growth speed.
Fish under water glow at night. Faked: Diffuse value altered based on time of day.
Fish under water glow at night. Faked: Diffuse value altered based on time of day.

Post navigation

← < 3D Software Renderer
Lights and Shadows > →
  • Email
  • LinkedIn
  • Twitter