Table of Contents

Class RDPipelineColorBlendStateAttachment

Pipeline color blend state attachment (used by RenderingDevice).

Inheritance
RDPipelineColorBlendStateAttachment

Remarks

Controls how blending between source and destination fragments is performed when using RenderingDevice.

For reference, this is how common user-facing blend modes are implemented in Godot's 2D renderer:

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

Properties

alpha_blend_op

The blend mode to use for the alpha channel.

var alpha_blend_op : int = 0

Property Value

int

Remarks

  • void set_alpha_blend_op(int value)
  • int get_alpha_blend_op

color_blend_op

The blend mode to use for the red/green/blue color channels.

var color_blend_op : int = 0

Property Value

int

Remarks

  • void set_color_blend_op(int value)
  • int get_color_blend_op

dst_alpha_blend_factor

Controls how the blend factor for the alpha channel is determined based on the destination's fragments.

var dst_alpha_blend_factor : int = 0

Property Value

int

Remarks

  • void set_dst_alpha_blend_factor(int value)
  • int get_dst_alpha_blend_factor

dst_color_blend_factor

Controls how the blend factor for the color channels is determined based on the destination's fragments.

var dst_color_blend_factor : int = 0

Property Value

int

Remarks

  • void set_dst_color_blend_factor(int value)
  • int get_dst_color_blend_factor

enable_blend

If true, performs blending between the source and destination according to the factors defined in src_color_blend_factor, dst_color_blend_factor, src_alpha_blend_factor and dst_alpha_blend_factor. The blend modes color_blend_op and alpha_blend_op are also taken into account, with write_r, write_g, write_b and write_a controlling the output.

var enable_blend : bool = false

Property Value

bool

Remarks

  • void set_enable_blend(bool value)
  • bool get_enable_blend

src_alpha_blend_factor

Controls how the blend factor for the alpha channel is determined based on the source's fragments.

var src_alpha_blend_factor : int = 0

Property Value

int

Remarks

  • void set_src_alpha_blend_factor(int value)
  • int get_src_alpha_blend_factor

src_color_blend_factor

Controls how the blend factor for the color channels is determined based on the source's fragments.

var src_color_blend_factor : int = 0

Property Value

int

Remarks

  • void set_src_color_blend_factor(int value)
  • int get_src_color_blend_factor

write_a

If true, writes the new alpha channel to the final result.

var write_a : bool = true

Property Value

bool

Remarks

  • void set_write_a(bool value)
  • bool get_write_a

write_b

If true, writes the new blue color channel to the final result.

var write_b : bool = true

Property Value

bool

Remarks

  • void set_write_b(bool value)
  • bool get_write_b

write_g

If true, writes the new green color channel to the final result.

var write_g : bool = true

Property Value

bool

Remarks

  • void set_write_g(bool value)
  • bool get_write_g

write_r

If true, writes the new red color channel to the final result.

var write_r : bool = true

Property Value

bool

Remarks

  • void set_write_r(bool value)
  • bool get_write_r

Methods

set_as_mix

Convenience method to perform standard mix blending with straight (non-premultiplied) alpha. This sets enable_blend to true, src_color_blend_factor to RenderingDevice.BLEND_FACTOR_SRC_ALPHA, dst_color_blend_factor to RenderingDevice.BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, src_alpha_blend_factor to RenderingDevice.BLEND_FACTOR_SRC_ALPHA and dst_alpha_blend_factor to RenderingDevice.BLEND_FACTOR_ONE_MINUS_SRC_ALPHA.

void set_as_mix