关于透明度测试,主要是通过clip函数来实现裁剪功能
函数:void clip(float4 x);void clip(float3 x);void clip(float2 x);void clip(float x).
如果指定的一个参数为负数,就会舍弃当前像素的输出颜色
SubShader {
Tags {“Queue”=“AlphaTest” “IgnoreProjector”=“True” “RenderType”=“TransparentCutout”}
Pass {
Tags { "LightMode"="ForwardBase" }
...
...
fixed4 frag(v2f i) : SV_Target {
...
clip (texColor.a - _Cutoff);
...
}
这里就是通过对该像素采样后的alpha通道来进行alpha测试,来决定该像素是否参与渲染。
透明度混合:简单理解,就是加了alpha通道混合,来实现透明度->a通道为1就不透明,为0就透明的线性计算。

这里列的都是要注意的地方:
SubShader {
Tags {“Queue”=“Transparent” “IgnoreProjector”=“True” “RenderType”=“Transparent”}
…
…
Pass{
…
Blend SrcAlpha OneMinusSrcAlpha
…
}
这里是要设置两个比较重要的参数,一个是设置alpha,一个是原本的材质,其实说白了,就是photoshop里,调透明度的效果,设置的alpha与原本的材质混合,得到的就是ps里设置的alpha(透明度效果)。

这篇博客详细介绍了Unity中Shader的透明度测试和透明度混合。通过clip函数实现透明度裁剪,讲解了透明物体的渲染类型和 Blend 操作。内容涉及透明度混合的原理,如何处理深度写入和遮挡关系,以及双面透明度渲染的实现,旨在帮助读者深入理解Unity Shader中的透明效果处理。
2312

被折叠的 条评论
为什么被折叠?



