#define URP_NEEDS_UVS (URP_USE_BASE_COLOR_MAP || URP_USE_MASK_MAP || USE_NORMAL_MAP || URP_USE_EMISSIVE_MAP) #define URP_USE_EMISSIVE (URP_USE_EMISSIVE_MAP || URP_USE_EMISSIVE_COLOR || URP_USE_ADDITIONAL_EMISSIVE_COLOR) ${VFXBegin:VFXURPDecalVaryingsMacros} #if (VFX_NEEDS_COLOR_INTERPOLATOR && URP_USE_BASE_COLOR) || URP_USE_ADDITIONAL_BASE_COLOR #define VFX_VARYING_COLOR color.rgb #define VFX_VARYING_ALPHA color.a #endif #if AFFECT_METALLIC #define VFX_VARYING_METALLIC materialProperties.x #endif #if AFFECT_AMBIENT_OCCLUSION #define VFX_VARYING_AMBIENT_OCCLUSION materialProperties.y #endif #if AFFECT_SMOOTHNESS #define VFX_VARYING_SMOOTHNESS materialProperties.z #endif #if URP_USE_EMISSIVE_MAP #define VFX_VARYING_EMISSIVESCALE materialProperties.w #endif #if URP_USE_EMISSIVE_COLOR || URP_USE_ADDITIONAL_EMISSIVE_COLOR #define VFX_VARYING_EMISSIVE emissiveColor.rgb #endif #if USE_EXPOSURE_WEIGHT #define VFX_VARYING_EXPOSUREWEIGHT emissiveColor.a #endif #if USE_FLIPBOOK #if USE_FLIPBOOK_ARRAY_LAYOUT #define VFX_VARYING_FLIPBOOKSIZE flipBookSize #else #define VFX_VARYING_FLIPBOOKSIZE flipBookSize.xy #define VFX_VARYING_INVFLIPBOOKSIZE flipBookSize.zw #endif #if USE_FLIPBOOK_MOTIONVECTORS #define VFX_VARYING_MOTIONVECTORSCALE builtInInterpolants.xy #define VFX_VARYING_TEXINDEX builtInInterpolants.z #define VFX_VARYING_TEXINDEXBLEND builtInInterpolants.w #else #define VFX_VARYING_TEXINDEX texIndices.x #if USE_FLIPBOOK_INTERPOLATION #define VFX_VARYING_TEXINDEXBLEND texIndices.y #endif #endif #endif #if USE_UV_SCALE_BIAS #define VFX_VARYING_UV_SCALE scaleBias.xy #define VFX_VARYING_UV_BIAS scaleBias.zw #endif #if USE_NORMAL_MAP #define VFX_VARYING_NORMALALPHA normalAlpha #endif #define VFX_VARYING_PS_INPUTS ps_input #define VFX_VARYING_POSCS pos #define VFX_VARYING_POSWS posWS #define VFX_VARYING_FADEFACTOR fadeParameters.x #if DECAL_ANGLE_FADE #define VFX_VARYING_ANGLEFADE fadeParameters.yz #endif #if USE_ALPHA_TEST #define VFX_VARYING_ALPHATHRESHOLD fadeParameters.w #endif ${VFXEnd} ${VFXBegin:VFXURPDecalDeclareVaryings} #if (VFX_NEEDS_COLOR_INTERPOLATOR && URP_USE_BASE_COLOR) || URP_USE_ADDITIONAL_BASE_COLOR VFX_OPTIONAL_INTERPOLATION float4 color : COLOR0; #endif #if URP_USE_EMISSIVE VFX_OPTIONAL_INTERPOLATION float4 emissiveColor : COLOR2; #endif // x: metallic // y: AO // z: smoothness // w: emissive scale VFX_OPTIONAL_INTERPOLATION float4 materialProperties : TEXCOORD0; #if USE_FLIPBOOK #if USE_FLIPBOOK_ARRAY_LAYOUT nointerpolation float flipBookSize : TEXCOORD1; #else nointerpolation float4 flipBookSize : TEXCOORD1; #endif #if USE_FLIPBOOK_MOTIONVECTORS // x: motion vectors scale X // y: motion vectors scale Y // z: texIndex // w: texIndexBlend nointerpolation float4 builtInInterpolants : TEXCOORD2; #else // x: texIndex // y: texIndexBlend nointerpolation float2 texIndices : TEXCOORD2; #endif #endif #if USE_UV_SCALE_BIAS nointerpolation float4 scaleBias : TEXCOORD1; #endif float3 posWS : TEXCOORD3; #if USE_ALPHA_TEST // x: fade factor // y: angle fade start // z: angle fade end // w: alpha threshold nointerpolation float4 fadeParameters : TEXCOORD4; #else // x: fade factor // y: angle fade start // z: angle fade end nointerpolation float3 fadeParameters : TEXCOORD4; #endif nointerpolation float4 worldToDecal[3] : TEXCOORD5; #if USE_NORMAL_MAP VFX_OPTIONAL_INTERPOLATION float normalAlpha : TEXCOORD8; #endif VFX_VERTEX_OUTPUT_INSTANCE_INDEX ${VFXEnd} ${VFXBegin:VFXURPDecalFillVaryings} #ifndef VFX_SHADERGRAPH #ifdef VFX_VARYING_SMOOTHNESS ${VFXLoadParameter:{smoothness}} o.VFX_VARYING_SMOOTHNESS = smoothness; #endif #ifdef VFX_VARYING_METALLIC ${VFXLoadParameter:{metallic}} o.VFX_VARYING_METALLIC = metallic; #endif #ifdef VFX_VARYING_AMBIENT_OCCLUSION ${VFXLoadParameter:{ambientOcclusion}} o.VFX_VARYING_AMBIENT_OCCLUSION = ambientOcclusion; #endif #if URP_USE_EMISSIVE_MAP #ifdef VFX_VARYING_EMISSIVESCALE ${VFXLoadParameter:{emissiveScale}} o.VFX_VARYING_EMISSIVESCALE = emissiveScale; #endif #endif #ifdef VFX_VARYING_EMISSIVE #if URP_USE_EMISSIVE_COLOR o.VFX_VARYING_EMISSIVE = attributes.color; #elif URP_USE_ADDITIONAL_EMISSIVE_COLOR ${VFXLoadParameter:{emissiveColor}} o.VFX_VARYING_EMISSIVE = emissiveColor.rgb; #endif #endif #if URP_USE_ADDITIONAL_BASE_COLOR #ifdef VFX_VARYING_COLOR ${VFXLoadParameter:{baseColor}} o.VFX_VARYING_COLOR = baseColor; #endif #endif #endif float4x4 worldToDecal = GetVFXToElementMatrix( attributes.axisX, attributes.axisY, attributes.axisZ, float3(attributes.angleX,attributes.angleY,attributes.angleZ), float3(attributes.pivotX,attributes.pivotY,attributes.pivotZ), size3, attributes.position); #if VFX_LOCAL_SPACE worldToDecal = mul(worldToDecal, VFXGetWorldToObjectMatrix()); #endif for (int k = 0; k < 3; k++) { o.worldToDecal[k] = worldToDecal[k]; } #ifdef VFX_VARYING_NORMALALPHA ${VFXLoadParameter:{normalAlpha}} o.VFX_VARYING_NORMALALPHA = normalAlpha; #endif ${VFXEnd}