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

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

Определяет операцию смешивания, используемую командой Blend. Чтобы эта команда имела какой-либо эффект, в том же блоке Pass (если эта команда находится в блоке Pass) или в блоке SubShader (если эта команда находится в блоке SubShader) должна также находиться команда Blend.

Не все операции смешивания поддерживаются на всех устройствах, и поддержка зависит как от графики API, так и от оборудования. Различные графики APIs по-разному обрабатывают неподдерживаемые операции смешивания: GL пропускает неподдерживаемые операции, а Vulkan и Metal возвращаются к операциям Добавить.

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

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

Синтаксис

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

Подпись Синтаксис примера Функция
BlendOp <operation> BlendOp Sub Задает операцию смешивания, используемую командой Blend.

Параметры

Параметр Значение Функция
операции Add Добавить источник и назначение вместе.
Sub Вычитаем место назначения из источника.
RevSub Вычитаем источник из назначения.
Min Использовать меньший из источника и назначения.
Max Используйте большее из источника и назначения.
LogicalClear Логическая операция: Clear (0) (1)
LogicalSet Логическая операция: Set (1) (1)
LogicalCopy Логическая операция: Copy (s) (1)
LogicalCopyInverted Логическая операция: Copy inverted (!s) 2
LogicalNoop Логическая операция: Noop (d) (1)
LogicalInvert Логическая операция: Invert (!d) (1)
LogicalAnd Логическая операция: And (s & d) (1)
LogicalNand Логическая операция: Nand !(s & d) (1)
LogicalOr Логическая операция: Or (s | d) (1)
LogicalNor Логическая операция: Nor !(s | d) (1)
LogicalXor Логическая операция: Xor (s ^ d) (1)
LogicalEquiv Логическая операция: Equivalence !(s ^ d) (1)
LogicalAndReverse Логическая операция: Reverse And (s & !d) (1)
LogicalAndInverted Логическая операция: Inverted And (!s & d) (1)
LogicalOrReverse Логическая операция: Reverse Or (s | !d) (1)
LogicalOrInverted Логическая операция: Inverted Or (!s | d) (1)
Multiply Усовершенствованная OpenGL операция смешивания: Multiply (2)
Screen Усовершенствованная OpenGL операция смешивания: Screen (2)
Overlay Усовершенствованная OpenGL операция смешивания: Overlay (2)
Darken Усовершенствованная OpenGL операция смешивания: Darken (2)
Lighten Усовершенствованная OpenGL операция смешивания: Lighten (2)
ColorDodge Усовершенствованная OpenGL операция смешивания: ColorDodge (2)
ColorBurn Усовершенствованная OpenGL операция смешивания: ColorBurn (2)
HardLight Усовершенствованная OpenGL операция смешивания: HardLight (2)
SoftLight Усовершенствованная OpenGL операция смешивания: SoftLight (2)
Difference Усовершенствованная OpenGL операция смешивания: Difference (2)
Exclusion Усовершенствованная OpenGL операция смешивания: Exclusion (2)
HSLHue Усовершенствованная OpenGL операция смешивания: HSLHue (2)
HSLSaturation Усовершенствованная OpenGL операция смешивания: HSLSaturation (2)
HSLColor Усовершенствованная OpenGL операция смешивания: HSLColor (2)
HSLLuminosity Усовершенствованная OpenGL операция смешивания: HSLLuminosity (2)

Примечания:

  1. Логические операции требуют DX 11.1+ или Vulkan.
  2. Расширенные операции смешивания 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.
        }
    }
}

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