← All works

Vulkan Grass Rendering

  • Rendering
  • C++
  • Vulkan
  • GLSL
  • Tessellation
  • Compute shaders

A grass simulator and renderer written against the Vulkan API. Each blade is a Bézier curve. A compute shader applies gravity, wind and recovery forces to every blade and culls the ones that do not contribute to the frame; tessellation shaders turn the remaining curves into geometry, with more detail close to the camera.

It follows the paper Responsive Real-Time Grass Rendering for General 3D Scenes by Jahrmann and Wimmer.

With 32,768 blades, orientation, view-frustum and distance culling together raise the frame rate from 70.2 to 228.2 FPS.

Level of detail

Culling

Performance