Pass { Name "GBuffer" Tags { "LightMode"="GBuffer" } ${VFXStencilGBuffer} HLSLPROGRAM #pragma target 4.5 #pragma multi_compile _ RENDERING_LAYERS #pragma multi_compile _ DEBUG_DISPLAY #pragma multi_compile _ PROBE_VOLUMES_L1 PROBE_VOLUMES_L2 #define UNITY_MATERIAL_LIT ${VFXIncludeRP("VFXLitVaryings.template")} struct ps_input { SV_POSITION_QUALIFIERS float4 pos : SV_POSITION; ${VFXHDRPLitDeclareVaryings} float2 uv : TEXCOORD1; float3 posWS : TEXCOORD2; float4 sphereInfo : TEXCOORD3; UNITY_VERTEX_OUTPUT_STEREO }; ${VFXHDRPLitVaryingsMacros} #define VFX_VARYING_PS_INPUTS ps_input #define VFX_VARYING_POSCS pos #define VFX_VARYING_UV uv #define VFX_VARYING_POSWS posWS #define VFX_VARYING_SPHERECENTER sphereInfo.xyz #define VFX_VARYING_SPHERERADIUS sphereInfo.w ${VFXBegin:VFXVertexAdditionalProcess} ${VFXHDRPLitFillVaryings} ${VFXEnd} ${VFXInclude("Shaders/ParticleSpheres/Pass.template")} #define SHADERPASS SHADERPASS_GBUFFER ${VFXIncludeRP("VFXLit.template")} #pragma fragment frag void frag(ps_input i, OUTPUT_GBUFFER(outGBuffer), out float oDepth : DEPTH_OFFSET_SEMANTIC) { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); VFXTransformPSInputs(i); VFX_FRAG_SETUP_INSTANCE_ID(i); float3 normalWS; VFXUVData uvData = (VFXUVData)0; VFXClipSphereAndGetDepthOffsetAndNormal(oDepth, normalWS, i); VFXComputePixelOutputToGBuffer(i,normalWS,uvData,outGBuffer); } ENDHLSL }