透明着色器无法应用的金属和平滑度

问题描述 投票:0回答:1

我有这个shader需要使人体的透视孔部和我使用了一个透明的着色器,看看好像模型。我已经解决了模型的Z深度缓冲器的问题,但我不能似乎适用金属和平滑的着色器。有什么建议?非常感谢你。 enter image description here以下是着色器:

![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]
unity3d shader
1个回答
0
投票

那么,对于一个,你用的是通行证,仅是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

© www.soinside.com 2019 - 2024. All rights reserved.