我有一个着色器,需要渲染人体的透视孔,并且我使用了透明着色器来查看模型。我已经解决了模型的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]
答案 0 :(得分:0)
好吧,对于一个,您正在使用仅Diffuse light的通行证...如果您想要金属和光滑度,为什么不只使用表面着色器并在其中粘贴底漆通行证呢? / p>
创建一个新的表面着色器。为了使其透明,您需要添加以下内容,
您的标签必须如下所示:
Tags { "RenderType" = "Transparent" "Queue"="Transparent"}
将其添加到子着色器的开头:
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
表面杂物必须包含alpha:fade,如下所示:
#pragma surface surf Standard alpha:fade
在SubShader内但在CGPROGRAM块之前添加底漆遍。在surf函数内,像在普通曲面函数中一样设置不同的值。您可以在这里阅读有关表面着色器的更多信息:https://docs.unity3d.com/Manual/SL-SurfaceShaders.html