125 lines
3.5 KiB
Plaintext
125 lines
3.5 KiB
Plaintext
// Upgrade NOTE: replaced 'mul(GONBEST_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
|
|
|
|
//运行时T4M的Shader处理
|
|
Shader "Gonbest/Legacy/T4MHelper"
|
|
{
|
|
Properties
|
|
{
|
|
}
|
|
|
|
CGINCLUDE
|
|
|
|
#include "../Include/Base/CommonCG.cginc"
|
|
#include "../Include/Base/MathCG.cginc"
|
|
#include "../Include/Indirect/Lightmap&SHLightCG.cginc"
|
|
#include "../Include/Utility/T4MUtilsCG.cginc"
|
|
#include "../Include/Shadow/ShadowCG.cginc"
|
|
#include "../Include/Utility/FogUtilsCG.cginc"
|
|
uniform sampler2D _Control;
|
|
|
|
struct v2f
|
|
{
|
|
float4 vertex : POSITION;
|
|
half4 uv : TEXCOORD0;
|
|
float4 wpos : TEXCOORD1;
|
|
GONBEST_T4M_2_COORD(2)
|
|
GONBEST_T4M_3_COORD(3)
|
|
GONBEST_T4M_4_COORD(4)
|
|
GONBEST_SHADOW_COORDS(5)
|
|
GONBEST_FOG_COORDS(6)
|
|
|
|
};
|
|
//顶点处理程序
|
|
v2f vert (appdata_full v)
|
|
{
|
|
v2f o = (v2f)0;
|
|
float4 wpos = mul(unity_ObjectToWorld,v.vertex);
|
|
o.vertex = UnityObjectToClipPos( v.vertex );
|
|
o.uv.xy = v.texcoord;
|
|
o.uv.zw = GONBEST_CALC_LIGHTMAP_UV(v.texcoord1.xy);
|
|
o.wpos = wpos;
|
|
GONBEST_TRANSFER_T4M_2(v,o)
|
|
GONBEST_TRANSFER_T4M_3(v,o)
|
|
GONBEST_TRANSFER_T4M_4(v,o)
|
|
//阴影处理
|
|
GONBEST_TRANSFER_SHADOW_WPOS(o,wpos,v.texcoord1);
|
|
//获取雾的采样点
|
|
GONBEST_TRANSFER_FOG(o, o.vertex,wpos);
|
|
|
|
return o;
|
|
}
|
|
|
|
fixed4 frag(v2f i) : COLOR
|
|
{
|
|
fixed4 splat_control = tex2D( _Control, i.uv.xy );
|
|
fixed4 mainTex = fixed4(0,0,0,0);
|
|
GONBEST_APPLY_T4M_2(i,splat_control,mainTex);
|
|
GONBEST_APPLY_T4M_3(i,splat_control,mainTex);
|
|
GONBEST_APPLY_T4M_4(i,splat_control,mainTex);
|
|
|
|
float3 indirectDiff = (float3)1;
|
|
GONBEST_APPLY_LIGHTMAP_COLOR(i.uv.zw,indirectDiff);
|
|
|
|
//阴影处理
|
|
//float3 luminance = gonbest_ColorSpaceLuminance.rgb * indirectDiff.rgb ;
|
|
//float backShadowValue = step(0.8, luminance.r + luminance.g + luminance.b);
|
|
//indirectDiff = lerp(float3(0,0,0.5),indirectDiff,backShadowValue) * shadowValue ;
|
|
indirectDiff *= GONBEST_DECODE_SHADOW_VALUE(i,i.wpos);
|
|
|
|
mainTex.rgb *= indirectDiff;
|
|
//对应模型雾的颜色
|
|
GONBEST_APPLY_FOG(i, mainTex.xyz);
|
|
mainTex.a = 0;
|
|
return mainTex;
|
|
}
|
|
ENDCG
|
|
|
|
SubShader
|
|
{
|
|
Lighting Off
|
|
ZWrite On
|
|
Pass
|
|
{ //两张纹理
|
|
Name "TWO"
|
|
CGPROGRAM
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#pragma fragmentoption ARB_precision_hint_fastest
|
|
#pragma multi_compile _GONBEST_SHADOW_OFF _GONBEST_SHADOW_ON
|
|
#pragma multi_compile _GONBEST_T4M_2_ON
|
|
#pragma multi_compile _GONBEST_INDIRECT_DIFFUSE_ON
|
|
#pragma multi_compile LIGHTMAP_ON LIGHTPROBE_SH
|
|
#pragma multi_compile_fog
|
|
ENDCG
|
|
}
|
|
Pass
|
|
{ //三张纹理
|
|
Name "THREE"
|
|
CGPROGRAM
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#pragma fragmentoption ARB_precision_hint_fastest
|
|
#pragma multi_compile _GONBEST_SHADOW_OFF _GONBEST_SHADOW_ON
|
|
#pragma multi_compile _GONBEST_T4M_3_ON
|
|
#pragma multi_compile _GONBEST_INDIRECT_DIFFUSE_ON
|
|
#pragma multi_compile LIGHTMAP_ON LIGHTPROBE_SH
|
|
#pragma multi_compile_fog
|
|
ENDCG
|
|
}
|
|
Pass
|
|
{ //四张纹理
|
|
Name "FOUR"
|
|
CGPROGRAM
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#pragma fragmentoption ARB_precision_hint_fastest
|
|
#pragma multi_compile _GONBEST_SHADOW_OFF _GONBEST_SHADOW_ON
|
|
#pragma multi_compile _GONBEST_T4M_4_ON
|
|
#pragma multi_compile _GONBEST_INDIRECT_DIFFUSE_ON
|
|
#pragma multi_compile LIGHTMAP_ON LIGHTPROBE_SH
|
|
#pragma multi_compile_fog
|
|
ENDCG
|
|
}
|
|
|
|
}
|
|
} |