您的位置:首页 > 移动开发 > Unity3D

【Unity5.x Shdaers】ShaderLab: Blending 混合

2016-12-07 15:57 453 查看

ShaderLab: Blending

混合用于制作透明物体。



当渲染图形时,在所有shaders执行并且所有textures应用之后,像素被写入屏幕。 它们如何与已经存在的内容组合由Blend命令控制。

语法

Blend Off
:关闭混合 (这是默认值)

Blend SrcFactor DstFactor
:配置并启用混合。 生成的颜色乘以SrcFactor。 已经在屏幕上的颜色乘以DstFactor,并将两者相加。

Blend SrcFactor DstFactor, SrcFactorA DstFactorA
: 同上,但使用不同的因子来混合alpha通道。

BlendOp Op
: 对它们执行不同的操作来替代将混合颜色添加在一起。

BlendOp OpColor, OpAlpha
: 同上,但对颜色(RGB)和alpha(A)通道使用不同的混合操作。

此外,你可以设置upper-rendertarget混合模式。 当使用多渲染目标(MRT)渲染时,上面的常规语法为所有渲染目标设置相同的混合模式。 以下语法可以为各个渲染目标设置不同的混合模式,其中N是渲染目标索引(0..7)。 此功能适用于大多数现代API / GPU(DX11 / 12,GLCore,Metal,PS4):

Blend N SrcFactor DstFactor


Blend N SrcFactor DstFactor, SrcFactorA DstFactorA


BlendOp N Op


BlendOp N OpColor, OpAlpha


AlphaToMask On
:打开Alpha-to-coverage。 使用MSAA时,alpha-to-coverage会根据像素shader结果alpha值按比例修改多重采样覆盖蒙版。 这通常用于比正常alpha test更少的混叠轮廓; 用于植被和其他alpha-tested Shaders。

Blend operations 混合操作

Add   将源和目标添加在一起。

Sub   从源中减去目标。

RevSub 从目标中减去源。

Min   使用较小的源和目标。

Max   使用较大的源和目标。

其他的操作及本篇博客来自官方文档:https://docs.unity3d.com/Manual/SL-Blend.html

Blend factors 混合因子

以下所有属性在Blend命令中都适用于SrcFactor&DstFactor。 源指的是计算的颜色,目标是已经在屏幕上的颜色。 如果BlendOp使用逻辑运算,则忽略混合因子。

One         1 - 使用它让源或目标颜色完全通过

Zero The       0 - 使用此值删除源或目标值

SrcColor       源的Color(RGB)值

SrcAlpha       源的Alpha(a)值

DstColor        目标的Color(RGB)值

DstAlpha       目标的Alpha(a)值

OneMinusSrcColo  1 - source color.

OneMinusSrcAlpha  1 - source alpha.

OneMinusDstColor  1 - destination color.

OneMinusDstAlpha  1 - destination alpha.

以下是最常见的混合类型

Blend SrcAlpha OneMinusSrcAlpha // Traditional transparency 传统透明度,最常用的
Blend One OneMinusSrcAlpha // Premultiplied transparency 预乘透明度
Blend One One // Additive 叠加的
Blend OneMinusDstColor One // Soft Additive 软叠加 
Blend DstColor Zero // Multiplicative
Blend DstColor SrcColor // 2x Multiplicative
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity shader