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.
144 lines
4.9 KiB
144 lines
4.9 KiB
${VFXBegin:VFXPassForward}"UniversalForwardOnly"${VFXEnd} |
|
${VFXBegin:VFXPassForward2D}"Universal2D"${VFXEnd} |
|
${VFXBegin:VFXPassShadow}"ShadowCaster"${VFXEnd} |
|
${VFXBegin:VFXPassVelocity}"MotionVectors"${VFXEnd} |
|
${VFXBegin:VFXPassDepth}"DepthOnly"${VFXEnd} |
|
|
|
${VFXBegin:VFXPassDepthDefine} |
|
#if defined(WRITE_NORMAL_BUFFER) |
|
#define SHADERPASS SHADERPASS_DEPTHNORMALSONLY |
|
#else |
|
#define SHADERPASS SHADERPASS_DEPTHONLY |
|
#endif |
|
${VFXEnd} |
|
${VFXBegin:VFXPassShadowDefine}#define SHADERPASS SHADERPASS_SHADOWS${VFXEnd} |
|
${VFXBegin:VFXPassVelocityDefine}#define SHADERPASS SHADERPASS_MOTION_VECTORS${VFXEnd} |
|
|
|
${VFXBegin:VFXPassForwardAdditionalPragma} |
|
#pragma multi_compile_fog |
|
${VFXEnd} |
|
|
|
${VFXBegin:VFXPassForwardLitAdditionalPragma} |
|
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN |
|
#pragma multi_compile _ _ADDITIONAL_LIGHTS |
|
#pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS |
|
#pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING |
|
#pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION |
|
#pragma multi_compile_fragment _ _SHADOWS_SOFT |
|
#pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION |
|
#pragma multi_compile_fragment _ _LIGHT_LAYERS |
|
#pragma multi_compile_fragment _ _LIGHT_COOKIES |
|
#pragma multi_compile _ _CLUSTERED_RENDERING |
|
#pragma multi_compile_fog |
|
#pragma multi_compile _ DEBUG_DISPLAY |
|
${VFXEnd} |
|
${VFXBegin:VFXPassDepthAdditionalPragma} |
|
#pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT |
|
${VFXEnd} |
|
${VFXBegin:VFXPassGBufferAdditionalPragma} |
|
#pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING |
|
#pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION |
|
#pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT |
|
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN |
|
//See Lit.shader, these multi_compile aren't used in GBuffer |
|
//#pragma multi_compile _ _ADDITIONAL_LIGHTS |
|
//#pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION |
|
#pragma multi_compile_fragment _ _SHADOWS_SOFT |
|
#pragma multi_compile_fragment _ _LIGHT_LAYERS |
|
${VFXEnd} |
|
|
|
${VFXBegin:VFXShaderGraphFunctionsInclude} |
|
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" |
|
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Packing.hlsl" |
|
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" |
|
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/EntityLighting.hlsl" |
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" |
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" |
|
${VFXEnd} |
|
|
|
|
|
${VFXBegin:VFXPassDepthCommonFragmentURPLit} |
|
#if VFX_PASSDEPTH == VFX_PASSDEPTH_MOTION_VECTOR |
|
${VFXPassVelocityDefine} |
|
#elif VFX_PASSDEPTH == VFX_PASSDEPTH_SHADOW |
|
${VFXPassShadowDefine} |
|
#else |
|
${VFXPassDepthDefine} |
|
#endif |
|
${VFXIncludeRP("VFXLit.template")} |
|
|
|
#if defined(WRITE_NORMAL_BUFFER) |
|
${SHADERGRAPH_PIXEL_CODE_DEPTHNORMALS} |
|
#else |
|
${SHADERGRAPH_PIXEL_CODE_DEPTHONLY} |
|
#endif |
|
|
|
#if VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION |
|
int _ObjectId; |
|
int _PassValue; |
|
#elif VFX_PASSDEPTH == VFX_PASSDEPTH_PICKING |
|
float4 _SelectionID; |
|
#endif |
|
|
|
#pragma fragment frag |
|
void frag(ps_input i |
|
#if USE_DOUBLE_SIDED |
|
, bool frontFace : SV_IsFrontFace |
|
#endif |
|
#if VFX_PASSDEPTH == VFX_PASSDEPTH_ACTUAL |
|
#if defined(WRITE_NORMAL_BUFFER) |
|
, out float4 outNormalBuffer : SV_Target0 |
|
#endif |
|
#elif VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION || VFX_PASSDEPTH == VFX_PASSDEPTH_PICKING |
|
, out float4 outColor : SV_Target0 |
|
#endif |
|
) |
|
{ |
|
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); |
|
VFXTransformPSInputs(i); |
|
${VFXComputeNormalWS} |
|
|
|
#ifdef VFX_SHADERGRAPH |
|
${VFXAdditionalInterpolantsPreparation} |
|
|
|
#if defined(WRITE_NORMAL_BUFFER) |
|
${SHADERGRAPH_PIXEL_CALL_DEPTHNORMALS} |
|
#else |
|
${SHADERGRAPH_PIXEL_CALL_DEPTHONLY} |
|
#endif |
|
|
|
float alpha = OUTSG.${SHADERGRAPH_PARAM_ALPHA}; |
|
#else |
|
|
|
float alpha = VFXGetFragmentColor(i).a; |
|
#if URP_USE_BASE_COLOR_MAP_ALPHA |
|
alpha *= VFXGetTextureColor(VFX_SAMPLER(baseColorMap),i).a; |
|
#endif |
|
#endif |
|
|
|
VFXClipFragmentColor(alpha,i); |
|
|
|
#if defined(WRITE_NORMAL_BUFFER) |
|
#ifdef VFX_SHADERGRAPH |
|
#if HAS_SHADERGRAPH_PARAM_NORMALTS |
|
float3 n = OUTSG.${SHADERGRAPH_PARAM_NORMALTS}; |
|
normalWS = mul(n,tbn); |
|
#endif |
|
#endif |
|
VFXComputePixelOutputToNormalBuffer(normalWS, outNormalBuffer); |
|
#endif |
|
|
|
#if VFX_PASSDEPTH == VFX_PASSDEPTH_SELECTION |
|
// We use depth prepass for scene selection in the editor, this code allow to output the outline correctly |
|
outColor = float4(_ObjectId, _PassValue, 1.0, 1.0); |
|
#elif VFX_PASSDEPTH == VFX_PASSDEPTH_PICKING |
|
outColor = _SelectionID; |
|
#elif VFX_PASSDEPTH == VFX_PASSDEPTH_ACTUAL |
|
//void |
|
#elif VFX_PASSDEPTH == VFX_PASSDEPTH_SHADOW |
|
//void |
|
#else |
|
#error VFX_PASSDEPTH undefined |
|
#endif |
|
} |
|
${VFXEnd}
|
|
|