I need to use ‘#pragma target 3.0’ but when I do so the fog is disabled.
I have looked everywhere for explanation but have come up empty… Below is my code.
Any help would be appreciated.
Shader "UberSplat"
{
Properties
{
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Texture 1 (RGB)", 2D) = "white" {}
_MainTex2 ("Texture 2 (RGB)", 2D) = "white" {}
_MainTex3 ("Texture 3 (RGB)", 2D) = "white" {}
_MainTex4 ("Texture 4 (RGB)", 2D) = "white" {}
_MainTex5 ("Texture 5 (RGB)", 2D) = "white" {}
_MainTex6 ("Texture 6 (RGB)", 2D) = "white" {}
_LightMap ("LightMap (RGB)", 2D) = "white" {}
_LightMapAlpha ("LightMapAlpha", Float) = 0.5
_CloudShadowsAlpha ("CloudShadowsAlpha", Float) = 0.75
_Splat1 ("Splat Map 1-3 (RGBA)", 2D) = "black" {}
_Splat2 ("Splat Map 4-6(RGBA)", 2D) = "black" {}
}
Category
{
Tags { "RenderType"="Opaque" }
Blend AppSrcAdd AppDstAdd
Cull Back
Fog { Color [_AddFog] }
Subshader
{
//Blend AppSrcAdd AppDstAdd
Pass
{
Name "PPL"
Tags { "LightMode" = "Pixel" }
Material { Diffuse [_Color] }
Lighting On
Fog { Mode Exp2 }
CGPROGRAM
#pragma target 3.0
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_builtin
#pragma fragmentoption ARB_fog_exp2
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
#include "AutoLight.cginc"
uniform sampler2D _MainTex;
uniform sampler2D _MainTex2;
uniform sampler2D _MainTex3;
uniform sampler2D _MainTex4;
uniform sampler2D _MainTex5;
uniform sampler2D _MainTex6;
uniform sampler2D _LightMap;
uniform sampler2D _Splat1;
uniform sampler2D _Splat2;
uniform float _LightMapAlpha;
uniform float _CloudShadowsAlpha;
struct a2v
{
float4 vertex : POSITION;
float3 normal : NORMAL;
float4 texcoord : TEXCOORD0;
};
struct v2f
{
V2F_POS_FOG;
LIGHTING_COORDS
float4 uv[5];
float4 diffuse : COLOR0;
float3 lightDirection;
float3 normal;
};
v2f vert (a2v v)
{
v2f o;
//o.pos = mul(glstate.matrix.mvp, v.vertex);
//o.fog = o.pos.z;
PositionFog( v.vertex, o.pos, o.fog );
o.normal = v.normal;
o.uv[0].xy = TRANSFORM_UV(0);
o.uv[0].zw = TRANSFORM_UV(1);
o.uv[1].xy = TRANSFORM_UV(2);
o.uv[1].zw = TRANSFORM_UV(3);
o.uv[2].xy = TRANSFORM_UV(4);
o.uv[2].zw = TRANSFORM_UV(5);
o.uv[3].x = clamp((v.vertex.x + 988.f) / 2000.f, 0.f, 1.f); // POSITION
o.uv[3].y = clamp((v.vertex.y - 1059.f) / -2000.f, 0.f, 1.f); // POSITION
o.uv[3].z = o.uv[3].x;
o.uv[3].w = clamp((v.vertex.y - 1059.f) / -2000.f, 0.f, 1.f) + _Time[0];
// compute a simple diffuse per-vertex
//float3 ldir = normalize( ObjSpaceLightDir( v.vertex ) );
//float diffuse = dot( v.normal, ldir );
//o.diffuse = diffuse * _ModelLightColor0;
o.lightDirection = normalize( ObjSpaceLightDir( v.vertex ) );
// compute&pass data for attenuation/shadows
TRANSFER_VERTEX_TO_FRAGMENT(o);
return o;
};
half4 frag( v2f i ) : COLOR
{
half4 tex1 = tex2D( _MainTex, i.uv[0].xy );
half4 tex2 = tex2D( _MainTex2, i.uv[0].zw );
half4 tex3 = tex2D( _MainTex3, i.uv[1].xy );
half4 tex4 = tex2D( _MainTex4, i.uv[1].zw );
half4 tex5 = tex2D( _MainTex5, i.uv[2].xy );
half4 tex6 = tex2D( _MainTex6, i.uv[2].zw );
half4 splat1 = tex2D( _Splat1, i.uv[3].xy);
half4 splat2 = tex2D( _Splat2, i.uv[3].xy);
float lightMap = tex2D( _LightMap, i.uv[3].xy).r;
float cloudShadows = tex2D( _LightMap, i.uv[3].zw).g;
// Mix Textures from Splats
half4 color;
color = tex1 * splat1.r +
tex2 * splat1.g +
tex3 * splat1.b +
tex4 * splat2.r +
tex5 * splat2.g +
tex6 * splat2.b;
// Add Lightmaps
//float lm1 = lerp(1, lightMap, _LightMapAlpha);
//float lm2 = lerp(1, cloudShadows, _CloudShadowsAlpha);
//color.rgb *= min(lm1, lm2);
// Add Diffuse Lighting
return DiffuseLight( i.lightDirection, normalize(i.normal), color, LIGHT_ATTENUATION(i) );
}
ENDCG
}
}
}
// ------------------------------------------------------------------
Fallback "Diffuse", 1
}