5Textures_DisplayNormal.shader 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096
  1. // Made with Amplify Shader Editor
  2. // Available at the Unity Asset Store - http://u3d.as/y3X
  3. Shader "MTE/URP/DisplayNormal/5 Textures"
  4. {
  5. Properties
  6. {
  7. [HideInInspector] _EmissionColor("Emission Color", Color) = (1,1,1,1)
  8. [HideInInspector] _AlphaCutoff("Alpha Cutoff ", Range(0, 1)) = 0.5
  9. [ASEBegin]_Splat0("Layer 1", 2D) = "white" {}
  10. _Splat1("Layer 2", 2D) = "white" {}
  11. _Splat2("Layer 3", 2D) = "white" {}
  12. _Splat3("Layer 4", 2D) = "white" {}
  13. _Splat4("Layer 5", 2D) = "white" {}
  14. _Normal0("Normalmap 1", 2D) = "bump" {}
  15. _Normal1("Normalmap 2", 2D) = "bump" {}
  16. _Normal2("Normalmap 3", 2D) = "bump" {}
  17. _Normal3("Normalmap 4", 2D) = "bump" {}
  18. _Normal4("Normalmap 5", 2D) = "bump" {}
  19. _Control("Control", 2D) = "white" {}
  20. _ControlExtra("ControlExtra", 2D) = "white" {}
  21. _NormalIntensity0("Normal Intensity 1", Range( 0.01 , 10)) = 1
  22. _NormalIntensity1("Normal Intensity 2", Range( 0.01 , 10)) = 1
  23. _NormalIntensity2("Normal Intensity 3", Range( 0.01 , 10)) = 1
  24. _NormalIntensity3("Normal Intensity 4", Range( 0.01 , 10)) = 1
  25. _NormalIntensity4("Normal Intensity 5", Range( 0.01 , 10)) = 1
  26. [ASEEnd][Toggle(ENABLE_NORMAL_INTENSITY)] ENABLE_NORMAL_INTENSITY("Normal Intensity", Float) = 1
  27. //_TessPhongStrength( "Tess Phong Strength", Range( 0, 1 ) ) = 0.5
  28. //_TessValue( "Tess Max Tessellation", Range( 1, 32 ) ) = 16
  29. //_TessMin( "Tess Min Distance", Float ) = 10
  30. //_TessMax( "Tess Max Distance", Float ) = 25
  31. //_TessEdgeLength ( "Tess Edge length", Range( 2, 50 ) ) = 16
  32. //_TessMaxDisp( "Tess Max Displacement", Float ) = 25
  33. }
  34. SubShader
  35. {
  36. LOD 0
  37. Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Opaque" "Queue"="Geometry" }
  38. Cull Back
  39. AlphaToMask Off
  40. HLSLINCLUDE
  41. #pragma target 3.0
  42. #pragma prefer_hlslcc gles
  43. #pragma exclude_renderers d3d11_9x
  44. #ifndef ASE_TESS_FUNCS
  45. #define ASE_TESS_FUNCS
  46. float4 FixedTess( float tessValue )
  47. {
  48. return tessValue;
  49. }
  50. float CalcDistanceTessFactor (float4 vertex, float minDist, float maxDist, float tess, float4x4 o2w, float3 cameraPos )
  51. {
  52. float3 wpos = mul(o2w,vertex).xyz;
  53. float dist = distance (wpos, cameraPos);
  54. float f = clamp(1.0 - (dist - minDist) / (maxDist - minDist), 0.01, 1.0) * tess;
  55. return f;
  56. }
  57. float4 CalcTriEdgeTessFactors (float3 triVertexFactors)
  58. {
  59. float4 tess;
  60. tess.x = 0.5 * (triVertexFactors.y + triVertexFactors.z);
  61. tess.y = 0.5 * (triVertexFactors.x + triVertexFactors.z);
  62. tess.z = 0.5 * (triVertexFactors.x + triVertexFactors.y);
  63. tess.w = (triVertexFactors.x + triVertexFactors.y + triVertexFactors.z) / 3.0f;
  64. return tess;
  65. }
  66. float CalcEdgeTessFactor (float3 wpos0, float3 wpos1, float edgeLen, float3 cameraPos, float4 scParams )
  67. {
  68. float dist = distance (0.5 * (wpos0+wpos1), cameraPos);
  69. float len = distance(wpos0, wpos1);
  70. float f = max(len * scParams.y / (edgeLen * dist), 1.0);
  71. return f;
  72. }
  73. float DistanceFromPlane (float3 pos, float4 plane)
  74. {
  75. float d = dot (float4(pos,1.0f), plane);
  76. return d;
  77. }
  78. bool WorldViewFrustumCull (float3 wpos0, float3 wpos1, float3 wpos2, float cullEps, float4 planes[6] )
  79. {
  80. float4 planeTest;
  81. planeTest.x = (( DistanceFromPlane(wpos0, planes[0]) > -cullEps) ? 1.0f : 0.0f ) +
  82. (( DistanceFromPlane(wpos1, planes[0]) > -cullEps) ? 1.0f : 0.0f ) +
  83. (( DistanceFromPlane(wpos2, planes[0]) > -cullEps) ? 1.0f : 0.0f );
  84. planeTest.y = (( DistanceFromPlane(wpos0, planes[1]) > -cullEps) ? 1.0f : 0.0f ) +
  85. (( DistanceFromPlane(wpos1, planes[1]) > -cullEps) ? 1.0f : 0.0f ) +
  86. (( DistanceFromPlane(wpos2, planes[1]) > -cullEps) ? 1.0f : 0.0f );
  87. planeTest.z = (( DistanceFromPlane(wpos0, planes[2]) > -cullEps) ? 1.0f : 0.0f ) +
  88. (( DistanceFromPlane(wpos1, planes[2]) > -cullEps) ? 1.0f : 0.0f ) +
  89. (( DistanceFromPlane(wpos2, planes[2]) > -cullEps) ? 1.0f : 0.0f );
  90. planeTest.w = (( DistanceFromPlane(wpos0, planes[3]) > -cullEps) ? 1.0f : 0.0f ) +
  91. (( DistanceFromPlane(wpos1, planes[3]) > -cullEps) ? 1.0f : 0.0f ) +
  92. (( DistanceFromPlane(wpos2, planes[3]) > -cullEps) ? 1.0f : 0.0f );
  93. return !all (planeTest);
  94. }
  95. float4 DistanceBasedTess( float4 v0, float4 v1, float4 v2, float tess, float minDist, float maxDist, float4x4 o2w, float3 cameraPos )
  96. {
  97. float3 f;
  98. f.x = CalcDistanceTessFactor (v0,minDist,maxDist,tess,o2w,cameraPos);
  99. f.y = CalcDistanceTessFactor (v1,minDist,maxDist,tess,o2w,cameraPos);
  100. f.z = CalcDistanceTessFactor (v2,minDist,maxDist,tess,o2w,cameraPos);
  101. return CalcTriEdgeTessFactors (f);
  102. }
  103. float4 EdgeLengthBasedTess( float4 v0, float4 v1, float4 v2, float edgeLength, float4x4 o2w, float3 cameraPos, float4 scParams )
  104. {
  105. float3 pos0 = mul(o2w,v0).xyz;
  106. float3 pos1 = mul(o2w,v1).xyz;
  107. float3 pos2 = mul(o2w,v2).xyz;
  108. float4 tess;
  109. tess.x = CalcEdgeTessFactor (pos1, pos2, edgeLength, cameraPos, scParams);
  110. tess.y = CalcEdgeTessFactor (pos2, pos0, edgeLength, cameraPos, scParams);
  111. tess.z = CalcEdgeTessFactor (pos0, pos1, edgeLength, cameraPos, scParams);
  112. tess.w = (tess.x + tess.y + tess.z) / 3.0f;
  113. return tess;
  114. }
  115. float4 EdgeLengthBasedTessCull( float4 v0, float4 v1, float4 v2, float edgeLength, float maxDisplacement, float4x4 o2w, float3 cameraPos, float4 scParams, float4 planes[6] )
  116. {
  117. float3 pos0 = mul(o2w,v0).xyz;
  118. float3 pos1 = mul(o2w,v1).xyz;
  119. float3 pos2 = mul(o2w,v2).xyz;
  120. float4 tess;
  121. if (WorldViewFrustumCull(pos0, pos1, pos2, maxDisplacement, planes))
  122. {
  123. tess = 0.0f;
  124. }
  125. else
  126. {
  127. tess.x = CalcEdgeTessFactor (pos1, pos2, edgeLength, cameraPos, scParams);
  128. tess.y = CalcEdgeTessFactor (pos2, pos0, edgeLength, cameraPos, scParams);
  129. tess.z = CalcEdgeTessFactor (pos0, pos1, edgeLength, cameraPos, scParams);
  130. tess.w = (tess.x + tess.y + tess.z) / 3.0f;
  131. }
  132. return tess;
  133. }
  134. #endif //ASE_TESS_FUNCS
  135. ENDHLSL
  136. Pass
  137. {
  138. Name "Forward"
  139. Tags { "LightMode"="UniversalForward" }
  140. Blend One Zero, One Zero
  141. ZWrite On
  142. ZTest LEqual
  143. Offset 0 , 0
  144. ColorMask RGBA
  145. HLSLPROGRAM
  146. #pragma multi_compile_instancing
  147. #define ASE_SRP_VERSION 100500
  148. #pragma vertex vert
  149. #pragma fragment frag
  150. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  151. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  152. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  153. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl"
  154. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  155. #if ASE_SRP_VERSION <= 70108
  156. #define REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR
  157. #endif
  158. #pragma shader_feature_local ENABLE_NORMAL_INTENSITY
  159. struct VertexInput
  160. {
  161. float4 vertex : POSITION;
  162. float3 ase_normal : NORMAL;
  163. float4 ase_texcoord : TEXCOORD0;
  164. UNITY_VERTEX_INPUT_INSTANCE_ID
  165. };
  166. struct VertexOutput
  167. {
  168. float4 clipPos : SV_POSITION;
  169. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  170. float3 worldPos : TEXCOORD0;
  171. #endif
  172. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  173. float4 shadowCoord : TEXCOORD1;
  174. #endif
  175. #ifdef ASE_FOG
  176. float fogFactor : TEXCOORD2;
  177. #endif
  178. float4 ase_texcoord3 : TEXCOORD3;
  179. UNITY_VERTEX_INPUT_INSTANCE_ID
  180. UNITY_VERTEX_OUTPUT_STEREO
  181. };
  182. CBUFFER_START(UnityPerMaterial)
  183. float4 _Control_ST;
  184. float4 _ControlExtra_ST;
  185. float4 _Splat0_ST;
  186. float4 _Splat1_ST;
  187. float4 _Splat2_ST;
  188. float4 _Splat3_ST;
  189. float4 _Splat4_ST;
  190. float _NormalIntensity0;
  191. float _NormalIntensity1;
  192. float _NormalIntensity2;
  193. float _NormalIntensity3;
  194. float _NormalIntensity4;
  195. #ifdef TESSELLATION_ON
  196. float _TessPhongStrength;
  197. float _TessValue;
  198. float _TessMin;
  199. float _TessMax;
  200. float _TessEdgeLength;
  201. float _TessMaxDisp;
  202. #endif
  203. CBUFFER_END
  204. sampler2D _Control;
  205. sampler2D _ControlExtra;
  206. sampler2D _Normal0;
  207. sampler2D _Splat0;
  208. sampler2D _Normal1;
  209. sampler2D _Splat1;
  210. sampler2D _Normal2;
  211. sampler2D _Splat2;
  212. sampler2D _Normal3;
  213. sampler2D _Splat3;
  214. sampler2D _Normal4;
  215. sampler2D _Splat4;
  216. inline float3 MTE_NormalIntensity_fixed150( float3 Normal, float Strength )
  217. {
  218. return lerp(Normal, float3(0,0,1), - Strength + 1.0);
  219. }
  220. inline float3 MTE_NormalIntensity_fixed152( float3 Normal, float Strength )
  221. {
  222. return lerp(Normal, float3(0,0,1), - Strength + 1.0);
  223. }
  224. inline float3 MTE_NormalIntensity_fixed155( float3 Normal, float Strength )
  225. {
  226. return lerp(Normal, float3(0,0,1), - Strength + 1.0);
  227. }
  228. inline float3 MTE_NormalIntensity_fixed158( float3 Normal, float Strength )
  229. {
  230. return lerp(Normal, float3(0,0,1), - Strength + 1.0);
  231. }
  232. inline float3 MTE_NormalIntensity_fixed161( float3 Normal, float Strength )
  233. {
  234. return lerp(Normal, float3(0,0,1), - Strength + 1.0);
  235. }
  236. float4 WeightedBlend589( half4 Weight, half4 WeightExtra, float4 Layer1, float4 Layer2, float4 Layer3, float4 Layer4, float4 Layer5 )
  237. {
  238. return Layer1 * Weight.r + Layer2 * Weight.g + Layer3 * Weight.b + Layer4 * Weight.a + Layer5 * WeightExtra.r;
  239. }
  240. VertexOutput VertexFunction ( VertexInput v )
  241. {
  242. VertexOutput o = (VertexOutput)0;
  243. UNITY_SETUP_INSTANCE_ID(v);
  244. UNITY_TRANSFER_INSTANCE_ID(v, o);
  245. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  246. o.ase_texcoord3.xy = v.ase_texcoord.xy;
  247. //setting value to unused interpolator channels and avoid initialization warnings
  248. o.ase_texcoord3.zw = 0;
  249. #ifdef ASE_ABSOLUTE_VERTEX_POS
  250. float3 defaultVertexValue = v.vertex.xyz;
  251. #else
  252. float3 defaultVertexValue = float3(0, 0, 0);
  253. #endif
  254. float3 vertexValue = defaultVertexValue;
  255. #ifdef ASE_ABSOLUTE_VERTEX_POS
  256. v.vertex.xyz = vertexValue;
  257. #else
  258. v.vertex.xyz += vertexValue;
  259. #endif
  260. v.ase_normal = v.ase_normal;
  261. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  262. float4 positionCS = TransformWorldToHClip( positionWS );
  263. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  264. o.worldPos = positionWS;
  265. #endif
  266. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  267. VertexPositionInputs vertexInput = (VertexPositionInputs)0;
  268. vertexInput.positionWS = positionWS;
  269. vertexInput.positionCS = positionCS;
  270. o.shadowCoord = GetShadowCoord( vertexInput );
  271. #endif
  272. #ifdef ASE_FOG
  273. o.fogFactor = ComputeFogFactor( positionCS.z );
  274. #endif
  275. o.clipPos = positionCS;
  276. return o;
  277. }
  278. #if defined(TESSELLATION_ON)
  279. struct VertexControl
  280. {
  281. float4 vertex : INTERNALTESSPOS;
  282. float3 ase_normal : NORMAL;
  283. float4 ase_texcoord : TEXCOORD0;
  284. UNITY_VERTEX_INPUT_INSTANCE_ID
  285. };
  286. struct TessellationFactors
  287. {
  288. float edge[3] : SV_TessFactor;
  289. float inside : SV_InsideTessFactor;
  290. };
  291. VertexControl vert ( VertexInput v )
  292. {
  293. VertexControl o;
  294. UNITY_SETUP_INSTANCE_ID(v);
  295. UNITY_TRANSFER_INSTANCE_ID(v, o);
  296. o.vertex = v.vertex;
  297. o.ase_normal = v.ase_normal;
  298. o.ase_texcoord = v.ase_texcoord;
  299. return o;
  300. }
  301. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  302. {
  303. TessellationFactors o;
  304. float4 tf = 1;
  305. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  306. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  307. #if defined(ASE_FIXED_TESSELLATION)
  308. tf = FixedTess( tessValue );
  309. #elif defined(ASE_DISTANCE_TESSELLATION)
  310. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  311. #elif defined(ASE_LENGTH_TESSELLATION)
  312. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  313. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  314. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  315. #endif
  316. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  317. return o;
  318. }
  319. [domain("tri")]
  320. [partitioning("fractional_odd")]
  321. [outputtopology("triangle_cw")]
  322. [patchconstantfunc("TessellationFunction")]
  323. [outputcontrolpoints(3)]
  324. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  325. {
  326. return patch[id];
  327. }
  328. [domain("tri")]
  329. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  330. {
  331. VertexInput o = (VertexInput) 0;
  332. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  333. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  334. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  335. #if defined(ASE_PHONG_TESSELLATION)
  336. float3 pp[3];
  337. for (int i = 0; i < 3; ++i)
  338. pp[i] = o.vertex.xyz - patch[i].ase_normal * (dot(o.vertex.xyz, patch[i].ase_normal) - dot(patch[i].vertex.xyz, patch[i].ase_normal));
  339. float phongStrength = _TessPhongStrength;
  340. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  341. #endif
  342. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  343. return VertexFunction(o);
  344. }
  345. #else
  346. VertexOutput vert ( VertexInput v )
  347. {
  348. return VertexFunction( v );
  349. }
  350. #endif
  351. half4 frag ( VertexOutput IN ) : SV_Target
  352. {
  353. UNITY_SETUP_INSTANCE_ID( IN );
  354. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
  355. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  356. float3 WorldPosition = IN.worldPos;
  357. #endif
  358. float4 ShadowCoords = float4( 0, 0, 0, 0 );
  359. #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  360. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
  361. ShadowCoords = IN.shadowCoord;
  362. #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
  363. ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
  364. #endif
  365. #endif
  366. float2 uv_Control = IN.ase_texcoord3.xy * _Control_ST.xy + _Control_ST.zw;
  367. float4 Weight89 = tex2D( _Control, uv_Control );
  368. float2 uv_ControlExtra = IN.ase_texcoord3.xy * _ControlExtra_ST.xy + _ControlExtra_ST.zw;
  369. float4 WeightExtra89 = tex2D( _ControlExtra, uv_ControlExtra );
  370. float2 uv_Splat0 = IN.ase_texcoord3.xy * _Splat0_ST.xy + _Splat0_ST.zw;
  371. float3 tex2DNode16 = UnpackNormalScale( tex2D( _Normal0, uv_Splat0 ), 1.0f );
  372. float3 Normal150 = tex2DNode16;
  373. float Strength150 = _NormalIntensity0;
  374. float3 localMTE_NormalIntensity_fixed150 = MTE_NormalIntensity_fixed150( Normal150 , Strength150 );
  375. #ifdef ENABLE_NORMAL_INTENSITY
  376. float3 staticSwitch148 = localMTE_NormalIntensity_fixed150;
  377. #else
  378. float3 staticSwitch148 = tex2DNode16;
  379. #endif
  380. float4 Layer189 = float4( staticSwitch148 , 0.0 );
  381. float2 uv_Splat1 = IN.ase_texcoord3.xy * _Splat1_ST.xy + _Splat1_ST.zw;
  382. float3 tex2DNode39 = UnpackNormalScale( tex2D( _Normal1, uv_Splat1 ), 1.0f );
  383. float3 Normal152 = tex2DNode39;
  384. float Strength152 = _NormalIntensity1;
  385. float3 localMTE_NormalIntensity_fixed152 = MTE_NormalIntensity_fixed152( Normal152 , Strength152 );
  386. #ifdef ENABLE_NORMAL_INTENSITY
  387. float3 staticSwitch153 = localMTE_NormalIntensity_fixed152;
  388. #else
  389. float3 staticSwitch153 = tex2DNode39;
  390. #endif
  391. float4 Layer289 = float4( staticSwitch153 , 0.0 );
  392. float2 uv_Splat2 = IN.ase_texcoord3.xy * _Splat2_ST.xy + _Splat2_ST.zw;
  393. float3 tex2DNode44 = UnpackNormalScale( tex2D( _Normal2, uv_Splat2 ), 1.0f );
  394. float3 Normal155 = tex2DNode44;
  395. float Strength155 = _NormalIntensity2;
  396. float3 localMTE_NormalIntensity_fixed155 = MTE_NormalIntensity_fixed155( Normal155 , Strength155 );
  397. #ifdef ENABLE_NORMAL_INTENSITY
  398. float3 staticSwitch156 = localMTE_NormalIntensity_fixed155;
  399. #else
  400. float3 staticSwitch156 = tex2DNode44;
  401. #endif
  402. float4 Layer389 = float4( staticSwitch156 , 0.0 );
  403. float2 uv_Splat3 = IN.ase_texcoord3.xy * _Splat3_ST.xy + _Splat3_ST.zw;
  404. float3 tex2DNode48 = UnpackNormalScale( tex2D( _Normal3, uv_Splat3 ), 1.0f );
  405. float3 Normal158 = tex2DNode48;
  406. float Strength158 = _NormalIntensity3;
  407. float3 localMTE_NormalIntensity_fixed158 = MTE_NormalIntensity_fixed158( Normal158 , Strength158 );
  408. #ifdef ENABLE_NORMAL_INTENSITY
  409. float3 staticSwitch159 = localMTE_NormalIntensity_fixed158;
  410. #else
  411. float3 staticSwitch159 = tex2DNode48;
  412. #endif
  413. float4 Layer489 = float4( staticSwitch159 , 0.0 );
  414. float2 uv_Splat4 = IN.ase_texcoord3.xy * _Splat4_ST.xy + _Splat4_ST.zw;
  415. float3 tex2DNode90 = UnpackNormalScale( tex2D( _Normal4, uv_Splat4 ), 1.0f );
  416. float3 Normal161 = tex2DNode90;
  417. float Strength161 = _NormalIntensity4;
  418. float3 localMTE_NormalIntensity_fixed161 = MTE_NormalIntensity_fixed161( Normal161 , Strength161 );
  419. #ifdef ENABLE_NORMAL_INTENSITY
  420. float3 staticSwitch160 = localMTE_NormalIntensity_fixed161;
  421. #else
  422. float3 staticSwitch160 = tex2DNode90;
  423. #endif
  424. float4 Layer589 = float4( staticSwitch160 , 0.0 );
  425. float4 localWeightedBlend589 = WeightedBlend589( Weight89 , WeightExtra89 , Layer189 , Layer289 , Layer389 , Layer489 , Layer589 );
  426. float3 BakedAlbedo = 0;
  427. float3 BakedEmission = 0;
  428. float3 Color = (localWeightedBlend589*0.5 + 0.5).xyz;
  429. float Alpha = 1;
  430. float AlphaClipThreshold = 0.5;
  431. float AlphaClipThresholdShadow = 0.5;
  432. #ifdef _ALPHATEST_ON
  433. clip( Alpha - AlphaClipThreshold );
  434. #endif
  435. #ifdef LOD_FADE_CROSSFADE
  436. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  437. #endif
  438. #ifdef ASE_FOG
  439. Color = MixFog( Color, IN.fogFactor );
  440. #endif
  441. return half4( Color, Alpha );
  442. }
  443. ENDHLSL
  444. }
  445. Pass
  446. {
  447. Name "ShadowCaster"
  448. Tags { "LightMode"="ShadowCaster" }
  449. ZWrite On
  450. ZTest LEqual
  451. AlphaToMask Off
  452. ColorMask 0
  453. HLSLPROGRAM
  454. #pragma multi_compile_instancing
  455. #define ASE_SRP_VERSION 100500
  456. #pragma vertex vert
  457. #pragma fragment frag
  458. #if ASE_SRP_VERSION >= 110000
  459. #pragma multi_compile _ _CASTING_PUNCTUAL_LIGHT_SHADOW
  460. #endif
  461. #define SHADERPASS SHADERPASS_SHADOWCASTER
  462. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  463. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  464. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  465. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  466. struct VertexInput
  467. {
  468. float4 vertex : POSITION;
  469. float3 ase_normal : NORMAL;
  470. UNITY_VERTEX_INPUT_INSTANCE_ID
  471. };
  472. struct VertexOutput
  473. {
  474. float4 clipPos : SV_POSITION;
  475. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  476. float3 worldPos : TEXCOORD0;
  477. #endif
  478. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  479. float4 shadowCoord : TEXCOORD1;
  480. #endif
  481. UNITY_VERTEX_INPUT_INSTANCE_ID
  482. UNITY_VERTEX_OUTPUT_STEREO
  483. };
  484. CBUFFER_START(UnityPerMaterial)
  485. float4 _Control_ST;
  486. float4 _ControlExtra_ST;
  487. float4 _Splat0_ST;
  488. float4 _Splat1_ST;
  489. float4 _Splat2_ST;
  490. float4 _Splat3_ST;
  491. float4 _Splat4_ST;
  492. float _NormalIntensity0;
  493. float _NormalIntensity1;
  494. float _NormalIntensity2;
  495. float _NormalIntensity3;
  496. float _NormalIntensity4;
  497. #ifdef TESSELLATION_ON
  498. float _TessPhongStrength;
  499. float _TessValue;
  500. float _TessMin;
  501. float _TessMax;
  502. float _TessEdgeLength;
  503. float _TessMaxDisp;
  504. #endif
  505. CBUFFER_END
  506. float3 _LightDirection;
  507. #if ASE_SRP_VERSION >= 110000
  508. float3 _LightPosition;
  509. #endif
  510. VertexOutput VertexFunction( VertexInput v )
  511. {
  512. VertexOutput o;
  513. UNITY_SETUP_INSTANCE_ID(v);
  514. UNITY_TRANSFER_INSTANCE_ID(v, o);
  515. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( o );
  516. #ifdef ASE_ABSOLUTE_VERTEX_POS
  517. float3 defaultVertexValue = v.vertex.xyz;
  518. #else
  519. float3 defaultVertexValue = float3(0, 0, 0);
  520. #endif
  521. float3 vertexValue = defaultVertexValue;
  522. #ifdef ASE_ABSOLUTE_VERTEX_POS
  523. v.vertex.xyz = vertexValue;
  524. #else
  525. v.vertex.xyz += vertexValue;
  526. #endif
  527. v.ase_normal = v.ase_normal;
  528. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  529. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  530. o.worldPos = positionWS;
  531. #endif
  532. float3 normalWS = TransformObjectToWorldDir( v.ase_normal );
  533. #if ASE_SRP_VERSION >= 110000
  534. #if _CASTING_PUNCTUAL_LIGHT_SHADOW
  535. float3 lightDirectionWS = normalize(_LightPosition - positionWS);
  536. #else
  537. float3 lightDirectionWS = _LightDirection;
  538. #endif
  539. float4 clipPos = TransformWorldToHClip(ApplyShadowBias(positionWS, normalWS, lightDirectionWS));
  540. #if UNITY_REVERSED_Z
  541. clipPos.z = min(clipPos.z, UNITY_NEAR_CLIP_VALUE);
  542. #else
  543. clipPos.z = max(clipPos.z, UNITY_NEAR_CLIP_VALUE);
  544. #endif
  545. #else
  546. float4 clipPos = TransformWorldToHClip( ApplyShadowBias( positionWS, normalWS, _LightDirection ) );
  547. #if UNITY_REVERSED_Z
  548. clipPos.z = min(clipPos.z, clipPos.w * UNITY_NEAR_CLIP_VALUE);
  549. #else
  550. clipPos.z = max(clipPos.z, clipPos.w * UNITY_NEAR_CLIP_VALUE);
  551. #endif
  552. #endif
  553. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  554. VertexPositionInputs vertexInput = (VertexPositionInputs)0;
  555. vertexInput.positionWS = positionWS;
  556. vertexInput.positionCS = clipPos;
  557. o.shadowCoord = GetShadowCoord( vertexInput );
  558. #endif
  559. o.clipPos = clipPos;
  560. return o;
  561. }
  562. #if defined(TESSELLATION_ON)
  563. struct VertexControl
  564. {
  565. float4 vertex : INTERNALTESSPOS;
  566. float3 ase_normal : NORMAL;
  567. UNITY_VERTEX_INPUT_INSTANCE_ID
  568. };
  569. struct TessellationFactors
  570. {
  571. float edge[3] : SV_TessFactor;
  572. float inside : SV_InsideTessFactor;
  573. };
  574. VertexControl vert ( VertexInput v )
  575. {
  576. VertexControl o;
  577. UNITY_SETUP_INSTANCE_ID(v);
  578. UNITY_TRANSFER_INSTANCE_ID(v, o);
  579. o.vertex = v.vertex;
  580. o.ase_normal = v.ase_normal;
  581. return o;
  582. }
  583. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  584. {
  585. TessellationFactors o;
  586. float4 tf = 1;
  587. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  588. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  589. #if defined(ASE_FIXED_TESSELLATION)
  590. tf = FixedTess( tessValue );
  591. #elif defined(ASE_DISTANCE_TESSELLATION)
  592. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  593. #elif defined(ASE_LENGTH_TESSELLATION)
  594. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  595. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  596. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  597. #endif
  598. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  599. return o;
  600. }
  601. [domain("tri")]
  602. [partitioning("fractional_odd")]
  603. [outputtopology("triangle_cw")]
  604. [patchconstantfunc("TessellationFunction")]
  605. [outputcontrolpoints(3)]
  606. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  607. {
  608. return patch[id];
  609. }
  610. [domain("tri")]
  611. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  612. {
  613. VertexInput o = (VertexInput) 0;
  614. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  615. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  616. #if defined(ASE_PHONG_TESSELLATION)
  617. float3 pp[3];
  618. for (int i = 0; i < 3; ++i)
  619. pp[i] = o.vertex.xyz - patch[i].ase_normal * (dot(o.vertex.xyz, patch[i].ase_normal) - dot(patch[i].vertex.xyz, patch[i].ase_normal));
  620. float phongStrength = _TessPhongStrength;
  621. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  622. #endif
  623. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  624. return VertexFunction(o);
  625. }
  626. #else
  627. VertexOutput vert ( VertexInput v )
  628. {
  629. return VertexFunction( v );
  630. }
  631. #endif
  632. half4 frag(VertexOutput IN ) : SV_TARGET
  633. {
  634. UNITY_SETUP_INSTANCE_ID( IN );
  635. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
  636. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  637. float3 WorldPosition = IN.worldPos;
  638. #endif
  639. float4 ShadowCoords = float4( 0, 0, 0, 0 );
  640. #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  641. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
  642. ShadowCoords = IN.shadowCoord;
  643. #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
  644. ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
  645. #endif
  646. #endif
  647. float Alpha = 1;
  648. float AlphaClipThreshold = 0.5;
  649. float AlphaClipThresholdShadow = 0.5;
  650. #ifdef _ALPHATEST_ON
  651. #ifdef _ALPHATEST_SHADOW_ON
  652. clip(Alpha - AlphaClipThresholdShadow);
  653. #else
  654. clip(Alpha - AlphaClipThreshold);
  655. #endif
  656. #endif
  657. #ifdef LOD_FADE_CROSSFADE
  658. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  659. #endif
  660. return 0;
  661. }
  662. ENDHLSL
  663. }
  664. Pass
  665. {
  666. Name "DepthOnly"
  667. Tags { "LightMode"="DepthOnly" }
  668. ZWrite On
  669. ColorMask 0
  670. AlphaToMask Off
  671. HLSLPROGRAM
  672. #pragma multi_compile_instancing
  673. #define ASE_SRP_VERSION 100500
  674. #pragma vertex vert
  675. #pragma fragment frag
  676. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  677. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  678. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  679. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  680. struct VertexInput
  681. {
  682. float4 vertex : POSITION;
  683. float3 ase_normal : NORMAL;
  684. UNITY_VERTEX_INPUT_INSTANCE_ID
  685. };
  686. struct VertexOutput
  687. {
  688. float4 clipPos : SV_POSITION;
  689. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  690. float3 worldPos : TEXCOORD0;
  691. #endif
  692. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  693. float4 shadowCoord : TEXCOORD1;
  694. #endif
  695. UNITY_VERTEX_INPUT_INSTANCE_ID
  696. UNITY_VERTEX_OUTPUT_STEREO
  697. };
  698. CBUFFER_START(UnityPerMaterial)
  699. float4 _Control_ST;
  700. float4 _ControlExtra_ST;
  701. float4 _Splat0_ST;
  702. float4 _Splat1_ST;
  703. float4 _Splat2_ST;
  704. float4 _Splat3_ST;
  705. float4 _Splat4_ST;
  706. float _NormalIntensity0;
  707. float _NormalIntensity1;
  708. float _NormalIntensity2;
  709. float _NormalIntensity3;
  710. float _NormalIntensity4;
  711. #ifdef TESSELLATION_ON
  712. float _TessPhongStrength;
  713. float _TessValue;
  714. float _TessMin;
  715. float _TessMax;
  716. float _TessEdgeLength;
  717. float _TessMaxDisp;
  718. #endif
  719. CBUFFER_END
  720. VertexOutput VertexFunction( VertexInput v )
  721. {
  722. VertexOutput o = (VertexOutput)0;
  723. UNITY_SETUP_INSTANCE_ID(v);
  724. UNITY_TRANSFER_INSTANCE_ID(v, o);
  725. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  726. #ifdef ASE_ABSOLUTE_VERTEX_POS
  727. float3 defaultVertexValue = v.vertex.xyz;
  728. #else
  729. float3 defaultVertexValue = float3(0, 0, 0);
  730. #endif
  731. float3 vertexValue = defaultVertexValue;
  732. #ifdef ASE_ABSOLUTE_VERTEX_POS
  733. v.vertex.xyz = vertexValue;
  734. #else
  735. v.vertex.xyz += vertexValue;
  736. #endif
  737. v.ase_normal = v.ase_normal;
  738. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  739. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  740. o.worldPos = positionWS;
  741. #endif
  742. o.clipPos = TransformWorldToHClip( positionWS );
  743. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  744. VertexPositionInputs vertexInput = (VertexPositionInputs)0;
  745. vertexInput.positionWS = positionWS;
  746. vertexInput.positionCS = o.clipPos;
  747. o.shadowCoord = GetShadowCoord( vertexInput );
  748. #endif
  749. return o;
  750. }
  751. #if defined(TESSELLATION_ON)
  752. struct VertexControl
  753. {
  754. float4 vertex : INTERNALTESSPOS;
  755. float3 ase_normal : NORMAL;
  756. UNITY_VERTEX_INPUT_INSTANCE_ID
  757. };
  758. struct TessellationFactors
  759. {
  760. float edge[3] : SV_TessFactor;
  761. float inside : SV_InsideTessFactor;
  762. };
  763. VertexControl vert ( VertexInput v )
  764. {
  765. VertexControl o;
  766. UNITY_SETUP_INSTANCE_ID(v);
  767. UNITY_TRANSFER_INSTANCE_ID(v, o);
  768. o.vertex = v.vertex;
  769. o.ase_normal = v.ase_normal;
  770. return o;
  771. }
  772. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  773. {
  774. TessellationFactors o;
  775. float4 tf = 1;
  776. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  777. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  778. #if defined(ASE_FIXED_TESSELLATION)
  779. tf = FixedTess( tessValue );
  780. #elif defined(ASE_DISTANCE_TESSELLATION)
  781. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  782. #elif defined(ASE_LENGTH_TESSELLATION)
  783. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  784. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  785. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  786. #endif
  787. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  788. return o;
  789. }
  790. [domain("tri")]
  791. [partitioning("fractional_odd")]
  792. [outputtopology("triangle_cw")]
  793. [patchconstantfunc("TessellationFunction")]
  794. [outputcontrolpoints(3)]
  795. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  796. {
  797. return patch[id];
  798. }
  799. [domain("tri")]
  800. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  801. {
  802. VertexInput o = (VertexInput) 0;
  803. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  804. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  805. #if defined(ASE_PHONG_TESSELLATION)
  806. float3 pp[3];
  807. for (int i = 0; i < 3; ++i)
  808. pp[i] = o.vertex.xyz - patch[i].ase_normal * (dot(o.vertex.xyz, patch[i].ase_normal) - dot(patch[i].vertex.xyz, patch[i].ase_normal));
  809. float phongStrength = _TessPhongStrength;
  810. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  811. #endif
  812. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  813. return VertexFunction(o);
  814. }
  815. #else
  816. VertexOutput vert ( VertexInput v )
  817. {
  818. return VertexFunction( v );
  819. }
  820. #endif
  821. half4 frag(VertexOutput IN ) : SV_TARGET
  822. {
  823. UNITY_SETUP_INSTANCE_ID(IN);
  824. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
  825. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  826. float3 WorldPosition = IN.worldPos;
  827. #endif
  828. float4 ShadowCoords = float4( 0, 0, 0, 0 );
  829. #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  830. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
  831. ShadowCoords = IN.shadowCoord;
  832. #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
  833. ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
  834. #endif
  835. #endif
  836. float Alpha = 1;
  837. float AlphaClipThreshold = 0.5;
  838. #ifdef _ALPHATEST_ON
  839. clip(Alpha - AlphaClipThreshold);
  840. #endif
  841. #ifdef LOD_FADE_CROSSFADE
  842. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  843. #endif
  844. return 0;
  845. }
  846. ENDHLSL
  847. }
  848. }
  849. CustomEditor "UnityEditor.ShaderGraph.PBRMasterGUI"
  850. Fallback "Hidden/InternalErrorShader"
  851. }
  852. /*ASEBEGIN
  853. Version=18927
  854. -7;162;1920;857;2287.521;920.1581;2.675784;True;False
  855. Node;AmplifyShaderEditor.SamplerNode;39;-1091.521,-168.6296;Inherit;True;Property;_Normal1;Normalmap 2;6;0;Create;False;0;0;0;False;0;False;-1;None;None;True;0;True;bump;Auto;True;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  856. Node;AmplifyShaderEditor.CustomExpressionNode;150;-574.8895,-316.6312;Inherit;False; lerp(Normal, float3(0,0,1), - Strength + 1.0);3;Create;2;True;Normal;FLOAT3;0,0,0;In;;Inherit;False;True;Strength;FLOAT;1;In;;Inherit;False;MTE_NormalIntensity_fixed;True;False;0;;False;2;0;FLOAT3;0,0,0;False;1;FLOAT;1;False;1;FLOAT3;0
  857. Node;AmplifyShaderEditor.StaticSwitch;160;-244.5296,551.3509;Inherit;False;Property;ENABLE_NORMAL_INTENSITY;Normal Intensity;17;0;Create;False;0;0;0;False;0;False;0;1;1;True;ENABLE_NORMAL_INTENSITY;Toggle;2;Key0;Key1;Create;True;False;9;1;FLOAT3;0,0,0;False;0;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT3;0,0,0;False;4;FLOAT3;0,0,0;False;5;FLOAT3;0,0,0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT3;0,0,0;False;1;FLOAT3;0
  858. Node;AmplifyShaderEditor.StaticSwitch;159;-269.1909,331.2658;Inherit;False;Property;ENABLE_NORMAL_INTENSITY;Normal Intensity;25;0;Create;False;0;0;0;False;0;False;0;1;1;True;ENABLE_NORMAL_INTENSITY;Toggle;2;Key0;Key1;Create;True;False;9;1;FLOAT3;0,0,0;False;0;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT3;0,0,0;False;4;FLOAT3;0,0,0;False;5;FLOAT3;0,0,0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT3;0,0,0;False;1;FLOAT3;0
  859. Node;AmplifyShaderEditor.TexturePropertyNode;103;-906.9277,-799.4285;Float;True;Property;_Control;Control;10;0;Create;True;0;0;0;False;0;False;None;8de744a27d7e04243b05ab8f3ae22805;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
  860. Node;AmplifyShaderEditor.TexturePropertyNode;106;-909.2297,-614.9675;Float;True;Property;_ControlExtra;ControlExtra;11;0;Create;True;0;0;0;False;0;False;None;adb9d38a84178f04181dddfc906a0eb8;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
  861. Node;AmplifyShaderEditor.TexturePropertyNode;62;-1587.301,596.9885;Float;True;Property;_Splat4;Layer 5;4;0;Create;False;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
  862. Node;AmplifyShaderEditor.RangedFloatNode;147;-835.6444,-289.7424;Inherit;False;Property;_NormalIntensity0;Normal Intensity 1;12;0;Create;False;0;0;0;False;0;False;1;0;0.01;10;0;1;FLOAT;0
  863. Node;AmplifyShaderEditor.SamplerNode;6;-405.3592,-796.9125;Inherit;True;Property;_TextureSample4;Texture Sample 4;1;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;black;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  864. Node;AmplifyShaderEditor.RangedFloatNode;151;-806.9974,-66.04118;Inherit;False;Property;_NormalIntensity1;Normal Intensity 2;13;0;Create;False;0;0;0;False;0;False;1;0;0.01;10;0;1;FLOAT;0
  865. Node;AmplifyShaderEditor.ScaleAndOffsetNode;172;405.8785,-216.1207;Inherit;False;3;0;FLOAT4;0,0,0,0;False;1;FLOAT;0.5;False;2;FLOAT;0.5;False;1;FLOAT4;0
  866. Node;AmplifyShaderEditor.TexturePropertyNode;19;-1577.062,-367.0509;Float;True;Property;_Splat0;Layer 1;0;0;Create;False;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
  867. Node;AmplifyShaderEditor.TextureCoordinatesNode;28;-1335.015,-368.5061;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  868. Node;AmplifyShaderEditor.TextureCoordinatesNode;105;-658.0287,-549.4305;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  869. Node;AmplifyShaderEditor.TextureCoordinatesNode;63;-1346.053,586.6523;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  870. Node;AmplifyShaderEditor.CustomExpressionNode;89;178.7481,-216.4726;Float;False;return Layer1 * Weight.r + Layer2 * Weight.g + Layer3 * Weight.b + Layer4 * Weight.a + Layer5 * WeightExtra.r@;4;Create;7;True;Weight;FLOAT4;0,0,0,0;In;float[5];Half;False;True;WeightExtra;FLOAT4;0,0,0,0;In;;Half;False;True;Layer1;FLOAT4;0,0,0,0;In;;Float;False;True;Layer2;FLOAT4;0,0,0,0;In;;Float;False;True;Layer3;FLOAT4;0,0,0,0;In;;Float;False;True;Layer4;FLOAT4;0,0,0,0;In;;Float;False;True;Layer5;FLOAT4;0,0,0,0;In;;Float;False;Weighted Blend 5;True;False;0;;False;7;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;2;FLOAT4;0,0,0,0;False;3;FLOAT4;0,0,0,0;False;4;FLOAT4;0,0,0,0;False;5;FLOAT4;0,0,0,0;False;6;FLOAT4;0,0,0,0;False;1;FLOAT4;0
  871. Node;AmplifyShaderEditor.TextureCoordinatesNode;104;-652.7267,-731.8915;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  872. Node;AmplifyShaderEditor.SamplerNode;86;-398.5552,-612.2275;Inherit;True;Property;_ControlEx;ControlEx;0;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;black;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  873. Node;AmplifyShaderEditor.CustomExpressionNode;152;-533.2712,-84.67548;Inherit;False; lerp(Normal, float3(0,0,1), - Strength + 1.0);3;Create;2;True;Normal;FLOAT3;0,0,0;In;;Inherit;False;True;Strength;FLOAT;1;In;;Inherit;False;MTE_NormalIntensity_fixed;True;False;0;;False;2;0;FLOAT3;0,0,0;False;1;FLOAT;1;False;1;FLOAT3;0
  874. Node;AmplifyShaderEditor.StaticSwitch;148;-376.8101,-390.8447;Inherit;False;Property;ENABLE_NORMAL_INTENSITY;Normal Intensity;17;0;Create;False;0;0;0;False;0;False;0;1;1;True;ENABLE_NORMAL_INTENSITY;Toggle;2;Key0;Key1;Create;True;False;9;1;FLOAT3;0,0,0;False;0;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT3;0,0,0;False;4;FLOAT3;0,0,0;False;5;FLOAT3;0,0,0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT3;0,0,0;False;1;FLOAT3;0
  875. Node;AmplifyShaderEditor.CustomExpressionNode;158;-475.5244,425.5259;Inherit;False; lerp(Normal, float3(0,0,1), - Strength + 1.0);3;Create;2;True;Normal;FLOAT3;0,0,0;In;;Inherit;False;True;Strength;FLOAT;1;In;;Inherit;False;MTE_NormalIntensity_fixed;True;False;0;;False;2;0;FLOAT3;0,0,0;False;1;FLOAT;1;False;1;FLOAT3;0
  876. Node;AmplifyShaderEditor.SamplerNode;44;-1073.1,56.93366;Inherit;True;Property;_Normal2;Normalmap 3;7;0;Create;False;0;0;0;False;0;False;-1;None;None;True;0;True;bump;Auto;True;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  877. Node;AmplifyShaderEditor.CustomExpressionNode;161;-450.8631,645.6109;Inherit;False; lerp(Normal, float3(0,0,1), - Strength + 1.0);3;Create;2;True;Normal;FLOAT3;0,0,0;In;;Inherit;False;True;Strength;FLOAT;1;In;;Inherit;False;MTE_NormalIntensity_fixed;True;False;0;;False;2;0;FLOAT3;0,0,0;False;1;FLOAT;1;False;1;FLOAT3;0
  878. Node;AmplifyShaderEditor.TexturePropertyNode;41;-1586.853,79.21128;Float;True;Property;_Splat2;Layer 3;2;0;Create;False;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
  879. Node;AmplifyShaderEditor.TexturePropertyNode;45;-1589.436,346.956;Float;True;Property;_Splat3;Layer 4;3;0;Create;False;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
  880. Node;AmplifyShaderEditor.TextureCoordinatesNode;42;-1333.14,78.90816;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  881. Node;AmplifyShaderEditor.TexturePropertyNode;37;-1578.788,-143.0039;Float;True;Property;_Splat1;Layer 2;1;0;Create;False;0;0;0;False;0;False;None;None;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
  882. Node;AmplifyShaderEditor.SamplerNode;16;-1110.708,-391.6356;Inherit;True;Property;_Normal0;Normalmap 1;5;0;Create;False;0;0;0;False;0;False;-1;None;None;True;0;True;bump;Auto;True;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  883. Node;AmplifyShaderEditor.StaticSwitch;153;-326.9375,-163.6058;Inherit;False;Property;ENABLE_NORMAL_INTENSITY;Normal Intensity;17;0;Create;False;0;0;0;False;0;False;0;1;1;True;ENABLE_NORMAL_INTENSITY;Toggle;2;Key0;Key1;Create;True;False;9;1;FLOAT3;0,0,0;False;0;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT3;0,0,0;False;4;FLOAT3;0,0,0;False;5;FLOAT3;0,0,0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT3;0,0,0;False;1;FLOAT3;0
  884. Node;AmplifyShaderEditor.RangedFloatNode;157;-749.2515,444.1603;Inherit;False;Property;_NormalIntensity3;Normal Intensity 4;15;0;Create;False;0;0;0;False;0;False;1;0;0.01;10;0;1;FLOAT;0
  885. Node;AmplifyShaderEditor.TextureCoordinatesNode;46;-1319.638,349.4468;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  886. Node;AmplifyShaderEditor.RangedFloatNode;162;-724.5905,664.245;Inherit;False;Property;_NormalIntensity4;Normal Intensity 5;16;0;Create;False;0;0;0;False;0;False;1;0;0.01;10;0;1;FLOAT;0
  887. Node;AmplifyShaderEditor.StaticSwitch;156;-302.5337,59.13985;Inherit;False;Property;ENABLE_NORMAL_INTENSITY;Normal Intensity;15;0;Create;False;0;0;0;False;0;False;0;1;1;True;ENABLE_NORMAL_INTENSITY;Toggle;2;Key0;Key1;Create;True;False;9;1;FLOAT3;0,0,0;False;0;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT3;0,0,0;False;4;FLOAT3;0,0,0;False;5;FLOAT3;0,0,0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT3;0,0,0;False;1;FLOAT3;0
  888. Node;AmplifyShaderEditor.CustomExpressionNode;155;-508.8675,152.2203;Inherit;False; lerp(Normal, float3(0,0,1), - Strength + 1.0);3;Create;2;True;Normal;FLOAT3;0,0,0;In;;Inherit;False;True;Strength;FLOAT;1;In;;Inherit;False;MTE_NormalIntensity_fixed;True;False;0;;False;2;0;FLOAT3;0,0,0;False;1;FLOAT;1;False;1;FLOAT3;0
  889. Node;AmplifyShaderEditor.RangedFloatNode;154;-782.5941,170.8546;Inherit;False;Property;_NormalIntensity2;Normal Intensity 3;14;0;Create;False;0;0;0;False;0;False;1;0;0.01;10;0;1;FLOAT;0
  890. Node;AmplifyShaderEditor.TextureCoordinatesNode;40;-1337.635,-143.402;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  891. Node;AmplifyShaderEditor.SamplerNode;48;-1053.331,325.686;Inherit;True;Property;_Normal3;Normalmap 4;8;0;Create;False;0;0;0;False;0;False;-1;None;None;True;0;True;bump;Auto;True;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  892. Node;AmplifyShaderEditor.SamplerNode;90;-1035.083,562.8311;Inherit;True;Property;_Normal4;Normalmap 5;9;0;Create;False;0;0;0;False;0;False;-1;None;None;True;0;True;bump;Auto;True;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  893. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;169;683.9721,-229.2669;Float;False;False;-1;2;UnityEditor.ShaderGraph.PBRMasterGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthOnly;0;3;DepthOnly;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;255;False;-1;255;False;-1;255;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;False;False;False;False;True;3;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;0;True;17;d3d9;d3d11;glcore;gles;gles3;metal;vulkan;xbox360;xboxone;xboxseries;ps4;playstation;psp2;n3ds;wiiu;switch;nomrt;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;False;False;True;False;False;False;False;0;False;-1;False;False;False;False;False;False;False;False;False;True;1;False;-1;False;False;True;1;LightMode=DepthOnly;False;False;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0
  894. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;166;560.5684,-218.442;Float;False;False;-1;2;UnityEditor.ShaderGraph.PBRMasterGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ExtraPrePass;0;0;ExtraPrePass;5;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;255;False;-1;255;False;-1;255;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;False;False;False;False;True;3;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;0;True;17;d3d9;d3d11;glcore;gles;gles3;metal;vulkan;xbox360;xboxone;xboxseries;ps4;playstation;psp2;n3ds;wiiu;switch;nomrt;0;False;True;1;1;False;-1;0;False;-1;0;1;False;-1;0;False;-1;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;True;True;True;True;0;False;-1;False;False;False;False;False;False;False;True;False;255;False;-1;255;False;-1;255;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;False;True;1;False;-1;True;3;False;-1;True;True;0;False;-1;0;False;-1;True;0;False;False;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0
  895. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;168;683.9721,-229.2669;Float;False;False;-1;2;UnityEditor.ShaderGraph.PBRMasterGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ShadowCaster;0;2;ShadowCaster;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;255;False;-1;255;False;-1;255;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;False;False;False;False;True;3;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;0;True;17;d3d9;d3d11;glcore;gles;gles3;metal;vulkan;xbox360;xboxone;xboxseries;ps4;playstation;psp2;n3ds;wiiu;switch;nomrt;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;False;False;True;False;False;False;False;0;False;-1;False;False;False;False;False;False;False;False;False;True;1;False;-1;True;3;False;-1;False;True;1;LightMode=ShadowCaster;False;False;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0
  896. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;170;683.9721,-229.2669;Float;False;False;-1;2;UnityEditor.ShaderGraph.PBRMasterGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;Meta;0;4;Meta;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;255;False;-1;255;False;-1;255;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;False;False;False;False;True;3;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;0;True;17;d3d9;d3d11;glcore;gles;gles3;metal;vulkan;xbox360;xboxone;xboxseries;ps4;playstation;psp2;n3ds;wiiu;switch;nomrt;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;2;False;-1;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;LightMode=Meta;False;False;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0
  897. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;167;595.1331,-216.0233;Float;False;True;-1;2;UnityEditor.ShaderGraph.PBRMasterGUI;0;3;MTE/URP/DisplayNormal/5 Textures;2992e84f91cbeb14eab234972e07ea9d;True;Forward;0;1;Forward;8;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;255;False;-1;255;False;-1;255;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;False;False;False;False;True;3;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;2;True;17;d3d9;d3d11;glcore;gles;gles3;metal;vulkan;xbox360;xboxone;xboxseries;ps4;playstation;psp2;n3ds;wiiu;switch;nomrt;0;False;True;1;1;False;-1;0;False;-1;1;1;False;-1;0;False;-1;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;True;True;True;True;0;False;-1;False;False;False;False;False;False;False;True;False;255;False;-1;255;False;-1;255;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;False;True;1;False;-1;True;3;False;-1;True;True;0;False;-1;0;False;-1;True;1;LightMode=UniversalForward;False;False;0;Hidden/InternalErrorShader;0;0;Standard;22;Surface;0; Blend;0;Two Sided;1;Cast Shadows;1; Use Shadow Threshold;0;Receive Shadows;1;GPU Instancing;1;LOD CrossFade;0;Built-in Fog;0;DOTS Instancing;0;Meta Pass;0;Extra Pre Pass;0;Tessellation;0; Phong;0; Strength;0.5,False,-1; Type;0; Tess;16,False,-1; Min;10,False,-1; Max;25,False,-1; Edge Length;16,False,-1; Max Displacement;25,False,-1;Vertex Position,InvertActionOnDeselection;1;0;5;False;True;True;True;False;False;;False;0
  898. WireConnection;39;1;40;0
  899. WireConnection;150;0;16;0
  900. WireConnection;150;1;147;0
  901. WireConnection;160;1;90;0
  902. WireConnection;160;0;161;0
  903. WireConnection;159;1;48;0
  904. WireConnection;159;0;158;0
  905. WireConnection;6;0;103;0
  906. WireConnection;6;1;104;0
  907. WireConnection;172;0;89;0
  908. WireConnection;28;2;19;0
  909. WireConnection;105;2;106;0
  910. WireConnection;63;2;62;0
  911. WireConnection;89;0;6;0
  912. WireConnection;89;1;86;0
  913. WireConnection;89;2;148;0
  914. WireConnection;89;3;153;0
  915. WireConnection;89;4;156;0
  916. WireConnection;89;5;159;0
  917. WireConnection;89;6;160;0
  918. WireConnection;104;2;103;0
  919. WireConnection;86;0;106;0
  920. WireConnection;86;1;105;0
  921. WireConnection;152;0;39;0
  922. WireConnection;152;1;151;0
  923. WireConnection;148;1;16;0
  924. WireConnection;148;0;150;0
  925. WireConnection;158;0;48;0
  926. WireConnection;158;1;157;0
  927. WireConnection;44;1;42;0
  928. WireConnection;161;0;90;0
  929. WireConnection;161;1;162;0
  930. WireConnection;42;2;41;0
  931. WireConnection;16;1;28;0
  932. WireConnection;153;1;39;0
  933. WireConnection;153;0;152;0
  934. WireConnection;46;2;45;0
  935. WireConnection;156;1;44;0
  936. WireConnection;156;0;155;0
  937. WireConnection;155;0;44;0
  938. WireConnection;155;1;154;0
  939. WireConnection;40;2;37;0
  940. WireConnection;48;1;46;0
  941. WireConnection;90;1;63;0
  942. WireConnection;167;2;172;0
  943. ASEEND*/
  944. //CHKSM=9415E272EBB9646AAC23E8A951AC791919245EF8