1
\$\begingroup\$

I'm trying to render a bunch of clouds via gpu instancing. This works perfectly fine with the default HDRP Lit Shader, and I get the following result:

clouds

However, as soon as I change the surface type from Opaque to Transparent, even at 100% opacity, the clouds all disappear, and I get this:

noclouds

We can see that all the clouds are still being instanced, because their shadows are visible on the ground below, making it black. However, the actual clouds are not rendered at all, when they should still be fully visible.

I am rendering the clouds with the following line, on a script which takes in the ball mesh and white material.

Graphics.DrawMeshInstanced(cloudMesh, 0, cloudMat, batch.Select((a) => a.matrix).ToList());

Screenshot of broken material (which works fine if changed from transparent to opaque):

transparent material

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

GPU instancing for transparent objects is broken right now. This is a bug on Unity's side.

I asked for a status update on the Unity forum in this post here: https://forum.unity.com/threads/drawmeshinstanced-not-working-with-transparent.1071062/

\$\endgroup\$
1
  • 1
    \$\begingroup\$ Note this is apparently fixed in Unity versions 2021.2b1+, but not backported (same thread). \$\endgroup\$
    – Basic
    Commented Apr 9, 2023 at 12:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .