DOTS Instanced プロパティにアクセスするにあたって、シェーダーは、Unity が提供するアクセスマクロのいずれかを使用できます。アクセスマクロは、unity_DOTSInstanceData 内のインスタンスデータが以下のレイアウトを使用していることを想定します。
unity_DOTSInstanceData バッファ内のバッチ内の最初のインスタンスのバイトアドレスを含んでいる。0 の場合、すべてのインスタンスがインスタンスインデックス 0 の値を使用している。つまり、各インスタンスがメタデータ値のバイトアドレスから直接ロードされるということです。この場合、バッファはインスタンスごとに 1 つの値を格納せずに、単一の値を格納するだけで済みます。1 の場合、AddressOfInstance0 + sizeof(PropertyType) * instanceID を使用してインスタンスインデックス instanceID の値を確認できる配列がアドレスに含まれている必要がある。この場合、レンダリングされたすべてのインスタンスインデックスにバッファ内の有効なデータがあることを確認する必要があります。そうでないと、アウトオブバンドのアクセスや未定義の動作が発生する可能性があります。メタデータの値を直接設定することもできます。これは、テクスチャなどの、上記のレイアウトを使用しないカスタムデータソースを使用する場合に便利です。
これらのマクロの使用例は、アクセスマクロの例 で参照できます。