Определяет операцию смешивания, используемую командой «Смешивание». Чтобы эта команда имела какой-либо эффект, также должна быть команда Blend в том же блоке Pass (если эта команда находится в блоке Pass) или блоке SubShader (если эта команда находится в блоке SubShader).
Не все операции смешивания поддерживаются на всех устройствах, и поддержка зависит как от графического API, так и от аппаратного обеспечения. Различные графические API обрабатывают неподдерживаемые операции смешивания по-разному: GL пропускает неподдерживаемые операции, а Vulkan и Metal возвращаются к операциям добавления.
Совместимость конвейера рендеринга
Название функции | Встроенный конвейер рендеринга | Универсальный конвейер рендеринга (URP) | Конвейер рендеринга высокого разрешения (HDRP) | Пользовательская SRP |
---|---|---|---|---|
BlendOp | Да | Да | Да | Да |
Использование
Эта команда изменяет состояние рендеринга. Используйте его в блоке Pass
, чтобы задать состояние рендеринга для этого Pass, или используйте его в блоке SubShader
, чтобы задать рендеринг. состояние для всех проходов в этом субшейдере.
Подпись | Пример синтаксиса | Функции |
---|---|---|
BlendOp |
BlendOp Sub |
Устанавливает операцию смешивания, используемую командой «Смешивание».. |
Действительные значения параметров
Параметр | Значение | Функции |
---|---|---|
operation | Add |
Добавьте источник и место назначения вместе. |
Sub |
Вычтите пункт назначения из источника. | |
RevSub |
Вычесть источник из пункта назначения. | |
Min |
Используйте меньшее из исходного и конечного значений. (см. примечание 1) | |
Max |
Используйте большее из исходного и конечного значений. (см. примечание 1) | |
LogicalClear |
Логическая операция: Clear (0) (см. примечание 2) |
|
LogicalSet |
Логическая операция: Set (1) (см. примечание 2) |
|
LogicalCopy |
Логическая операция: Copy (s) (см. примечание 2) |
|
LogicalCopyInverted |
Логическая операция: Copy inverted (!s) 2 |
|
LogicalNoop |
Логическая операция: Noop (d) (см. примечание 2) |
|
LogicalInvert |
Логическая операция: Invert (!d) (см. примечание 2) |
|
LogicalAnd |
Логическая операция: And (s & d) (см. примечание 2) |
|
LogicalNand |
Логическая операция: Nand !(s & d) (см. примечание 2) |
|
LogicalOr |
Логическая операция: Or (s | d) (см. примечание 2) |
|
LogicalNor |
Логическая операция: Nor !(s | d) (см. примечание 2) |
|
LogicalXor |
Логическая операция: Xor (s ^ d) (см. примечание 2) |
|
LogicalEquiv |
Логическая операция: Equivalence !(s ^ d) (см. примечание 2) |
|
LogicalAndReverse |
Логическая операция: Reverse And (s & !d) (см. примечание 2) |
|
LogicalAndInverted |
Логическая операция: Inverted And (!s & d) (см. примечание 2) |
|
LogicalOrReverse |
Логическая операция: Reverse Or (s | !d) (см. примечание 2) |
|
LogicalOrInverted |
Логическая операция: Inverted Or (!s | d) (см. примечание 2) |
|
Multiply |
Расширенная операция смешивания OpenGL: Multiply (см. примечание 3) |
|
Screen |
Расширенная операция смешивания OpenGL: Screen (см. примечание 3) |
|
Overlay |
Расширенная операция смешивания OpenGL: Overlay (см. примечание 3) |
|
Darken |
Расширенная операция смешивания OpenGL: Darken (см. примечание 3) |
|
Lighten |
Расширенная операция смешивания OpenGL: Lighten (см. примечание 3) |
|
ColorDodge |
Расширенная операция смешивания OpenGL: ColorDodge (см. примечание 3) |
|
ColorBurn |
Расширенная операция смешивания OpenGL: ColorBurn (см. примечание 3) |
|
HardLight |
Расширенная операция смешивания OpenGL: HardLight (см. примечание 3) |
|
SoftLight |
Расширенная операция смешивания OpenGL: SoftLight (см. примечание 3) |
|
Difference |
Расширенная операция смешивания OpenGL: Difference (см. примечание 3) |
|
Exclusion |
Расширенная операция смешивания OpenGL: Exclusion (см. примечание 3) |
|
HSLHue |
Расширенная операция смешивания OpenGL: HSLHue (см. примечание 3) |
|
HSLSaturation |
Расширенная операция смешивания OpenGL: HSLSaturation (см. примечание 3) |
|
HSLColor |
Расширенная операция смешивания OpenGL: HSLColor (см. примечание 3) |
|
HSLLuminosity |
Расширенная операция смешивания OpenGL: HSLLuminosity (см. примечание 3) |
Примечания:
- Мин и Макс требуют
GL_EXT_blend_minmax
в OpenGL ES 2. - Для логических операций требуется DX 11.1+ или Vulkan.
- Для расширенных операций смешивания OpenGL требуется
GLES3.1 AEP+
,GL_KHR_blend_equation_advanced
илиGL_NV_blend_equation_advanced
. Их можно использовать только со стандартным смешиванием RGBA; они несовместимы с раздельным смешиванием RGB и альфа-канала.
Примеры
Shader "Examples/CommandExample"
{
SubShader
{
// The rest of the code that defines the SubShader goes here.
Pass
{
// Enable subtractive blending for this Pass
Blend SrcAlpha One
BlendOp RevSub
// The rest of the code that defines the Pass goes here.
}
}
}
В этом примере кода демонстрируется синтаксис использования этой команды в блоке SubShader.
Shader "Examples/CommandExample"
{
SubShader
{
// Enable subtractive blending for this SubShader
Blend SrcAlpha One
BlendOp RevSub
// The rest of the code that defines the SubShader goes here.
Pass
{
// The rest of the code that defines the Pass goes here.
}
}
}