unity半透明混合问题_透明度混合(Alphablending)

unity半透明混合问题_透明度混合(Alphablending)
氧化沟工艺流程图
⽂章⽬录
前⾔
⼀、混合模式
1.说明
2.常⽤公式
智能酸奶机⼆、问题
总结
参考
前⾔
本⽂介绍unity渲染中的透明度混合,和透明度混合相关问题。
⼀、混合公式
1.说明
Blend Src Dst, 其中Src是指当前⽚元着⾊器输出的颜⾊,Dst是指缓存区中的颜⾊,src 可以简单理解为当前输出的颜unity上,Blend Src Dst,
⾊,dst表⽰上⼀次渲染的颜⾊(背景颜⾊)。
混合⽅程:
C¯result=C¯source∗Fsource+C¯destination∗Fdestination
C¯source:源颜⾊向量。这是来⾃纹理的本来的颜⾊向量。
C¯destination:⽬标颜⾊向量。这是储存在颜⾊缓冲中当前位置的颜⾊向量。
Fsource:源因⼦。设置了对源颜⾊的alpha值影响。
autsFdestination:⽬标因⼦。设置了对⽬标颜⾊的alpha影响。
公式解析:
假设混合⽅式为:Blend SrcAlpha OneMinusSrcAlpha
Blend SrcAlpha OneMinusSrcAlpha
1)假设贴图有⼀个不透明红⾊点, Color(1,0,0,1),该点背景⾊为不透明蓝⾊ Color(0,0,1,1)。最终颜⾊ =
(1,0,0)* 1 +(0,0,1)(1 - 1) = (1,0,0)
2)假设贴图有⼀个半透明红⾊点, Color(1,0,0,0.8),该点背景⾊为不透明蓝⾊ Color(0,0,1,1)最终颜⾊ =
(1,0,0) 0.8 +(0,0,1)(1 - 0.8) = (0.8,0,0.2)⽽假如0.8变为0.2时,最终颜⾊ = (1,0,0)
0.2+(0,0,1)*(1 - 0.2) = (0.2,0,0.8)
OpenGL混合参考链接adthedocs.io
1.常⽤公式
类似PS上的效果:
Blend SrcAlpha OneMinusSrcAlpha 正常
Blend OneMinusDstAlpha One 柔和相加(Soft Addtive)
Blend DstColor Zero 正⽚叠底(Multiply),即相乘
Blend DstColor SrcColor 两倍相乘(2x Multiply)
BlendOp Min
Blend One One 变暗(Darken)
www.hnnnBlendOp Max
Blend One One 变亮(Lighten)
Blend OneMinusDstColor One 滤⾊(Screen)
刮刀钻头>数显计数器Blend One One 线性减淡(Linear Dodge)
⼆、问题
解决Unity在线性空间下,UI对于带Alpha半透明的贴图,在混合颜⾊时就会出现错误。(备注:Unity线性空间下的sRGB选项不会对Alpha进⾏处理)。
混合公式:
Gamma空间下的Alpha混合公式:color = (A.rgb * A.a) + (B.rgb * (1 - A.a))
Linear空间下的Alpha混合公式:color = ((A.rgb ^ 2.2 * A.a) + (B.rgb ^ 2.2 * (1 - A.a))) ^(1 / 2.2)
解决步骤:
1)所有UI素材取消勾选sRGB选项,得到的混合公式为:color = ((A.rgb * A.a) + (B.rgb * (1 - A.a))) ^(1 / 2.2) ;
2)然后在输出的颜⾊上做⼀次pow(2.2),可以⽤后处理实现,Universal Render Pipeline管道中可以在BlitPass中做处理。
总结
透明度混合可以实现很多复杂的效果,选择不同的混合模式,可以解决很多渲染上显⽰问题,⽐如RT在UI上的显⽰问题,RT上的特效和UI 结合显⽰的问题等。
参考
混合 - LearnOpenGL-CN adthedocs.io
【UnityShader】Blend混合模式 与 20余种颜⾊混合模式代码实现(多图预警)w ww.bilibili

本文发布于:2024-09-21 01:42:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/214265.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:混合   透明度   问题
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议