欢迎光临散文网 会员登陆 & 注册

19.Shader透明效果

2023-06-07 22:28 作者:机智的小草yns  | 我要投稿

目录:

1.透明剔除

2.透明

3.其他

    3.1透明的渲染混合思路

    3.2开启深度写入的半透明效果

    3.3双面渲染透明度混合


透明剔除+透明完整代码:

https://github.com/smartgrass/MyCodes/tree/main/ShaderLearning/Transparent.shader

1.透明剔除

使用clip(a)函数, 对透明度小于a的像素去掉,达到剔除效果

核心代码  (Texture_uv.shader中修改)

随意一张透明图 剔除测试

透明剔除0.2  和  0.9


2.透明

Queue设置为Transparent

设置混合因子 Blend SrcAlpha OneMinusSrcAlpha

片元着色器返回颜色时, a通道设置为_Alpha, _Alpha为[0,1]的小数




3.其他

3.1透明的渲染混合思路

先渲染不透明的物体,再渲染半透明的物体。

在半透明物体中,以相机距离由远到近顺序渲染。

半透明与不透明进行颜色混合


Queue预设

混合因子

混合操作

常见混合效果


扩展: 其他函数(需要用到再看)

https://blog.csdn.net/u010494204/article/details/106295571/

3.2开启深度写入的半透明效果

左边是关闭深度写入的效果 , 右边是开启的效果

原因是, 关闭深度写入会造成错误排序, 解决方法是开启深度写入,但不输出颜色.

第一个pass将模型深度值写入深度缓冲中

第二个paas进行正常的透明度混合

关闭深度写入的核心代码

开启深度写入的核心代码

代码解释:

"RenderType"="Transparent" 用来指明该shader是使用了透明混合的(用透明就跟着写...)

"IgnoreProjector"="True" 忽略投射, 即不会受到投影器的影响

3.3双面渲染透明度混合

思路是使用两个Pass,一个Pass用于渲染正面,一个Pass用于渲染背面。

这样就可以保证渲染顺序的正确性。

原文: https://zhuanlan.zhihu.com/p/112567640


19.Shader透明效果的评论 (共 条)

分享到微博请遵守国家法律