You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.2 KiB
99 lines
2.2 KiB
// Distortion pass
|
|
Pass
|
|
{
|
|
Tags { "LightMode"="DistortionVectors" }
|
|
|
|
${VFXStencilDistortionVectors}
|
|
|
|
HLSLPROGRAM
|
|
#pragma target 4.5
|
|
${VFXPassForwardAdditionalPragma}
|
|
|
|
#define USE_NORMAL_MAP DISTORTION_NORMALBASED
|
|
|
|
struct ps_input
|
|
{
|
|
float4 pos : SV_POSITION;
|
|
#if USE_FLIPBOOK_INTERPOLATION
|
|
float4 uv : TEXCOORD0;
|
|
#else
|
|
#if USE_FLIPBOOK_ARRAY_LAYOUT
|
|
float3 uv : TEXCOORD0;
|
|
#else
|
|
float2 uv : TEXCOORD0;
|
|
#endif
|
|
#endif
|
|
|
|
#if USE_SOFT_PARTICLE || VFX_USE_ALPHA_CURRENT || USE_FLIPBOOK_INTERPOLATION
|
|
// x: inverse soft particles fade distance
|
|
// y: alpha threshold
|
|
// z: frame blending factor
|
|
// w: alpha
|
|
nointerpolation float4 builtInInterpolants : TEXCOORD1;
|
|
#endif
|
|
|
|
#if USE_FLIPBOOK_MOTIONVECTORS
|
|
// x: motion vector scale u
|
|
// y: motion vector scale v
|
|
nointerpolation float2 builtInInterpolants2 : TEXCOORD2;
|
|
#endif
|
|
|
|
// x: horizontal value / normal scale
|
|
// y: vertical value
|
|
// z: blur scale
|
|
nointerpolation float3 distortionInterpolants : TEXCOORD3;
|
|
|
|
#if USE_SOFT_PARTICLE
|
|
float4 projPos : TEXCOORD4;
|
|
#endif
|
|
|
|
#if DISTORTION_NORMALBASED
|
|
float3 normal : TEXCOORD5;
|
|
float4 tangent : TEXCOORD6;
|
|
#endif
|
|
|
|
UNITY_VERTEX_OUTPUT_STEREO
|
|
|
|
VFX_VERTEX_OUTPUT_INSTANCE_INDEX
|
|
};
|
|
|
|
struct ps_output
|
|
{
|
|
float4 distortion : SV_Target0;
|
|
};
|
|
|
|
#define VFX_VARYING_PS_INPUTS ps_input
|
|
#define VFX_VARYING_POSCS pos
|
|
#define VFX_VARYING_POSSS projPos
|
|
#define VFX_VARYING_INVSOFTPARTICLEFADEDISTANCE builtInInterpolants.x
|
|
#define VFX_VARYING_ALPHATHRESHOLD builtInInterpolants.y
|
|
#define VFX_VARYING_FRAMEBLEND builtInInterpolants.z
|
|
#define VFX_VARYING_MOTIONVECTORSCALE builtInInterpolants2.xy
|
|
#define VFX_VARYING_ALPHA builtInInterpolants.w
|
|
#if DISTORTION_NORMALBASED
|
|
#define VFX_VARYING_NORMAL normal
|
|
#define VFX_VARYING_TANGENT tangent
|
|
#endif
|
|
#define VFX_VARYING_UV uv
|
|
|
|
${VFXIncludeRP("VFXDistortion.template")}
|
|
|
|
${VFXBegin:VFXVertexAdditionalProcess}
|
|
|
|
${VFXVertexDistortionProcess}
|
|
|
|
${VFXEnd}
|
|
|
|
${VFXInclude("Shaders/ParticleMeshes/Pass.template")}
|
|
|
|
#pragma fragment frag
|
|
ps_output frag(ps_input i)
|
|
{
|
|
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
|
ps_output o = (ps_output)0;
|
|
VFXTransformPSInputs(i);
|
|
|
|
${VFXFragmentDistortionProcess}
|
|
}
|
|
ENDHLSL
|
|
}
|