Developed as a 2 week prototype during my time at Didimo.
The goal was to render and animate thousands of models in real-time while maintaining responsiveness and performance. To achieve this, all logic and animation were offloaded to the GPU using compute shaders and vertex animation textures.
Showcase of 20000 models rendered in real-time.
Key Systems in Action
Vertex Animation Textures (VAT)
Animates instanced meshes on the GPU using baked position and normal textures.
GPU-Based Instance Selection
A secondary unlit render pass encodes instance IDs into a render texture.
Mouse position is used to decode the selected instance via bitwise RGBA unpacking.
Forward Movement & Push Interaction
Each instance moves along Z-axis proportionally to its speed value.
Selecting an instance triggers a push effect on nearby instances using compute shaders.
GPU-Based Frustum Culling
Runs entirely in a compute shader using camera frustum planes.
Visible instances are compacted into a redirection buffer.