Building a Cross-Platform GPU Procedural Grass System in Unity URP (Optimized for Mobile)

Hello Devtalk Community,

I’m sharing a GPU-Driven Procedural Grass System for Unity URP, heavily optimized for mobile. Key Features & Challenge: This system handles Procedural Generation and implements precise ViewFrustum, Distance, and FilterMap Culling entirely on the GPU. However, I faced the common mobile hurdle: SSBOs being unstable in the Vertex Shader on low-end hardware. My Solution: To ensure robust cross-platform stability, I bypassed the unstable SSBO path. The Compute Shader now writes instance data (including culling results) to a RenderTexture (UAV), which is then sampled by the final shader. Seeking Expert Opinion: This RenderTexture method guarantees stability, but introduces potential texture cache overhead. Is this the most practical performance/stability trade-off for commercial URP Mobile development today?

I’m keen to hear your critical thoughts. — Full Technical Breakdown (Including implementation details on Culling):

Source Code (GitHub):

1 Like