RDPipelineColorBlendStateAttachment

Наследует: RefCounted < Object

Присоединение состояния смешивания цветов конвейера (используется RenderingDevice).

Описание

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

Для справки, вот как реализованы общие пользовательские режимы смешивания в 2D-рендерере Godot:

Mix:

var attachment = RDPipelineColorBlendStateAttachment.new()
attachment.enable_blend = true
attachment.color_blend_op = RenderingDevice.BLEND_OP_ADD
attachment.src_color_blend_factor = RenderingDevice.BLEND_FACTOR_SRC_ALPHA
attachment.dst_color_blend_factor = RenderingDevice.BLEND_FACTOR_ONE_MINUS_SRC_ALPHA
attachment.alpha_blend_op = RenderingDevice.BLEND_OP_ADD
attachment.src_alpha_blend_factor = RenderingDevice.BLEND_FACTOR_ONE
attachment.dst_alpha_blend_factor = RenderingDevice.BLEND_FACTOR_ONE_MINUS_SRC_ALPHA

Add:

var attachment = RDPipelineColorBlendStateAttachment.new()
attachment.enable_blend = true
attachment.alpha_blend_op = RenderingDevice.BLEND_OP_ADD
attachment.color_blend_op = RenderingDevice.BLEND_OP_ADD
attachment.src_color_blend_factor = RenderingDevice.BLEND_FACTOR_SRC_ALPHA
attachment.dst_color_blend_factor = RenderingDevice.BLEND_FACTOR_ONE
attachment.src_alpha_blend_factor = RenderingDevice.BLEND_FACTOR_SRC_ALPHA
attachment.dst_alpha_blend_factor = RenderingDevice.BLEND_FACTOR_ONE

Subtract:

var attachment = RDPipelineColorBlendStateAttachment.new()
attachment.enable_blend = true
attachment.alpha_blend_op = RenderingDevice.BLEND_OP_REVERSE_SUBTRACT
attachment.color_blend_op = RenderingDevice.BLEND_OP_REVERSE_SUBTRACT
attachment.src_color_blend_factor = RenderingDevice.BLEND_FACTOR_SRC_ALPHA
attachment.dst_color_blend_factor = RenderingDevice.BLEND_FACTOR_ONE
attachment.src_alpha_blend_factor = RenderingDevice.BLEND_FACTOR_SRC_ALPHA
attachment.dst_alpha_blend_factor = RenderingDevice.BLEND_FACTOR_ONE

Multiply:

var attachment = RDPipelineColorBlendStateAttachment.new()
attachment.enable_blend = true
attachment.alpha_blend_op = RenderingDevice.BLEND_OP_ADD
attachment.color_blend_op = RenderingDevice.BLEND_OP_ADD
attachment.src_color_blend_factor = RenderingDevice.BLEND_FACTOR_DST_COLOR
attachment.dst_color_blend_factor = RenderingDevice.BLEND_FACTOR_ZERO
attachment.src_alpha_blend_factor = RenderingDevice.BLEND_FACTOR_DST_ALPHA
attachment.dst_alpha_blend_factor = RenderingDevice.BLEND_FACTOR_ZERO

Pre-multiplied alpha:

var attachment = RDPipelineColorBlendStateAttachment.new()
attachment.enable_blend = true
attachment.alpha_blend_op = RenderingDevice.BLEND_OP_ADD
attachment.color_blend_op = RenderingDevice.BLEND_OP_ADD
attachment.src_color_blend_factor = RenderingDevice.BLEND_FACTOR_ONE
attachment.dst_color_blend_factor = RenderingDevice.BLEND_FACTOR_ONE_MINUS_SRC_ALPHA
attachment.src_alpha_blend_factor = RenderingDevice.BLEND_FACTOR_ONE
attachment.dst_alpha_blend_factor = RenderingDevice.BLEND_FACTOR_ONE_MINUS_SRC_ALPHA

Свойства

BlendOperation

alpha_blend_op

0

BlendOperation

color_blend_op

0

BlendFactor

dst_alpha_blend_factor

0

BlendFactor

dst_color_blend_factor

0

bool

enable_blend

false

BlendFactor

src_alpha_blend_factor

0

BlendFactor

src_color_blend_factor

0

bool

write_a

true

bool

write_b

true

bool

write_g

true

bool

write_r

true

Методы

void

set_as_mix()


Описания свойств

BlendOperation alpha_blend_op = 0 🔗

Режим смешивания, используемый для альфа-канала.


BlendOperation color_blend_op = 0 🔗

Режим смешивания, используемый для цветовых каналов красного/зеленого/синего.


BlendFactor dst_alpha_blend_factor = 0 🔗

Управляет тем, как определяется коэффициент смешивания для альфа-канала на основе фрагментов назначения.


BlendFactor dst_color_blend_factor = 0 🔗

Управляет тем, как определяется коэффициент смешивания для цветовых каналов на основе фрагментов назначения.


bool enable_blend = false 🔗

  • void set_enable_blend(value: bool)

  • bool get_enable_blend()

Если true, выполняет смешивание между источником и назначением в соответствии с факторами, определенными в src_color_blend_factor, dst_color_blend_factor, src_alpha_blend_factor и dst_alpha_blend_factor. Режимы смешивания color_blend_op и alpha_blend_op также учитываются, при этом write_r, write_g, write_b и write_a управляют выводом.


BlendFactor src_alpha_blend_factor = 0 🔗

Управляет тем, как определяется коэффициент смешивания для альфа-канала на основе фрагментов источника.


BlendFactor src_color_blend_factor = 0 🔗

Управляет тем, как определяется коэффициент смешивания цветовых каналов на основе фрагментов источника.


bool write_a = true 🔗

  • void set_write_a(value: bool)

  • bool get_write_a()

Если true, записывает новый альфа-канал в конечный результат.


bool write_b = true 🔗

  • void set_write_b(value: bool)

  • bool get_write_b()

Если true, записывает новый канал синего цвета в конечный результат.


bool write_g = true 🔗

  • void set_write_g(value: bool)

  • bool get_write_g()

Если true, записывает новый канал зеленого цвета в конечный результат.


bool write_r = true 🔗

  • void set_write_r(value: bool)

  • bool get_write_r()

Если true, записывает новый канал красного цвета в конечный результат.


Описания метода

void set_as_mix() 🔗

Удобный метод для выполнения стандартного смешивания с прямой (не предварительно умноженной) альфой. Это устанавливает enable_blend в true, src_color_blend_factor в RenderingDevice.BLEND_FACTOR_SRC_ALPHA, dst_color_blend_factor в RenderingDevice.BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, src_alpha_blend_factor в RenderingDevice.BLEND_FACTOR_SRC_ALPHA и dst_alpha_blend_factor в RenderingDevice.BLEND_FACTOR_ONE_MINUS_SRC_ALPHA.