Alpha Blending,中文译作Alpha透明混合
Blending就是控制透明的。处于光栅化的最后阶段。

关于alpha的问题一直是个比较容易摸不清头脑的事情,尤其是涉及到半透明问题的时候,总是不知道为什么A就遮挡了B,而B明明在A前面。

透明混合使用当前片元的透明度作为混合因子,与已存储在颜色缓冲中的颜色值进行混合,得到新的颜色。需要注意的是,透明度混合需要关闭深度写入,这时候要注意物体的渲染顺序。

源颜色(当前片元颜色)source color用S或者SrcColor表示
目标颜色(颜色缓冲中的颜色)destination color用D或者DstColor表示

Blend SrcAlpha OneMinusSrcAlpha:
最终颜色 = 源颜色 * 源Alpha透明值 + 目标颜色 *(1 - 源Alpha透明值)

 最终显示颜色 = 前景色 * Alpha/255 + 背景色 *(255-Alpha)/255
最常用的透明混合方式。贴图alpha值高的部分,显示得实,而混合的背景很淡。而alpha值高的部分,贴图显示得淡,而背景现实得实。

Alpha Test和Alpha Blending是两种处理透明的方法。

Alpha Test采用一种很霸道极端的机制,只要一个像素的alpha不满足条件,那么它就会被fragment shader舍弃,“我才不要你类!”。被舍弃的fragments不会对后面的各种Tests产生影响;否则,就会按正常方式写入到缓存中,并进行正常的深度检验等等,也就是说,Alpha Test是不需要关闭ZWrite的。Alpha Test产生的效果也很极端,要么完全透明,即看不到,要么完全不透明。

Alpha Blending则是一种中庸的方式,它使用当前fragment的alpha作为混合因子,来混合之前写入到缓存中颜色值。但Alpha Blending麻烦的一点就是它需要关闭ZWrite,并且要十分小心物体的渲染顺序。如果不关闭ZWrite,那么在进行深度检测的时候,它背后的物体本来是可以透过它被我们看到的,但由于深度检测时大于它的深度就被剔除了,从而我们就看不到它后面的物体了。因此,我们需要保证物体的渲染顺序是从后往前,并且关闭该半透明对象的ZWrite。

注意:Alpha Blending只是关闭ZWrite,人家可没有关闭ZTest哦!这意味着,在输出一个Alpha Blending的fragment时,它还是会判断和当前Color Buffer中的fragment的深度关闭,如果它比当前的fragment深度更远,那么它就不会再做后续的混合操作;否则,它就会和当前的fragment进行混合,但是不会把自己的深度信息写入Depth Buffer中。这是非常重要的,这一点决定了,即便一个不透明物体出现在一个透明物体的前面,不透明物体仍可以正常的遮挡住透明物体!也就说说,对于Alpha Blending来说,Depth Buffer是只读的。

使用Alpha Test看似更简单,但其实在大多数平台上,相比与Alpha Blending,只有一点小小的性能提升。但是!!!在iOS和某些Android设备上,由于它们使用了PowerVR GPUs,因此Alpha Test的性能消耗反而会更大。因此,一个忠告就是,尽可能使用Alpha Blending,而不要使用Alpha Test。
 【ShaderLab学习】AlphaTest & AlphaBlend理解[2]_牵蜗牛看世界的专栏-CSDN博客_alphablend shader
 【风宇冲】Shader:十三Alpha混合_风宇冲_新浪博客
【Unity Shaders】Alpha Test和Alpha Blending_candycat-CSDN博客_alpha test

shader基础相关:https://learnopengl-cn.github.io/05%20Advanced%20Lighting/04%20Normal%20Mapping/#_1

