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

Пользовательские модели освещения в поверхностных шейдерах

Во встроенном конвейере рендеринга при написании поверхностных шейдеров Упрощенный способ написания шейдеров для встроенного конвейера рендеринга. Подробнее
См. в Словарь
, вы описываете свойства поверхности (например, цвет альбедо и нормальный), а Модель освещения вычисляет взаимодействие освещения.

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

Название функции Встроенный конвейер рендеринга Универсальный конвейер рендеринга (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. Вы можете объявить их в любом месте файла шейдера или в одном из включенных файлов. Функции:

  1. half4 Lighting (SurfaceOutput s, UnityGI gi); Используйте это в прямом рендерингепроцессе вывода графики на экран (или в текстуру рендеринга). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
    Поиск в Словарь
    путей для моделей освещения, которые не в зависимости от направления взгляда.

  2. half4 Lighting (SurfaceOutput s, half3 viewDir, UnityGI gi); Используйте это в прямых путях рендерингатехнике, которую Unity использует для рендеринга графики. Выбор другого пути влияет на производительность вашей игры и на то, как рассчитываются освещение и затенение. Некоторые пути больше подходят для разных платформ и оборудования, чем другие. Подробнее
    См. в Словарь
    модели освещения, которые зависимы в направлении взгляда.

  3. half4 Lighting_Deferred (SurfaceOutput s, UnityGI gi, out half4 outDiffuseOcclusion, out half4 outSpecSmoothness, out half4 outNormal); Используйте это в отложенных путях освещения.

  4. half4 Lighting_PrePass (SurfaceOutput s, half4 light); Используйте это в световых путях с предварительным проходом (устаревшие отложенные).

Обратите внимание, что вам не нужно объявлять все функции. Модель освещения либо использует направление взгляда, либо нет. Точно так же, если модель освещения работает только при упреждающем рендерингепуть рендеринга, при котором каждый объект визуализируется за один или несколько проходов, в зависимости от освещения которые воздействуют на объект. Сами источники света также обрабатываются Forward Rendering по-разному, в зависимости от их настроек и интенсивности. Подробнее
См. в Словарь
, не объявляйте _Deferred или _Prepass. Это гарантирует, что шейдеры, использующие его, компилируются только для прямого рендеринга.

Пользовательская ГУ

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

  1. 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_).

Примеры

Дополнительную информацию см. в документации по примерам освещения шейдеров поверхности.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3