Unity 6.3
0 онлайн 115 гостей 3 в системе
Вход
Материалы и шейдеры Шаг 404 из 442

Команда Blend в ссылке ShaderLab

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

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

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

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

Совместимость конвейера отображения

Название особенности Universal Render Pipeline (URP) High Definition Render Pipeline (HDRP) Изготовленный на заказ SRP Built-in Render Pipeline
Смесь Да Да Да Да

Синтаксис

Подпись Синтаксис примера Функция
Blend <state> Blend Off Отключает смешивание для цели отображения по умолчанию. Это значение по умолчанию.
Blend <render target> <state> Blend 1 Off Как выше, но для заданного целевого отображения. (1)
Blend <source factor> <destination factor> Blend One Zero Включает смешивание для цели отображения по умолчанию. Устанавливает факторы смешивания для значений RGBA.
Blend <render target> <source factor> <destination factor> Blend 1 One Zero Как выше, но для заданного целевого отображения. (1)
Blend <source factor RGB> <destination factor RGB>, <source factor alpha> <destination factor alpha> Blend One Zero, Zero One Включает смешивание по умолчанию. Задает отдельные факторы смешивания для RGB и альфа-значений. (2)
Blend <render target> <source factor RGB> <destination factor RGB>, <source factor alpha> <destination factor alpha> Blend 1 One Zero, Zero One То же, что и выше, но для данного целевого показателя отображения. (1) (2)

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

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

Примечания:

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

Параметры

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

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

finalValue = sourceFactor * sourceValue operation destinationFactor * destinationValue

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

  • finalValue — значение, которое GPU записывает в буфер назначения.
  • sourceFactor определяется в команде Blend.
  • sourceValue — значение, выводимое шейдером фрагмента.
  • operation — операция смешивания.
  • destinationFactor определяется в команде Blend.
  • destinationValue — значение, уже находящееся в буфере назначения.

Дополнительные ресурсы