Загрузка видео...
Не удалось загрузить видео
Custom grass system. No instancing, no Compute shaders. Just game objects splitted into chunks with LODs. Displacement in vertex shader. Their geometry is pre-sorted towards the camera to minimize overdraw. Unity automatically handles culling as they are just game objects. #madewithunity #realtime
19,748 просмотров • 7 месяцев назад •via X (Twitter)
Комментарии: 11

Here running on Quest 3 for my meditation game. Wishlist here:

Smart move skipping compute shaders for mobile. Pre-sorting geometry for overdraw is that detail most miss. What's the draw call count?

around 200. ~70 of them are for grass.

Low tech but still high effect

Thank god. I don't think people are aware of just how disgustingly slow Geometry Shaders are >.>

very cool instancing should still help in this case since they're still predefined meshes?

Noice

Really cool, curious about how you handle the mesh grid. my guess is you have a grid 5x5 for closer grass and external Lod, when you reach the 3x3 grid bound you move the mesh to player position and use terrain height to offset the grass blade in Y ?! .

how do you pre sort towards the camera? does the full game object rotate in a way thats not visible to the player? are meshes constructed during runtime?

No, they are imported from blender. Sorting is done in Blender. They don't rotate. The grass system moves with the player, so the player is always in the center of the system. But the movement is not noticeable to the player.

Unoptimized slop
