Version: Unity 6.0 (6000.0)
语言 : 中文
在 URP 中的自定义着色器中声明 DOTS 实例化属性
在 URP 中应用 DOTS 实例化着色器的最佳实践

访问自定义着色器中的 DOTS Instancing 属性

要访问 DOTS Instanced 属性,着色器可以使用 Unity 提供的访问宏之一。访问宏假定 unity_DOTSInstanceData 中的实例数据使用以下布局:

  • 元数据值的 31 个最低有效位包含 unity_DOTSInstanceData 缓冲区批次中第一个实例的字节地址。
  • 如果元数据值的最高有效位为 0,则每个实例都使用实例索引 0 中的值。这表示每个实例会直接从元数据值中的字节地址进行加载。在这种情况下,缓冲区只需要存储单个值,而无需每个实例存储一个值。
  • 如果元数据值的最高有效位是 1,则地址应包含一个数组,您可以在数组中使用 AddressOfInstance0 + sizeof(PropertyType) * instanceID 查找实例索引 instanceID 的值。在这种情况下,应确保每个渲染的实例索引在缓冲区中存在有效数据。否则,可能会出现越界访问以及未定义行为。

用户还可以直接设置元数据值,如果要使用一个不使用上述布局的自定义数据源(例如纹理),这将非常有用。

有关如何使用此类宏的示例,请参阅访问宏示例

在 URP 中的自定义着色器中声明 DOTS 实例化属性
在 URP 中应用 DOTS 实例化着色器的最佳实践
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961