要访问 DOTS 实例化属性,您的 着色器在 GPU 上运行的程序。更多信息
参见 术语表 可以使用 Unity 提供的访问宏之一。访问宏假设 unity_DOTSInstanceData
中的实例数据使用以下布局
unity_DOTSInstanceData
缓冲区内批处理中第一个实例的字节地址。0
,那么每个实例都使用实例索引零的值。这意味着每个实例直接从元数据值中的字节地址加载。在这种情况下,缓冲区只需要储存单个值,而不是每个实例一个值。1
,那么该地址应该包含一个数组,您可以在其中使用 AddressOfInstance0 + sizeof(PropertyType) * instanceID
找到实例索引 instanceID
的值。在这种情况下,您应该确保每个渲染的实例索引在缓冲区中都存在有效数据。否则,将发生越界访问和未定义行为。您还可以直接设置元数据值,如果您希望使用不使用上述布局的自定义数据源(例如纹理),这将非常有用。
有关如何使用这些宏的示例,请参见 访问宏示例。