Advertisement
Guest User

Standard Specular

a guest
Sep 17th, 2018
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
  2.  
  3. Shader "Standard Double Sided (Specular)"
  4. {
  5.     Properties
  6.     {
  7.         _Color("Color", Color) = (1,1,1,1)
  8.         _MainTex("Albedo", 2D) = "white" {}
  9.  
  10.         _Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5
  11.  
  12.         _Glossiness("Smoothness", Range(0.0, 1.0)) = 0.5
  13.         _GlossMapScale("Smoothness Factor", Range(0.0, 1.0)) = 1.0
  14.         [Enum(Specular Alpha,0,Albedo Alpha,1)] _SmoothnessTextureChannel ("Smoothness texture channel", Float) = 0
  15.  
  16.         _SpecColor("Specular", Color) = (0.2,0.2,0.2)
  17.         _SpecGlossMap("Specular", 2D) = "white" {}
  18.         [ToggleOff] _SpecularHighlights("Specular Highlights", Float) = 1.0
  19.         [ToggleOff] _GlossyReflections("Glossy Reflections", Float) = 1.0
  20.  
  21.         _BumpScale("Scale", Float) = 1.0
  22.         _BumpMap("Normal Map", 2D) = "bump" {}
  23.  
  24.         _Parallax ("Height Scale", Range (0.005, 0.08)) = 0.02
  25.         _ParallaxMap ("Height Map", 2D) = "black" {}
  26.  
  27.         _OcclusionStrength("Strength", Range(0.0, 1.0)) = 1.0
  28.         _OcclusionMap("Occlusion", 2D) = "white" {}
  29.  
  30.         _EmissionColor("Color", Color) = (0,0,0)
  31.         _EmissionMap("Emission", 2D) = "white" {}
  32.  
  33.         _DetailMask("Detail Mask", 2D) = "white" {}
  34.  
  35.         _DetailAlbedoMap("Detail Albedo x2", 2D) = "grey" {}
  36.         _DetailNormalMapScale("Scale", Float) = 1.0
  37.         _DetailNormalMap("Normal Map", 2D) = "bump" {}
  38.  
  39.         [Enum(UV0,0,UV1,1)] _UVSec ("UV Set for secondary textures", Float) = 0
  40.  
  41.  
  42.         // Blending state
  43.         [HideInInspector] _Mode ("__mode", Float) = 0.0
  44.         [HideInInspector] _SrcBlend ("__src", Float) = 1.0
  45.         [HideInInspector] _DstBlend ("__dst", Float) = 0.0
  46.         [HideInInspector] _ZWrite ("__zw", Float) = 1.0
  47.     }
  48.  
  49.     CGINCLUDE
  50.         #define UNITY_SETUP_BRDF_INPUT SpecularSetup
  51.     ENDCG
  52.  
  53.     SubShader
  54.     {
  55.         Tags { "RenderType"="Opaque" "PerformanceChecks"="False" }
  56.         LOD 300
  57.  
  58.  
  59.         // ------------------------------------------------------------------
  60.         //  Base forward pass (directional light, emission, lightmaps, ...)
  61.         Pass
  62.         {
  63.             Name "FORWARD"
  64.             Tags { "LightMode" = "ForwardBase" }
  65.  
  66.             Blend [_SrcBlend] [_DstBlend]
  67.             ZWrite [_ZWrite]
  68.  
  69.             Cull Off
  70.  
  71.             CGPROGRAM
  72.             #pragma target 3.0
  73.  
  74.             // -------------------------------------
  75.  
  76.             #pragma shader_feature _NORMALMAP
  77.             #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
  78.             #pragma shader_feature _EMISSION
  79.             #pragma shader_feature _SPECGLOSSMAP
  80.             #pragma shader_feature ___ _DETAIL_MULX2
  81.             #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
  82.             #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
  83.             #pragma shader_feature _ _GLOSSYREFLECTIONS_OFF
  84.             #pragma shader_feature _PARALLAXMAP
  85.  
  86.             #pragma multi_compile_fwdbase
  87.             #pragma multi_compile_fog
  88.             #pragma multi_compile_instancing
  89.             // Uncomment the following line to enable dithering LOD crossfade. Note: there are more in the file to uncomment for other passes.
  90.             //#pragma multi_compile _ LOD_FADE_CROSSFADE
  91.  
  92.             #pragma vertex vertBase
  93.             #pragma fragment fragBase
  94.             #include "UnityStandardCoreForward.cginc"
  95.  
  96.             ENDCG
  97.         }
  98.         // ------------------------------------------------------------------
  99.         //  Additive forward pass (one light per pass)
  100.         Pass
  101.         {
  102.             Name "FORWARD_DELTA"
  103.             Tags { "LightMode" = "ForwardAdd" }
  104.             Blend [_SrcBlend] One
  105.             Fog { Color (0,0,0,0) } // in additive pass fog should be black
  106.             ZWrite Off
  107.             ZTest LEqual
  108.  
  109.             CGPROGRAM
  110.             #pragma target 3.0
  111.  
  112.             // -------------------------------------
  113.  
  114.             #pragma shader_feature _NORMALMAP
  115.             #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
  116.             #pragma shader_feature _SPECGLOSSMAP
  117.             #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
  118.             #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
  119.             #pragma shader_feature ___ _DETAIL_MULX2
  120.             #pragma shader_feature _PARALLAXMAP
  121.  
  122.             #pragma multi_compile_fwdadd_fullshadows
  123.             #pragma multi_compile_fog
  124.             // Uncomment the following line to enable dithering LOD crossfade. Note: there are more in the file to uncomment for other passes.
  125.             //#pragma multi_compile _ LOD_FADE_CROSSFADE
  126.  
  127.             #pragma vertex vertAdd
  128.             #pragma fragment fragAdd
  129.             #include "UnityStandardCoreForward.cginc"
  130.  
  131.             ENDCG
  132.         }
  133.         // ------------------------------------------------------------------
  134.         //  Shadow rendering pass
  135.         Pass {
  136.             Name "ShadowCaster"
  137.             Tags { "LightMode" = "ShadowCaster" }
  138.  
  139.             ZWrite On ZTest LEqual
  140.  
  141.             CGPROGRAM
  142.             #pragma target 3.0
  143.  
  144.             // -------------------------------------
  145.  
  146.  
  147.             #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
  148.             #pragma shader_feature _SPECGLOSSMAP
  149.             #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
  150.             #pragma shader_feature _PARALLAXMAP
  151.             #pragma multi_compile_shadowcaster
  152.             #pragma multi_compile_instancing
  153.             // Uncomment the following line to enable dithering LOD crossfade. Note: there are more in the file to uncomment for other passes.
  154.             //#pragma multi_compile _ LOD_FADE_CROSSFADE
  155.  
  156.             #pragma vertex vertShadowCaster
  157.             #pragma fragment fragShadowCaster
  158.  
  159.             #include "UnityStandardShadow.cginc"
  160.  
  161.             ENDCG
  162.         }
  163.         // ------------------------------------------------------------------
  164.         //  Deferred pass
  165.         Pass
  166.         {
  167.             Name "DEFERRED"
  168.             Tags { "LightMode" = "Deferred" }
  169.  
  170.             Cull Off
  171.  
  172.             CGPROGRAM
  173.             #pragma target 3.0
  174.             #pragma exclude_renderers nomrt
  175.  
  176.  
  177.             // -------------------------------------
  178.  
  179.             #pragma shader_feature _NORMALMAP
  180.             #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
  181.             #pragma shader_feature _EMISSION
  182.             #pragma shader_feature _SPECGLOSSMAP
  183.             #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
  184.             #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
  185.             #pragma shader_feature ___ _DETAIL_MULX2
  186.             #pragma shader_feature _PARALLAXMAP
  187.  
  188.             #pragma multi_compile_prepassfinal
  189.             #pragma multi_compile_instancing
  190.             // Uncomment the following line to enable dithering LOD crossfade. Note: there are more in the file to uncomment for other passes.
  191.             //#pragma multi_compile _ LOD_FADE_CROSSFADE
  192.  
  193.             #pragma vertex vertDeferred
  194.             #pragma fragment fragDeferred
  195.  
  196.             #include "UnityStandardCore.cginc"
  197.  
  198.             ENDCG
  199.         }
  200.  
  201.         // ------------------------------------------------------------------
  202.         // Extracts information for lightmapping, GI (emission, albedo, ...)
  203.         // This pass it not used during regular rendering.
  204.         Pass
  205.         {
  206.             Name "META"
  207.             Tags { "LightMode"="Meta" }
  208.  
  209.             Cull Off
  210.  
  211.             CGPROGRAM
  212.             #pragma vertex vert_meta
  213.             #pragma fragment frag_meta
  214.  
  215.             #pragma shader_feature _EMISSION
  216.             #pragma shader_feature _SPECGLOSSMAP
  217.             #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
  218.             #pragma shader_feature ___ _DETAIL_MULX2
  219.             #pragma shader_feature EDITOR_VISUALIZATION
  220.  
  221.             #include "UnityStandardMeta.cginc"
  222.             ENDCG
  223.         }
  224.     }
  225.  
  226.     SubShader
  227.     {
  228.         Tags { "RenderType"="Opaque" "PerformanceChecks"="False" }
  229.         LOD 150
  230.  
  231.         // ------------------------------------------------------------------
  232.         //  Base forward pass (directional light, emission, lightmaps, ...)
  233.         Pass
  234.         {
  235.             Name "FORWARD"
  236.             Tags { "LightMode" = "ForwardBase" }
  237.  
  238.             Blend [_SrcBlend] [_DstBlend]
  239.             ZWrite [_ZWrite]
  240.  
  241.             Cull Off
  242.  
  243.             CGPROGRAM
  244.             #pragma target 2.0
  245.  
  246.             #pragma shader_feature _NORMALMAP
  247.             #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
  248.             #pragma shader_feature _EMISSION
  249.             #pragma shader_feature _SPECGLOSSMAP
  250.             #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
  251.             #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
  252.             #pragma shader_feature _ _GLOSSYREFLECTIONS_OFF
  253.             #pragma shader_feature ___ _DETAIL_MULX2
  254.             // SM2.0: NOT SUPPORTED shader_feature _PARALLAXMAP
  255.  
  256.             #pragma skip_variants SHADOWS_SOFT DYNAMICLIGHTMAP_ON DIRLIGHTMAP_COMBINED
  257.  
  258.             #pragma multi_compile_fwdbase
  259.             #pragma multi_compile_fog
  260.  
  261.             #pragma vertex vertBase
  262.             #pragma fragment fragBase
  263.             #include "UnityStandardCoreForward.cginc"
  264.  
  265.             ENDCG
  266.         }
  267.         // ------------------------------------------------------------------
  268.         //  Additive forward pass (one light per pass)
  269.         Pass
  270.         {
  271.             Name "FORWARD_DELTA"
  272.             Tags { "LightMode" = "ForwardAdd" }
  273.             Blend [_SrcBlend] One
  274.             Fog { Color (0,0,0,0) } // in additive pass fog should be black
  275.             ZWrite Off
  276.             ZTest LEqual
  277.  
  278.             CGPROGRAM
  279.             #pragma target 2.0
  280.  
  281.             #pragma shader_feature _NORMALMAP
  282.             #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
  283.             #pragma shader_feature _SPECGLOSSMAP
  284.             #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
  285.             #pragma shader_feature _ _SPECULARHIGHLIGHTS_OFF
  286.             #pragma shader_feature ___ _DETAIL_MULX2
  287.             // SM2.0: NOT SUPPORTED shader_feature _PARALLAXMAP
  288.             #pragma skip_variants SHADOWS_SOFT
  289.  
  290.             #pragma multi_compile_fwdadd_fullshadows
  291.             #pragma multi_compile_fog
  292.  
  293.             #pragma vertex vertAdd
  294.             #pragma fragment fragAdd
  295.             #include "UnityStandardCoreForward.cginc"
  296.  
  297.             ENDCG
  298.         }
  299.         // ------------------------------------------------------------------
  300.         //  Shadow rendering pass
  301.         Pass {
  302.             Name "ShadowCaster"
  303.             Tags { "LightMode" = "ShadowCaster" }
  304.  
  305.             ZWrite On ZTest LEqual
  306.  
  307.             CGPROGRAM
  308.             #pragma target 2.0
  309.  
  310.             #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
  311.             #pragma shader_feature _SPECGLOSSMAP
  312.             #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
  313.             #pragma skip_variants SHADOWS_SOFT
  314.             #pragma multi_compile_shadowcaster
  315.  
  316.             #pragma vertex vertShadowCaster
  317.             #pragma fragment fragShadowCaster
  318.  
  319.             #include "UnityStandardShadow.cginc"
  320.  
  321.             ENDCG
  322.         }
  323.         // ------------------------------------------------------------------
  324.         // Extracts information for lightmapping, GI (emission, albedo, ...)
  325.         // This pass it not used during regular rendering.
  326.         Pass
  327.         {
  328.             Name "META"
  329.             Tags { "LightMode"="Meta" }
  330.  
  331.             Cull Off
  332.  
  333.             CGPROGRAM
  334.             #pragma vertex vert_meta
  335.             #pragma fragment frag_meta
  336.  
  337.             #pragma shader_feature _EMISSION
  338.             #pragma shader_feature _SPECGLOSSMAP
  339.             #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
  340.             #pragma shader_feature ___ _DETAIL_MULX2
  341.             #pragma shader_feature EDITOR_VISUALIZATION
  342.  
  343.             #include "UnityStandardMeta.cginc"
  344.             ENDCG
  345.         }
  346.     }
  347.  
  348.     FallBack "VertexLit"
  349.     CustomEditor "StandardShaderGUI"
  350. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement