Unity 6.3
0 онлайн 96 гостей 3 в системе
Вход
Оптимизация Шаг 155 из 208

Пример DOTS Инстансирующего шейдера, который получает доступ к постоянным данным в URP

В этом примере:

  • Значение метаданных для Color является 0x00001000.
  • Индекс экземпляра — 5.
  • Например, данные 0 начинаются с адреса 0x1000.
  • Наиболее значимый бит не устанавливается, так что данные для примера 5 находятся на том же адресе, что и пример 0.

Поскольку наиболее значимый бит не установлен, макросы доступа, которые возвращаются к значениям по умолчанию, не получают доступ к unity_DOTSInstanceData. Это означает, что:

  • c0 будет содержать значение из unity_DOTSInstanceData адреса 0x1000.
  • c1 будет содержать значение свойства обычного материала Цвет, и вызвать ошибку компиляции, если свойство 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));
}