"Genshin Impact" Grass Rendering - How?

So how do you think the Genshin Impact devs managed to render this large amount of grass on mobile?
GPU Instancing + DrawMeshInstancedIndirect?

I wonder if this is the right direction to investigate…

1 Like

My solution would be to use a single mesh that follow the player, wich would be a grid of quad, then in vertex shader ogl es 3+ read the various terrain texture to move the vertices to the right place, each quad would have id data baked into vertex colors to discriminate each quad and vertices for applying billboards, sway and texture, texture is taken from an atlas and the terrain texture dictates which tile if the atlas to read. The plan move along with the player ising hashing position threshold, unused quad get scaled down to zero, get drawn in a single drawcall.

Bonus
Distant grass would use the terrain geo, scaled along the normal with an interior shading where walls are grass texture, so we get distant parallax effect for free.

1 Like

Look for: Critias Painter
It renders a huge amount of grass, trees, rock and all you want without losing fps