Procedural Terrain & Lighting
University project · Graphics programming
This graphics project builds and renders two terrain representations in C++ using DirectX 11, Hieroglyph 3 and DirectXTK. One generates heights, normals and material weights over reusable grid segments, the other reads 16 bit height samples to construct an indexed landscape mesh. HLSL shaders blend snow, grass and rock textures and apply directional, point and spot lighting.
Separate closed Catmull-Rom splines control the spaceship and camera, with the camera tracking the ship while travelling along its own route. Additional scene features include a sky that blends between day and night textures, normal mapped planet materials, transparent cloud layers and geometry shader instancing. Manual camera controls allow the rendering features to be inspected directly.
Technical highlights
- Switch between sinusoidal terrain and a landscape generated from heightmap data.
- Blend snow, grass, and rock textures with directional, point and spot lighting.
- Animate the spaceship and camera along separate Catmull-Rom spline routes.
Technical details
Terrain and materials
The procedural landscape uses reusable grid segments with generated heights, normals and texture weights. The alternative terrain reads 16 bit height samples and builds an indexed mesh. HLSL materials blend snow, grass, and rock while applying the current lighting parameters.
Scene animation
Closed Catmull-Rom curves guide the spaceship and camera. The camera tracks the ship from its own route, with manual controls available for exploring the scene. The sky blends between day and night textures, while planet materials demonstrate normal mapping, transparent clouds, and geometry shader instancing.
Project context
Built on Hieroglyph 3 and DirectXTK. The project demonstrates scene and shader programming using those libraries rather than a rendering engine written from scratch.