In my previous post, I introduced the idea of L-systems and how I used them to generate foliage procedurally. I quickly ran into performance issues, which I was able to address somewhat with frustum culling. In this post, I’ll explain how I further optimized the scene by using DirectX 12’s new mesh shader pipeline. I’ll also touch on my use of a Z-prepass, which mitigated some overdraw issues, especially with a large number of trees and leaves.| Sandilya Jandhyala
Procedurally generated bushes and trees are the latest addition to my engine. Although I used pre-made textures for the bark and leaves, the geometry for the trunk is generated entirely through code and each leaf is drawn separately through GPU instancing. This scene has some of the largest numbers I’ve ever had to deal with in any application: each tree has 467,856 triangles making up the trunk and branches and it comes with 30,600 leaves made of 4 triangles each.| Sandilya Jandhyala
I set out to create a water rendering system for Gradient, my DirectX 11 renderer project. As someone new to graphics programming, diving into water rendering has been both exciting and challenging. This blog post shares my experience building my first water rendering system. Wave modelling and generation One of the most important components of water rendering is deforming a mesh to simulate waves convincingly. A water surface is typically modeled as a height field, where the height of the me...| Sandilya Jandhyala