当前位置:   article > 正文

Unity3D - Shader - ShaderLab的混合命令_unity 正片叠底 shader

unity 正片叠底 shader

混合是如何实现的?

当片元着色器产生一个颜色时,可以选择与颜色缓存中的颜色进行混合。混合与两个操作数有关系:源颜色(Source Color)和目标颜色(Destination Color)。

  • 源颜色,用S表示,指的是片元着色器产生的颜色
  • 目标颜色,用D表示,指的是从颜色缓冲区中读取的颜色值。
  • 对他们进行混合后得到的输出颜色,用O表示,它会重写入到颜色缓冲中。

混合中的源颜色、目标颜色、输出颜色都包含RGBA四个通道的值。

混合等式

想要混合源颜色S和目标颜色D,得到输出颜色O需要使用混合等式(Blend Equation),而且每次混合需要两个等式,其中一个用于混合RGB通道,另一个用于混合Alhpa(A)通道。

由于需要两个等式混合(一个用于混合RGB通道,另一个用于混合Alpha通道),并且每个等式需要两个因子(一个用于和源颜色相乘,另一个用于和目标颜色相乘),所以一共有四个因子。

ShaderLab中设置混合因子的命令

命令描述
Blend SrcFactor DstFactor开启混合,并设置混合因子。 源颜色会乘以SrcFactor,而目标颜色会乘以DstFactor,然后把两者相加再存入颜色缓冲区中。
Blend SrcFactor DstFactor, SrcFactorA DstFactorA和上面一样,只是使用不同的因子来混合透明通道

在第一种情况下的命令,仅提供了两个因子,这意味着使用相同的混合因子来混合RGB通道和Alpha通道,即此时SrcFactorA等于SrcFactor,而DstFactorA等于DstFactor。

混合公式:注意结果是相加的

Orgb=SrcFactorSrgb+DstFactorDrgb

Oa=SrcFactorASa+DstFactorADa

可以作为混合因子的参数

参数描述
One因子为1
Zero因子为0
SrcColor因子为源颜色。当用于混合RGB的混合等式时,使用SrcColor的RGB分量作为混合因子;当用于混合Alpha的混合等式时,使用SrcColor的A分量作为混合因子
SrcAlpha因子源颜色的透明度值(Alpha通道)
DstColor因子为源颜色值。当用于混合RGB通道的混合等式时,使用DstColor的RGB分量作为混合因子;当用于混合Alpha通道的混合等式时,使用DstColor分量作为混合因子。
DstAlpha因子为目标颜色的透明度值(Alpha通道)

混合操作

混合等式中,当把源颜色和目标颜色与它们对应的混合因子相乘后,还可以使用Add/Sub/RevSub/Min/Max等操作。

操作描述
Add将混合后的源颜色和目的颜色相加。默认的混合操作
Orgb=SrcFactorSrgb+DstFactorDrgb Oa=SrcFactorASa+DstFactorADa
Sub用混合后的源颜色减去混合后的目的颜色。
Orgb=SrcFactorSrgbDstFactorDrgb Oa=SrcFactorASaDstFactorADa
RevSub用混合后的目的颜色减去混合后的源颜色。
Orgb=DstFactorDrgbSrcFactorSrgb Oa=DstFactorADaSrcFactorASa
Min使用源颜色和目的颜色中的较小值,是逐分量比较。
Orgba=(min(Sr,Dr),min(Sg,Dg),min(Sb,Db),min(Sa,Da))
Max使用源颜色和目的颜色中的较大值,是逐分量比较。
Orgba=(max(Sr,Dr),max(Sg,Dg),min(Sb,Db),max(Sa,Da))

常见的混合类型


Blend SrcAlpha OneMinusSrcAlpha, One Zero

// 正常(Normal), 即透明度混合
Blend SrcAlpha OneMinusSrcAlpha

// 柔和相加 Soft Additive
Blend OneMinusDstColor One

// 正片叠底(Multiply) 相乘
Blend DstColor One

// 两倍相乘(2x Multiply)
Blend DstColor SrcColor

// 变暗 Darken
BlendOp Min
Blend One One

// 变亮 Lighten
BlendOp Max
Blend One One

// 滤色
Blend OneMinusDstColor One

// 线性减淡
Blend One One
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/116349?site
推荐阅读
相关标签
  

闽ICP备14008679号