Unity双面Shader(Two Side)

Shader "GarFey/Standard(Two Side)"
{
    Properties
    {
       _Color("Color", Color) = (1,1,1,1)
       _MainTex("Albedo", 2D) = "white" {}
       _Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5
       _Glossiness("Smoothness", Range(0.0, 1.0)) = 0.5
       _GlossMapScale("Smoothness Scale", Range(0.0, 1.0)) = 1.0
       [Enum(Metallic Alpha,0,Albedo Alpha,1)] _SmoothnessTextureChannel ("Smoothness texture channel", Float) = 0
       [Gamma] _Metallic("Metallic", Range(0.0, 1.0)) = 0.0
       _MetallicGlossMap("Metallic", 2D) = "white" {}
       [ToggleOff] _SpecularHighlights("Specular Highlights", Float) = 1.0
       [ToggleOff] _GlossyReflections("Glossy Reflections", Float) = 1.0
       _BumpScale("Scale", Float) = 1.0
       _BumpMap("Normal Map", 2D) = "bump" {}
       _Parallax ("Height Scale", Range (0.005, 0.08)) = 0.02
       _ParallaxMap ("Height Map", 2D) = "black" {}
       _OcclusionStrength("Strength", Range(0.0, 1.0)) = 1.0
       _OcclusionMap("Occlusion", 2D) = "white" {}
       _EmissionColor("Color", Color) = (0,0,0)
       _EmissionMap("Emission", 2D) = "white" {}
       _DetailMask("Detail Mask", 2D) = "white" {}
       _DetailAlbedoMap("Detail Albedo x2", 2D) = "grey" {}
       _DetailNormalMapScale("Scale", Float) = 1.0
       _DetailNormalMap("Normal Map", 2D) = "bump" {}
       [Enum(UV0,0,UV1,1)] _UVSec ("UV Set for secondary textures", Float) = 0
       // Blending state
       [HideInInspector] _Mode ("__mode", Float) = 0.0
       [HideInInspector] _SrcBlend ("__src", Float) = 1.0
       [HideInInspector] _DstBlend ("__dst", Float) = 0.0
       [HideInInspector] _ZWrite ("__zw", Float) = 1.0
    }
    CGINCLUDE
       #define UNITY_SETUP_BRDF_INPUT MetallicSetup
    ENDCG
    SubShader
    {
       Tags { "RenderType"="Opaque" "PerformanceChecks"="False" }
       LOD 300
       // ------------------------------------------------------------------
       //  Base forward pass (directional light, emission, lightmaps, ...)
       Pass
       {
           Name "FORWARD" 
           Tags { "LightMode" = "ForwardBase" }
           Cull Off
           Blend [_SrcBlend] [_DstBlend]
           ZWrite [_ZWrite]
          CGPROGRAM
           #pragma target 3.0
           // -------------------------------------
           #pragma shader_feature _NORMALMAP
           #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
           #pragma shader_feature _EMISSION
           #pragma shader_feature _METALLICGLOSSMAP
           #pragma shader_feature ___ _DETAIL_MULX2
           #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
           #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
           #pragma shader_feature _ _GLOSSYREFLECTIONS_OFF
           #pragma shader_feature _PARALLAXMAP
           #pragma multi_compile_fwdbase
           #pragma multi_compile_fog
           #pragma multi_compile_instancing
           #pragma vertex vertBase
           #pragma fragment fragBase
           #include "UnityStandardCoreForward.cginc"
          ENDCG
       }
       // ------------------------------------------------------------------
       //  Additive forward pass (one light per pass)
       Pass
       {
           Name "FORWARD_DELTA"
           Tags { "LightMode" = "ForwardAdd" }
           Blend [_SrcBlend] One
           Fog { Color (0,0,0,0) } // in additive pass fog should be black
           ZWrite Off
           ZTest LEqual
          CGPROGRAM
           #pragma target 3.0
           // -------------------------------------
           #pragma shader_feature _NORMALMAP
           #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
           #pragma shader_feature _METALLICGLOSSMAP
           #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
           #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
           #pragma shader_feature ___ _DETAIL_MULX2
           #pragma shader_feature _PARALLAXMAP
           #pragma multi_compile_fwdadd_fullshadows
           #pragma multi_compile_fog
           #pragma vertex vertAdd
           #pragma fragment fragAdd
           #include "UnityStandardCoreForward.cginc"
          ENDCG
       }
       // ------------------------------------------------------------------
       //  Shadow rendering pass
       Pass {
           Name "ShadowCaster"
           Tags { "LightMode" = "ShadowCaster" }
           ZWrite On ZTest LEqual
          CGPROGRAM
           #pragma target 3.0
           // -------------------------------------
           #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
           #pragma shader_feature _METALLICGLOSSMAP
           #pragma shader_feature _PARALLAXMAP
           #pragma multi_compile_shadowcaster
           #pragma multi_compile_instancing
           #pragma vertex vertShadowCaster
           #pragma fragment fragShadowCaster
           #include "UnityStandardShadow.cginc"
          ENDCG
       }
       // ------------------------------------------------------------------
       //  Deferred pass
       Pass
       {
           Name "DEFERRED"
           Tags { "LightMode" = "Deferred" }
           Cull Off
          CGPROGRAM
           #pragma target 3.0
           #pragma exclude_renderers nomrt
           // -------------------------------------
           #pragma shader_feature _NORMALMAP
           #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
           #pragma shader_feature _EMISSION
           #pragma shader_feature _METALLICGLOSSMAP
           #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
           #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
           #pragma shader_feature ___ _DETAIL_MULX2
           #pragma shader_feature _PARALLAXMAP
           #pragma multi_compile_prepassfinal
           #pragma multi_compile_instancing
           #pragma vertex vertDeferred
           #pragma fragment fragDeferred
           #include "UnityStandardCore.cginc"
          ENDCG
       }
       // ------------------------------------------------------------------
       // Extracts information for lightmapping, GI (emission, albedo, ...)
       // This pass it not used during regular rendering.
       Pass
       {
           Name "META" 
           Tags { "LightMode"="Meta" }
           Cull Off
          CGPROGRAM
           #pragma vertex vert_meta
           #pragma fragment frag_meta
           #pragma shader_feature _EMISSION
           #pragma shader_feature _METALLICGLOSSMAP
           #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
           #pragma shader_feature ___ _DETAIL_MULX2
           #pragma shader_feature EDITOR_VISUALIZATION
           #include "UnityStandardMeta.cginc"
          ENDCG
       }
    }
    SubShader
    {
       Tags { "RenderType"="Opaque" "PerformanceChecks"="False" }
       LOD 150
       // ------------------------------------------------------------------
       //  Base forward pass (directional light, emission, lightmaps, ...)
       Pass
       {
           Name "FORWARD" 
           Tags { "LightMode" = "ForwardBase" }
           Blend [_SrcBlend] [_DstBlend]
           ZWrite [_ZWrite]
          CGPROGRAM
           #pragma target 2.0
           #pragma shader_feature _NORMALMAP
           #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
           #pragma shader_feature _EMISSION 
           #pragma shader_feature _METALLICGLOSSMAP 
           #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
           #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
           #pragma shader_feature _ _GLOSSYREFLECTIONS_OFF
           // SM2.0: NOT SUPPORTED shader_feature ___ _DETAIL_MULX2
           // SM2.0: NOT SUPPORTED shader_feature _PARALLAXMAP
           #pragma skip_variants SHADOWS_SOFT DIRLIGHTMAP_COMBINED
           #pragma multi_compile_fwdbase
           #pragma multi_compile_fog
           #pragma vertex vertBase
           #pragma fragment fragBase
           #include "UnityStandardCoreForward.cginc"
          ENDCG
       }
       // ------------------------------------------------------------------
       //  Additive forward pass (one light per pass)
       Pass
       {
           Name "FORWARD_DELTA"
           Tags { "LightMode" = "ForwardAdd" }
           Blend [_SrcBlend] One
           Fog { Color (0,0,0,0) } // in additive pass fog should be black
           ZWrite Off
           ZTest LEqual
          CGPROGRAM
           #pragma target 2.0
           #pragma shader_feature _NORMALMAP
           #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
           #pragma shader_feature _METALLICGLOSSMAP
           #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
           #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
           #pragma shader_feature ___ _DETAIL_MULX2
           // SM2.0: NOT SUPPORTED shader_feature _PARALLAXMAP
           #pragma skip_variants SHADOWS_SOFT
           #pragma multi_compile_fwdadd_fullshadows
           #pragma multi_compile_fog
           #pragma vertex vertAdd
           #pragma fragment fragAdd
           #include "UnityStandardCoreForward.cginc"
          ENDCG
       }
       // ------------------------------------------------------------------
       //  Shadow rendering pass
       Pass {
           Name "ShadowCaster"
           Tags { "LightMode" = "ShadowCaster" }
           ZWrite On ZTest LEqual
          CGPROGRAM
           #pragma target 2.0
           #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
           #pragma shader_feature _METALLICGLOSSMAP
           #pragma skip_variants SHADOWS_SOFT
           #pragma multi_compile_shadowcaster
           #pragma vertex vertShadowCaster
           #pragma fragment fragShadowCaster
           #include "UnityStandardShadow.cginc"
          ENDCG
       }
       // ------------------------------------------------------------------
       // Extracts information for lightmapping, GI (emission, albedo, ...)
       // This pass it not used during regular rendering.
       Pass
       {
           Name "META" 
           Tags { "LightMode"="Meta" }
           Cull Off
          CGPROGRAM
           #pragma vertex vert_meta
           #pragma fragment frag_meta
           #pragma shader_feature _EMISSION
           #pragma shader_feature _METALLICGLOSSMAP
           #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
           #pragma shader_feature ___ _DETAIL_MULX2
           #pragma shader_feature EDITOR_VISUALIZATION
           #include "UnityStandardMeta.cginc"
          ENDCG
       }
    }
    FallBack "VertexLit"
    CustomEditor "StandardShaderGUI"
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值