确定 GPU 如何将片段 着色器在 GPU 上运行的程序。 更多信息
查看 词汇表 的输出与渲染目标组合在一起。
此命令的功能取决于混合操作,您可以使用 BlendOp 命令设置混合操作。请注意,虽然所有图形 API 和硬件都支持混合本身,但某些混合操作的支持范围更有限。
启用混合会禁用 GPU 上的一些优化(主要是隐藏表面移除/早期 Z),这会导致 GPU 帧时间增加。
此命令会更改渲染状态。在 Pass
块中使用它来设置该 Pass
的渲染状态,或在 SubShader
块中使用它来设置该 SubShader
中所有 Pass
的渲染状态。
功能名称 | 通用 渲染管线一系列操作,将场景内容显示在屏幕上。Unity 允许您选择预制渲染管线,或编写自己的渲染管线。 更多信息 查看 词汇表 (URP) |
高保真渲染管线 (HDRP) | 自定义 SRP | 内置渲染管线 |
---|---|---|---|---|
混合 | 是 | 是 | 是 | 是 |
签名 | 示例语法 | 函数 |
---|---|---|
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 和 alpha 值设置单独的混合因子。(2) |
Blend <render target> <source factor RGB> <destination factor RGB>, <source factor alpha> <destination factor alpha> |
Blend 1 One Zero, Zero One |
同上,但针对给定渲染目标。(1) (2) |
如果启用混合,则会发生以下情况
Add
。Add
、Sub
、RevSub
、Min
或 Max
,则 GPU 会将片段着色器输出的值乘以源因子。Add
、Sub
、RevSub
、Min
或 Max
,则 GPU 会将渲染目标中已有的值乘以目标因子。备注
GL_ARB_draw_buffers_blend
或 OpenGL ES 3.2。参数 | 值 | 函数 |
---|---|---|
render target | 整数,范围为 0 到 7 | 渲染目标索引。 |
state | Off |
禁用混合。 |
factor | One |
此输入的值为 1。使用此值以使用源颜色或目标颜色的值。 |
Zero |
此输入的值为 0。使用此值以删除源值或目标值。 | |
SrcColor |
GPU 将此输入的值乘以源颜色值。 | |
SrcAlpha |
GPU 将此输入的值乘以源 alpha 值。 | |
SrcAlphaSaturate |
GPU 将此输入的值乘以 源 alpha 和 (1 - 目标 alpha) 的最小值。 |
|
DstColor |
GPU 将此输入的值乘以帧缓冲区源颜色值。 | |
DstAlpha |
GPU 将此输入的值乘以帧缓冲区源 alpha 值。 | |
OneMinusSrcColor |
GPU 将此输入的值乘以 (1 - 源颜色)。 | |
OneMinusSrcAlpha |
GPU 将此输入的值乘以 (1 - 源 alpha)。 | |
OneMinusDstColor |
GPU 将此输入的值乘以 (1 - 目标颜色)。 | |
OneMinusDstAlpha |
GPU 将此输入的值乘以 (1 - 目标 alpha)。 |
混合方程式为
finalValue = sourceFactor * sourceValue operation destinationFactor * destinationValue
在此方程式中
finalValue
是 GPU 写入目标缓冲区的值。sourceFactor
在 Blend 命令中定义。sourceValue
是片段着色器输出的值。operation
是混合操作。destinationFactor
在 Blend 命令中定义。destinationValue
是目标缓冲区中已有的值。