控制新绘制像素(源/Source)与已有像素(目标/Destination)的颜色叠加方式。

声明混合

在SubShader/Pass中声明

SHADERLAB
BlendOp [操作符]
BlendOp [RGB操作符] [Alpha操作符] // 分离RGB/A
点击展开查看更多
SHADERLAB
Blend [源因子] [目标因子]
Blend [RGB源因子] [RGB目标因子], [Alpha源因子] [Alpha目标因子] // 分离RGB/A
点击展开查看更多

分离RGB/A:需要针对Alpha通道使用不同的混合因子进行混合时,前半部分是RGB,后半是Alpha

SHADERLAB
Blend One Zero // Color = 1 * 源色 + 0 * 目标色
Blend DstColor Zero // Color = 目标色 * 源色 + 0 * 目标色 (相当于正片叠底)
点击展开查看更多

混合公式

PLAINTEXT
FinalColor = (SrcFactor * SrcColor) 操作符 (DstFactor * DstColor)
点击展开查看更多

混合因子关键词

因子关键字 对应值 (RGBA)
One (1,1,1,1)
Zero (0,0,0,0)
SrcColor 源颜色值 (R_src, G_src, B_src, A_src)
SrcAlpha 源透明度 (A_src, A_src, A_src, A_src)
DstColor 目标颜色值 (R_dst, G_dst, B_dst, A_dst)
DstAlpha 目标透明度 (A_dst, A_dst, A_dst, A_dst)
OneMinusSrcColor 一减源颜色值(1 - R_src, 1 - G_src, 1 - B_src, 1 - A_src)
OneMinusDstColor 一减目标颜色值(1 - R_dst, 1 - G_dst, 1 - B_dst, 1 - A_dst)
OneMinusSrcAlpha 一减源透明度(1 - A_src, ...)

常用混合模式预设

混合操作符均为Add(默认)

混合模式 Blend命令 效果描述 典型应用
正常透明 (Alpha Blending) Blend SrcAlpha OneMinusSrcAlpha 标准透明度混合 玻璃、烟雾、UI透明度
加法叠加 (Additive) Blend One One 颜色亮度叠加,会变亮 火焰、光晕、粒子特效
软加法 (Soft Additive) Blend OneMinusDstColor One 避免过度曝光,柔和增亮 灯光效果
乘法叠加 (Multiplicative) Blend DstColor Zero 保留目标色,源颜色作为滤镜 阴影、染色效果
正片叠底 (Multiply) Blend DstColor SrcColor 源与目标相乘,变暗效果 投影、暗角
屏幕叠加 (Screen) Blend One OneMinusSrcColor 类似Photoshop屏幕模式,提亮 高光、眩光

混合操作符

操作符 计算公式 效果说明
Add (默认) Final = Src + Dst 源与目标颜色相加(标准叠加)
Sub Final = Src - Dst 源颜色减去目标颜色
RevSub Final = Dst - Src 目标颜色减去源颜色
Min Final = min(Src, Dst) 取各通道最小值(变暗效果)
Max Final = max(Src, Dst) 取各通道最大值(变亮效果)
Mul Final = Src * Dst 源与目标相乘(类似乘法混合)
Screen Final = 1 - (1 - Src) * (1 - Dst) 类似屏幕叠加模式

版权声明

作者: Chaim

链接: https://chaim.eu.org/posts/%E6%B7%B7%E5%90%88%E6%A8%A1%E5%BC%8F-blend-mode/

许可证: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键