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

Ссылка на дополнительные директивы Surface Shader для встроенного Render Pipeline

Прозрачность и альфа-тестирование контролируется директивами alpha и alphatest. Прозрачность может быть двух видов: традиционное альфа-слияние (используется для исчезновения объектов) или более физически правдоподобное «предварительно умноженное слияние» (которое позволяет полупрозрачным поверхностям сохранять правильные зеркальные отражения). Включение полупрозрачности делает генерируемый код шейдера поверхности содержащим команды слияния; в то время как включение альфа-вырезки произведет отбрасывание фрагмента в генерируемом пиксельном шейдере, на основе данной переменной.

  • alpha или alpha:auto — Выберет прозрачность fade-transparency (такую же, как alpha:fade) для простых функций освещения, и предварительно умноженную прозрачность (такую же, как alpha:premul) для физических функций освещения.
  • alpha:blend — Включить альфа-слияние.
  • alpha:fade — Включить традиционную прозрачность.
  • alpha:premul — Включить предварительно умноженную альфа прозрачность.
  • alphatest:VariableName — Включить прозрачность альфа выреза. Значение Cutoff находится в плавающей переменной с VariableName. Вы, вероятно, также захотите использовать addshadow директиву для генерации надлежащего пропуска shadow caster.
  • keepalpha — По умолчанию непрозрачные поверхностные шейдеры записывают в альфа-канал 1.0 (белый) независимо от того, что выведено в поле Alpha выходной структуры или что вернула функция освещения. Этот параметр позволяет сохранить значение альфа из функции освещения даже для непрозрачных поверхностных шейдеров.
  • decal:add — Аддитивный шейдер для наклеек (e.g. terrain AddPass). Предназначен для объектов, которые лежат на других поверхностях и используют аддитивное смешивание. См. Примеры шейдеров поверхностей
  • decal:blend — Полупрозрачный шейдер для наклеек. Этот шейдер предназначен для объектов, которые лежат на других поверхностях и используют альфа-слияние. См. Примеры шейдеров поверхностей

Пользовательские функции модификатора может использоваться для изменения или вычисления входящих данных вершины, или для изменения цвета окончательного вычисленного фрагмента.

  • vertex:VertexFunction — Настраиваемая функция модификации вершин. Эта функция вызывается в начале генерации вершинного шейдера и может модифицировать или вычислять данные по вершинам. См. Примеры поверхностных шейдеров.
  • finalcolor:ColorFunction — Настраиваемая функция изменения окончательных цветов. См. Примеры поверхностных шейдеров.
  • finalgbuffer:ColorFunction — Пользовательский отложенный путь для изменения содержания G-буфера.

Тени и Тесселяция — дополнительные директивы могут быть даны для управления тем, как тени и тесселяция обрабатываются.

  • addshadow — Генерирует пропуск для запуска тени. Обычно используется с модификацией вершины, так что запуск тени также получает любую процедурную анимацию вершины. Часто шейдеры не нуждаются в каком-либо специальном обращении с тенью, так как они могут просто использовать пропуск для запуска тени из своего резерва.
  • fullforwardshadows - Поддержка всех типов светлых теней Вперед путь рендеринга. По умолчанию при прямом рендеринге шейдеры поддерживают тени только от одного направленного источника света (ради экономии числа внутренних вариантов шейдера). Если при прямом рендеринге вам нужны тени от точечных или прожекторных источников, используйте эту директиву.
  • tessellate:TessFunction — использует DX11 GPU тесселляцию; функция вычисляет коэффициенты тесселляции. См. Тесселляцию шейдера поверхности для подробностей.

Параметры генерации кода — по умолчанию генерируемый код поверхностного шейдера пытается обрабатывать все возможные сценарии освещения/тени/карты освещения. Однако в некоторых случаях вы знаете, что вам не понадобятся некоторые из них, и можно настроить генерируемый код, чтобы пропустить их. Это может привести к меньшим шейдерам, которые загружаются быстрее.

  • exclude_path:deferred, exclude_path:forward — Не генерировать пропуска для данного пути отображения (Отложенное затенение, Вперед соответственно).
  • noshadow — Отключает все тени, получающие поддержку в этом шейдере.
  • noambient — Не применяйте никакого окружающего освещения или световых зондов.
  • novertexlights — Не применяйте никаких световых зондов или световых первертекс в Форвардном рендеринге.
  • nolightmap — Отключает поддержку lightmapping в этом шейдере.
  • nodynlightmap — Отключает поддержку динамического глобального освещения в этом шейдере.
  • nodirlightmap — Отключает поддержку направленных карт освещения в этом шейдере.
  • nofog — Отключает всю встроенную поддержку тумана.
  • nometa — Не генерирует "мета" проход (который используется lightmapping & динамическое глобальное освещение для извлечения информации поверхности).
  • noforwardadd — Отключает Передний аддитивный проход рендеринга. Это заставляет шейдер поддерживать один полный направленный свет, при этом все другие световые источники рассчитываются по вершинам. SH. Уменьшает размеры шейдеров.
  • nolppv — Отключает поддержку Light Probe Proxy Volume в этом шейдере.
  • noshadowmask — Отключает поддержку Shadowmask для этого шейдера (как Теневая маска и Distance Shadowmask.

Разные варианты

  • softvegetation — Заставляет поверхностный шейдер отображаться только при включенной мягкой растительности.
  • interpolateview — Вычислять направление зрения в вершинном шейдере и интерполировать его; вместо вычисления в пиксельном шейдере. Это может сделать пиксельный шейдер более быстрым, но использует еще один интерполятор текстуры.
  • halfasview — Передавать вектор полунаправления в функцию освещения вместо направления зрения. Полунаправление будет рассчитываться и нормализовываться на вершину. Это быстрее, но не совсем правильно.
  • approxview — Убрано в Unity 5.0. Используйте interpolateview вместо этого.
  • dualforward — Использовать двойные lightmaps в вперед пути отображения.
  • dithercrossfade — Заставляет поверхностный шейдер поддерживать эффекты дитерринга. Затем вы можете применить этот шейдер к GameObjects которые используют LOD Группа компонент, настроенный для режима перехода с переходами.

Чтобы увидеть, что именно отличается от использования различных вариантов выше, может быть полезно использовать “Показать генерируемый код” кнопку в Shader Inspector.