Unity 6.3
0 онлайн 13 гостей 3 в системе
Вход

Удалить SRP совместимость для GameObjects в URP

В некоторых редких случаях, вы можете пожелать намеренно сделать определенный GameObjects несовместимым с SRP Batcher. Например, если вы хотите использовать GPU экземпляр, который несовместим с SRP Batcher. Если вы хотите отобразить много идентичных мешей с абсолютно одинаковым материалом, GPU instancing может быть более эффективным, чем SRP Batcher. Чтобы использовать GPU instancing, вы должны либо:

  • Используйте Graphics.RenderMeshInstanced.
  • Вручную удалите совместимость SRP Batcher и включите GPU instancing для материала.

Существует два способа удаления совместимости с SRP Batcher из GameObject:

  • Сделать шейдер несовместимым.
  • Сделать рендерер несовместимым.

Тип: Если вы используете GPU инстанционирование вместо SRP Дозировщик, используйте Profiler чтобы убедиться, что GPU instancing является более эффективным для вашего приложения, чем SRP Бачер.

Удаление совместимости шейдеров

Вы можете сделать как ручные, так и Shader Graph шейдеры несовместимыми с SRP Batcher. Однако для Shader Graph шейдеров, если вы часто меняете и перекомпилируете Shader Graph, проще сделать renderer несовместимым с вместо этого.

Чтобы сделать шейдер Unity несовместимым с Batcher SRP, необходимо внести изменения в исходный файл шейдера:

  1. Для ручных шейдеров откройте файл исходного кода шейдера. Для шейдеров Shader Graph скопируйте скомпилированный исходный код шейдера Shader Graph в новый файл исходного кода шейдера. Используйте новый файл исходного кода шейдера в вашем приложении вместо Shader Graph.
  2. Добавить новый материальная собственность заявление в шейдера Properties блок. Не декларируйте новое свойство материала в блоке UnityPerMaterial постоянный буфер.

Свойству material не нужно ничего делать; просто наличие свойства material, которое не существует в буфере константы UnityPerMaterial, делает шейдер несовместимым с Batcher SRP.

Предупреждение: Если вы используете Shader Graph, помните, что каждый раз, когда вы редактируете и перекомпилируете Shader Graph, вы должны повторять этот процесс.

Удаление совместимости с рендерером

Вы можете сделать отдельные рендеры несовместимыми с SRP Batcher. Для этого добавьте MaterialPropertyBlock в рендер.