Alpha Test和Alpha Blend Shader两种处理透明的方法相关推荐

  1. golang java rpc_golang两种调用rpc的方法

    本文实例讲述了golang两种调用rpc的方法.分享给大家供大家参考,具体如下: golang的rpc有两种方法进行调用,一种是rpc例子中给的: package main import ( &quo ...

  2. 一文带你了解两种Transformer文字识别方法

    摘要:受Transformer模型的启发,目前一些学者将该结构应用到文本行识别中,以替代RNN,取得了良好的效果,如在HGA-STR和 SRN. 当前的文本行识别器为拥有更强的序列语义能力,模型多采用 ...

  3. 英雄无敌6服务器在哪个文件夹,Win7系统无法运行英雄无敌6的两种原因和解决方法...

    英雄无敌6作为一款策略模拟类游戏,深受高端玩家的喜爱.但最近有Win7旗舰版系统用户在玩英雄无敌6时,却出现了无法运行的情况,重启好多次还是一样,不太清楚是哪里出问题,网上相关解决方案也比较少,针对此 ...

  4. 两种ps切图方法(图层/切片)

    两种Ps切图方法 一.      基础操作: a)    Ctrl++ 放大图片,ctrl - -缩小图片 b)    按住空格键space+,点击鼠标左键,拖动图片. c)    修改单位,点击编辑 ...

  5. 归一化mysql函数_数据归一化和两种常用的归一化方法

    数据归一化和两种常用的归一化方法 一.总结 一句话总结: min-max标准化:x* =(x-min)/(max-min):新数据加入,需重新计算max和min Z-score标准化:x* =(x-μ ...

  6. win7 计算机名称 ip6,Win7系统提示ipv6无网络访问权限的两种原因及解决方法

    Win7系统提示ipv6无网络访问权限,导致无法上网,这该如何解决呢?ipv6无网络访问权限的原因有很多种,针对此问题,下面脚本之家的教大家解决ipv6无网络访问权限的问题,大家一起来看看吧. 故障原 ...

  7. 利用网络信息减少因果推断中的confounding bias--结合两种思路的新方法

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 本期AI TIME PhD专场,我们有幸邀请到了来自亚利桑那州立大学的博士生郭若城,为我们带来他的精彩分享--利用网络信息减少因果推断中 ...

  8. 数据归一化和两种常用的归一化方法

    数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可 ...

  9. 第 4 章 容器 - 023 - 两种进入容器的方法

    两种进入容器的方法 docker attach 通过 docker attach 可以 attach 到容器启动命令的终端,例如: 1 root@ubuntu:~# docker run -d ubu ...

  10. 如何把PDF转换成长图?分享两种可以实现的方法

    在某些情况下,我们需要将 PDF 文件转换为长图,以便更好地展示和分享.那么如何将PDF 转换为长图呢?今天分享两种可以实现的方法. 1.使用 Adobe Acrobat DC Adobe Acrob ...

最新文章

  1. 析构函数和虚函数、纯虚函数
  2. linux服务器密码策略,windows与linux服务器平台密码策略管理
  3. golang goroutine实现_golang技术随笔(二)理解goroutine
  4. 用Redis实现微博关注关系
  5. 深度学习之生成对抗网络(2)GAN原理
  6. vue-cli3 DllPlugin 提取公用库
  7. LuoguP1113 杂务
  8. python selenium刷新页面_关于python-selenium的页面元素刷新的问题,详细见内容
  9. Web前端---HTML+CSS+JS实现的圣诞抓礼物小游戏
  10. php安装包 64位,PHP5.2集成环境安装包下载
  11. 计算机管理用户拒绝访问,win10系统管理员账户拒绝访问怎么办
  12. 计算机输入法切换用户,电脑输入法切换不了怎么办
  13. 信用卡逾期别慌,有的逾期记录可撤销
  14. 参数是list集合校验,使用@Vaild或者@Vaildated不起作用
  15. 解决主机不能访问VirtualBox上Linux虚拟机ip的问题
  16. 全球与中国医疗3D打印机市场深度研究分析报告
  17. c语言*p1 什么意思,p1什么意思_p1,意思_词汇大全意思全集
  18. Golang for循环
  19. 从 DP 到 DDP 到 apex
  20. QGtkStyle was unable to detect the current GTK+ theme

热门文章

  1. 代码:灰度重心法提取线激光条纹中心线(CPP+OpenCV)
  2. redis java jar_Redis在java开发中使用
  3. linux 批量更改三四级目录 扩展名,Linux批量更改文件后缀名
  4. 蔡学镛:文档模板,天使或恶魔?
  5. 3Dmax旋转如何根据固定角度变化
  6. 什么叫显示动力学_ansys workbench的显示动力学分析的结束时间是指什么?怎么确定?速度载荷是指刚和碰撞物接触时的速度吗?...
  7. 计算机专业规划ppt模板,2021大学生个人规划ppt模板
  8. DeepLog:基于系统日志使用深度学习方法做异常检测和诊断
  9. 电子技术_常见贴片电阻封装功率和标称值
  10. 如何在CentOS 7上安装Yarn