暫無描述
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.

VFXDecalVaryings.template 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. #define URP_NEEDS_UVS (URP_USE_BASE_COLOR_MAP || URP_USE_MASK_MAP || USE_NORMAL_MAP || URP_USE_EMISSIVE_MAP)
  2. #define URP_USE_EMISSIVE (URP_USE_EMISSIVE_MAP || URP_USE_EMISSIVE_COLOR || URP_USE_ADDITIONAL_EMISSIVE_COLOR)
  3. ${VFXBegin:VFXURPDecalVaryingsMacros}
  4. #if (VFX_NEEDS_COLOR_INTERPOLATOR && URP_USE_BASE_COLOR) || URP_USE_ADDITIONAL_BASE_COLOR
  5. #define VFX_VARYING_COLOR color.rgb
  6. #define VFX_VARYING_ALPHA color.a
  7. #endif
  8. #if AFFECT_METALLIC
  9. #define VFX_VARYING_METALLIC materialProperties.x
  10. #endif
  11. #if AFFECT_AMBIENT_OCCLUSION
  12. #define VFX_VARYING_AMBIENT_OCCLUSION materialProperties.y
  13. #endif
  14. #if AFFECT_SMOOTHNESS
  15. #define VFX_VARYING_SMOOTHNESS materialProperties.z
  16. #endif
  17. #if URP_USE_EMISSIVE_MAP
  18. #define VFX_VARYING_EMISSIVESCALE materialProperties.w
  19. #endif
  20. #if URP_USE_EMISSIVE_COLOR || URP_USE_ADDITIONAL_EMISSIVE_COLOR
  21. #define VFX_VARYING_EMISSIVE emissiveColor.rgb
  22. #endif
  23. #if USE_EXPOSURE_WEIGHT
  24. #define VFX_VARYING_EXPOSUREWEIGHT emissiveColor.a
  25. #endif
  26. #if USE_FLIPBOOK
  27. #if USE_FLIPBOOK_ARRAY_LAYOUT
  28. #define VFX_VARYING_FLIPBOOKSIZE flipBookSize
  29. #else
  30. #define VFX_VARYING_FLIPBOOKSIZE flipBookSize.xy
  31. #define VFX_VARYING_INVFLIPBOOKSIZE flipBookSize.zw
  32. #endif
  33. #if USE_FLIPBOOK_MOTIONVECTORS
  34. #define VFX_VARYING_MOTIONVECTORSCALE builtInInterpolants.xy
  35. #define VFX_VARYING_TEXINDEX builtInInterpolants.z
  36. #define VFX_VARYING_TEXINDEXBLEND builtInInterpolants.w
  37. #else
  38. #define VFX_VARYING_TEXINDEX texIndices.x
  39. #if USE_FLIPBOOK_INTERPOLATION
  40. #define VFX_VARYING_TEXINDEXBLEND texIndices.y
  41. #endif
  42. #endif
  43. #endif
  44. #if USE_UV_SCALE_BIAS
  45. #define VFX_VARYING_UV_SCALE scaleBias.xy
  46. #define VFX_VARYING_UV_BIAS scaleBias.zw
  47. #endif
  48. #if USE_NORMAL_MAP
  49. #define VFX_VARYING_NORMALALPHA normalAlpha
  50. #endif
  51. #define VFX_VARYING_PS_INPUTS ps_input
  52. #define VFX_VARYING_POSCS pos
  53. #define VFX_VARYING_POSWS posWS
  54. #define VFX_VARYING_FADEFACTOR fadeParameters.x
  55. #if DECAL_ANGLE_FADE
  56. #define VFX_VARYING_ANGLEFADE fadeParameters.yz
  57. #endif
  58. #if USE_ALPHA_TEST
  59. #define VFX_VARYING_ALPHATHRESHOLD fadeParameters.w
  60. #endif
  61. ${VFXEnd}
  62. ${VFXBegin:VFXURPDecalDeclareVaryings}
  63. #if (VFX_NEEDS_COLOR_INTERPOLATOR && URP_USE_BASE_COLOR) || URP_USE_ADDITIONAL_BASE_COLOR
  64. VFX_OPTIONAL_INTERPOLATION float4 color : COLOR0;
  65. #endif
  66. #if URP_USE_EMISSIVE
  67. VFX_OPTIONAL_INTERPOLATION float4 emissiveColor : COLOR2;
  68. #endif
  69. // x: metallic
  70. // y: AO
  71. // z: smoothness
  72. // w: emissive scale
  73. VFX_OPTIONAL_INTERPOLATION float4 materialProperties : TEXCOORD0;
  74. #if USE_FLIPBOOK
  75. #if USE_FLIPBOOK_ARRAY_LAYOUT
  76. nointerpolation float flipBookSize : TEXCOORD1;
  77. #else
  78. nointerpolation float4 flipBookSize : TEXCOORD1;
  79. #endif
  80. #if USE_FLIPBOOK_MOTIONVECTORS
  81. // x: motion vectors scale X
  82. // y: motion vectors scale Y
  83. // z: texIndex
  84. // w: texIndexBlend
  85. nointerpolation float4 builtInInterpolants : TEXCOORD2;
  86. #else
  87. // x: texIndex
  88. // y: texIndexBlend
  89. nointerpolation float2 texIndices : TEXCOORD2;
  90. #endif
  91. #endif
  92. #if USE_UV_SCALE_BIAS
  93. nointerpolation float4 scaleBias : TEXCOORD1;
  94. #endif
  95. float3 posWS : TEXCOORD3;
  96. #if USE_ALPHA_TEST
  97. // x: fade factor
  98. // y: angle fade start
  99. // z: angle fade end
  100. // w: alpha threshold
  101. nointerpolation float4 fadeParameters : TEXCOORD4;
  102. #else
  103. // x: fade factor
  104. // y: angle fade start
  105. // z: angle fade end
  106. nointerpolation float3 fadeParameters : TEXCOORD4;
  107. #endif
  108. nointerpolation float4 worldToDecal[3] : TEXCOORD5;
  109. #if USE_NORMAL_MAP
  110. VFX_OPTIONAL_INTERPOLATION float normalAlpha : TEXCOORD8;
  111. #endif
  112. VFX_VERTEX_OUTPUT_INSTANCE_INDEX
  113. ${VFXEnd}
  114. ${VFXBegin:VFXURPDecalFillVaryings}
  115. #ifndef VFX_SHADERGRAPH
  116. #ifdef VFX_VARYING_SMOOTHNESS
  117. ${VFXLoadParameter:{smoothness}}
  118. o.VFX_VARYING_SMOOTHNESS = smoothness;
  119. #endif
  120. #ifdef VFX_VARYING_METALLIC
  121. ${VFXLoadParameter:{metallic}}
  122. o.VFX_VARYING_METALLIC = metallic;
  123. #endif
  124. #ifdef VFX_VARYING_AMBIENT_OCCLUSION
  125. ${VFXLoadParameter:{ambientOcclusion}}
  126. o.VFX_VARYING_AMBIENT_OCCLUSION = ambientOcclusion;
  127. #endif
  128. #if URP_USE_EMISSIVE_MAP
  129. #ifdef VFX_VARYING_EMISSIVESCALE
  130. ${VFXLoadParameter:{emissiveScale}}
  131. o.VFX_VARYING_EMISSIVESCALE = emissiveScale;
  132. #endif
  133. #endif
  134. #ifdef VFX_VARYING_EMISSIVE
  135. #if URP_USE_EMISSIVE_COLOR
  136. o.VFX_VARYING_EMISSIVE = attributes.color;
  137. #elif URP_USE_ADDITIONAL_EMISSIVE_COLOR
  138. ${VFXLoadParameter:{emissiveColor}}
  139. o.VFX_VARYING_EMISSIVE = emissiveColor.rgb;
  140. #endif
  141. #endif
  142. #if URP_USE_ADDITIONAL_BASE_COLOR
  143. #ifdef VFX_VARYING_COLOR
  144. ${VFXLoadParameter:{baseColor}}
  145. o.VFX_VARYING_COLOR = baseColor;
  146. #endif
  147. #endif
  148. #endif
  149. float4x4 worldToDecal = GetVFXToElementMatrix(
  150. attributes.axisX,
  151. attributes.axisY,
  152. attributes.axisZ,
  153. float3(attributes.angleX,attributes.angleY,attributes.angleZ),
  154. float3(attributes.pivotX,attributes.pivotY,attributes.pivotZ),
  155. size3,
  156. attributes.position);
  157. #if VFX_LOCAL_SPACE
  158. worldToDecal = mul(worldToDecal, VFXGetWorldToObjectMatrix());
  159. #endif
  160. for (int k = 0; k < 3; k++)
  161. {
  162. o.worldToDecal[k] = worldToDecal[k];
  163. }
  164. #ifdef VFX_VARYING_NORMALALPHA
  165. ${VFXLoadParameter:{normalAlpha}}
  166. o.VFX_VARYING_NORMALALPHA = normalAlpha;
  167. #endif
  168. ${VFXEnd}