/*=============================================================== Author:gzg Date:2020-02-12 Desc:这个Shader是用于只展示lightmap的渲染, =================================================================*/ Shader "Gonbest/FallBack/FBWithLightmap" { Properties { _Color ("Main Color", Color) = (1, 1, 1, 1) _ColorMultiplier("Color Multipler",range(0,2)) = 1 _MainTex("Albedo", 2D) = "white" {} _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5 _BumpMap("Normal(RGB)",2D) = "blue"{} _BumpScale("BumpScale",Range(0,2)) = 1 //发现比率 _Glossiness("Glossiness",Range(0,1)) = 0.9 //光滑度 _Metallic("Metallic",Range(0,1)) = 0 //金属度 _MetallicTex("Glossiness(A)&Metallic(R)&AO(G)&Emission(B)",2D) = "white"{} //金属度 _SpecularPower("SpecularPower",Range(0,2)) = 1 //高亮强度 _EnvDiffPower("EnvDiffPower",Range(0,2)) = 1 //环境高亮的强度 _EnvSpecPower("EnvSpecPower",Range(0,2)) = 1 //环境高亮的强度 _EmissionColor("EmissiveColor",Color) = (0,0,0,0) _NoiseMap ("NoiseMap", 2D) = "white" {} _NoiseBumpMap ("NoiseBumpMap", 2D) = "white" {} _NoiseTiling("NoiseTiling",float) = 5.2 _NoisePower("NoisePower",float) = 0.35 _RainStength("RainStength",Range(0,10)) = 0 //雨的强度 _RainSpeed("RainSpeed",Range(-2,2)) = 1 //雨的闪烁速度 _MyShadowMap("Shadow map", 2D) = "black" {} //阴影贴图 _ShadowIntensity("Shadow Intensity",float) = 1 //阴影强度 _ShadowFadeFactor("Shadow Fade Factor",float) = 0 //阴影被材质影响消隐的效果 _ShadowRange("ShadowRange(阴影范围)", Range(0 , 1)) = 0 _ShadowPower("ShadowPower(阴影强度)", Range(0 , 1)) = 0.8 _ShadowSmooth("ShadowSmooth(阴影边缘锐化程度)", Range(0 , 1)) = 0.8 _ShadowTex1("ShadowTex1", 2D) = "black" {} } CGINCLUDE #include "../Include/Base/CommonCG.cginc" #include "../Include/Base/MathCG.cginc" #include "../Include/Utility/VertexUtilsCG.cginc" #include "../Include/Utility/FogUtilsCG.cginc" #include "../Include/Utility/RainUtilsCG.cginc" #include "../Include/Utility/PixelUtilsCG.cginc" #include "../Include/Shadow/ShadowCG.cginc" #include "../Include/Utility/WidgetUtilsCG.cginc" #include "../Include/Base/EnergyCG.cginc" #include "../Include/Specular/GGXCG.cginc" #include "../Include/Base/FresnelCG.cginc" #include "../Include/Specular/BeckmannCG.cginc" #include "../Include/Indirect/Lightmap&SHLightCG.cginc" #include "../Include/Base/RampCG.cginc" uniform sampler2D _MainTex; uniform sampler2D _BumpMap; uniform sampler2D _MetallicTex; uniform float4 _MainTex_ST; uniform float _Glossiness = 0.8; //光滑度 uniform float _Metallic = 0; //金属度 uniform float _SpecularPower = 1; //高亮亮度 uniform float _BumpScale = 1; //发现比率 uniform float3 _EmissionColor; uniform float _EnvDiffPower; uniform float _EnvSpecPower; uniform float _ShadowRange; uniform float _ShadowPower; uniform float _ShadowSmooth; uniform sampler2D _ShadowTex1; /*****************************带有lightmap的处理(分开了-_-!,这TM就是一个坑,lightmap处理好像不能放到一个宏判断中.)**********************************************/ struct v2f_lit { float4 pos : POSITION; float4 uv : TEXCOORD0; float4 wt : TEXCOORD1; float4 wb : TEXCOORD2; float4 wn : TEXCOORD3; GONBEST_FOG_COORDS(4) GONBEST_SHADOW_COORDS(5) GONBEST_INDIRECT_DIFFUSE_COORDS(6) }; //通用功能的vert v2f_lit vert_lit(appdata_full v) { v2f_lit o = (v2f_lit)0; float4 ppos,wpos; float3 wt,wn,wb; GetVertexParameters(v.vertex, v.tangent, v.normal, ppos, wpos, wn, wt, wb); o.pos = ppos; o.wt = float4(wt,wpos.x); o.wb = float4(wb,wpos.y); o.wn = float4(wn,wpos.z); o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex); GONBEST_TRANSFER_INDIRECT_DIFFUSE(o,wn,wpos,v.texcoord1.xy); //阴影处理 GONBEST_TRANSFER_SHADOW_WPOS(o,wpos,v.texcoord1); //获取雾的采样点 GONBEST_TRANSFER_FOG(o, o.pos, wpos); return o; } //通用的frag fixed4 frag_lit(v2f_lit i) : COLOR { //间接散射光处理 float3 indirectDiff = (float3)1; float3 P = float3(i.wt.z,i.wb.z,i.wn.z); float3 N = GBNormalizeSafe(i.wn); GONBEST_APPLY_INDIRECT_DIFFUSE_COLOR(i,N,P,indirectDiff); indirectDiff *= GONBEST_DECODE_SHADOW_VALUE(i,P); float4 outColor = float4 (indirectDiff,1); //对应模型雾的颜色 GONBEST_APPLY_FOG(i, outColor.xyz); return outColor;//float4(indirectDiff,1); } /***************************************************************************/ ENDCG SubShader { Tags { "RenderType"="Opaque" } ZTest Less ZWrite On Pass { //这个Pass使用lightmap和使用阴影 Tags { "LightMode" = "ForwardBase" } CGPROGRAM #pragma vertex vert_lit #pragma fragment frag_lit #pragma fragmentoption ARB_precision_hint_fastest #pragma multi_compile _GONBEST_INDIRECT_DIFFUSE_ON #pragma multi_compile LIGHTMAP_ON LIGHTPROBE_SH #pragma multi_compile _GONBEST_HEIGHT_FOG_ON _GONBEST_HEIGHT_FOG_OFF #pragma multi_compile _GONBEST_CUSTOM_SHADOW_ON #pragma multi_compile _GONBEST_SHADOW_ON #pragma multi_compile_fog #pragma target 3.0 ENDCG } } }