UIAddtive.shader 79 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063
  1. // Made with Amplify Shader Editor
  2. // Available at the Unity Asset Store - http://u3d.as/y3X
  3. Shader "LT/UIAddtive"
  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]_Alpha("Alpha", Range( 0 , 1)) = 1
  10. [HDR]_Color("Color", Color) = (1,1,1,1)
  11. _MainTex("MainTex", 2D) = "white" {}
  12. _MainTexOffsetU("MainTexOffsetU", Float) = 0
  13. _MainTexOffsetV("MainTexOffsetV", Float) = 0
  14. _MainTilingU("MainTilingU", Float) = 1
  15. _MainTilingV("MainTilingV", Float) = 1
  16. _TimeSpeedON("TimeSpeedON", Range( 0 , 1)) = 0
  17. _MainSpeedU("MainSpeedU", Float) = 0.5
  18. _MainSpeedV("MainSpeedV", Float) = 0.5
  19. _Mask("Mask", 2D) = "white" {}
  20. _MaskTilingU("MaskTilingU", Float) = 1
  21. _MaskTilingV("MaskTilingV", Float) = 1
  22. _MaskTexOffsetU("MaskTexOffsetU", Float) = 0
  23. _MaskTexOffsetV("MaskTexOffsetV", Float) = 0
  24. _MaskTimeSpeedON1("MaskTimeSpeedON", Range( 0 , 1)) = 0
  25. _MaskSpeedU("MaskSpeedU", Float) = 0.5
  26. _MaskSpeedV("MaskSpeedV", Float) = 0.5
  27. _StencilComp("_StencilComp", Float) = 0
  28. _ColorMask("_ColorMask", Float) = 0
  29. _StencilReadMask("_StencilReadMask", Float) = 0
  30. _StencilWriteMask("_StencilWriteMask", Float) = 0
  31. _Stencil("_Stencil", Float) = 0
  32. [ASEEnd]_StencilOp("_StencilOp", Float) = 0
  33. [HideInInspector]_QueueOffset("_QueueOffset", Float) = 0
  34. [HideInInspector]_QueueControl("_QueueControl", Float) = -1
  35. [HideInInspector][NoScaleOffset]unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {}
  36. [HideInInspector][NoScaleOffset]unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {}
  37. [HideInInspector][NoScaleOffset]unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {}
  38. //_TessPhongStrength( "Tess Phong Strength", Range( 0, 1 ) ) = 0.5
  39. //_TessValue( "Tess Max Tessellation", Range( 1, 32 ) ) = 16
  40. //_TessMin( "Tess Min Distance", Float ) = 10
  41. //_TessMax( "Tess Max Distance", Float ) = 25
  42. //_TessEdgeLength ( "Tess Edge length", Range( 2, 50 ) ) = 16
  43. //_TessMaxDisp( "Tess Max Displacement", Float ) = 25
  44. }
  45. SubShader
  46. {
  47. LOD 0
  48. Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Transparent" "Queue"="Transparent" }
  49. Cull Off
  50. AlphaToMask Off
  51. Stencil
  52. {
  53. Ref [_Stencil]
  54. ReadMask [_StencilReadMask]
  55. WriteMask [_StencilWriteMask]
  56. CompFront [_StencilComp]
  57. PassFront [_StencilOp]
  58. FailFront Keep
  59. ZFailFront Keep
  60. CompBack Always
  61. PassBack Keep
  62. FailBack Keep
  63. ZFailBack Keep
  64. }
  65. HLSLINCLUDE
  66. #pragma target 3.0
  67. #pragma prefer_hlslcc gles
  68. #pragma only_renderers d3d9 d3d11 glcore gles gles3 metal vulkan nomrt
  69. #ifndef ASE_TESS_FUNCS
  70. #define ASE_TESS_FUNCS
  71. float4 FixedTess( float tessValue )
  72. {
  73. return tessValue;
  74. }
  75. float CalcDistanceTessFactor (float4 vertex, float minDist, float maxDist, float tess, float4x4 o2w, float3 cameraPos )
  76. {
  77. float3 wpos = mul(o2w,vertex).xyz;
  78. float dist = distance (wpos, cameraPos);
  79. float f = clamp(1.0 - (dist - minDist) / (maxDist - minDist), 0.01, 1.0) * tess;
  80. return f;
  81. }
  82. float4 CalcTriEdgeTessFactors (float3 triVertexFactors)
  83. {
  84. float4 tess;
  85. tess.x = 0.5 * (triVertexFactors.y + triVertexFactors.z);
  86. tess.y = 0.5 * (triVertexFactors.x + triVertexFactors.z);
  87. tess.z = 0.5 * (triVertexFactors.x + triVertexFactors.y);
  88. tess.w = (triVertexFactors.x + triVertexFactors.y + triVertexFactors.z) / 3.0f;
  89. return tess;
  90. }
  91. float CalcEdgeTessFactor (float3 wpos0, float3 wpos1, float edgeLen, float3 cameraPos, float4 scParams )
  92. {
  93. float dist = distance (0.5 * (wpos0+wpos1), cameraPos);
  94. float len = distance(wpos0, wpos1);
  95. float f = max(len * scParams.y / (edgeLen * dist), 1.0);
  96. return f;
  97. }
  98. float DistanceFromPlane (float3 pos, float4 plane)
  99. {
  100. float d = dot (float4(pos,1.0f), plane);
  101. return d;
  102. }
  103. bool WorldViewFrustumCull (float3 wpos0, float3 wpos1, float3 wpos2, float cullEps, float4 planes[6] )
  104. {
  105. float4 planeTest;
  106. planeTest.x = (( DistanceFromPlane(wpos0, planes[0]) > -cullEps) ? 1.0f : 0.0f ) +
  107. (( DistanceFromPlane(wpos1, planes[0]) > -cullEps) ? 1.0f : 0.0f ) +
  108. (( DistanceFromPlane(wpos2, planes[0]) > -cullEps) ? 1.0f : 0.0f );
  109. planeTest.y = (( DistanceFromPlane(wpos0, planes[1]) > -cullEps) ? 1.0f : 0.0f ) +
  110. (( DistanceFromPlane(wpos1, planes[1]) > -cullEps) ? 1.0f : 0.0f ) +
  111. (( DistanceFromPlane(wpos2, planes[1]) > -cullEps) ? 1.0f : 0.0f );
  112. planeTest.z = (( DistanceFromPlane(wpos0, planes[2]) > -cullEps) ? 1.0f : 0.0f ) +
  113. (( DistanceFromPlane(wpos1, planes[2]) > -cullEps) ? 1.0f : 0.0f ) +
  114. (( DistanceFromPlane(wpos2, planes[2]) > -cullEps) ? 1.0f : 0.0f );
  115. planeTest.w = (( DistanceFromPlane(wpos0, planes[3]) > -cullEps) ? 1.0f : 0.0f ) +
  116. (( DistanceFromPlane(wpos1, planes[3]) > -cullEps) ? 1.0f : 0.0f ) +
  117. (( DistanceFromPlane(wpos2, planes[3]) > -cullEps) ? 1.0f : 0.0f );
  118. return !all (planeTest);
  119. }
  120. float4 DistanceBasedTess( float4 v0, float4 v1, float4 v2, float tess, float minDist, float maxDist, float4x4 o2w, float3 cameraPos )
  121. {
  122. float3 f;
  123. f.x = CalcDistanceTessFactor (v0,minDist,maxDist,tess,o2w,cameraPos);
  124. f.y = CalcDistanceTessFactor (v1,minDist,maxDist,tess,o2w,cameraPos);
  125. f.z = CalcDistanceTessFactor (v2,minDist,maxDist,tess,o2w,cameraPos);
  126. return CalcTriEdgeTessFactors (f);
  127. }
  128. float4 EdgeLengthBasedTess( float4 v0, float4 v1, float4 v2, float edgeLength, float4x4 o2w, float3 cameraPos, float4 scParams )
  129. {
  130. float3 pos0 = mul(o2w,v0).xyz;
  131. float3 pos1 = mul(o2w,v1).xyz;
  132. float3 pos2 = mul(o2w,v2).xyz;
  133. float4 tess;
  134. tess.x = CalcEdgeTessFactor (pos1, pos2, edgeLength, cameraPos, scParams);
  135. tess.y = CalcEdgeTessFactor (pos2, pos0, edgeLength, cameraPos, scParams);
  136. tess.z = CalcEdgeTessFactor (pos0, pos1, edgeLength, cameraPos, scParams);
  137. tess.w = (tess.x + tess.y + tess.z) / 3.0f;
  138. return tess;
  139. }
  140. float4 EdgeLengthBasedTessCull( float4 v0, float4 v1, float4 v2, float edgeLength, float maxDisplacement, float4x4 o2w, float3 cameraPos, float4 scParams, float4 planes[6] )
  141. {
  142. float3 pos0 = mul(o2w,v0).xyz;
  143. float3 pos1 = mul(o2w,v1).xyz;
  144. float3 pos2 = mul(o2w,v2).xyz;
  145. float4 tess;
  146. if (WorldViewFrustumCull(pos0, pos1, pos2, maxDisplacement, planes))
  147. {
  148. tess = 0.0f;
  149. }
  150. else
  151. {
  152. tess.x = CalcEdgeTessFactor (pos1, pos2, edgeLength, cameraPos, scParams);
  153. tess.y = CalcEdgeTessFactor (pos2, pos0, edgeLength, cameraPos, scParams);
  154. tess.z = CalcEdgeTessFactor (pos0, pos1, edgeLength, cameraPos, scParams);
  155. tess.w = (tess.x + tess.y + tess.z) / 3.0f;
  156. }
  157. return tess;
  158. }
  159. #endif //ASE_TESS_FUNCS
  160. ENDHLSL
  161. Pass
  162. {
  163. Name "Forward"
  164. Tags { "LightMode"="UniversalForwardOnly" }
  165. Blend One One, One OneMinusSrcAlpha
  166. ZWrite Off
  167. ZTest LEqual
  168. Offset 0 , 0
  169. ColorMask RGBA
  170. Stencil
  171. {
  172. Ref [_Stencil]
  173. ReadMask [_StencilReadMask]
  174. WriteMask [_StencilWriteMask]
  175. Comp [_StencilComp]
  176. Pass [_StencilOp]
  177. Fail Keep
  178. ZFail Keep
  179. }
  180. HLSLPROGRAM
  181. #pragma multi_compile_instancing
  182. #define _RECEIVE_SHADOWS_OFF 1
  183. #define ASE_SRP_VERSION 999999
  184. #pragma multi_compile _ LIGHTMAP_ON
  185. #pragma multi_compile _ DIRLIGHTMAP_COMBINED
  186. #pragma shader_feature _ _SAMPLE_GI
  187. #pragma multi_compile _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3
  188. #pragma multi_compile _ DEBUG_DISPLAY
  189. #define SHADERPASS SHADERPASS_UNLIT
  190. #pragma vertex vert
  191. #pragma fragment frag
  192. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  193. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  194. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  195. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  196. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  197. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  198. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"
  199. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  200. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging3D.hlsl"
  201. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
  202. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceData.hlsl"
  203. struct VertexInput
  204. {
  205. float4 vertex : POSITION;
  206. float3 ase_normal : NORMAL;
  207. float4 ase_texcoord : TEXCOORD0;
  208. float4 ase_color : COLOR;
  209. UNITY_VERTEX_INPUT_INSTANCE_ID
  210. };
  211. struct VertexOutput
  212. {
  213. float4 clipPos : SV_POSITION;
  214. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  215. float3 worldPos : TEXCOORD0;
  216. #endif
  217. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  218. float4 shadowCoord : TEXCOORD1;
  219. #endif
  220. #ifdef ASE_FOG
  221. float fogFactor : TEXCOORD2;
  222. #endif
  223. float4 ase_texcoord3 : TEXCOORD3;
  224. float4 ase_color : COLOR;
  225. UNITY_VERTEX_INPUT_INSTANCE_ID
  226. UNITY_VERTEX_OUTPUT_STEREO
  227. };
  228. CBUFFER_START(UnityPerMaterial)
  229. float4 _Color;
  230. float _StencilWriteMask;
  231. float _MaskSpeedU;
  232. float _MaskTexOffsetV;
  233. float _MaskTexOffsetU;
  234. float _MaskTilingV;
  235. float _MaskTilingU;
  236. float _Alpha;
  237. float _TimeSpeedON;
  238. float _MainSpeedV;
  239. float _MainSpeedU;
  240. float _MainTexOffsetV;
  241. float _MainTexOffsetU;
  242. float _MainTilingV;
  243. float _MainTilingU;
  244. float _StencilOp;
  245. float _Stencil;
  246. float _StencilReadMask;
  247. float _StencilComp;
  248. float _ColorMask;
  249. float _MaskSpeedV;
  250. float _MaskTimeSpeedON1;
  251. #ifdef TESSELLATION_ON
  252. float _TessPhongStrength;
  253. float _TessValue;
  254. float _TessMin;
  255. float _TessMax;
  256. float _TessEdgeLength;
  257. float _TessMaxDisp;
  258. #endif
  259. CBUFFER_END
  260. sampler2D _MainTex;
  261. sampler2D _Mask;
  262. VertexOutput VertexFunction ( VertexInput v )
  263. {
  264. VertexOutput o = (VertexOutput)0;
  265. UNITY_SETUP_INSTANCE_ID(v);
  266. UNITY_TRANSFER_INSTANCE_ID(v, o);
  267. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  268. o.ase_texcoord3.xy = v.ase_texcoord.xy;
  269. o.ase_color = v.ase_color;
  270. //setting value to unused interpolator channels and avoid initialization warnings
  271. o.ase_texcoord3.zw = 0;
  272. #ifdef ASE_ABSOLUTE_VERTEX_POS
  273. float3 defaultVertexValue = v.vertex.xyz;
  274. #else
  275. float3 defaultVertexValue = float3(0, 0, 0);
  276. #endif
  277. float3 vertexValue = defaultVertexValue;
  278. #ifdef ASE_ABSOLUTE_VERTEX_POS
  279. v.vertex.xyz = vertexValue;
  280. #else
  281. v.vertex.xyz += vertexValue;
  282. #endif
  283. v.ase_normal = v.ase_normal;
  284. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  285. float4 positionCS = TransformWorldToHClip( positionWS );
  286. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  287. o.worldPos = positionWS;
  288. #endif
  289. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  290. VertexPositionInputs vertexInput = (VertexPositionInputs)0;
  291. vertexInput.positionWS = positionWS;
  292. vertexInput.positionCS = positionCS;
  293. o.shadowCoord = GetShadowCoord( vertexInput );
  294. #endif
  295. #ifdef ASE_FOG
  296. o.fogFactor = ComputeFogFactor( positionCS.z );
  297. #endif
  298. o.clipPos = positionCS;
  299. return o;
  300. }
  301. #if defined(TESSELLATION_ON)
  302. struct VertexControl
  303. {
  304. float4 vertex : INTERNALTESSPOS;
  305. float3 ase_normal : NORMAL;
  306. float4 ase_texcoord : TEXCOORD0;
  307. float4 ase_color : COLOR;
  308. UNITY_VERTEX_INPUT_INSTANCE_ID
  309. };
  310. struct TessellationFactors
  311. {
  312. float edge[3] : SV_TessFactor;
  313. float inside : SV_InsideTessFactor;
  314. };
  315. VertexControl vert ( VertexInput v )
  316. {
  317. VertexControl o;
  318. UNITY_SETUP_INSTANCE_ID(v);
  319. UNITY_TRANSFER_INSTANCE_ID(v, o);
  320. o.vertex = v.vertex;
  321. o.ase_normal = v.ase_normal;
  322. o.ase_texcoord = v.ase_texcoord;
  323. o.ase_color = v.ase_color;
  324. return o;
  325. }
  326. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  327. {
  328. TessellationFactors o;
  329. float4 tf = 1;
  330. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  331. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  332. #if defined(ASE_FIXED_TESSELLATION)
  333. tf = FixedTess( tessValue );
  334. #elif defined(ASE_DISTANCE_TESSELLATION)
  335. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  336. #elif defined(ASE_LENGTH_TESSELLATION)
  337. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  338. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  339. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  340. #endif
  341. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  342. return o;
  343. }
  344. [domain("tri")]
  345. [partitioning("fractional_odd")]
  346. [outputtopology("triangle_cw")]
  347. [patchconstantfunc("TessellationFunction")]
  348. [outputcontrolpoints(3)]
  349. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  350. {
  351. return patch[id];
  352. }
  353. [domain("tri")]
  354. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  355. {
  356. VertexInput o = (VertexInput) 0;
  357. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  358. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  359. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  360. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  361. #if defined(ASE_PHONG_TESSELLATION)
  362. float3 pp[3];
  363. for (int i = 0; i < 3; ++i)
  364. 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));
  365. float phongStrength = _TessPhongStrength;
  366. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  367. #endif
  368. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  369. return VertexFunction(o);
  370. }
  371. #else
  372. VertexOutput vert ( VertexInput v )
  373. {
  374. return VertexFunction( v );
  375. }
  376. #endif
  377. half4 frag ( VertexOutput IN ) : SV_Target
  378. {
  379. UNITY_SETUP_INSTANCE_ID( IN );
  380. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
  381. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  382. float3 WorldPosition = IN.worldPos;
  383. #endif
  384. float4 ShadowCoords = float4( 0, 0, 0, 0 );
  385. #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  386. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
  387. ShadowCoords = IN.shadowCoord;
  388. #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
  389. ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
  390. #endif
  391. #endif
  392. float2 appendResult27 = (float2(_MainTilingU , _MainTilingV));
  393. float2 texCoord16 = IN.ase_texcoord3.xy * appendResult27 + float2( 0,0 );
  394. float2 appendResult15 = (float2(_MainTexOffsetU , _MainTexOffsetV));
  395. float2 appendResult38 = (float2(_MainSpeedU , _MainSpeedV));
  396. float2 panner34 = ( 1.0 * _Time.y * appendResult38 + texCoord16);
  397. float2 lerpResult42 = lerp( ( texCoord16 + appendResult15 ) , panner34 , round( _TimeSpeedON ));
  398. float2 appendResult52 = (float2(_MaskTilingU , _MaskTilingV));
  399. float2 texCoord49 = IN.ase_texcoord3.xy * appendResult52 + float2( 0,0 );
  400. float2 appendResult55 = (float2(_MaskTexOffsetU , _MaskTexOffsetV));
  401. float2 appendResult60 = (float2(_MaskSpeedU , _MaskSpeedV));
  402. float2 panner59 = ( 1.0 * _Time.y * appendResult60 + texCoord49);
  403. float2 lerpResult61 = lerp( ( texCoord49 + appendResult55 ) , panner59 , round( _MaskTimeSpeedON1 ));
  404. float3 BakedAlbedo = 0;
  405. float3 BakedEmission = 0;
  406. float3 Color = ( tex2D( _MainTex, lerpResult42 ) * _Color * IN.ase_color * _Alpha * tex2D( _Mask, lerpResult61 ).r ).rgb;
  407. float Alpha = 1;
  408. float AlphaClipThreshold = 0.5;
  409. float AlphaClipThresholdShadow = 0.5;
  410. #ifdef _ALPHATEST_ON
  411. clip( Alpha - AlphaClipThreshold );
  412. #endif
  413. #if defined(_DBUFFER)
  414. ApplyDecalToBaseColor(IN.clipPos, Color);
  415. #endif
  416. #if defined(_ALPHAPREMULTIPLY_ON)
  417. Color *= Alpha;
  418. #endif
  419. #ifdef LOD_FADE_CROSSFADE
  420. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  421. #endif
  422. #ifdef ASE_FOG
  423. Color = MixFog( Color, IN.fogFactor );
  424. #endif
  425. return half4( Color, Alpha );
  426. }
  427. ENDHLSL
  428. }
  429. Pass
  430. {
  431. Name "DepthOnly"
  432. Tags { "LightMode"="DepthOnly" }
  433. ZWrite On
  434. ColorMask 0
  435. AlphaToMask Off
  436. HLSLPROGRAM
  437. #pragma multi_compile_instancing
  438. #define _RECEIVE_SHADOWS_OFF 1
  439. #define ASE_SRP_VERSION 999999
  440. #pragma vertex vert
  441. #pragma fragment frag
  442. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  443. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  444. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  445. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  446. struct VertexInput
  447. {
  448. float4 vertex : POSITION;
  449. float3 ase_normal : NORMAL;
  450. UNITY_VERTEX_INPUT_INSTANCE_ID
  451. };
  452. struct VertexOutput
  453. {
  454. float4 clipPos : SV_POSITION;
  455. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  456. float3 worldPos : TEXCOORD0;
  457. #endif
  458. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  459. float4 shadowCoord : TEXCOORD1;
  460. #endif
  461. UNITY_VERTEX_INPUT_INSTANCE_ID
  462. UNITY_VERTEX_OUTPUT_STEREO
  463. };
  464. CBUFFER_START(UnityPerMaterial)
  465. float4 _Color;
  466. float _StencilWriteMask;
  467. float _MaskSpeedU;
  468. float _MaskTexOffsetV;
  469. float _MaskTexOffsetU;
  470. float _MaskTilingV;
  471. float _MaskTilingU;
  472. float _Alpha;
  473. float _TimeSpeedON;
  474. float _MainSpeedV;
  475. float _MainSpeedU;
  476. float _MainTexOffsetV;
  477. float _MainTexOffsetU;
  478. float _MainTilingV;
  479. float _MainTilingU;
  480. float _StencilOp;
  481. float _Stencil;
  482. float _StencilReadMask;
  483. float _StencilComp;
  484. float _ColorMask;
  485. float _MaskSpeedV;
  486. float _MaskTimeSpeedON1;
  487. #ifdef TESSELLATION_ON
  488. float _TessPhongStrength;
  489. float _TessValue;
  490. float _TessMin;
  491. float _TessMax;
  492. float _TessEdgeLength;
  493. float _TessMaxDisp;
  494. #endif
  495. CBUFFER_END
  496. VertexOutput VertexFunction( VertexInput v )
  497. {
  498. VertexOutput o = (VertexOutput)0;
  499. UNITY_SETUP_INSTANCE_ID(v);
  500. UNITY_TRANSFER_INSTANCE_ID(v, o);
  501. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  502. #ifdef ASE_ABSOLUTE_VERTEX_POS
  503. float3 defaultVertexValue = v.vertex.xyz;
  504. #else
  505. float3 defaultVertexValue = float3(0, 0, 0);
  506. #endif
  507. float3 vertexValue = defaultVertexValue;
  508. #ifdef ASE_ABSOLUTE_VERTEX_POS
  509. v.vertex.xyz = vertexValue;
  510. #else
  511. v.vertex.xyz += vertexValue;
  512. #endif
  513. v.ase_normal = v.ase_normal;
  514. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  515. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  516. o.worldPos = positionWS;
  517. #endif
  518. o.clipPos = TransformWorldToHClip( positionWS );
  519. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  520. VertexPositionInputs vertexInput = (VertexPositionInputs)0;
  521. vertexInput.positionWS = positionWS;
  522. vertexInput.positionCS = o.clipPos;
  523. o.shadowCoord = GetShadowCoord( vertexInput );
  524. #endif
  525. return o;
  526. }
  527. #if defined(TESSELLATION_ON)
  528. struct VertexControl
  529. {
  530. float4 vertex : INTERNALTESSPOS;
  531. float3 ase_normal : NORMAL;
  532. UNITY_VERTEX_INPUT_INSTANCE_ID
  533. };
  534. struct TessellationFactors
  535. {
  536. float edge[3] : SV_TessFactor;
  537. float inside : SV_InsideTessFactor;
  538. };
  539. VertexControl vert ( VertexInput v )
  540. {
  541. VertexControl o;
  542. UNITY_SETUP_INSTANCE_ID(v);
  543. UNITY_TRANSFER_INSTANCE_ID(v, o);
  544. o.vertex = v.vertex;
  545. o.ase_normal = v.ase_normal;
  546. return o;
  547. }
  548. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  549. {
  550. TessellationFactors o;
  551. float4 tf = 1;
  552. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  553. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  554. #if defined(ASE_FIXED_TESSELLATION)
  555. tf = FixedTess( tessValue );
  556. #elif defined(ASE_DISTANCE_TESSELLATION)
  557. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  558. #elif defined(ASE_LENGTH_TESSELLATION)
  559. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  560. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  561. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  562. #endif
  563. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  564. return o;
  565. }
  566. [domain("tri")]
  567. [partitioning("fractional_odd")]
  568. [outputtopology("triangle_cw")]
  569. [patchconstantfunc("TessellationFunction")]
  570. [outputcontrolpoints(3)]
  571. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  572. {
  573. return patch[id];
  574. }
  575. [domain("tri")]
  576. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  577. {
  578. VertexInput o = (VertexInput) 0;
  579. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  580. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  581. #if defined(ASE_PHONG_TESSELLATION)
  582. float3 pp[3];
  583. for (int i = 0; i < 3; ++i)
  584. 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));
  585. float phongStrength = _TessPhongStrength;
  586. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  587. #endif
  588. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  589. return VertexFunction(o);
  590. }
  591. #else
  592. VertexOutput vert ( VertexInput v )
  593. {
  594. return VertexFunction( v );
  595. }
  596. #endif
  597. half4 frag(VertexOutput IN ) : SV_TARGET
  598. {
  599. UNITY_SETUP_INSTANCE_ID(IN);
  600. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
  601. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  602. float3 WorldPosition = IN.worldPos;
  603. #endif
  604. float4 ShadowCoords = float4( 0, 0, 0, 0 );
  605. #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  606. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
  607. ShadowCoords = IN.shadowCoord;
  608. #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
  609. ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
  610. #endif
  611. #endif
  612. float Alpha = 1;
  613. float AlphaClipThreshold = 0.5;
  614. #ifdef _ALPHATEST_ON
  615. clip(Alpha - AlphaClipThreshold);
  616. #endif
  617. #ifdef LOD_FADE_CROSSFADE
  618. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  619. #endif
  620. return 0;
  621. }
  622. ENDHLSL
  623. }
  624. Pass
  625. {
  626. Name "Universal2D"
  627. Tags { "LightMode"="Universal2D" }
  628. Blend One One, One OneMinusSrcAlpha
  629. ZWrite Off
  630. ZTest LEqual
  631. Offset 0 , 0
  632. ColorMask RGBA
  633. Stencil
  634. {
  635. Ref [_Stencil]
  636. ReadMask [_StencilReadMask]
  637. WriteMask [_StencilWriteMask]
  638. Comp [_StencilComp]
  639. Pass [_StencilOp]
  640. Fail Keep
  641. ZFail Keep
  642. }
  643. HLSLPROGRAM
  644. #pragma multi_compile_instancing
  645. #define _RECEIVE_SHADOWS_OFF 1
  646. #define ASE_SRP_VERSION 999999
  647. #pragma multi_compile _ LIGHTMAP_ON
  648. #pragma multi_compile _ DIRLIGHTMAP_COMBINED
  649. #pragma shader_feature _ _SAMPLE_GI
  650. #pragma multi_compile _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3
  651. #pragma multi_compile _ DEBUG_DISPLAY
  652. #define SHADERPASS SHADERPASS_UNLIT
  653. #pragma vertex vert
  654. #pragma fragment frag
  655. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  656. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  657. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  658. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  659. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  660. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  661. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"
  662. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  663. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging3D.hlsl"
  664. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
  665. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceData.hlsl"
  666. struct VertexInput
  667. {
  668. float4 vertex : POSITION;
  669. float3 ase_normal : NORMAL;
  670. float4 ase_texcoord : TEXCOORD0;
  671. float4 ase_color : COLOR;
  672. UNITY_VERTEX_INPUT_INSTANCE_ID
  673. };
  674. struct VertexOutput
  675. {
  676. float4 clipPos : SV_POSITION;
  677. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  678. float3 worldPos : TEXCOORD0;
  679. #endif
  680. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  681. float4 shadowCoord : TEXCOORD1;
  682. #endif
  683. #ifdef ASE_FOG
  684. float fogFactor : TEXCOORD2;
  685. #endif
  686. float4 ase_texcoord3 : TEXCOORD3;
  687. float4 ase_color : COLOR;
  688. UNITY_VERTEX_INPUT_INSTANCE_ID
  689. UNITY_VERTEX_OUTPUT_STEREO
  690. };
  691. CBUFFER_START(UnityPerMaterial)
  692. float4 _Color;
  693. float _StencilWriteMask;
  694. float _MaskSpeedU;
  695. float _MaskTexOffsetV;
  696. float _MaskTexOffsetU;
  697. float _MaskTilingV;
  698. float _MaskTilingU;
  699. float _Alpha;
  700. float _TimeSpeedON;
  701. float _MainSpeedV;
  702. float _MainSpeedU;
  703. float _MainTexOffsetV;
  704. float _MainTexOffsetU;
  705. float _MainTilingV;
  706. float _MainTilingU;
  707. float _StencilOp;
  708. float _Stencil;
  709. float _StencilReadMask;
  710. float _StencilComp;
  711. float _ColorMask;
  712. float _MaskSpeedV;
  713. float _MaskTimeSpeedON1;
  714. #ifdef TESSELLATION_ON
  715. float _TessPhongStrength;
  716. float _TessValue;
  717. float _TessMin;
  718. float _TessMax;
  719. float _TessEdgeLength;
  720. float _TessMaxDisp;
  721. #endif
  722. CBUFFER_END
  723. sampler2D _MainTex;
  724. sampler2D _Mask;
  725. VertexOutput VertexFunction ( VertexInput v )
  726. {
  727. VertexOutput o = (VertexOutput)0;
  728. UNITY_SETUP_INSTANCE_ID(v);
  729. UNITY_TRANSFER_INSTANCE_ID(v, o);
  730. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  731. o.ase_texcoord3.xy = v.ase_texcoord.xy;
  732. o.ase_color = v.ase_color;
  733. //setting value to unused interpolator channels and avoid initialization warnings
  734. o.ase_texcoord3.zw = 0;
  735. #ifdef ASE_ABSOLUTE_VERTEX_POS
  736. float3 defaultVertexValue = v.vertex.xyz;
  737. #else
  738. float3 defaultVertexValue = float3(0, 0, 0);
  739. #endif
  740. float3 vertexValue = defaultVertexValue;
  741. #ifdef ASE_ABSOLUTE_VERTEX_POS
  742. v.vertex.xyz = vertexValue;
  743. #else
  744. v.vertex.xyz += vertexValue;
  745. #endif
  746. v.ase_normal = v.ase_normal;
  747. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  748. float4 positionCS = TransformWorldToHClip( positionWS );
  749. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  750. o.worldPos = positionWS;
  751. #endif
  752. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  753. VertexPositionInputs vertexInput = (VertexPositionInputs)0;
  754. vertexInput.positionWS = positionWS;
  755. vertexInput.positionCS = positionCS;
  756. o.shadowCoord = GetShadowCoord( vertexInput );
  757. #endif
  758. #ifdef ASE_FOG
  759. o.fogFactor = ComputeFogFactor( positionCS.z );
  760. #endif
  761. o.clipPos = positionCS;
  762. return o;
  763. }
  764. #if defined(TESSELLATION_ON)
  765. struct VertexControl
  766. {
  767. float4 vertex : INTERNALTESSPOS;
  768. float3 ase_normal : NORMAL;
  769. float4 ase_texcoord : TEXCOORD0;
  770. float4 ase_color : COLOR;
  771. UNITY_VERTEX_INPUT_INSTANCE_ID
  772. };
  773. struct TessellationFactors
  774. {
  775. float edge[3] : SV_TessFactor;
  776. float inside : SV_InsideTessFactor;
  777. };
  778. VertexControl vert ( VertexInput v )
  779. {
  780. VertexControl o;
  781. UNITY_SETUP_INSTANCE_ID(v);
  782. UNITY_TRANSFER_INSTANCE_ID(v, o);
  783. o.vertex = v.vertex;
  784. o.ase_normal = v.ase_normal;
  785. o.ase_texcoord = v.ase_texcoord;
  786. o.ase_color = v.ase_color;
  787. return o;
  788. }
  789. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  790. {
  791. TessellationFactors o;
  792. float4 tf = 1;
  793. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  794. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  795. #if defined(ASE_FIXED_TESSELLATION)
  796. tf = FixedTess( tessValue );
  797. #elif defined(ASE_DISTANCE_TESSELLATION)
  798. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  799. #elif defined(ASE_LENGTH_TESSELLATION)
  800. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  801. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  802. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  803. #endif
  804. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  805. return o;
  806. }
  807. [domain("tri")]
  808. [partitioning("fractional_odd")]
  809. [outputtopology("triangle_cw")]
  810. [patchconstantfunc("TessellationFunction")]
  811. [outputcontrolpoints(3)]
  812. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  813. {
  814. return patch[id];
  815. }
  816. [domain("tri")]
  817. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  818. {
  819. VertexInput o = (VertexInput) 0;
  820. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  821. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  822. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  823. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  824. #if defined(ASE_PHONG_TESSELLATION)
  825. float3 pp[3];
  826. for (int i = 0; i < 3; ++i)
  827. 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));
  828. float phongStrength = _TessPhongStrength;
  829. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  830. #endif
  831. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  832. return VertexFunction(o);
  833. }
  834. #else
  835. VertexOutput vert ( VertexInput v )
  836. {
  837. return VertexFunction( v );
  838. }
  839. #endif
  840. half4 frag ( VertexOutput IN ) : SV_Target
  841. {
  842. UNITY_SETUP_INSTANCE_ID( IN );
  843. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
  844. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  845. float3 WorldPosition = IN.worldPos;
  846. #endif
  847. float4 ShadowCoords = float4( 0, 0, 0, 0 );
  848. #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  849. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
  850. ShadowCoords = IN.shadowCoord;
  851. #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
  852. ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
  853. #endif
  854. #endif
  855. float2 appendResult27 = (float2(_MainTilingU , _MainTilingV));
  856. float2 texCoord16 = IN.ase_texcoord3.xy * appendResult27 + float2( 0,0 );
  857. float2 appendResult15 = (float2(_MainTexOffsetU , _MainTexOffsetV));
  858. float2 appendResult38 = (float2(_MainSpeedU , _MainSpeedV));
  859. float2 panner34 = ( 1.0 * _Time.y * appendResult38 + texCoord16);
  860. float2 lerpResult42 = lerp( ( texCoord16 + appendResult15 ) , panner34 , round( _TimeSpeedON ));
  861. float2 appendResult52 = (float2(_MaskTilingU , _MaskTilingV));
  862. float2 texCoord49 = IN.ase_texcoord3.xy * appendResult52 + float2( 0,0 );
  863. float2 appendResult55 = (float2(_MaskTexOffsetU , _MaskTexOffsetV));
  864. float2 appendResult60 = (float2(_MaskSpeedU , _MaskSpeedV));
  865. float2 panner59 = ( 1.0 * _Time.y * appendResult60 + texCoord49);
  866. float2 lerpResult61 = lerp( ( texCoord49 + appendResult55 ) , panner59 , round( _MaskTimeSpeedON1 ));
  867. float3 BakedAlbedo = 0;
  868. float3 BakedEmission = 0;
  869. float3 Color = ( tex2D( _MainTex, lerpResult42 ) * _Color * IN.ase_color * _Alpha * tex2D( _Mask, lerpResult61 ).r ).rgb;
  870. float Alpha = 1;
  871. float AlphaClipThreshold = 0.5;
  872. float AlphaClipThresholdShadow = 0.5;
  873. #ifdef _ALPHATEST_ON
  874. clip( Alpha - AlphaClipThreshold );
  875. #endif
  876. #if defined(_DBUFFER)
  877. ApplyDecalToBaseColor(IN.clipPos, Color);
  878. #endif
  879. #if defined(_ALPHAPREMULTIPLY_ON)
  880. Color *= Alpha;
  881. #endif
  882. #ifdef LOD_FADE_CROSSFADE
  883. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  884. #endif
  885. #ifdef ASE_FOG
  886. Color = MixFog( Color, IN.fogFactor );
  887. #endif
  888. return half4( Color, Alpha );
  889. }
  890. ENDHLSL
  891. }
  892. Pass
  893. {
  894. Name "SceneSelectionPass"
  895. Tags { "LightMode"="SceneSelectionPass" }
  896. Cull Off
  897. HLSLPROGRAM
  898. #pragma multi_compile_instancing
  899. #define _RECEIVE_SHADOWS_OFF 1
  900. #define ASE_SRP_VERSION 999999
  901. #pragma only_renderers d3d11 glcore gles gles3
  902. #pragma vertex vert
  903. #pragma fragment frag
  904. #define ATTRIBUTES_NEED_NORMAL
  905. #define ATTRIBUTES_NEED_TANGENT
  906. #define SHADERPASS SHADERPASS_DEPTHONLY
  907. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  908. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  909. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  910. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  911. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  912. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  913. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  914. struct VertexInput
  915. {
  916. float4 vertex : POSITION;
  917. float3 ase_normal : NORMAL;
  918. UNITY_VERTEX_INPUT_INSTANCE_ID
  919. };
  920. struct VertexOutput
  921. {
  922. float4 clipPos : SV_POSITION;
  923. UNITY_VERTEX_INPUT_INSTANCE_ID
  924. UNITY_VERTEX_OUTPUT_STEREO
  925. };
  926. CBUFFER_START(UnityPerMaterial)
  927. float4 _Color;
  928. float _StencilWriteMask;
  929. float _MaskSpeedU;
  930. float _MaskTexOffsetV;
  931. float _MaskTexOffsetU;
  932. float _MaskTilingV;
  933. float _MaskTilingU;
  934. float _Alpha;
  935. float _TimeSpeedON;
  936. float _MainSpeedV;
  937. float _MainSpeedU;
  938. float _MainTexOffsetV;
  939. float _MainTexOffsetU;
  940. float _MainTilingV;
  941. float _MainTilingU;
  942. float _StencilOp;
  943. float _Stencil;
  944. float _StencilReadMask;
  945. float _StencilComp;
  946. float _ColorMask;
  947. float _MaskSpeedV;
  948. float _MaskTimeSpeedON1;
  949. #ifdef TESSELLATION_ON
  950. float _TessPhongStrength;
  951. float _TessValue;
  952. float _TessMin;
  953. float _TessMax;
  954. float _TessEdgeLength;
  955. float _TessMaxDisp;
  956. #endif
  957. CBUFFER_END
  958. int _ObjectId;
  959. int _PassValue;
  960. struct SurfaceDescription
  961. {
  962. float Alpha;
  963. float AlphaClipThreshold;
  964. };
  965. VertexOutput VertexFunction(VertexInput v )
  966. {
  967. VertexOutput o;
  968. ZERO_INITIALIZE(VertexOutput, o);
  969. UNITY_SETUP_INSTANCE_ID(v);
  970. UNITY_TRANSFER_INSTANCE_ID(v, o);
  971. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  972. #ifdef ASE_ABSOLUTE_VERTEX_POS
  973. float3 defaultVertexValue = v.vertex.xyz;
  974. #else
  975. float3 defaultVertexValue = float3(0, 0, 0);
  976. #endif
  977. float3 vertexValue = defaultVertexValue;
  978. #ifdef ASE_ABSOLUTE_VERTEX_POS
  979. v.vertex.xyz = vertexValue;
  980. #else
  981. v.vertex.xyz += vertexValue;
  982. #endif
  983. v.ase_normal = v.ase_normal;
  984. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  985. o.clipPos = TransformWorldToHClip(positionWS);
  986. return o;
  987. }
  988. #if defined(TESSELLATION_ON)
  989. struct VertexControl
  990. {
  991. float4 vertex : INTERNALTESSPOS;
  992. float3 ase_normal : NORMAL;
  993. UNITY_VERTEX_INPUT_INSTANCE_ID
  994. };
  995. struct TessellationFactors
  996. {
  997. float edge[3] : SV_TessFactor;
  998. float inside : SV_InsideTessFactor;
  999. };
  1000. VertexControl vert ( VertexInput v )
  1001. {
  1002. VertexControl o;
  1003. UNITY_SETUP_INSTANCE_ID(v);
  1004. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1005. o.vertex = v.vertex;
  1006. o.ase_normal = v.ase_normal;
  1007. return o;
  1008. }
  1009. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  1010. {
  1011. TessellationFactors o;
  1012. float4 tf = 1;
  1013. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  1014. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  1015. #if defined(ASE_FIXED_TESSELLATION)
  1016. tf = FixedTess( tessValue );
  1017. #elif defined(ASE_DISTANCE_TESSELLATION)
  1018. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  1019. #elif defined(ASE_LENGTH_TESSELLATION)
  1020. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  1021. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  1022. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  1023. #endif
  1024. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  1025. return o;
  1026. }
  1027. [domain("tri")]
  1028. [partitioning("fractional_odd")]
  1029. [outputtopology("triangle_cw")]
  1030. [patchconstantfunc("TessellationFunction")]
  1031. [outputcontrolpoints(3)]
  1032. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  1033. {
  1034. return patch[id];
  1035. }
  1036. [domain("tri")]
  1037. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  1038. {
  1039. VertexInput o = (VertexInput) 0;
  1040. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  1041. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  1042. #if defined(ASE_PHONG_TESSELLATION)
  1043. float3 pp[3];
  1044. for (int i = 0; i < 3; ++i)
  1045. 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));
  1046. float phongStrength = _TessPhongStrength;
  1047. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  1048. #endif
  1049. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  1050. return VertexFunction(o);
  1051. }
  1052. #else
  1053. VertexOutput vert ( VertexInput v )
  1054. {
  1055. return VertexFunction( v );
  1056. }
  1057. #endif
  1058. half4 frag(VertexOutput IN ) : SV_TARGET
  1059. {
  1060. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  1061. surfaceDescription.Alpha = 1;
  1062. surfaceDescription.AlphaClipThreshold = 0.5;
  1063. #if _ALPHATEST_ON
  1064. float alphaClipThreshold = 0.01f;
  1065. #if ALPHA_CLIP_THRESHOLD
  1066. alphaClipThreshold = surfaceDescription.AlphaClipThreshold;
  1067. #endif
  1068. clip(surfaceDescription.Alpha - alphaClipThreshold);
  1069. #endif
  1070. half4 outColor = half4(_ObjectId, _PassValue, 1.0, 1.0);
  1071. return outColor;
  1072. }
  1073. ENDHLSL
  1074. }
  1075. Pass
  1076. {
  1077. Name "ScenePickingPass"
  1078. Tags { "LightMode"="Picking" }
  1079. HLSLPROGRAM
  1080. #pragma multi_compile_instancing
  1081. #define _RECEIVE_SHADOWS_OFF 1
  1082. #define ASE_SRP_VERSION 999999
  1083. #pragma only_renderers d3d11 glcore gles gles3
  1084. #pragma vertex vert
  1085. #pragma fragment frag
  1086. #define ATTRIBUTES_NEED_NORMAL
  1087. #define ATTRIBUTES_NEED_TANGENT
  1088. #define SHADERPASS SHADERPASS_DEPTHONLY
  1089. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  1090. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  1091. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  1092. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  1093. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  1094. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  1095. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  1096. struct VertexInput
  1097. {
  1098. float4 vertex : POSITION;
  1099. float3 ase_normal : NORMAL;
  1100. UNITY_VERTEX_INPUT_INSTANCE_ID
  1101. };
  1102. struct VertexOutput
  1103. {
  1104. float4 clipPos : SV_POSITION;
  1105. UNITY_VERTEX_INPUT_INSTANCE_ID
  1106. UNITY_VERTEX_OUTPUT_STEREO
  1107. };
  1108. CBUFFER_START(UnityPerMaterial)
  1109. float4 _Color;
  1110. float _StencilWriteMask;
  1111. float _MaskSpeedU;
  1112. float _MaskTexOffsetV;
  1113. float _MaskTexOffsetU;
  1114. float _MaskTilingV;
  1115. float _MaskTilingU;
  1116. float _Alpha;
  1117. float _TimeSpeedON;
  1118. float _MainSpeedV;
  1119. float _MainSpeedU;
  1120. float _MainTexOffsetV;
  1121. float _MainTexOffsetU;
  1122. float _MainTilingV;
  1123. float _MainTilingU;
  1124. float _StencilOp;
  1125. float _Stencil;
  1126. float _StencilReadMask;
  1127. float _StencilComp;
  1128. float _ColorMask;
  1129. float _MaskSpeedV;
  1130. float _MaskTimeSpeedON1;
  1131. #ifdef TESSELLATION_ON
  1132. float _TessPhongStrength;
  1133. float _TessValue;
  1134. float _TessMin;
  1135. float _TessMax;
  1136. float _TessEdgeLength;
  1137. float _TessMaxDisp;
  1138. #endif
  1139. CBUFFER_END
  1140. float4 _SelectionID;
  1141. struct SurfaceDescription
  1142. {
  1143. float Alpha;
  1144. float AlphaClipThreshold;
  1145. };
  1146. VertexOutput VertexFunction(VertexInput v )
  1147. {
  1148. VertexOutput o;
  1149. ZERO_INITIALIZE(VertexOutput, o);
  1150. UNITY_SETUP_INSTANCE_ID(v);
  1151. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1152. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  1153. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1154. float3 defaultVertexValue = v.vertex.xyz;
  1155. #else
  1156. float3 defaultVertexValue = float3(0, 0, 0);
  1157. #endif
  1158. float3 vertexValue = defaultVertexValue;
  1159. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1160. v.vertex.xyz = vertexValue;
  1161. #else
  1162. v.vertex.xyz += vertexValue;
  1163. #endif
  1164. v.ase_normal = v.ase_normal;
  1165. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  1166. o.clipPos = TransformWorldToHClip(positionWS);
  1167. return o;
  1168. }
  1169. #if defined(TESSELLATION_ON)
  1170. struct VertexControl
  1171. {
  1172. float4 vertex : INTERNALTESSPOS;
  1173. float3 ase_normal : NORMAL;
  1174. UNITY_VERTEX_INPUT_INSTANCE_ID
  1175. };
  1176. struct TessellationFactors
  1177. {
  1178. float edge[3] : SV_TessFactor;
  1179. float inside : SV_InsideTessFactor;
  1180. };
  1181. VertexControl vert ( VertexInput v )
  1182. {
  1183. VertexControl o;
  1184. UNITY_SETUP_INSTANCE_ID(v);
  1185. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1186. o.vertex = v.vertex;
  1187. o.ase_normal = v.ase_normal;
  1188. return o;
  1189. }
  1190. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  1191. {
  1192. TessellationFactors o;
  1193. float4 tf = 1;
  1194. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  1195. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  1196. #if defined(ASE_FIXED_TESSELLATION)
  1197. tf = FixedTess( tessValue );
  1198. #elif defined(ASE_DISTANCE_TESSELLATION)
  1199. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  1200. #elif defined(ASE_LENGTH_TESSELLATION)
  1201. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  1202. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  1203. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  1204. #endif
  1205. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  1206. return o;
  1207. }
  1208. [domain("tri")]
  1209. [partitioning("fractional_odd")]
  1210. [outputtopology("triangle_cw")]
  1211. [patchconstantfunc("TessellationFunction")]
  1212. [outputcontrolpoints(3)]
  1213. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  1214. {
  1215. return patch[id];
  1216. }
  1217. [domain("tri")]
  1218. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  1219. {
  1220. VertexInput o = (VertexInput) 0;
  1221. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  1222. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  1223. #if defined(ASE_PHONG_TESSELLATION)
  1224. float3 pp[3];
  1225. for (int i = 0; i < 3; ++i)
  1226. 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));
  1227. float phongStrength = _TessPhongStrength;
  1228. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  1229. #endif
  1230. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  1231. return VertexFunction(o);
  1232. }
  1233. #else
  1234. VertexOutput vert ( VertexInput v )
  1235. {
  1236. return VertexFunction( v );
  1237. }
  1238. #endif
  1239. half4 frag(VertexOutput IN ) : SV_TARGET
  1240. {
  1241. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  1242. surfaceDescription.Alpha = 1;
  1243. surfaceDescription.AlphaClipThreshold = 0.5;
  1244. #if _ALPHATEST_ON
  1245. float alphaClipThreshold = 0.01f;
  1246. #if ALPHA_CLIP_THRESHOLD
  1247. alphaClipThreshold = surfaceDescription.AlphaClipThreshold;
  1248. #endif
  1249. clip(surfaceDescription.Alpha - alphaClipThreshold);
  1250. #endif
  1251. half4 outColor = 0;
  1252. outColor = _SelectionID;
  1253. return outColor;
  1254. }
  1255. ENDHLSL
  1256. }
  1257. Pass
  1258. {
  1259. Name "DepthNormals"
  1260. Tags { "LightMode"="DepthNormalsOnly" }
  1261. ZTest LEqual
  1262. ZWrite On
  1263. HLSLPROGRAM
  1264. #pragma multi_compile_instancing
  1265. #define _RECEIVE_SHADOWS_OFF 1
  1266. #define ASE_SRP_VERSION 999999
  1267. #pragma only_renderers d3d11 glcore gles gles3
  1268. #pragma multi_compile_fog
  1269. #pragma instancing_options renderinglayer
  1270. #pragma vertex vert
  1271. #pragma fragment frag
  1272. #define ATTRIBUTES_NEED_NORMAL
  1273. #define ATTRIBUTES_NEED_TANGENT
  1274. #define VARYINGS_NEED_NORMAL_WS
  1275. #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY
  1276. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  1277. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  1278. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  1279. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  1280. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  1281. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  1282. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  1283. struct VertexInput
  1284. {
  1285. float4 vertex : POSITION;
  1286. float3 ase_normal : NORMAL;
  1287. UNITY_VERTEX_INPUT_INSTANCE_ID
  1288. };
  1289. struct VertexOutput
  1290. {
  1291. float4 clipPos : SV_POSITION;
  1292. float3 normalWS : TEXCOORD0;
  1293. UNITY_VERTEX_INPUT_INSTANCE_ID
  1294. UNITY_VERTEX_OUTPUT_STEREO
  1295. };
  1296. CBUFFER_START(UnityPerMaterial)
  1297. float4 _Color;
  1298. float _StencilWriteMask;
  1299. float _MaskSpeedU;
  1300. float _MaskTexOffsetV;
  1301. float _MaskTexOffsetU;
  1302. float _MaskTilingV;
  1303. float _MaskTilingU;
  1304. float _Alpha;
  1305. float _TimeSpeedON;
  1306. float _MainSpeedV;
  1307. float _MainSpeedU;
  1308. float _MainTexOffsetV;
  1309. float _MainTexOffsetU;
  1310. float _MainTilingV;
  1311. float _MainTilingU;
  1312. float _StencilOp;
  1313. float _Stencil;
  1314. float _StencilReadMask;
  1315. float _StencilComp;
  1316. float _ColorMask;
  1317. float _MaskSpeedV;
  1318. float _MaskTimeSpeedON1;
  1319. #ifdef TESSELLATION_ON
  1320. float _TessPhongStrength;
  1321. float _TessValue;
  1322. float _TessMin;
  1323. float _TessMax;
  1324. float _TessEdgeLength;
  1325. float _TessMaxDisp;
  1326. #endif
  1327. CBUFFER_END
  1328. struct SurfaceDescription
  1329. {
  1330. float Alpha;
  1331. float AlphaClipThreshold;
  1332. };
  1333. VertexOutput VertexFunction(VertexInput v )
  1334. {
  1335. VertexOutput o;
  1336. ZERO_INITIALIZE(VertexOutput, o);
  1337. UNITY_SETUP_INSTANCE_ID(v);
  1338. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1339. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  1340. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1341. float3 defaultVertexValue = v.vertex.xyz;
  1342. #else
  1343. float3 defaultVertexValue = float3(0, 0, 0);
  1344. #endif
  1345. float3 vertexValue = defaultVertexValue;
  1346. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1347. v.vertex.xyz = vertexValue;
  1348. #else
  1349. v.vertex.xyz += vertexValue;
  1350. #endif
  1351. v.ase_normal = v.ase_normal;
  1352. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  1353. float3 normalWS = TransformObjectToWorldNormal(v.ase_normal);
  1354. o.clipPos = TransformWorldToHClip(positionWS);
  1355. o.normalWS.xyz = normalWS;
  1356. return o;
  1357. }
  1358. #if defined(TESSELLATION_ON)
  1359. struct VertexControl
  1360. {
  1361. float4 vertex : INTERNALTESSPOS;
  1362. float3 ase_normal : NORMAL;
  1363. UNITY_VERTEX_INPUT_INSTANCE_ID
  1364. };
  1365. struct TessellationFactors
  1366. {
  1367. float edge[3] : SV_TessFactor;
  1368. float inside : SV_InsideTessFactor;
  1369. };
  1370. VertexControl vert ( VertexInput v )
  1371. {
  1372. VertexControl o;
  1373. UNITY_SETUP_INSTANCE_ID(v);
  1374. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1375. o.vertex = v.vertex;
  1376. o.ase_normal = v.ase_normal;
  1377. return o;
  1378. }
  1379. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  1380. {
  1381. TessellationFactors o;
  1382. float4 tf = 1;
  1383. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  1384. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  1385. #if defined(ASE_FIXED_TESSELLATION)
  1386. tf = FixedTess( tessValue );
  1387. #elif defined(ASE_DISTANCE_TESSELLATION)
  1388. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  1389. #elif defined(ASE_LENGTH_TESSELLATION)
  1390. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  1391. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  1392. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  1393. #endif
  1394. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  1395. return o;
  1396. }
  1397. [domain("tri")]
  1398. [partitioning("fractional_odd")]
  1399. [outputtopology("triangle_cw")]
  1400. [patchconstantfunc("TessellationFunction")]
  1401. [outputcontrolpoints(3)]
  1402. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  1403. {
  1404. return patch[id];
  1405. }
  1406. [domain("tri")]
  1407. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  1408. {
  1409. VertexInput o = (VertexInput) 0;
  1410. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  1411. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  1412. #if defined(ASE_PHONG_TESSELLATION)
  1413. float3 pp[3];
  1414. for (int i = 0; i < 3; ++i)
  1415. 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));
  1416. float phongStrength = _TessPhongStrength;
  1417. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  1418. #endif
  1419. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  1420. return VertexFunction(o);
  1421. }
  1422. #else
  1423. VertexOutput vert ( VertexInput v )
  1424. {
  1425. return VertexFunction( v );
  1426. }
  1427. #endif
  1428. half4 frag(VertexOutput IN ) : SV_TARGET
  1429. {
  1430. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  1431. surfaceDescription.Alpha = 1;
  1432. surfaceDescription.AlphaClipThreshold = 0.5;
  1433. #if _ALPHATEST_ON
  1434. clip(surfaceDescription.Alpha - surfaceDescription.AlphaClipThreshold);
  1435. #endif
  1436. #ifdef LOD_FADE_CROSSFADE
  1437. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  1438. #endif
  1439. float3 normalWS = IN.normalWS;
  1440. return half4(NormalizeNormalPerPixel(normalWS), 0.0);
  1441. }
  1442. ENDHLSL
  1443. }
  1444. Pass
  1445. {
  1446. Name "DepthNormalsOnly"
  1447. Tags { "LightMode"="DepthNormalsOnly" }
  1448. ZTest LEqual
  1449. ZWrite On
  1450. HLSLPROGRAM
  1451. #pragma multi_compile_instancing
  1452. #define _RECEIVE_SHADOWS_OFF 1
  1453. #define ASE_SRP_VERSION 999999
  1454. #pragma exclude_renderers glcore gles gles3
  1455. #pragma vertex vert
  1456. #pragma fragment frag
  1457. #define ATTRIBUTES_NEED_NORMAL
  1458. #define ATTRIBUTES_NEED_TANGENT
  1459. #define ATTRIBUTES_NEED_TEXCOORD1
  1460. #define VARYINGS_NEED_NORMAL_WS
  1461. #define VARYINGS_NEED_TANGENT_WS
  1462. #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY
  1463. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  1464. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  1465. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  1466. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  1467. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  1468. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  1469. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  1470. struct VertexInput
  1471. {
  1472. float4 vertex : POSITION;
  1473. float3 ase_normal : NORMAL;
  1474. UNITY_VERTEX_INPUT_INSTANCE_ID
  1475. };
  1476. struct VertexOutput
  1477. {
  1478. float4 clipPos : SV_POSITION;
  1479. float3 normalWS : TEXCOORD0;
  1480. UNITY_VERTEX_INPUT_INSTANCE_ID
  1481. UNITY_VERTEX_OUTPUT_STEREO
  1482. };
  1483. CBUFFER_START(UnityPerMaterial)
  1484. float4 _Color;
  1485. float _StencilWriteMask;
  1486. float _MaskSpeedU;
  1487. float _MaskTexOffsetV;
  1488. float _MaskTexOffsetU;
  1489. float _MaskTilingV;
  1490. float _MaskTilingU;
  1491. float _Alpha;
  1492. float _TimeSpeedON;
  1493. float _MainSpeedV;
  1494. float _MainSpeedU;
  1495. float _MainTexOffsetV;
  1496. float _MainTexOffsetU;
  1497. float _MainTilingV;
  1498. float _MainTilingU;
  1499. float _StencilOp;
  1500. float _Stencil;
  1501. float _StencilReadMask;
  1502. float _StencilComp;
  1503. float _ColorMask;
  1504. float _MaskSpeedV;
  1505. float _MaskTimeSpeedON1;
  1506. #ifdef TESSELLATION_ON
  1507. float _TessPhongStrength;
  1508. float _TessValue;
  1509. float _TessMin;
  1510. float _TessMax;
  1511. float _TessEdgeLength;
  1512. float _TessMaxDisp;
  1513. #endif
  1514. CBUFFER_END
  1515. struct SurfaceDescription
  1516. {
  1517. float Alpha;
  1518. float AlphaClipThreshold;
  1519. };
  1520. VertexOutput VertexFunction(VertexInput v )
  1521. {
  1522. VertexOutput o;
  1523. ZERO_INITIALIZE(VertexOutput, o);
  1524. UNITY_SETUP_INSTANCE_ID(v);
  1525. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1526. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  1527. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1528. float3 defaultVertexValue = v.vertex.xyz;
  1529. #else
  1530. float3 defaultVertexValue = float3(0, 0, 0);
  1531. #endif
  1532. float3 vertexValue = defaultVertexValue;
  1533. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1534. v.vertex.xyz = vertexValue;
  1535. #else
  1536. v.vertex.xyz += vertexValue;
  1537. #endif
  1538. v.ase_normal = v.ase_normal;
  1539. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  1540. float3 normalWS = TransformObjectToWorldNormal(v.ase_normal);
  1541. o.clipPos = TransformWorldToHClip(positionWS);
  1542. o.normalWS.xyz = normalWS;
  1543. return o;
  1544. }
  1545. #if defined(TESSELLATION_ON)
  1546. struct VertexControl
  1547. {
  1548. float4 vertex : INTERNALTESSPOS;
  1549. float3 ase_normal : NORMAL;
  1550. UNITY_VERTEX_INPUT_INSTANCE_ID
  1551. };
  1552. struct TessellationFactors
  1553. {
  1554. float edge[3] : SV_TessFactor;
  1555. float inside : SV_InsideTessFactor;
  1556. };
  1557. VertexControl vert ( VertexInput v )
  1558. {
  1559. VertexControl o;
  1560. UNITY_SETUP_INSTANCE_ID(v);
  1561. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1562. o.vertex = v.vertex;
  1563. o.ase_normal = v.ase_normal;
  1564. return o;
  1565. }
  1566. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  1567. {
  1568. TessellationFactors o;
  1569. float4 tf = 1;
  1570. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  1571. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  1572. #if defined(ASE_FIXED_TESSELLATION)
  1573. tf = FixedTess( tessValue );
  1574. #elif defined(ASE_DISTANCE_TESSELLATION)
  1575. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  1576. #elif defined(ASE_LENGTH_TESSELLATION)
  1577. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  1578. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  1579. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  1580. #endif
  1581. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  1582. return o;
  1583. }
  1584. [domain("tri")]
  1585. [partitioning("fractional_odd")]
  1586. [outputtopology("triangle_cw")]
  1587. [patchconstantfunc("TessellationFunction")]
  1588. [outputcontrolpoints(3)]
  1589. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  1590. {
  1591. return patch[id];
  1592. }
  1593. [domain("tri")]
  1594. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  1595. {
  1596. VertexInput o = (VertexInput) 0;
  1597. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  1598. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  1599. #if defined(ASE_PHONG_TESSELLATION)
  1600. float3 pp[3];
  1601. for (int i = 0; i < 3; ++i)
  1602. 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));
  1603. float phongStrength = _TessPhongStrength;
  1604. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  1605. #endif
  1606. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  1607. return VertexFunction(o);
  1608. }
  1609. #else
  1610. VertexOutput vert ( VertexInput v )
  1611. {
  1612. return VertexFunction( v );
  1613. }
  1614. #endif
  1615. half4 frag(VertexOutput IN ) : SV_TARGET
  1616. {
  1617. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  1618. surfaceDescription.Alpha = 1;
  1619. surfaceDescription.AlphaClipThreshold = 0.5;
  1620. #if _ALPHATEST_ON
  1621. clip(surfaceDescription.Alpha - surfaceDescription.AlphaClipThreshold);
  1622. #endif
  1623. #ifdef LOD_FADE_CROSSFADE
  1624. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  1625. #endif
  1626. float3 normalWS = IN.normalWS;
  1627. return half4(NormalizeNormalPerPixel(normalWS), 0.0);
  1628. }
  1629. ENDHLSL
  1630. }
  1631. }
  1632. CustomEditor "UnityEditor.ShaderGraphUnlitGUI"
  1633. Fallback "Hidden/InternalErrorShader"
  1634. }
  1635. /*ASEBEGIN
  1636. Version=18935
  1637. 0;34;1696;873;3895.755;1065.333;2.220688;True;True
  1638. Node;AmplifyShaderEditor.CommentaryNode;65;-1635.351,-633.9762;Inherit;False;1060.958;936.746;Comment;15;35;34;38;42;43;44;13;25;36;27;14;26;15;20;16;;1,1,1,1;0;0
  1639. Node;AmplifyShaderEditor.CommentaryNode;64;-1837.418,331.5808;Inherit;False;1103.065;976.1177;Comment;15;60;56;61;59;63;49;62;58;57;54;50;55;52;51;53;;1,1,1,1;0;0
  1640. Node;AmplifyShaderEditor.RangedFloatNode;58;-1611.712,889.6455;Inherit;False;Property;_MaskSpeedU;MaskSpeedU;16;0;Create;False;0;0;0;False;0;False;0.5;0;0;0;0;1;FLOAT;0
  1641. Node;AmplifyShaderEditor.TextureCoordinatesNode;16;-1195.044,-499.8925;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
  1642. Node;AmplifyShaderEditor.VertexColorNode;47;-536.3924,154.6479;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  1643. Node;AmplifyShaderEditor.SimpleAddOpNode;20;-888.8318,-413.4379;Inherit;False;2;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT2;0
  1644. Node;AmplifyShaderEditor.SimpleAddOpNode;56;-1069.187,587.3658;Inherit;False;2;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT2;0
  1645. Node;AmplifyShaderEditor.TextureCoordinatesNode;49;-1397.587,449.3087;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
  1646. Node;AmplifyShaderEditor.DynamicAppendNode;60;-1442.757,946.281;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0
  1647. Node;AmplifyShaderEditor.LerpOp;61;-916.3533,729.3163;Inherit;False;3;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;1;FLOAT2;0
  1648. Node;AmplifyShaderEditor.RangedFloatNode;68;-2506.723,-490.3691;Inherit;False;Property;_StencilOp;_StencilOp;23;0;Create;True;0;0;0;True;0;False;0;0;0;0;0;1;FLOAT;0
  1649. Node;AmplifyShaderEditor.PannerNode;59;-1205.728,946.2755;Inherit;False;3;0;FLOAT2;0,0;False;2;FLOAT2;0,0;False;1;FLOAT;1;False;1;FLOAT2;0
  1650. Node;AmplifyShaderEditor.SamplerNode;11;-642.2665,510.3848;Inherit;True;Property;_Mask;Mask;10;0;Create;True;0;0;0;False;0;False;-1;4002bf77b3865c94aa1d5c0442aec986;f77f8f8d7482c1b44b0dad32ff004bec;True;0;False;white;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
  1651. Node;AmplifyShaderEditor.SamplerNode;10;-543.6624,-327.0199;Inherit;True;Property;_MainTex;MainTex;2;0;Create;True;0;0;0;False;0;False;-1;38a4e7dc480d0ec42ad7228c1b113799;764fbc44dabe4ae4cabd266b92f50c0d;True;0;False;white;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
  1652. Node;AmplifyShaderEditor.RangedFloatNode;48;-666.1241,340.3087;Inherit;False;Property;_Alpha;Alpha;0;0;Create;True;0;0;0;False;0;False;1;1;0;1;0;1;FLOAT;0
  1653. Node;AmplifyShaderEditor.ColorNode;45;-513.5385,-27.73296;Inherit;False;Property;_Color;Color;1;1;[HDR];Create;True;0;0;0;False;0;False;1,1,1,1;1,1,1,1;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  1654. Node;AmplifyShaderEditor.DynamicAppendNode;15;-1207.946,-261.2753;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0
  1655. Node;AmplifyShaderEditor.RangedFloatNode;26;-1585.351,-473.4637;Inherit;False;Property;_MainTilingV;MainTilingV;6;0;Create;False;0;0;0;False;0;False;1;1;0;0;0;1;FLOAT;0
  1656. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;12;-224.9667,-10.91514;Inherit;True;5;5;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;COLOR;0,0,0,0;False;3;FLOAT;0;False;4;FLOAT;0;False;1;COLOR;0
  1657. Node;AmplifyShaderEditor.RoundOpNode;63;-1128.945,1193.145;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
  1658. Node;AmplifyShaderEditor.RangedFloatNode;62;-1440.643,1192.298;Inherit;False;Property;_MaskTimeSpeedON1;MaskTimeSpeedON;15;0;Create;False;0;0;0;False;0;False;0;0;0;1;0;1;FLOAT;0
  1659. Node;AmplifyShaderEditor.RangedFloatNode;57;-1595.972,1011.092;Inherit;False;Property;_MaskSpeedV;MaskSpeedV;17;0;Create;False;0;0;0;False;0;False;0.5;0;0;0;0;1;FLOAT;0
  1660. Node;AmplifyShaderEditor.RangedFloatNode;14;-1422.358,-200.3275;Inherit;False;Property;_MainTexOffsetV;MainTexOffsetV;4;0;Create;False;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0
  1661. Node;AmplifyShaderEditor.DynamicAppendNode;52;-1599.306,450.5025;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0
  1662. Node;AmplifyShaderEditor.DynamicAppendNode;27;-1382.952,-531.8243;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0
  1663. Node;AmplifyShaderEditor.RangedFloatNode;53;-1699.089,641.0561;Inherit;False;Property;_MaskTexOffsetU;MaskTexOffsetU;13;0;Create;False;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0
  1664. Node;AmplifyShaderEditor.DynamicAppendNode;38;-1177.014,-33.57726;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0
  1665. Node;AmplifyShaderEditor.RangedFloatNode;69;-2568.723,-351.3691;Inherit;False;Property;_StencilWriteMask;_StencilWriteMask;21;0;Create;True;0;0;0;True;0;False;0;255;0;0;0;1;FLOAT;0
  1666. Node;AmplifyShaderEditor.RangedFloatNode;13;-1453.475,-323.946;Inherit;False;Property;_MainTexOffsetU;MainTexOffsetU;3;0;Create;False;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0
  1667. Node;AmplifyShaderEditor.DynamicAppendNode;55;-1489.614,681.1944;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0
  1668. Node;AmplifyShaderEditor.RangedFloatNode;54;-1695.322,738.268;Inherit;False;Property;_MaskTexOffsetV;MaskTexOffsetV;14;0;Create;False;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0
  1669. Node;AmplifyShaderEditor.RangedFloatNode;51;-1787.418,482.1577;Inherit;False;Property;_MaskTilingV;MaskTilingV;12;0;Create;False;0;0;0;False;0;False;1;1;0;0;0;1;FLOAT;0
  1670. Node;AmplifyShaderEditor.PannerNode;34;-993.2401,-0.05133057;Inherit;False;3;0;FLOAT2;0,0;False;2;FLOAT2;0,0;False;1;FLOAT;1;False;1;FLOAT2;0
  1671. Node;AmplifyShaderEditor.RangedFloatNode;43;-1261.261,187.3698;Inherit;False;Property;_TimeSpeedON;TimeSpeedON;7;0;Create;False;0;0;0;False;0;False;0;1;0;1;0;1;FLOAT;0
  1672. Node;AmplifyShaderEditor.RangedFloatNode;36;-1330.229,33.23352;Inherit;False;Property;_MainSpeedV;MainSpeedV;9;0;Create;False;0;0;0;False;0;False;0.5;0;0;0;0;1;FLOAT;0
  1673. Node;AmplifyShaderEditor.RoundOpNode;44;-929.8397,186.2443;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
  1674. Node;AmplifyShaderEditor.LerpOp;42;-756.3934,-123.6965;Inherit;False;3;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;1;FLOAT2;0
  1675. Node;AmplifyShaderEditor.RangedFloatNode;50;-1786.055,381.5808;Inherit;False;Property;_MaskTilingU;MaskTilingU;11;0;Create;False;0;0;0;False;0;False;1;1;0;0;0;1;FLOAT;0
  1676. Node;AmplifyShaderEditor.Vector4Node;73;-3131.723,-337.3691;Inherit;False;Property;_ClipRect;_ClipRect;24;0;Create;True;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  1677. Node;AmplifyShaderEditor.RangedFloatNode;71;-2704.723,-213.3691;Inherit;False;Property;_ColorMask;_ColorMask;19;0;Create;True;0;0;0;True;0;False;0;15;0;0;0;1;FLOAT;0
  1678. Node;AmplifyShaderEditor.RangedFloatNode;66;-3068.354,-675.1389;Inherit;False;Property;_StencilComp;_StencilComp;18;0;Create;True;0;0;0;True;0;False;0;8;0;0;0;1;FLOAT;0
  1679. Node;AmplifyShaderEditor.RangedFloatNode;70;-2859.723,-298.3691;Inherit;False;Property;_StencilReadMask;_StencilReadMask;20;0;Create;True;0;0;0;True;0;False;0;255;0;0;0;1;FLOAT;0
  1680. Node;AmplifyShaderEditor.RangedFloatNode;67;-3042.723,-581.3691;Inherit;False;Property;_Stencil;_Stencil;22;0;Create;True;0;0;0;True;0;False;0;0;0;0;0;1;FLOAT;0
  1681. Node;AmplifyShaderEditor.RangedFloatNode;35;-1347.13,-88.21275;Inherit;False;Property;_MainSpeedU;MainSpeedU;8;0;Create;False;0;0;0;False;0;False;0.5;2.02;0;0;0;1;FLOAT;0
  1682. Node;AmplifyShaderEditor.RangedFloatNode;25;-1577.681,-583.9762;Inherit;False;Property;_MainTilingU;MainTilingU;5;0;Create;False;0;0;0;False;0;False;1;1;0;0;0;1;FLOAT;0
  1683. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;5;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;Universal2D;0;5;Universal2D;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;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;1;False;-1;1;1;False;-1;10;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;True;255;True;67;255;True;70;255;True;69;7;True;66;1;True;68;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;False;True;2;False;-1;True;3;False;-1;True;True;0;False;-1;0;False;-1;True;1;LightMode=Universal2D;False;False;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0
  1684. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;1;258.7,-127.4;Float;False;True;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;3;LT/UIAddtive;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;2;False;-1;False;False;False;False;False;False;False;False;True;True;True;255;True;67;255;True;70;255;True;69;7;True;66;1;True;68;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=Transparent=RenderType;Queue=Transparent=Queue=0;True;2;True;8;d3d9;d3d11;glcore;gles;gles3;metal;vulkan;nomrt;0;False;True;1;1;False;-1;1;False;-1;1;1;False;-1;10;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;True;True;True;255;True;67;255;True;70;255;True;69;7;True;66;1;True;68;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;False;True;2;False;-1;True;3;False;-1;True;True;0;False;-1;0;False;-1;True;1;LightMode=UniversalForwardOnly;False;False;0;Hidden/InternalErrorShader;0;0;Standard;22;Surface;1;637926854876070190; Blend;2;637926854893131935;Two Sided;0;638253529035276121;Cast Shadows;0;637926854865471325; Use Shadow Threshold;0;0;Receive Shadows;0;637926854855894031;GPU Instancing;1;0;LOD CrossFade;0;0;Built-in Fog;0;0;DOTS Instancing;0;0;Meta Pass;0;0;Extra Pre Pass;0;0;Tessellation;0;0; Phong;0;0; Strength;0.5,False,-1;0; Type;0;0; Tess;16,False,-1;0; Min;10,False,-1;0; Max;25,False,-1;0; Edge Length;16,False,-1;0; Max Displacement;25,False,-1;0;Vertex Position,InvertActionOnDeselection;1;0;0;10;False;True;False;True;False;True;True;True;True;True;False;;False;0
  1685. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;2;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;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;2;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
  1686. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;3;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;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;2;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
  1687. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;4;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;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;2;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
  1688. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;8;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthNormals;0;8;DepthNormals;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;2;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;False;False;False;False;False;False;False;False;False;False;False;False;True;1;False;-1;True;3;False;-1;False;True;1;LightMode=DepthNormalsOnly;False;True;4;d3d11;glcore;gles;gles3;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0
  1689. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;7;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ScenePickingPass;0;7;ScenePickingPass;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;2;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;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;LightMode=Picking;False;True;4;d3d11;glcore;gles;gles3;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0
  1690. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;0;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;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;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;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
  1691. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;9;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthNormalsOnly;0;9;DepthNormalsOnly;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;2;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;False;False;False;False;False;False;False;False;False;False;False;False;True;1;False;-1;True;3;False;-1;False;True;1;LightMode=DepthNormalsOnly;False;True;15;d3d9;d3d11_9x;d3d11;metal;vulkan;xbox360;xboxone;xboxseries;ps4;playstation;psp2;n3ds;wiiu;switch;nomrt;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0
  1692. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;6;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;SceneSelectionPass;0;6;SceneSelectionPass;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;2;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=SceneSelectionPass;False;True;4;d3d11;glcore;gles;gles3;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0
  1693. WireConnection;16;0;27;0
  1694. WireConnection;20;0;16;0
  1695. WireConnection;20;1;15;0
  1696. WireConnection;56;0;49;0
  1697. WireConnection;56;1;55;0
  1698. WireConnection;49;0;52;0
  1699. WireConnection;60;0;58;0
  1700. WireConnection;60;1;57;0
  1701. WireConnection;61;0;56;0
  1702. WireConnection;61;1;59;0
  1703. WireConnection;61;2;63;0
  1704. WireConnection;59;0;49;0
  1705. WireConnection;59;2;60;0
  1706. WireConnection;11;1;61;0
  1707. WireConnection;10;1;42;0
  1708. WireConnection;15;0;13;0
  1709. WireConnection;15;1;14;0
  1710. WireConnection;12;0;10;0
  1711. WireConnection;12;1;45;0
  1712. WireConnection;12;2;47;0
  1713. WireConnection;12;3;48;0
  1714. WireConnection;12;4;11;1
  1715. WireConnection;63;0;62;0
  1716. WireConnection;52;0;50;0
  1717. WireConnection;52;1;51;0
  1718. WireConnection;27;0;25;0
  1719. WireConnection;27;1;26;0
  1720. WireConnection;38;0;35;0
  1721. WireConnection;38;1;36;0
  1722. WireConnection;55;0;53;0
  1723. WireConnection;55;1;54;0
  1724. WireConnection;34;0;16;0
  1725. WireConnection;34;2;38;0
  1726. WireConnection;44;0;43;0
  1727. WireConnection;42;0;20;0
  1728. WireConnection;42;1;34;0
  1729. WireConnection;42;2;44;0
  1730. WireConnection;1;2;12;0
  1731. ASEEND*/
  1732. //CHKSM=008CCD019666AD9CE425A38162D2B84D2047E223