版本:Unity 6 (6000.0)
语言 : 英语
URP 中访问每个实例数据的 DOTS 实例化着色器示例
URP 中 DOTS 实例化着色器中使用 UNITY_DOTS_INSTANCED_PROP 宏的示例

URP 中访问常量数据的 DOTS 实例化着色器示例

在此示例中

  • Color 的元数据值为 0x00001000
  • 实例索引为 5
  • 实例 0 的数据从地址 0x1000 开始。
  • 最高位未设置,因此实例 5 的数据与实例 0 的数据位于同一地址。

由于最高位未设置,因此回退到默认值的访问器宏不会访问 unity_DOTSInstanceData。这意味着

  • c0 将包含来自 unity_DOTSInstanceData 地址 0x1000 的值。
  • c1 将包含常规材质属性 Color 的值,如果 Color 属性不存在,则会导致编译错误。
  • c2 将包含 (1, 2, 3, 4),因为这是作为显式默认值传递的。
void ExampleConstant()
{
    // rawMetadataValue will contain 0x00001000
    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));
}
URP 中访问每个实例数据的 DOTS 实例化着色器示例
URP 中 DOTS 实例化着色器中使用 UNITY_DOTS_INSTANCED_PROP 宏的示例