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

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

Функции этой команды зависят от операции смешивания, которую можно задать с помощью команды BlendOp. Обратите внимание, что хотя смешивание поддерживается всеми графическими API и оборудованием, некоторые операции смешивания имеют более ограниченную поддержку.

Включение смешивания отключает некоторые оптимизации графического процессора (в основном удаление скрытых поверхностей/Early-Z), что может привести к увеличению времени кадра графического процессора.

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

Название функции Встроенный конвейер рендеринга Универсальный конвейер рендеринга (URP) Конвейер рендеринга высокого разрешения (HDRP) Пользовательская SRP
Blend Да Да Да Да

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

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

Если смешивание включено, происходит следующее:

  • Если используется команда BlendOp, операция смешивания устанавливается на это значение. В противном случае операция смешивания по умолчанию использует Добавить.
  • Если используется операция смешивания Добавить, Sub, RevSub, Min или Max, GPU умножает значение вывода фрагментного шейдера на исходный коэффициент.
  • Если используется операция смешивания Добавить, Sub, RevSub, Min или Max, графический процессор умножает значение, которое уже находится в цели рендеринга, на коэффициент назначения.
  • ГП выполняет операцию смешивания полученных значений.

Уравнение смешивания:

finalValue = исходный фактор * исходное значение операция целевого фактора * целевое значение

В этом уравнении:

  • finalValue — это значение, которое GPU записывает в буфер назначения.
  • sourceFactor определяется в команде Blend.
  • sourceValue — это значение, выводимое фрагментным шейдером.
  • операция — это операция смешивания.
  • destinationFactor определяется в команде Blend.
  • destinationValue — значение, уже находящееся в целевом буфере.
Подпись Пример синтаксиса Функции
Blend Blend Off Отключает смешивание для цели рендеринга по умолчанию. Это значение по умолчанию.
Blend Blend 1 Off То же, что и выше, но для заданной цели рендеринга. (1)
Blend Blend One Zero Включает смешивание для цели рендеринга по умолчанию. Устанавливает коэффициенты наложения для значений RGBA.
Blend Blend 1 One Zero То же, что и выше, но для заданной цели рендеринга. (1)
Blend , Blend One Zero, Zero One Включает смешивание цели рендеринга по умолчанию. Задает отдельные коэффициенты наложения для значений RGB и альфа-канала. (2)
Blend , Blend 1 One Zero, Zero One То же, что и выше, но для заданной цели рендеринга. (1) (2)

Примечания:

  1. Для любой подписи, указывающей цель рендеринга, требуется OpenGL 4.0+, GL_ARB_draw_buffers_blend или OpenGL ES 3.2.
  2. Раздельное смешивание RGB и альфа-канала несовместимо с расширенными операциями смешивания OpenGL.

Действительные значения параметров

Параметры Значение Функции
render target Integer, range 0 through 7 Целевой индекс рендеринга.
state Off Отключает смешивание.
factor One Значение этого входа равно единице. Используйте это, чтобы использовать значение исходного или целевого цвета.
Zero Значение этого входа равно нулю. Используйте это, чтобы удалить исходные или целевые значения.
SrcColor Графический процессор умножает значение этого ввода на исходное значение цвета.
SrcAlpha Графический процессор умножает значение этого входа на исходное альфа-значение.
DstColor Графический процессор умножает значение этого входа на значение исходного цвета буфера кадра.
DstAlpha Графический процессор умножает значение этого входа на альфа-значение источника кадрового буфера.
OneMinusSrcColor GPU умножает значение этого ввода на (1 — исходный цвет).
OneMinusSrcAlpha Графический процессор умножает значение этого ввода на (1 - исходная альфа).
OneMinusDstColor Графический процессор умножает значение этого ввода на (1 — целевой цвет).
OneMinusDstAlpha Графический процессор умножает значение этого ввода на (1 - альфа-адрес назначения).

Распространенные типы наложения

Вот синтаксис наиболее распространенных типов наложения:

Blend SrcAlpha OneMinusSrcAlpha // Traditional transparency Blend One OneMinusSrcAlpha // Premultiplied transparency Blend One One // Additive Blend OneMinusDstColor One // Soft additive Blend DstColor Zero // Multiplicative Blend DstColor SrcColor // 2x multiplicative

Примеры

Shader "Examples/CommandExample" { SubShader { // The rest of the code that defines the SubShader goes here. Pass { // Enable regular alpha blending for this Pass Blend SrcAlpha OneMinusSrcAlpha // The rest of the code that defines the Pass goes here. } } }

В этом примере кода демонстрируется синтаксис использования этой команды в блоке SubShader.

Shader "Examples/CommandExample" { SubShader { // Enable regular alpha blending for this SubShader Blend SrcAlpha OneMinusSrcAlpha // The rest of the code that defines the SubShader goes here. Pass { // The rest of the code that defines the Pass goes here. } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3