AkilarLiao

AkilarLiao

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):

Most Liked

AkilarLiao

AkilarLiao

Just to close the loop on this thread:

The discussion influenced how the system evolved,
especially regarding cross-platform stability and GPU-only workflows.
I later summarized the technical reasoning and lessons learned in this write-up:

The same approach has since been packaged into a Unity tool for practical use:

Where Next?

Popular Game Dev topics Top

AstonJ
Anything stand out for anyone? A few live-streams out there:
New
First poster: bot
Stride is an open-source C# game engine for realistic rendering and VR. The engine is highly modular and aims at giving game makers more ...
New
First poster: bot
Sony dropped a quick reference to its upcoming virtual reality headset back at CES. That’s kind of what Sony does at the show most years ...
New
New
New
First poster: bot
Friday Facts #370 - The journey to Nintendo Switch | Factorio. We have a long history of trying to bring Factorio to other platforms, in...
New
ksspeedstar
For about two weeks we have had the problem that Google / Android are rejecting apps for updates with the following statement: We found...
New
Hipnot
How do I cancel my Fortnite Crew subscription and what happens to my account and previous rewards after I cancel my subscription?
New
PragmaticBookshelf
Unlock Rust development with reusable libraries, traits, macros, and generic metaprogramming. Build code without the boilerplate, and lea...
New
Huzi
I’ve been studying the mechanics behind Block Blast–style puzzle games, and I’m curious about the best approaches for developing one for ...
New

Other popular topics Top

Devtalk
Hello Devtalk World! Please let us know a little about who you are and where you’re from :nerd_face:
New
Devtalk
Reading something? Working on something? Planning something? Changing jobs even!? If you’re up for sharing, please let us know what you’...
1063 24245 395
New
New
Exadra37
Please tell us what is your preferred monitor setup for programming(not gaming) and why you have chosen it. Does your monitor have eye p...
New
AstonJ
There’s a whole world of custom keycaps out there that I didn’t know existed! Check out all of our Keycaps threads here: https://forum....
New
Help
I am trying to crate a game for the Nintendo switch, I wanted to use Java as I am comfortable with that programming language. Can you use...
New
DevotionGeo
I have always used antique keyboards like Cherry MX 1800 or Cherry MX 8100 and almost always have modified the switches in some way, like...
New
sir.laksmana_wenk
I’m able to do the “artistic” part of game-development; character designing/modeling, music, environment modeling, etc. However, I don’t...
New
NewsBot
Node.js v22.14.0 has been released. Link: Release 2025-02-11, Version 22.14.0 'Jod' (LTS), @aduh95 · nodejs/node · GitHub
New
CommunityNews
Electric is now part of Databricks. We’re joining Neon to make Lakebase the best platform for building apps and agents. Everything we’ve ...
New