实际上,这只是对早期边缘着色器的修改。 不同之处在于,我们不仅添加具有高点积值的颜色,还添加了与这些值相反的alpha。 因此从本质上讲,它会为透明的坡道创建边缘颜色。 嗯,我想知道渐变着色器是否可以通过蓝色到透明的渐变来实现? 🤔
此着色器中的新概念包括手动将Queue
指定为transparent
。 这意味着使用此着色器渲染的对象将在带有默认几何标记的对象之后绘制,因此它将正确计算透明度。
另外,附加的Pass{}
部分添加了一个有趣的功能。 否则,您将获得上面的图像,无论在哪个表面最靠近查看器,您都可以在其中实际看到模型的内部。 添加ZWrite On
意味着它将进行深度测试,并将曲面的深度写入z缓冲区,并剔除那些隐藏的曲面。 最终结果如下所示:
着色器“自定义/全息图” {
属性{
_RimColor(“边框颜色”,颜色)=(0,0.5,0.5,0.0)
_RimPower(“ Rim Power”,Range(0.5,8.0))= 3.0
}
SubShader {
标签{“ Queue” =“ Transparent”}
通过{
ZWrite On //通过写入z缓冲区来修复通过的zombunny内部部分的z顺序
ColorMask 0 //不写入帧缓冲区
}
CG程序
#pragma兰伯特表面冲浪alpha:fade
struct输入{
float3 viewDir;
};
float4 _RimColor;
float _RimPower;
无效冲浪(输入IN,输入inout SurfaceOutput o){
半框= 1-饱和(dot(normalize(IN.viewDir),o.Normal));
o.Emission = _RimColor.rgb * pow(rim,_RimPower)* 10;
o.Alpha =战俘(rim,_RimPower);
}
ENDCG
}
后备“扩散”
}
从Penny de Byl出色的着色器开发(从Scratch for Unity到Cg类)! holistic3d.com上的更多内容