Во встроенном конвейере рендеринга при написании поверхностных шейдеров Упрощенный способ написания шейдеров для встроенного конвейера рендеринга. Подробнее
См. в Словарь, вы описываете свойства поверхности (например, цвет альбедо и нормальный), а Модель освещения вычисляет взаимодействие освещения.
Совместимость конвейера рендеринга
Название функции | Встроенный конвейер рендеринга | Универсальный конвейер рендеринга (URP) | Конвейер рендеринга высокого разрешения (HDRP) | Пользовательский SRP |
---|---|---|---|---|
Surface Shaders | Да | No
Чтобы узнать об упрощенном способе создания объектов Shader в URP, см. раздел Shader Graph. |
No
Чтобы узнать об упрощенном способе создания объектов Shader в HDRP, см. раздел Shader Graph. |
Нет |
Обзор
Есть две встроенные модели освещения: Lambert
для рассеянного освещения и BlinnPhong
для зеркального освещения. Файл Lighting.cginc внутри Unity определяет эти модели (Windows: <путь установки Unity>/Data/CGIncludes/Lighting.cginc; macOS: /Applications/Unity /Unity.app/Contents/CGIncludes/Lighting.cginc).
Иногда вам может понадобиться использовать пользовательскую модель освещения. Вы можете сделать это с помощью Surface ShadersПрограммы, работающей на графическом процессоре. Подробнее
См. в Словарь. Модель освещения — это просто пара функций Cg/HLSL, соответствующих некоторым соглашениям.
Объявление моделей освещения
Модель освещения состоит из обычных функций, имена которых начинаются с Lighting
. Вы можете объявить их в любом месте файла шейдера или в одном из включенных файлов. Функции:
half4 Lighting
Используйте это в прямом рендерингепроцессе вывода графики на экран (или в текстуру рендеринга). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее(SurfaceOutput s, UnityGI gi);
Поиск в Словарь путей для моделей освещения, которые не в зависимости от направления взгляда.half4 Lighting
Используйте это в прямых путях рендерингатехнике, которую Unity использует для рендеринга графики. Выбор другого пути влияет на производительность вашей игры и на то, как рассчитываются освещение и затенение. Некоторые пути больше подходят для разных платформ и оборудования, чем другие. Подробнее(SurfaceOutput s, half3 viewDir, UnityGI gi);
См. в Словарь модели освещения, которые зависимы в направлении взгляда.half4 Lighting
Используйте это в отложенных путях освещения._Deferred (SurfaceOutput s, UnityGI gi, out half4 outDiffuseOcclusion, out half4 outSpecSmoothness, out half4 outNormal); half4 Lighting
Используйте это в световых путях с предварительным проходом (устаревшие отложенные)._PrePass (SurfaceOutput s, half4 light);
Обратите внимание, что вам не нужно объявлять все функции. Модель освещения либо использует направление взгляда, либо нет. Точно так же, если модель освещения работает только при упреждающем рендерингепуть рендеринга, при котором каждый объект визуализируется за один или несколько проходов, в зависимости от освещения которые воздействуют на объект. Сами источники света также обрабатываются Forward Rendering по-разному, в зависимости от их настроек и интенсивности. Подробнее
См. в Словарь, не объявляйте _Deferred
или _Prepass
. Это гарантирует, что шейдеры, использующие его, компилируются только для прямого рендеринга.
Пользовательская ГУ
Объявите следующую функцию для настройки декодирования карты освещенияпредварительно обработанной текстуры, которая содержит эффекты источников света на статических объектах. в сцене. Карты освещения накладываются поверх геометрии сцены для создания эффекта освещения. Подробнее
Просмотр в Словарь данных и тестов:
half4 Lighting
_GI (SurfaceOutput s, данные UnityGIInput, inout UnityGI gi);
Обратите внимание, что для декодирования стандартных карт освещения Unity и зондов SH можно использовать встроенные функции DecodeLightmap
и ShadeSHPerPixel
, как показано в UnityGI_Base
в файле UnityGlobalIllumination.cginc внутри Unity (Windows: <путь установки Unity>/Data/CGIncludes/UnityGlobalIllumination.cginc ; macOS: /Applications/Unity/Unity.app/Contents/CGIncludes/UnityGlobalIllumination.cginc_).
Примеры
Дополнительную информацию см. в документации по примерам освещения шейдеров поверхности.