透明基础
unity实现透明
- 透明度测试
- 只要一个片元的透明度不满足,就被舍弃
- 不需要关闭深度写入
- 透明度混合
- 可以获得真正的半透明效果
- 需要关闭深度写入
- 深度缓冲是只读
- 关闭深度写入后,渲染顺序很重要
- 先渲染所有不透明物体,并开启深度测试和深度写入
- 把半透明物体按距离摄像机远近排序,按照从后向前的顺序渲染,开启深度测试的同时关闭深度写入。
unityshader渲染顺序
渲染队列(render queue),使用SubShader的Queue标签觉得模型归于哪个渲染队列。
unity使用整数索引来表示渲染队列,索引越小越早渲染
unity提前定义的5个渲染队列
名称 索引号 描述 Background 1000 会在任何其他队列前被渲染,一般用来绘制背景上的物体 Geometry 2000 默认渲染队列。不透明物体使用该队列 AlphaTest 2450 透明度测试的队列,所有不透明物体渲染后再渲染该队列更加高效 Transparent 3000 在G和A队列渲染后,按从后往前的顺序渲染,使用了透明度混合的物体的队列 Overlay 4000 用于实现叠加效果,任何需要最后渲染的物体都应该使用该队列 在unityshader中Queue放在Tags当中
1
2
3
4
5
6SubShader{
Tags{"Queue"="Transparent"}
Pass{
ZWrite Off//可以写在pass中,表示在该pass中关闭,写在SubShader中可关闭所有Pa
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 雨夜!