Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

ShaderLab: присвоение значения LOD сабшейдеру

Эта страница содержит информацию об использовании блока LOD в вашей ShaderLab Язык Unity для определения структуры объектов Shader. Подробнее
См. код Словарь
для назначения LODТехника Level Of Detail (LOD) — это оптимизация, которая уменьшает количество треугольников, которые Unity должна отображать для GameObject, когда его расстояние от камеры увеличивается. Подробнее
Просмотреть в Словарь
(уровень детализации) значение SubShader.

Обзор

Вы можете назначить значение уровня детализации вложенному шейдеру. Это значение показывает, насколько требовательны вычислительные ресурсы.

Во время выполнения вы можете установить шейдерПрограмму, работающую на графическом процессоре. Подробнее
Просмотреть в Словарь
значение LOD
для одного объекта Shader или для всех объектов Shader. Затем Unity отдает приоритет субшейдерам с более низким значением LOD. Информацию о том, как Unity выбирает, когда использовать вспомогательные шейдеры, см. в разделе Объекты шейдеров: порядок операций во время рендеринга.

Примечание. Хотя этот метод назван в честь функции LOD для рендерингапроцесса рисования графика на экран (или в текстуру рендеринга). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
Посмотрите в Словарь
сетки, есть важные отличия: шейдер Уровень детализации не зависит от расстояния до Камерыкомпонента, который создает изображение определенной точки обзора в вашей сцене. Вывод либо рисуется на экране, либо фиксируется в виде текстуры. Подробнее
См. в Словарь
, и Unity не вычисляет LOD шейдера автоматически. Вы должны установить максимальный уровень детализации шейдера вручную.

Обзор

Используйте этот метод для точной настройки производительности шейдеров на различном оборудовании. Это полезно, когда SubShader теоретически поддерживается аппаратным обеспечением пользователя, но аппаратное обеспечение не может работать с ним должным образом.

Совместимость конвейера рендеринга

Feature name Built-in Render Pipeline Universal Render Pipeline (URP) High Definition Render Pipeline (HDRP) Custom SRP
ShaderLab: SubShader LOD block Да Да Да Да

Использование блока LOD

В ShaderLab вы присваиваете значение уровня детализации вспомогательному шейдеру, помещая блок LOD внутрь блока SubShader.

Подпись Функции
LOD [value] Присваивает заданное значение LOD SubShader.

Примечание. Внутри блока Shader вы должны расположить вложенные шейдеры в порядке убывания уровня детализации. Например, если у вас есть субшейдеры со значениями детализации 200, 100 и 500, вы должны сначала поместить субшейдер со значением детализации 500, затем со значением детализации 200, а затем со значением детализации. из 100. Это связано с тем, что Unity выбирает первый найденный допустимый подшейдер, поэтому, если он сначала находит подшейдер с более низким уровнем детализации, он всегда будет использовать его.

Использование значения уровня детализации SubShader с кодом C#

Чтобы установить уровень детализации шейдера для данного объекта шейдера, вы можете использовать Shader.maximumLOD. Чтобы установить LOD шейдера для всех объектов Shader, вы можете использовать Shader.globalMaximumLOD. По умолчанию максимальный уровень детализации не установлен.

Примеры кода

В этом примере кода создается объект Shader, содержащий два вспомогательных шейдера: один со значением уровня детализации 200 и один со значением 100. Вспомогательные шейдеры расположены в порядке убывания значения уровня детализации.

Shader "Examples/ExampleLOD" { SubShader { LOD 200 Pass { // The rest of the code that defines the Pass goes here. } } SubShader { LOD 100 Pass { // The rest of the code that defines the Pass goes here. } } }

Значения LOD для встроенных шейдеров Unity

Во встроенном конвейере рендеринга встроенные шейдеры Unity имеют следующие значения детализации:

Значение LOD Имя шейдера
100 Unlit/Texture
Unlit/Color
Unlit/Transparent
Unlit/Transparent Cutout
300 Standard
Standard (Specular Setup)
Autodesk Interactive

Значения LOD для устаревших шейдеров

Во встроенном конвейере рендеринга встроенные устаревшие шейдеры Unity имеют следующие значения уровня детализации:

Значение LOD Имя шейдера
100 VertexLit
150 Decal
Reflective VertexLit
200 Diffuse
250 Diffuse Detail
Reflective Bumped Unlit
Reflective Bumped VertexLit
300 Bumped
Specular
400 Bumped Specular
500 Parallax
600 Parallax Specular
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3