我有这个shader需要使人体的透视孔部和我使用了一个透明的着色器,看看好像模型。我已经解决了模型的Z深度缓冲器的问题,但我不能似乎适用金属和平滑的着色器。有什么建议?非常感谢你。 以下是着色器:
![Shader "Custom/test2" {
Properties{
_Color("Main Color", Color) = (1,1,1,1)
_MainTex("Base (RGB) Trans (A)", 2D) = "white" {}
_Glossiness("Smoothness", Range(0,1)) = 0.5
_Metallic("Metallic", Range(0,1)) = 0.0
}
SubShader{
Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }
// extra pass that renders to depth buffer only
Pass{
ZWrite On
ColorMask 0
}
// paste in forward rendering passes from Transparent/Diffuse
UsePass "Transparent/Diffuse/FORWARD"
}
Fallback "Transparent/VertexLit"
}][1]
那么,对于一个,你用的是通行证,仅是Diffuse light ...如果你想和金属光滑,你为什么不只是使用表面着色器和您的底漆粘贴传递呢?
创建一个新的表面材质。为了使它支持透明度,你需要添加下面的东西,
你的标签必须是这样的:
Tags { "RenderType" = "Transparent" "Queue"="Transparent"}
这增加了subshader的开始:
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
并且表面编译必须包括阿尔法:褪色,就像这样:
#pragma surface surf Standard alpha:fade
添加您的底漆传球SubShader内,但CGPROGRAM块之前。里面的冲浪功能,设置不同的值,就像您在一个正常的表面功能。您可以在此处详细了解表面着色器:https://docs.unity3d.com/Manual/SL-SurfaceShaders.html