Example of a DOTS Instancing shader that accesses per-instance data in URP
An example of accessing per-instance color data in a DOTS Instancing shader.
읽는 시간 1분최근 업데이트: 25일 전
In this example:
- The metadata value for is
Color.0x80001000 - The instance index is .
5 - Data for instance 0 starts at address 0x1000.
- Data for instance 5 is at address 0x1000 + 5 * sizeof(float4) = 0x1050
Because the most significant bit is already set, the accessor macros don't load defaults. This means that , , and will all have the same value, loaded from address .
c0c1c2unity_DOTSInstanceData0x1050void ExamplePerInstance(){ // rawMetadataValue will contain 0x80001000 uint rawMetadataValue = UNITY_DOTS_INSTANCED_METADATA_NAME(float4, Color); float4 c0 = UNITY_ACCESS_DOTS_INSTANCED_PROP(float4, Color); float4 c1 = UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4, Color); float4 c2 = UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_CUSTOM_DEFAULT(float4, Color, float4(1, 2, 3, 4));}