导图社区 Shader 透明效果
unity Shader 透明效果--《shader从入门到精通》《shader从入门到精通》
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
Shader 透明效果
渲染顺序
1. 关闭深度写入,渲染顺序变得非常重要
2. 渲染引擎一般都会对物体先进行排序,再渲染
i. 先渲染所有不透明物体,并开启他们的 深度测试和深度写入。
ii. 把半透明物体按他们距离摄像机的远近进行 排序,然后按照从后往前的顺序渲染这些 半透明物体,并且开启他们的深度测试,但 关闭深度写入。
Unity 渲染顺序 (渲染队列) render queue
1. Background (1000)
会在其他队列之前被渲染
2. Geometry (2000)
默认的,大多数物体使用这个。不透明物体使用这个
3. AlphaTest (2450)
需要透明度测试的物体使用这个队列。
4. Transparent (3000)
这个队列的物体会在所有Geometry和AlphaTest物体渲染后 ,再按照从后往前的顺序渲染。任何是用来透明度混合的 物体都应该使用该队列。
5. Overlay (4000)
用于实现叠加效果。任何需要在最后渲染的物体都应该使用该队列
6.
7.
透明度测试
1.
透明度混合
半透明效果
ShaderLab 混合命令
1. 混合因子
2. 混合操作
常见的混合操作
3. 透明度混合的双面渲染
关键词
1. 深度
2. 深度写入 (ZWrite)
开启后决定片元的深度值是否写入深度缓冲,可配置
3. 深度测试 (ZTest)
开启后测试结果决定片元是否被舍弃,可配置
4. 深度检验
5. 深度缓冲
i. 深度缓冲就像颜色缓冲(Color Buffer)(储存所有的片段颜色:视觉输出)一样,在每个片段中储存了信息,并且(通常)和颜色缓冲有着一样的宽度和高度。
ii. 对于不透明的物体,不考虑它们的渲染顺序也能得到正确的排序效果
iii. 用于解决可见性问题,决定那些物体部分会被先渲染, 哪些部分会被其他物体遮挡
iv.
6. 深度缓存
7. 实现透明效果
1. 透明度测试 (Alpha Test)
采用一种“霸道极端”的机制,只要一个 片元的透明度不满足条件(通常小于某个阈值), 那么它对应的片元就会被舍弃。
2. 透明度混合 (Alpha Blending)
可以得到真正的半透明度效果。它会使用当前 片元的透明度作为混合因子,与已经存在颜色缓存中 的颜色值进行混合,得到新的颜色。
需要关闭深度写入
8. 子主题
9. 子主题