Procedural Generation and Rendering Techniques for Underwater Environments
Macrae SMITH
Software Development
Procedural Generation and Rendering Techniques for Underwater Environments
In this project, I developed a real-time system for an endless, procedurally generated underwater world. My goal was to create an immersive experience that felt alive beneath the surface. I built systems to generate ocean terrain using Perlin noise, simulate wave motion with Gerstner waves, and drive fish behavior through boid algorithms, while adding movement and variation with dynamic vegetation. Additionally, I focused on the unique aspects of underwater lighting, implementing effects such as caustics and volumetric light rays to capture how light behaves in water.
I chose this project because it combined technical problem-solving with a strong visual direction. It gave me the opportunity to explore how math and graphics techniques can come together to create a believable environment.
This project strengthened my skills in graphics programming, optimization, and engine development. I gained hands-on experience with the DirectX 12 graphics API, managing CPU and GPU workloads, and building multi-threaded systems that support continuous world generation. I also focused on maintaining gameready performance while handling both large-scale environments and detailed rendering.
The techniques I developed are useful for games that rely on large or dynamic environments, providing a scalable way to create expansive worlds without relying entirely on handcrafted content.
98 SOFTWARE DEVELOPMENT