Эта страница содержит информацию об использовании блока 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 |