// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
|
|
|
|
//Shader "Hidden/LowResReplace"
|
|
Shader "Hidden/Fog Volume/Surrogate"
|
|
{
|
|
SubShader{
|
|
Tags{
|
|
"Queue" = "Transparent" "IgnoreProjector" = "True"
|
|
// "RenderType" = "Opaque"
|
|
}
|
|
|
|
LOD 100
|
|
//Blend One OneMinusSrcAlpha
|
|
// Blend SrcAlpha OneMinusSrcAlpha
|
|
Blend[_SrcBlend] OneMinusSrcAlpha //One OneMinusSrcAlpha works best with noise
|
|
Fog{ Mode Off }
|
|
Cull Front
|
|
Lighting Off
|
|
ZWrite Off
|
|
ZTest [_ztest]
|
|
//ZTest LEqual
|
|
Pass
|
|
{
|
|
CGPROGRAM
|
|
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
|
|
#include "UnityCG.cginc"
|
|
#pragma shader_feature _EDITOR_WINDOW
|
|
#define red float4(1, 0,0,1)
|
|
#define green float4(0, 1,0,1)
|
|
int _SrcBlend, _ztest;
|
|
sampler2D RT_FogVolume, RT_FogVolumeR;
|
|
|
|
struct appdata_t {
|
|
float4 vertex : POSITION;
|
|
float2 texcoord: TEXCOORD0;
|
|
};
|
|
|
|
struct v2f {
|
|
float4 vertex : SV_POSITION;
|
|
float4 projPos : TEXCOORD0;
|
|
//float2 uv : TEXCOORD1;
|
|
};
|
|
|
|
v2f vert(appdata_t v)
|
|
{
|
|
#if UNITY_UV_STARTS_AT_TOP
|
|
float scale = -1.0;
|
|
#else
|
|
float scale = 1.0;
|
|
#endif
|
|
v2f o;
|
|
o.vertex = UnityObjectToClipPos(v.vertex);
|
|
o.projPos = ComputeScreenPos(o.vertex);
|
|
return o;
|
|
}
|
|
|
|
half4 frag(v2f i) : SV_Target
|
|
{
|
|
float4 coords = 0, FV;
|
|
coords = UNITY_PROJ_COORD(i.projPos);
|
|
float2 screenUV = coords.xy / coords.w;
|
|
#if UNITY_SINGLE_PASS_STEREO
|
|
float4 scaleOffset = unity_StereoScaleOffset[unity_StereoEyeIndex];
|
|
screenUV = (screenUV - scaleOffset.zw) / scaleOffset.xy;
|
|
#endif
|
|
if (unity_StereoEyeIndex == 0)
|
|
{
|
|
FV = tex2D(RT_FogVolume, screenUV)/**red*/;
|
|
}
|
|
else
|
|
{
|
|
FV = tex2D(RT_FogVolumeR, screenUV)/**green*/;
|
|
}
|
|
#ifdef _EDITOR_WINDOW
|
|
FV = 0;
|
|
// FV= float4(1, 0, 0, 1)*FV;
|
|
#endif
|
|
return FV;
|
|
return float4(1, 0, 0, 1)*FV;
|
|
}
|
|
ENDCG
|
|
}
|
|
}
|
|
}
|