AlphaUVMove.shader 94 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211
  1. // Made with Amplify Shader Editor
  2. // Available at the Unity Asset Store - http://u3d.as/y3X
  3. Shader "LT/AlphaUVMoveRamp"
  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]_ColorPower("ColorPower", Range( 0 , 80)) = 1
  10. [HDR]_Color("Color", Color) = (1,1,1,1)
  11. _MainTex("MainTex", 2D) = "white" {}
  12. _MainTexChannel("通道选择", Vector) = (1,0,0,0)
  13. _Uspeed("Uspeed", Float) = 0.5
  14. _Vspeed("Vspeed", Float) = 0
  15. _ca("_ca", Float) = 1
  16. _Ramp("Ramp", 2D) = "white" {}
  17. _RampPower("RampPower", Range( 0.2 , 8)) = 0.2
  18. _RampDirection("RampDirection ", Range( 0 , 1)) = 0
  19. _Mask("Mask", 2D) = "white" {}
  20. _MaskTexChannel("mask通道选择", Vector) = (1,0,0,0)
  21. _MaskTexRotationSwitch("MaskUV旋转开关", Range( 0 , 1)) = 0
  22. _MaskTexRotation("mask贴图旋转", Range( 0 , 1)) = 0
  23. [ASEEnd]_CustomDataSwitch("CustomDataSwitch", Range( 0 , 1)) = 1
  24. [HideInInspector]_QueueOffset("_QueueOffset", Float) = 0
  25. [HideInInspector]_QueueControl("_QueueControl", Float) = -1
  26. [HideInInspector][NoScaleOffset]unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {}
  27. [HideInInspector][NoScaleOffset]unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {}
  28. [HideInInspector][NoScaleOffset]unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {}
  29. //_TessPhongStrength( "Tess Phong Strength", Range( 0, 1 ) ) = 0.5
  30. //_TessValue( "Tess Max Tessellation", Range( 1, 32 ) ) = 16
  31. //_TessMin( "Tess Min Distance", Float ) = 10
  32. //_TessMax( "Tess Max Distance", Float ) = 25
  33. //_TessEdgeLength ( "Tess Edge length", Range( 2, 50 ) ) = 16
  34. //_TessMaxDisp( "Tess Max Displacement", Float ) = 25
  35. }
  36. SubShader
  37. {
  38. LOD 0
  39. Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Transparent" "Queue"="Transparent" }
  40. Cull Off
  41. AlphaToMask Off
  42. HLSLINCLUDE
  43. #pragma target 3.0
  44. #pragma prefer_hlslcc gles
  45. #pragma only_renderers d3d9 d3d11 glcore gles gles3 metal vulkan nomrt
  46. #ifndef ASE_TESS_FUNCS
  47. #define ASE_TESS_FUNCS
  48. float4 FixedTess( float tessValue )
  49. {
  50. return tessValue;
  51. }
  52. float CalcDistanceTessFactor (float4 vertex, float minDist, float maxDist, float tess, float4x4 o2w, float3 cameraPos )
  53. {
  54. float3 wpos = mul(o2w,vertex).xyz;
  55. float dist = distance (wpos, cameraPos);
  56. float f = clamp(1.0 - (dist - minDist) / (maxDist - minDist), 0.01, 1.0) * tess;
  57. return f;
  58. }
  59. float4 CalcTriEdgeTessFactors (float3 triVertexFactors)
  60. {
  61. float4 tess;
  62. tess.x = 0.5 * (triVertexFactors.y + triVertexFactors.z);
  63. tess.y = 0.5 * (triVertexFactors.x + triVertexFactors.z);
  64. tess.z = 0.5 * (triVertexFactors.x + triVertexFactors.y);
  65. tess.w = (triVertexFactors.x + triVertexFactors.y + triVertexFactors.z) / 3.0f;
  66. return tess;
  67. }
  68. float CalcEdgeTessFactor (float3 wpos0, float3 wpos1, float edgeLen, float3 cameraPos, float4 scParams )
  69. {
  70. float dist = distance (0.5 * (wpos0+wpos1), cameraPos);
  71. float len = distance(wpos0, wpos1);
  72. float f = max(len * scParams.y / (edgeLen * dist), 1.0);
  73. return f;
  74. }
  75. float DistanceFromPlane (float3 pos, float4 plane)
  76. {
  77. float d = dot (float4(pos,1.0f), plane);
  78. return d;
  79. }
  80. bool WorldViewFrustumCull (float3 wpos0, float3 wpos1, float3 wpos2, float cullEps, float4 planes[6] )
  81. {
  82. float4 planeTest;
  83. planeTest.x = (( DistanceFromPlane(wpos0, planes[0]) > -cullEps) ? 1.0f : 0.0f ) +
  84. (( DistanceFromPlane(wpos1, planes[0]) > -cullEps) ? 1.0f : 0.0f ) +
  85. (( DistanceFromPlane(wpos2, planes[0]) > -cullEps) ? 1.0f : 0.0f );
  86. planeTest.y = (( DistanceFromPlane(wpos0, planes[1]) > -cullEps) ? 1.0f : 0.0f ) +
  87. (( DistanceFromPlane(wpos1, planes[1]) > -cullEps) ? 1.0f : 0.0f ) +
  88. (( DistanceFromPlane(wpos2, planes[1]) > -cullEps) ? 1.0f : 0.0f );
  89. planeTest.z = (( DistanceFromPlane(wpos0, planes[2]) > -cullEps) ? 1.0f : 0.0f ) +
  90. (( DistanceFromPlane(wpos1, planes[2]) > -cullEps) ? 1.0f : 0.0f ) +
  91. (( DistanceFromPlane(wpos2, planes[2]) > -cullEps) ? 1.0f : 0.0f );
  92. planeTest.w = (( DistanceFromPlane(wpos0, planes[3]) > -cullEps) ? 1.0f : 0.0f ) +
  93. (( DistanceFromPlane(wpos1, planes[3]) > -cullEps) ? 1.0f : 0.0f ) +
  94. (( DistanceFromPlane(wpos2, planes[3]) > -cullEps) ? 1.0f : 0.0f );
  95. return !all (planeTest);
  96. }
  97. float4 DistanceBasedTess( float4 v0, float4 v1, float4 v2, float tess, float minDist, float maxDist, float4x4 o2w, float3 cameraPos )
  98. {
  99. float3 f;
  100. f.x = CalcDistanceTessFactor (v0,minDist,maxDist,tess,o2w,cameraPos);
  101. f.y = CalcDistanceTessFactor (v1,minDist,maxDist,tess,o2w,cameraPos);
  102. f.z = CalcDistanceTessFactor (v2,minDist,maxDist,tess,o2w,cameraPos);
  103. return CalcTriEdgeTessFactors (f);
  104. }
  105. float4 EdgeLengthBasedTess( float4 v0, float4 v1, float4 v2, float edgeLength, float4x4 o2w, float3 cameraPos, float4 scParams )
  106. {
  107. float3 pos0 = mul(o2w,v0).xyz;
  108. float3 pos1 = mul(o2w,v1).xyz;
  109. float3 pos2 = mul(o2w,v2).xyz;
  110. float4 tess;
  111. tess.x = CalcEdgeTessFactor (pos1, pos2, edgeLength, cameraPos, scParams);
  112. tess.y = CalcEdgeTessFactor (pos2, pos0, edgeLength, cameraPos, scParams);
  113. tess.z = CalcEdgeTessFactor (pos0, pos1, edgeLength, cameraPos, scParams);
  114. tess.w = (tess.x + tess.y + tess.z) / 3.0f;
  115. return tess;
  116. }
  117. float4 EdgeLengthBasedTessCull( float4 v0, float4 v1, float4 v2, float edgeLength, float maxDisplacement, float4x4 o2w, float3 cameraPos, float4 scParams, float4 planes[6] )
  118. {
  119. float3 pos0 = mul(o2w,v0).xyz;
  120. float3 pos1 = mul(o2w,v1).xyz;
  121. float3 pos2 = mul(o2w,v2).xyz;
  122. float4 tess;
  123. if (WorldViewFrustumCull(pos0, pos1, pos2, maxDisplacement, planes))
  124. {
  125. tess = 0.0f;
  126. }
  127. else
  128. {
  129. tess.x = CalcEdgeTessFactor (pos1, pos2, edgeLength, cameraPos, scParams);
  130. tess.y = CalcEdgeTessFactor (pos2, pos0, edgeLength, cameraPos, scParams);
  131. tess.z = CalcEdgeTessFactor (pos0, pos1, edgeLength, cameraPos, scParams);
  132. tess.w = (tess.x + tess.y + tess.z) / 3.0f;
  133. }
  134. return tess;
  135. }
  136. #endif //ASE_TESS_FUNCS
  137. ENDHLSL
  138. Pass
  139. {
  140. Name "Forward"
  141. Tags { "LightMode"="UniversalForwardOnly" }
  142. Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha
  143. ZWrite Off
  144. ZTest LEqual
  145. Offset 0 , 0
  146. ColorMask RGBA
  147. HLSLPROGRAM
  148. #pragma multi_compile_instancing
  149. #define _RECEIVE_SHADOWS_OFF 1
  150. #define ASE_SRP_VERSION 999999
  151. #pragma multi_compile _ LIGHTMAP_ON
  152. #pragma multi_compile _ DIRLIGHTMAP_COMBINED
  153. #pragma shader_feature _ _SAMPLE_GI
  154. #pragma multi_compile _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3
  155. #pragma multi_compile _ DEBUG_DISPLAY
  156. #define SHADERPASS SHADERPASS_UNLIT
  157. #pragma vertex vert
  158. #pragma fragment frag
  159. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  160. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  161. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  162. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  163. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  164. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  165. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"
  166. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  167. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging3D.hlsl"
  168. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
  169. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceData.hlsl"
  170. #define ASE_NEEDS_FRAG_COLOR
  171. struct VertexInput
  172. {
  173. float4 vertex : POSITION;
  174. float3 ase_normal : NORMAL;
  175. float4 ase_color : COLOR;
  176. float4 ase_texcoord : TEXCOORD0;
  177. float4 ase_texcoord1 : TEXCOORD1;
  178. UNITY_VERTEX_INPUT_INSTANCE_ID
  179. };
  180. struct VertexOutput
  181. {
  182. float4 clipPos : SV_POSITION;
  183. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  184. float3 worldPos : TEXCOORD0;
  185. #endif
  186. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  187. float4 shadowCoord : TEXCOORD1;
  188. #endif
  189. #ifdef ASE_FOG
  190. float fogFactor : TEXCOORD2;
  191. #endif
  192. float4 ase_color : COLOR;
  193. float4 ase_texcoord3 : TEXCOORD3;
  194. float4 ase_texcoord4 : TEXCOORD4;
  195. UNITY_VERTEX_INPUT_INSTANCE_ID
  196. UNITY_VERTEX_OUTPUT_STEREO
  197. };
  198. CBUFFER_START(UnityPerMaterial)
  199. float4 _MainTex_ST;
  200. float4 _MainTexChannel;
  201. float4 _Mask_ST;
  202. float4 _MaskTexChannel;
  203. float4 _Color;
  204. float _ColorPower;
  205. float _Uspeed;
  206. float _Vspeed;
  207. float _CustomDataSwitch;
  208. float _MaskTexRotation;
  209. float _MaskTexRotationSwitch;
  210. float _RampDirection;
  211. float _RampPower;
  212. float _ca;
  213. #ifdef TESSELLATION_ON
  214. float _TessPhongStrength;
  215. float _TessValue;
  216. float _TessMin;
  217. float _TessMax;
  218. float _TessEdgeLength;
  219. float _TessMaxDisp;
  220. #endif
  221. CBUFFER_END
  222. sampler2D _Ramp;
  223. sampler2D _MainTex;
  224. sampler2D _Mask;
  225. VertexOutput VertexFunction ( VertexInput v )
  226. {
  227. VertexOutput o = (VertexOutput)0;
  228. UNITY_SETUP_INSTANCE_ID(v);
  229. UNITY_TRANSFER_INSTANCE_ID(v, o);
  230. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  231. o.ase_color = v.ase_color;
  232. o.ase_texcoord3.xy = v.ase_texcoord.xy;
  233. o.ase_texcoord4 = v.ase_texcoord1;
  234. //setting value to unused interpolator channels and avoid initialization warnings
  235. o.ase_texcoord3.zw = 0;
  236. #ifdef ASE_ABSOLUTE_VERTEX_POS
  237. float3 defaultVertexValue = v.vertex.xyz;
  238. #else
  239. float3 defaultVertexValue = float3(0, 0, 0);
  240. #endif
  241. float3 vertexValue = defaultVertexValue;
  242. #ifdef ASE_ABSOLUTE_VERTEX_POS
  243. v.vertex.xyz = vertexValue;
  244. #else
  245. v.vertex.xyz += vertexValue;
  246. #endif
  247. v.ase_normal = v.ase_normal;
  248. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  249. float4 positionCS = TransformWorldToHClip( positionWS );
  250. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  251. o.worldPos = positionWS;
  252. #endif
  253. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  254. VertexPositionInputs vertexInput = (VertexPositionInputs)0;
  255. vertexInput.positionWS = positionWS;
  256. vertexInput.positionCS = positionCS;
  257. o.shadowCoord = GetShadowCoord( vertexInput );
  258. #endif
  259. #ifdef ASE_FOG
  260. o.fogFactor = ComputeFogFactor( positionCS.z );
  261. #endif
  262. o.clipPos = positionCS;
  263. return o;
  264. }
  265. #if defined(TESSELLATION_ON)
  266. struct VertexControl
  267. {
  268. float4 vertex : INTERNALTESSPOS;
  269. float3 ase_normal : NORMAL;
  270. float4 ase_color : COLOR;
  271. float4 ase_texcoord : TEXCOORD0;
  272. float4 ase_texcoord1 : TEXCOORD1;
  273. UNITY_VERTEX_INPUT_INSTANCE_ID
  274. };
  275. struct TessellationFactors
  276. {
  277. float edge[3] : SV_TessFactor;
  278. float inside : SV_InsideTessFactor;
  279. };
  280. VertexControl vert ( VertexInput v )
  281. {
  282. VertexControl o;
  283. UNITY_SETUP_INSTANCE_ID(v);
  284. UNITY_TRANSFER_INSTANCE_ID(v, o);
  285. o.vertex = v.vertex;
  286. o.ase_normal = v.ase_normal;
  287. o.ase_color = v.ase_color;
  288. o.ase_texcoord = v.ase_texcoord;
  289. o.ase_texcoord1 = v.ase_texcoord1;
  290. return o;
  291. }
  292. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  293. {
  294. TessellationFactors o;
  295. float4 tf = 1;
  296. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  297. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  298. #if defined(ASE_FIXED_TESSELLATION)
  299. tf = FixedTess( tessValue );
  300. #elif defined(ASE_DISTANCE_TESSELLATION)
  301. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  302. #elif defined(ASE_LENGTH_TESSELLATION)
  303. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  304. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  305. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  306. #endif
  307. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  308. return o;
  309. }
  310. [domain("tri")]
  311. [partitioning("fractional_odd")]
  312. [outputtopology("triangle_cw")]
  313. [patchconstantfunc("TessellationFunction")]
  314. [outputcontrolpoints(3)]
  315. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  316. {
  317. return patch[id];
  318. }
  319. [domain("tri")]
  320. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  321. {
  322. VertexInput o = (VertexInput) 0;
  323. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  324. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  325. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  326. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  327. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  328. #if defined(ASE_PHONG_TESSELLATION)
  329. float3 pp[3];
  330. for (int i = 0; i < 3; ++i)
  331. 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));
  332. float phongStrength = _TessPhongStrength;
  333. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  334. #endif
  335. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  336. return VertexFunction(o);
  337. }
  338. #else
  339. VertexOutput vert ( VertexInput v )
  340. {
  341. return VertexFunction( v );
  342. }
  343. #endif
  344. half4 frag ( VertexOutput IN ) : SV_Target
  345. {
  346. UNITY_SETUP_INSTANCE_ID( IN );
  347. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
  348. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  349. float3 WorldPosition = IN.worldPos;
  350. #endif
  351. float4 ShadowCoords = float4( 0, 0, 0, 0 );
  352. #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  353. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
  354. ShadowCoords = IN.shadowCoord;
  355. #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
  356. ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
  357. #endif
  358. #endif
  359. float2 uv_MainTex = IN.ase_texcoord3.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  360. float2 appendResult23 = (float2(( _Uspeed * ( _TimeParameters.x ) ) , ( ( _TimeParameters.x ) * _Vspeed )));
  361. float4 texCoord38 = IN.ase_texcoord4;
  362. texCoord38.xy = IN.ase_texcoord4.xy * float2( 1,1 ) + float2( 0,0 );
  363. float2 appendResult41 = (float2(texCoord38.z , texCoord38.w));
  364. float2 lerpResult35 = lerp( ( uv_MainTex + appendResult23 ) , ( appendResult41 + uv_MainTex ) , round( _CustomDataSwitch ));
  365. float4 break51 = ( tex2D( _MainTex, lerpResult35 ) * _MainTexChannel );
  366. float clampResult53 = clamp( ( break51.r + break51.g + break51.b + break51.a ) , 0.0 , 1.0 );
  367. float cos86 = cos( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  368. float sin86 = sin( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  369. float2 rotator86 = mul( IN.ase_texcoord3.xy - float2( 0.5,0.5 ) , float2x2( cos86 , -sin86 , sin86 , cos86 )) + float2( 0.5,0.5 );
  370. float2 uv_Mask = IN.ase_texcoord3.xy * _Mask_ST.xy + _Mask_ST.zw;
  371. float2 lerpResult89 = lerp( rotator86 , uv_Mask , round( _MaskTexRotationSwitch ));
  372. float4 break78 = ( tex2D( _Mask, lerpResult89 ) * _MaskTexChannel );
  373. float clampResult80 = clamp( ( break78.r + break78.g + break78.b + break78.a ) , 0.0 , 1.0 );
  374. float clampResult55 = clamp( ( clampResult53 * clampResult80 * IN.ase_color.a ) , 0.0 , 1.0 );
  375. float lerpResult57 = lerp( clampResult53 , clampResult55 , _RampDirection);
  376. float2 appendResult63 = (float2(( 1.0 - pow( ( 1.0 - lerpResult57 ) , _RampPower ) ) , 0.0));
  377. float3 BakedAlbedo = 0;
  378. float3 BakedEmission = 0;
  379. float3 Color = ( ( IN.ase_color * _ColorPower ) * ( tex2D( _Ramp, appendResult63 ) * _Color ) ).rgb;
  380. float Alpha = ( ( _Color.a * clampResult55 ) * _ca );
  381. float AlphaClipThreshold = 0.5;
  382. float AlphaClipThresholdShadow = 0.5;
  383. #ifdef _ALPHATEST_ON
  384. clip( Alpha - AlphaClipThreshold );
  385. #endif
  386. #if defined(_DBUFFER)
  387. ApplyDecalToBaseColor(IN.clipPos, Color);
  388. #endif
  389. #if defined(_ALPHAPREMULTIPLY_ON)
  390. Color *= Alpha;
  391. #endif
  392. #ifdef LOD_FADE_CROSSFADE
  393. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  394. #endif
  395. #ifdef ASE_FOG
  396. Color = MixFog( Color, IN.fogFactor );
  397. #endif
  398. return half4( Color, Alpha );
  399. }
  400. ENDHLSL
  401. }
  402. Pass
  403. {
  404. Name "DepthOnly"
  405. Tags { "LightMode"="DepthOnly" }
  406. ZWrite On
  407. ColorMask 0
  408. AlphaToMask Off
  409. HLSLPROGRAM
  410. #pragma multi_compile_instancing
  411. #define _RECEIVE_SHADOWS_OFF 1
  412. #define ASE_SRP_VERSION 999999
  413. #pragma vertex vert
  414. #pragma fragment frag
  415. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  416. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  417. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  418. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  419. struct VertexInput
  420. {
  421. float4 vertex : POSITION;
  422. float3 ase_normal : NORMAL;
  423. float4 ase_texcoord : TEXCOORD0;
  424. float4 ase_texcoord1 : TEXCOORD1;
  425. float4 ase_color : COLOR;
  426. UNITY_VERTEX_INPUT_INSTANCE_ID
  427. };
  428. struct VertexOutput
  429. {
  430. float4 clipPos : SV_POSITION;
  431. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  432. float3 worldPos : TEXCOORD0;
  433. #endif
  434. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  435. float4 shadowCoord : TEXCOORD1;
  436. #endif
  437. float4 ase_texcoord2 : TEXCOORD2;
  438. float4 ase_texcoord3 : TEXCOORD3;
  439. float4 ase_color : COLOR;
  440. UNITY_VERTEX_INPUT_INSTANCE_ID
  441. UNITY_VERTEX_OUTPUT_STEREO
  442. };
  443. CBUFFER_START(UnityPerMaterial)
  444. float4 _MainTex_ST;
  445. float4 _MainTexChannel;
  446. float4 _Mask_ST;
  447. float4 _MaskTexChannel;
  448. float4 _Color;
  449. float _ColorPower;
  450. float _Uspeed;
  451. float _Vspeed;
  452. float _CustomDataSwitch;
  453. float _MaskTexRotation;
  454. float _MaskTexRotationSwitch;
  455. float _RampDirection;
  456. float _RampPower;
  457. float _ca;
  458. #ifdef TESSELLATION_ON
  459. float _TessPhongStrength;
  460. float _TessValue;
  461. float _TessMin;
  462. float _TessMax;
  463. float _TessEdgeLength;
  464. float _TessMaxDisp;
  465. #endif
  466. CBUFFER_END
  467. sampler2D _MainTex;
  468. sampler2D _Mask;
  469. VertexOutput VertexFunction( VertexInput v )
  470. {
  471. VertexOutput o = (VertexOutput)0;
  472. UNITY_SETUP_INSTANCE_ID(v);
  473. UNITY_TRANSFER_INSTANCE_ID(v, o);
  474. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  475. o.ase_texcoord2.xy = v.ase_texcoord.xy;
  476. o.ase_texcoord3 = v.ase_texcoord1;
  477. o.ase_color = v.ase_color;
  478. //setting value to unused interpolator channels and avoid initialization warnings
  479. o.ase_texcoord2.zw = 0;
  480. #ifdef ASE_ABSOLUTE_VERTEX_POS
  481. float3 defaultVertexValue = v.vertex.xyz;
  482. #else
  483. float3 defaultVertexValue = float3(0, 0, 0);
  484. #endif
  485. float3 vertexValue = defaultVertexValue;
  486. #ifdef ASE_ABSOLUTE_VERTEX_POS
  487. v.vertex.xyz = vertexValue;
  488. #else
  489. v.vertex.xyz += vertexValue;
  490. #endif
  491. v.ase_normal = v.ase_normal;
  492. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  493. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  494. o.worldPos = positionWS;
  495. #endif
  496. o.clipPos = TransformWorldToHClip( positionWS );
  497. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  498. VertexPositionInputs vertexInput = (VertexPositionInputs)0;
  499. vertexInput.positionWS = positionWS;
  500. vertexInput.positionCS = o.clipPos;
  501. o.shadowCoord = GetShadowCoord( vertexInput );
  502. #endif
  503. return o;
  504. }
  505. #if defined(TESSELLATION_ON)
  506. struct VertexControl
  507. {
  508. float4 vertex : INTERNALTESSPOS;
  509. float3 ase_normal : NORMAL;
  510. float4 ase_texcoord : TEXCOORD0;
  511. float4 ase_texcoord1 : TEXCOORD1;
  512. float4 ase_color : COLOR;
  513. UNITY_VERTEX_INPUT_INSTANCE_ID
  514. };
  515. struct TessellationFactors
  516. {
  517. float edge[3] : SV_TessFactor;
  518. float inside : SV_InsideTessFactor;
  519. };
  520. VertexControl vert ( VertexInput v )
  521. {
  522. VertexControl o;
  523. UNITY_SETUP_INSTANCE_ID(v);
  524. UNITY_TRANSFER_INSTANCE_ID(v, o);
  525. o.vertex = v.vertex;
  526. o.ase_normal = v.ase_normal;
  527. o.ase_texcoord = v.ase_texcoord;
  528. o.ase_texcoord1 = v.ase_texcoord1;
  529. o.ase_color = v.ase_color;
  530. return o;
  531. }
  532. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  533. {
  534. TessellationFactors o;
  535. float4 tf = 1;
  536. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  537. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  538. #if defined(ASE_FIXED_TESSELLATION)
  539. tf = FixedTess( tessValue );
  540. #elif defined(ASE_DISTANCE_TESSELLATION)
  541. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  542. #elif defined(ASE_LENGTH_TESSELLATION)
  543. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  544. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  545. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  546. #endif
  547. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  548. return o;
  549. }
  550. [domain("tri")]
  551. [partitioning("fractional_odd")]
  552. [outputtopology("triangle_cw")]
  553. [patchconstantfunc("TessellationFunction")]
  554. [outputcontrolpoints(3)]
  555. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  556. {
  557. return patch[id];
  558. }
  559. [domain("tri")]
  560. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  561. {
  562. VertexInput o = (VertexInput) 0;
  563. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  564. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  565. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  566. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  567. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  568. #if defined(ASE_PHONG_TESSELLATION)
  569. float3 pp[3];
  570. for (int i = 0; i < 3; ++i)
  571. 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));
  572. float phongStrength = _TessPhongStrength;
  573. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  574. #endif
  575. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  576. return VertexFunction(o);
  577. }
  578. #else
  579. VertexOutput vert ( VertexInput v )
  580. {
  581. return VertexFunction( v );
  582. }
  583. #endif
  584. half4 frag(VertexOutput IN ) : SV_TARGET
  585. {
  586. UNITY_SETUP_INSTANCE_ID(IN);
  587. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
  588. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  589. float3 WorldPosition = IN.worldPos;
  590. #endif
  591. float4 ShadowCoords = float4( 0, 0, 0, 0 );
  592. #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  593. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
  594. ShadowCoords = IN.shadowCoord;
  595. #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
  596. ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
  597. #endif
  598. #endif
  599. float2 uv_MainTex = IN.ase_texcoord2.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  600. float2 appendResult23 = (float2(( _Uspeed * ( _TimeParameters.x ) ) , ( ( _TimeParameters.x ) * _Vspeed )));
  601. float4 texCoord38 = IN.ase_texcoord3;
  602. texCoord38.xy = IN.ase_texcoord3.xy * float2( 1,1 ) + float2( 0,0 );
  603. float2 appendResult41 = (float2(texCoord38.z , texCoord38.w));
  604. float2 lerpResult35 = lerp( ( uv_MainTex + appendResult23 ) , ( appendResult41 + uv_MainTex ) , round( _CustomDataSwitch ));
  605. float4 break51 = ( tex2D( _MainTex, lerpResult35 ) * _MainTexChannel );
  606. float clampResult53 = clamp( ( break51.r + break51.g + break51.b + break51.a ) , 0.0 , 1.0 );
  607. float cos86 = cos( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  608. float sin86 = sin( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  609. float2 rotator86 = mul( IN.ase_texcoord2.xy - float2( 0.5,0.5 ) , float2x2( cos86 , -sin86 , sin86 , cos86 )) + float2( 0.5,0.5 );
  610. float2 uv_Mask = IN.ase_texcoord2.xy * _Mask_ST.xy + _Mask_ST.zw;
  611. float2 lerpResult89 = lerp( rotator86 , uv_Mask , round( _MaskTexRotationSwitch ));
  612. float4 break78 = ( tex2D( _Mask, lerpResult89 ) * _MaskTexChannel );
  613. float clampResult80 = clamp( ( break78.r + break78.g + break78.b + break78.a ) , 0.0 , 1.0 );
  614. float clampResult55 = clamp( ( clampResult53 * clampResult80 * IN.ase_color.a ) , 0.0 , 1.0 );
  615. float Alpha = ( ( _Color.a * clampResult55 ) * _ca );
  616. float AlphaClipThreshold = 0.5;
  617. #ifdef _ALPHATEST_ON
  618. clip(Alpha - AlphaClipThreshold);
  619. #endif
  620. #ifdef LOD_FADE_CROSSFADE
  621. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  622. #endif
  623. return 0;
  624. }
  625. ENDHLSL
  626. }
  627. Pass
  628. {
  629. Name "Universal2D"
  630. Tags { "LightMode"="Universal2D" }
  631. Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha
  632. ZWrite Off
  633. ZTest LEqual
  634. Offset 0 , 0
  635. ColorMask RGBA
  636. HLSLPROGRAM
  637. #pragma multi_compile_instancing
  638. #define _RECEIVE_SHADOWS_OFF 1
  639. #define ASE_SRP_VERSION 999999
  640. #pragma multi_compile _ LIGHTMAP_ON
  641. #pragma multi_compile _ DIRLIGHTMAP_COMBINED
  642. #pragma shader_feature _ _SAMPLE_GI
  643. #pragma multi_compile _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3
  644. #pragma multi_compile _ DEBUG_DISPLAY
  645. #define SHADERPASS SHADERPASS_UNLIT
  646. #pragma vertex vert
  647. #pragma fragment frag
  648. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  649. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  650. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  651. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  652. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  653. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  654. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"
  655. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  656. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging3D.hlsl"
  657. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
  658. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceData.hlsl"
  659. #define ASE_NEEDS_FRAG_COLOR
  660. struct VertexInput
  661. {
  662. float4 vertex : POSITION;
  663. float3 ase_normal : NORMAL;
  664. float4 ase_color : COLOR;
  665. float4 ase_texcoord : TEXCOORD0;
  666. float4 ase_texcoord1 : TEXCOORD1;
  667. UNITY_VERTEX_INPUT_INSTANCE_ID
  668. };
  669. struct VertexOutput
  670. {
  671. float4 clipPos : SV_POSITION;
  672. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  673. float3 worldPos : TEXCOORD0;
  674. #endif
  675. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  676. float4 shadowCoord : TEXCOORD1;
  677. #endif
  678. #ifdef ASE_FOG
  679. float fogFactor : TEXCOORD2;
  680. #endif
  681. float4 ase_color : COLOR;
  682. float4 ase_texcoord3 : TEXCOORD3;
  683. float4 ase_texcoord4 : TEXCOORD4;
  684. UNITY_VERTEX_INPUT_INSTANCE_ID
  685. UNITY_VERTEX_OUTPUT_STEREO
  686. };
  687. CBUFFER_START(UnityPerMaterial)
  688. float4 _MainTex_ST;
  689. float4 _MainTexChannel;
  690. float4 _Mask_ST;
  691. float4 _MaskTexChannel;
  692. float4 _Color;
  693. float _ColorPower;
  694. float _Uspeed;
  695. float _Vspeed;
  696. float _CustomDataSwitch;
  697. float _MaskTexRotation;
  698. float _MaskTexRotationSwitch;
  699. float _RampDirection;
  700. float _RampPower;
  701. float _ca;
  702. #ifdef TESSELLATION_ON
  703. float _TessPhongStrength;
  704. float _TessValue;
  705. float _TessMin;
  706. float _TessMax;
  707. float _TessEdgeLength;
  708. float _TessMaxDisp;
  709. #endif
  710. CBUFFER_END
  711. sampler2D _Ramp;
  712. sampler2D _MainTex;
  713. sampler2D _Mask;
  714. VertexOutput VertexFunction ( VertexInput v )
  715. {
  716. VertexOutput o = (VertexOutput)0;
  717. UNITY_SETUP_INSTANCE_ID(v);
  718. UNITY_TRANSFER_INSTANCE_ID(v, o);
  719. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  720. o.ase_color = v.ase_color;
  721. o.ase_texcoord3.xy = v.ase_texcoord.xy;
  722. o.ase_texcoord4 = v.ase_texcoord1;
  723. //setting value to unused interpolator channels and avoid initialization warnings
  724. o.ase_texcoord3.zw = 0;
  725. #ifdef ASE_ABSOLUTE_VERTEX_POS
  726. float3 defaultVertexValue = v.vertex.xyz;
  727. #else
  728. float3 defaultVertexValue = float3(0, 0, 0);
  729. #endif
  730. float3 vertexValue = defaultVertexValue;
  731. #ifdef ASE_ABSOLUTE_VERTEX_POS
  732. v.vertex.xyz = vertexValue;
  733. #else
  734. v.vertex.xyz += vertexValue;
  735. #endif
  736. v.ase_normal = v.ase_normal;
  737. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  738. float4 positionCS = TransformWorldToHClip( positionWS );
  739. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  740. o.worldPos = positionWS;
  741. #endif
  742. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  743. VertexPositionInputs vertexInput = (VertexPositionInputs)0;
  744. vertexInput.positionWS = positionWS;
  745. vertexInput.positionCS = positionCS;
  746. o.shadowCoord = GetShadowCoord( vertexInput );
  747. #endif
  748. #ifdef ASE_FOG
  749. o.fogFactor = ComputeFogFactor( positionCS.z );
  750. #endif
  751. o.clipPos = positionCS;
  752. return o;
  753. }
  754. #if defined(TESSELLATION_ON)
  755. struct VertexControl
  756. {
  757. float4 vertex : INTERNALTESSPOS;
  758. float3 ase_normal : NORMAL;
  759. float4 ase_color : COLOR;
  760. float4 ase_texcoord : TEXCOORD0;
  761. float4 ase_texcoord1 : TEXCOORD1;
  762. UNITY_VERTEX_INPUT_INSTANCE_ID
  763. };
  764. struct TessellationFactors
  765. {
  766. float edge[3] : SV_TessFactor;
  767. float inside : SV_InsideTessFactor;
  768. };
  769. VertexControl vert ( VertexInput v )
  770. {
  771. VertexControl o;
  772. UNITY_SETUP_INSTANCE_ID(v);
  773. UNITY_TRANSFER_INSTANCE_ID(v, o);
  774. o.vertex = v.vertex;
  775. o.ase_normal = v.ase_normal;
  776. o.ase_color = v.ase_color;
  777. o.ase_texcoord = v.ase_texcoord;
  778. o.ase_texcoord1 = v.ase_texcoord1;
  779. return o;
  780. }
  781. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  782. {
  783. TessellationFactors o;
  784. float4 tf = 1;
  785. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  786. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  787. #if defined(ASE_FIXED_TESSELLATION)
  788. tf = FixedTess( tessValue );
  789. #elif defined(ASE_DISTANCE_TESSELLATION)
  790. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  791. #elif defined(ASE_LENGTH_TESSELLATION)
  792. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  793. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  794. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  795. #endif
  796. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  797. return o;
  798. }
  799. [domain("tri")]
  800. [partitioning("fractional_odd")]
  801. [outputtopology("triangle_cw")]
  802. [patchconstantfunc("TessellationFunction")]
  803. [outputcontrolpoints(3)]
  804. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  805. {
  806. return patch[id];
  807. }
  808. [domain("tri")]
  809. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  810. {
  811. VertexInput o = (VertexInput) 0;
  812. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  813. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  814. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  815. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  816. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  817. #if defined(ASE_PHONG_TESSELLATION)
  818. float3 pp[3];
  819. for (int i = 0; i < 3; ++i)
  820. 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));
  821. float phongStrength = _TessPhongStrength;
  822. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  823. #endif
  824. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  825. return VertexFunction(o);
  826. }
  827. #else
  828. VertexOutput vert ( VertexInput v )
  829. {
  830. return VertexFunction( v );
  831. }
  832. #endif
  833. half4 frag ( VertexOutput IN ) : SV_Target
  834. {
  835. UNITY_SETUP_INSTANCE_ID( IN );
  836. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
  837. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  838. float3 WorldPosition = IN.worldPos;
  839. #endif
  840. float4 ShadowCoords = float4( 0, 0, 0, 0 );
  841. #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  842. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
  843. ShadowCoords = IN.shadowCoord;
  844. #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
  845. ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
  846. #endif
  847. #endif
  848. float2 uv_MainTex = IN.ase_texcoord3.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  849. float2 appendResult23 = (float2(( _Uspeed * ( _TimeParameters.x ) ) , ( ( _TimeParameters.x ) * _Vspeed )));
  850. float4 texCoord38 = IN.ase_texcoord4;
  851. texCoord38.xy = IN.ase_texcoord4.xy * float2( 1,1 ) + float2( 0,0 );
  852. float2 appendResult41 = (float2(texCoord38.z , texCoord38.w));
  853. float2 lerpResult35 = lerp( ( uv_MainTex + appendResult23 ) , ( appendResult41 + uv_MainTex ) , round( _CustomDataSwitch ));
  854. float4 break51 = ( tex2D( _MainTex, lerpResult35 ) * _MainTexChannel );
  855. float clampResult53 = clamp( ( break51.r + break51.g + break51.b + break51.a ) , 0.0 , 1.0 );
  856. float cos86 = cos( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  857. float sin86 = sin( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  858. float2 rotator86 = mul( IN.ase_texcoord3.xy - float2( 0.5,0.5 ) , float2x2( cos86 , -sin86 , sin86 , cos86 )) + float2( 0.5,0.5 );
  859. float2 uv_Mask = IN.ase_texcoord3.xy * _Mask_ST.xy + _Mask_ST.zw;
  860. float2 lerpResult89 = lerp( rotator86 , uv_Mask , round( _MaskTexRotationSwitch ));
  861. float4 break78 = ( tex2D( _Mask, lerpResult89 ) * _MaskTexChannel );
  862. float clampResult80 = clamp( ( break78.r + break78.g + break78.b + break78.a ) , 0.0 , 1.0 );
  863. float clampResult55 = clamp( ( clampResult53 * clampResult80 * IN.ase_color.a ) , 0.0 , 1.0 );
  864. float lerpResult57 = lerp( clampResult53 , clampResult55 , _RampDirection);
  865. float2 appendResult63 = (float2(( 1.0 - pow( ( 1.0 - lerpResult57 ) , _RampPower ) ) , 0.0));
  866. float3 BakedAlbedo = 0;
  867. float3 BakedEmission = 0;
  868. float3 Color = ( ( IN.ase_color * _ColorPower ) * ( tex2D( _Ramp, appendResult63 ) * _Color ) ).rgb;
  869. float Alpha = ( ( _Color.a * clampResult55 ) * _ca );
  870. float AlphaClipThreshold = 0.5;
  871. float AlphaClipThresholdShadow = 0.5;
  872. #ifdef _ALPHATEST_ON
  873. clip( Alpha - AlphaClipThreshold );
  874. #endif
  875. #if defined(_DBUFFER)
  876. ApplyDecalToBaseColor(IN.clipPos, Color);
  877. #endif
  878. #if defined(_ALPHAPREMULTIPLY_ON)
  879. Color *= Alpha;
  880. #endif
  881. #ifdef LOD_FADE_CROSSFADE
  882. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  883. #endif
  884. #ifdef ASE_FOG
  885. Color = MixFog( Color, IN.fogFactor );
  886. #endif
  887. return half4( Color, Alpha );
  888. }
  889. ENDHLSL
  890. }
  891. Pass
  892. {
  893. Name "SceneSelectionPass"
  894. Tags { "LightMode"="SceneSelectionPass" }
  895. Cull Off
  896. HLSLPROGRAM
  897. #pragma multi_compile_instancing
  898. #define _RECEIVE_SHADOWS_OFF 1
  899. #define ASE_SRP_VERSION 999999
  900. #pragma only_renderers d3d11 glcore gles gles3
  901. #pragma vertex vert
  902. #pragma fragment frag
  903. #define ATTRIBUTES_NEED_NORMAL
  904. #define ATTRIBUTES_NEED_TANGENT
  905. #define SHADERPASS SHADERPASS_DEPTHONLY
  906. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  907. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  908. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  909. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  910. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  911. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  912. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  913. struct VertexInput
  914. {
  915. float4 vertex : POSITION;
  916. float3 ase_normal : NORMAL;
  917. float4 ase_texcoord : TEXCOORD0;
  918. float4 ase_texcoord1 : TEXCOORD1;
  919. float4 ase_color : COLOR;
  920. UNITY_VERTEX_INPUT_INSTANCE_ID
  921. };
  922. struct VertexOutput
  923. {
  924. float4 clipPos : SV_POSITION;
  925. float4 ase_texcoord : TEXCOORD0;
  926. float4 ase_texcoord1 : TEXCOORD1;
  927. float4 ase_color : COLOR;
  928. UNITY_VERTEX_INPUT_INSTANCE_ID
  929. UNITY_VERTEX_OUTPUT_STEREO
  930. };
  931. CBUFFER_START(UnityPerMaterial)
  932. float4 _MainTex_ST;
  933. float4 _MainTexChannel;
  934. float4 _Mask_ST;
  935. float4 _MaskTexChannel;
  936. float4 _Color;
  937. float _ColorPower;
  938. float _Uspeed;
  939. float _Vspeed;
  940. float _CustomDataSwitch;
  941. float _MaskTexRotation;
  942. float _MaskTexRotationSwitch;
  943. float _RampDirection;
  944. float _RampPower;
  945. float _ca;
  946. #ifdef TESSELLATION_ON
  947. float _TessPhongStrength;
  948. float _TessValue;
  949. float _TessMin;
  950. float _TessMax;
  951. float _TessEdgeLength;
  952. float _TessMaxDisp;
  953. #endif
  954. CBUFFER_END
  955. sampler2D _MainTex;
  956. sampler2D _Mask;
  957. int _ObjectId;
  958. int _PassValue;
  959. struct SurfaceDescription
  960. {
  961. float Alpha;
  962. float AlphaClipThreshold;
  963. };
  964. VertexOutput VertexFunction(VertexInput v )
  965. {
  966. VertexOutput o;
  967. ZERO_INITIALIZE(VertexOutput, o);
  968. UNITY_SETUP_INSTANCE_ID(v);
  969. UNITY_TRANSFER_INSTANCE_ID(v, o);
  970. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  971. o.ase_texcoord.xy = v.ase_texcoord.xy;
  972. o.ase_texcoord1 = v.ase_texcoord1;
  973. o.ase_color = v.ase_color;
  974. //setting value to unused interpolator channels and avoid initialization warnings
  975. o.ase_texcoord.zw = 0;
  976. #ifdef ASE_ABSOLUTE_VERTEX_POS
  977. float3 defaultVertexValue = v.vertex.xyz;
  978. #else
  979. float3 defaultVertexValue = float3(0, 0, 0);
  980. #endif
  981. float3 vertexValue = defaultVertexValue;
  982. #ifdef ASE_ABSOLUTE_VERTEX_POS
  983. v.vertex.xyz = vertexValue;
  984. #else
  985. v.vertex.xyz += vertexValue;
  986. #endif
  987. v.ase_normal = v.ase_normal;
  988. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  989. o.clipPos = TransformWorldToHClip(positionWS);
  990. return o;
  991. }
  992. #if defined(TESSELLATION_ON)
  993. struct VertexControl
  994. {
  995. float4 vertex : INTERNALTESSPOS;
  996. float3 ase_normal : NORMAL;
  997. float4 ase_texcoord : TEXCOORD0;
  998. float4 ase_texcoord1 : TEXCOORD1;
  999. float4 ase_color : COLOR;
  1000. UNITY_VERTEX_INPUT_INSTANCE_ID
  1001. };
  1002. struct TessellationFactors
  1003. {
  1004. float edge[3] : SV_TessFactor;
  1005. float inside : SV_InsideTessFactor;
  1006. };
  1007. VertexControl vert ( VertexInput v )
  1008. {
  1009. VertexControl o;
  1010. UNITY_SETUP_INSTANCE_ID(v);
  1011. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1012. o.vertex = v.vertex;
  1013. o.ase_normal = v.ase_normal;
  1014. o.ase_texcoord = v.ase_texcoord;
  1015. o.ase_texcoord1 = v.ase_texcoord1;
  1016. o.ase_color = v.ase_color;
  1017. return o;
  1018. }
  1019. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  1020. {
  1021. TessellationFactors o;
  1022. float4 tf = 1;
  1023. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  1024. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  1025. #if defined(ASE_FIXED_TESSELLATION)
  1026. tf = FixedTess( tessValue );
  1027. #elif defined(ASE_DISTANCE_TESSELLATION)
  1028. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  1029. #elif defined(ASE_LENGTH_TESSELLATION)
  1030. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  1031. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  1032. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  1033. #endif
  1034. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  1035. return o;
  1036. }
  1037. [domain("tri")]
  1038. [partitioning("fractional_odd")]
  1039. [outputtopology("triangle_cw")]
  1040. [patchconstantfunc("TessellationFunction")]
  1041. [outputcontrolpoints(3)]
  1042. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  1043. {
  1044. return patch[id];
  1045. }
  1046. [domain("tri")]
  1047. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  1048. {
  1049. VertexInput o = (VertexInput) 0;
  1050. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  1051. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  1052. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  1053. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  1054. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  1055. #if defined(ASE_PHONG_TESSELLATION)
  1056. float3 pp[3];
  1057. for (int i = 0; i < 3; ++i)
  1058. 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));
  1059. float phongStrength = _TessPhongStrength;
  1060. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  1061. #endif
  1062. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  1063. return VertexFunction(o);
  1064. }
  1065. #else
  1066. VertexOutput vert ( VertexInput v )
  1067. {
  1068. return VertexFunction( v );
  1069. }
  1070. #endif
  1071. half4 frag(VertexOutput IN ) : SV_TARGET
  1072. {
  1073. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  1074. float2 uv_MainTex = IN.ase_texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  1075. float2 appendResult23 = (float2(( _Uspeed * ( _TimeParameters.x ) ) , ( ( _TimeParameters.x ) * _Vspeed )));
  1076. float4 texCoord38 = IN.ase_texcoord1;
  1077. texCoord38.xy = IN.ase_texcoord1.xy * float2( 1,1 ) + float2( 0,0 );
  1078. float2 appendResult41 = (float2(texCoord38.z , texCoord38.w));
  1079. float2 lerpResult35 = lerp( ( uv_MainTex + appendResult23 ) , ( appendResult41 + uv_MainTex ) , round( _CustomDataSwitch ));
  1080. float4 break51 = ( tex2D( _MainTex, lerpResult35 ) * _MainTexChannel );
  1081. float clampResult53 = clamp( ( break51.r + break51.g + break51.b + break51.a ) , 0.0 , 1.0 );
  1082. float cos86 = cos( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  1083. float sin86 = sin( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  1084. float2 rotator86 = mul( IN.ase_texcoord.xy - float2( 0.5,0.5 ) , float2x2( cos86 , -sin86 , sin86 , cos86 )) + float2( 0.5,0.5 );
  1085. float2 uv_Mask = IN.ase_texcoord.xy * _Mask_ST.xy + _Mask_ST.zw;
  1086. float2 lerpResult89 = lerp( rotator86 , uv_Mask , round( _MaskTexRotationSwitch ));
  1087. float4 break78 = ( tex2D( _Mask, lerpResult89 ) * _MaskTexChannel );
  1088. float clampResult80 = clamp( ( break78.r + break78.g + break78.b + break78.a ) , 0.0 , 1.0 );
  1089. float clampResult55 = clamp( ( clampResult53 * clampResult80 * IN.ase_color.a ) , 0.0 , 1.0 );
  1090. surfaceDescription.Alpha = ( ( _Color.a * clampResult55 ) * _ca );
  1091. surfaceDescription.AlphaClipThreshold = 0.5;
  1092. #if _ALPHATEST_ON
  1093. float alphaClipThreshold = 0.01f;
  1094. #if ALPHA_CLIP_THRESHOLD
  1095. alphaClipThreshold = surfaceDescription.AlphaClipThreshold;
  1096. #endif
  1097. clip(surfaceDescription.Alpha - alphaClipThreshold);
  1098. #endif
  1099. half4 outColor = half4(_ObjectId, _PassValue, 1.0, 1.0);
  1100. return outColor;
  1101. }
  1102. ENDHLSL
  1103. }
  1104. Pass
  1105. {
  1106. Name "ScenePickingPass"
  1107. Tags { "LightMode"="Picking" }
  1108. HLSLPROGRAM
  1109. #pragma multi_compile_instancing
  1110. #define _RECEIVE_SHADOWS_OFF 1
  1111. #define ASE_SRP_VERSION 999999
  1112. #pragma only_renderers d3d11 glcore gles gles3
  1113. #pragma vertex vert
  1114. #pragma fragment frag
  1115. #define ATTRIBUTES_NEED_NORMAL
  1116. #define ATTRIBUTES_NEED_TANGENT
  1117. #define SHADERPASS SHADERPASS_DEPTHONLY
  1118. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  1119. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  1120. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  1121. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  1122. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  1123. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  1124. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  1125. struct VertexInput
  1126. {
  1127. float4 vertex : POSITION;
  1128. float3 ase_normal : NORMAL;
  1129. float4 ase_texcoord : TEXCOORD0;
  1130. float4 ase_texcoord1 : TEXCOORD1;
  1131. float4 ase_color : COLOR;
  1132. UNITY_VERTEX_INPUT_INSTANCE_ID
  1133. };
  1134. struct VertexOutput
  1135. {
  1136. float4 clipPos : SV_POSITION;
  1137. float4 ase_texcoord : TEXCOORD0;
  1138. float4 ase_texcoord1 : TEXCOORD1;
  1139. float4 ase_color : COLOR;
  1140. UNITY_VERTEX_INPUT_INSTANCE_ID
  1141. UNITY_VERTEX_OUTPUT_STEREO
  1142. };
  1143. CBUFFER_START(UnityPerMaterial)
  1144. float4 _MainTex_ST;
  1145. float4 _MainTexChannel;
  1146. float4 _Mask_ST;
  1147. float4 _MaskTexChannel;
  1148. float4 _Color;
  1149. float _ColorPower;
  1150. float _Uspeed;
  1151. float _Vspeed;
  1152. float _CustomDataSwitch;
  1153. float _MaskTexRotation;
  1154. float _MaskTexRotationSwitch;
  1155. float _RampDirection;
  1156. float _RampPower;
  1157. float _ca;
  1158. #ifdef TESSELLATION_ON
  1159. float _TessPhongStrength;
  1160. float _TessValue;
  1161. float _TessMin;
  1162. float _TessMax;
  1163. float _TessEdgeLength;
  1164. float _TessMaxDisp;
  1165. #endif
  1166. CBUFFER_END
  1167. sampler2D _MainTex;
  1168. sampler2D _Mask;
  1169. float4 _SelectionID;
  1170. struct SurfaceDescription
  1171. {
  1172. float Alpha;
  1173. float AlphaClipThreshold;
  1174. };
  1175. VertexOutput VertexFunction(VertexInput v )
  1176. {
  1177. VertexOutput o;
  1178. ZERO_INITIALIZE(VertexOutput, o);
  1179. UNITY_SETUP_INSTANCE_ID(v);
  1180. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1181. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  1182. o.ase_texcoord.xy = v.ase_texcoord.xy;
  1183. o.ase_texcoord1 = v.ase_texcoord1;
  1184. o.ase_color = v.ase_color;
  1185. //setting value to unused interpolator channels and avoid initialization warnings
  1186. o.ase_texcoord.zw = 0;
  1187. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1188. float3 defaultVertexValue = v.vertex.xyz;
  1189. #else
  1190. float3 defaultVertexValue = float3(0, 0, 0);
  1191. #endif
  1192. float3 vertexValue = defaultVertexValue;
  1193. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1194. v.vertex.xyz = vertexValue;
  1195. #else
  1196. v.vertex.xyz += vertexValue;
  1197. #endif
  1198. v.ase_normal = v.ase_normal;
  1199. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  1200. o.clipPos = TransformWorldToHClip(positionWS);
  1201. return o;
  1202. }
  1203. #if defined(TESSELLATION_ON)
  1204. struct VertexControl
  1205. {
  1206. float4 vertex : INTERNALTESSPOS;
  1207. float3 ase_normal : NORMAL;
  1208. float4 ase_texcoord : TEXCOORD0;
  1209. float4 ase_texcoord1 : TEXCOORD1;
  1210. float4 ase_color : COLOR;
  1211. UNITY_VERTEX_INPUT_INSTANCE_ID
  1212. };
  1213. struct TessellationFactors
  1214. {
  1215. float edge[3] : SV_TessFactor;
  1216. float inside : SV_InsideTessFactor;
  1217. };
  1218. VertexControl vert ( VertexInput v )
  1219. {
  1220. VertexControl o;
  1221. UNITY_SETUP_INSTANCE_ID(v);
  1222. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1223. o.vertex = v.vertex;
  1224. o.ase_normal = v.ase_normal;
  1225. o.ase_texcoord = v.ase_texcoord;
  1226. o.ase_texcoord1 = v.ase_texcoord1;
  1227. o.ase_color = v.ase_color;
  1228. return o;
  1229. }
  1230. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  1231. {
  1232. TessellationFactors o;
  1233. float4 tf = 1;
  1234. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  1235. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  1236. #if defined(ASE_FIXED_TESSELLATION)
  1237. tf = FixedTess( tessValue );
  1238. #elif defined(ASE_DISTANCE_TESSELLATION)
  1239. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  1240. #elif defined(ASE_LENGTH_TESSELLATION)
  1241. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  1242. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  1243. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  1244. #endif
  1245. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  1246. return o;
  1247. }
  1248. [domain("tri")]
  1249. [partitioning("fractional_odd")]
  1250. [outputtopology("triangle_cw")]
  1251. [patchconstantfunc("TessellationFunction")]
  1252. [outputcontrolpoints(3)]
  1253. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  1254. {
  1255. return patch[id];
  1256. }
  1257. [domain("tri")]
  1258. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  1259. {
  1260. VertexInput o = (VertexInput) 0;
  1261. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  1262. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  1263. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  1264. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  1265. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  1266. #if defined(ASE_PHONG_TESSELLATION)
  1267. float3 pp[3];
  1268. for (int i = 0; i < 3; ++i)
  1269. 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));
  1270. float phongStrength = _TessPhongStrength;
  1271. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  1272. #endif
  1273. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  1274. return VertexFunction(o);
  1275. }
  1276. #else
  1277. VertexOutput vert ( VertexInput v )
  1278. {
  1279. return VertexFunction( v );
  1280. }
  1281. #endif
  1282. half4 frag(VertexOutput IN ) : SV_TARGET
  1283. {
  1284. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  1285. float2 uv_MainTex = IN.ase_texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  1286. float2 appendResult23 = (float2(( _Uspeed * ( _TimeParameters.x ) ) , ( ( _TimeParameters.x ) * _Vspeed )));
  1287. float4 texCoord38 = IN.ase_texcoord1;
  1288. texCoord38.xy = IN.ase_texcoord1.xy * float2( 1,1 ) + float2( 0,0 );
  1289. float2 appendResult41 = (float2(texCoord38.z , texCoord38.w));
  1290. float2 lerpResult35 = lerp( ( uv_MainTex + appendResult23 ) , ( appendResult41 + uv_MainTex ) , round( _CustomDataSwitch ));
  1291. float4 break51 = ( tex2D( _MainTex, lerpResult35 ) * _MainTexChannel );
  1292. float clampResult53 = clamp( ( break51.r + break51.g + break51.b + break51.a ) , 0.0 , 1.0 );
  1293. float cos86 = cos( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  1294. float sin86 = sin( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  1295. float2 rotator86 = mul( IN.ase_texcoord.xy - float2( 0.5,0.5 ) , float2x2( cos86 , -sin86 , sin86 , cos86 )) + float2( 0.5,0.5 );
  1296. float2 uv_Mask = IN.ase_texcoord.xy * _Mask_ST.xy + _Mask_ST.zw;
  1297. float2 lerpResult89 = lerp( rotator86 , uv_Mask , round( _MaskTexRotationSwitch ));
  1298. float4 break78 = ( tex2D( _Mask, lerpResult89 ) * _MaskTexChannel );
  1299. float clampResult80 = clamp( ( break78.r + break78.g + break78.b + break78.a ) , 0.0 , 1.0 );
  1300. float clampResult55 = clamp( ( clampResult53 * clampResult80 * IN.ase_color.a ) , 0.0 , 1.0 );
  1301. surfaceDescription.Alpha = ( ( _Color.a * clampResult55 ) * _ca );
  1302. surfaceDescription.AlphaClipThreshold = 0.5;
  1303. #if _ALPHATEST_ON
  1304. float alphaClipThreshold = 0.01f;
  1305. #if ALPHA_CLIP_THRESHOLD
  1306. alphaClipThreshold = surfaceDescription.AlphaClipThreshold;
  1307. #endif
  1308. clip(surfaceDescription.Alpha - alphaClipThreshold);
  1309. #endif
  1310. half4 outColor = 0;
  1311. outColor = _SelectionID;
  1312. return outColor;
  1313. }
  1314. ENDHLSL
  1315. }
  1316. Pass
  1317. {
  1318. Name "DepthNormals"
  1319. Tags { "LightMode"="DepthNormalsOnly" }
  1320. ZTest LEqual
  1321. ZWrite On
  1322. HLSLPROGRAM
  1323. #pragma multi_compile_instancing
  1324. #define _RECEIVE_SHADOWS_OFF 1
  1325. #define ASE_SRP_VERSION 999999
  1326. #pragma only_renderers d3d11 glcore gles gles3
  1327. #pragma multi_compile_fog
  1328. #pragma instancing_options renderinglayer
  1329. #pragma vertex vert
  1330. #pragma fragment frag
  1331. #define ATTRIBUTES_NEED_NORMAL
  1332. #define ATTRIBUTES_NEED_TANGENT
  1333. #define VARYINGS_NEED_NORMAL_WS
  1334. #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY
  1335. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  1336. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  1337. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  1338. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  1339. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  1340. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  1341. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  1342. struct VertexInput
  1343. {
  1344. float4 vertex : POSITION;
  1345. float3 ase_normal : NORMAL;
  1346. float4 ase_texcoord : TEXCOORD0;
  1347. float4 ase_texcoord1 : TEXCOORD1;
  1348. float4 ase_color : COLOR;
  1349. UNITY_VERTEX_INPUT_INSTANCE_ID
  1350. };
  1351. struct VertexOutput
  1352. {
  1353. float4 clipPos : SV_POSITION;
  1354. float3 normalWS : TEXCOORD0;
  1355. float4 ase_texcoord1 : TEXCOORD1;
  1356. float4 ase_texcoord2 : TEXCOORD2;
  1357. float4 ase_color : COLOR;
  1358. UNITY_VERTEX_INPUT_INSTANCE_ID
  1359. UNITY_VERTEX_OUTPUT_STEREO
  1360. };
  1361. CBUFFER_START(UnityPerMaterial)
  1362. float4 _MainTex_ST;
  1363. float4 _MainTexChannel;
  1364. float4 _Mask_ST;
  1365. float4 _MaskTexChannel;
  1366. float4 _Color;
  1367. float _ColorPower;
  1368. float _Uspeed;
  1369. float _Vspeed;
  1370. float _CustomDataSwitch;
  1371. float _MaskTexRotation;
  1372. float _MaskTexRotationSwitch;
  1373. float _RampDirection;
  1374. float _RampPower;
  1375. float _ca;
  1376. #ifdef TESSELLATION_ON
  1377. float _TessPhongStrength;
  1378. float _TessValue;
  1379. float _TessMin;
  1380. float _TessMax;
  1381. float _TessEdgeLength;
  1382. float _TessMaxDisp;
  1383. #endif
  1384. CBUFFER_END
  1385. sampler2D _MainTex;
  1386. sampler2D _Mask;
  1387. struct SurfaceDescription
  1388. {
  1389. float Alpha;
  1390. float AlphaClipThreshold;
  1391. };
  1392. VertexOutput VertexFunction(VertexInput v )
  1393. {
  1394. VertexOutput o;
  1395. ZERO_INITIALIZE(VertexOutput, o);
  1396. UNITY_SETUP_INSTANCE_ID(v);
  1397. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1398. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  1399. o.ase_texcoord1.xy = v.ase_texcoord.xy;
  1400. o.ase_texcoord2 = v.ase_texcoord1;
  1401. o.ase_color = v.ase_color;
  1402. //setting value to unused interpolator channels and avoid initialization warnings
  1403. o.ase_texcoord1.zw = 0;
  1404. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1405. float3 defaultVertexValue = v.vertex.xyz;
  1406. #else
  1407. float3 defaultVertexValue = float3(0, 0, 0);
  1408. #endif
  1409. float3 vertexValue = defaultVertexValue;
  1410. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1411. v.vertex.xyz = vertexValue;
  1412. #else
  1413. v.vertex.xyz += vertexValue;
  1414. #endif
  1415. v.ase_normal = v.ase_normal;
  1416. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  1417. float3 normalWS = TransformObjectToWorldNormal(v.ase_normal);
  1418. o.clipPos = TransformWorldToHClip(positionWS);
  1419. o.normalWS.xyz = normalWS;
  1420. return o;
  1421. }
  1422. #if defined(TESSELLATION_ON)
  1423. struct VertexControl
  1424. {
  1425. float4 vertex : INTERNALTESSPOS;
  1426. float3 ase_normal : NORMAL;
  1427. float4 ase_texcoord : TEXCOORD0;
  1428. float4 ase_texcoord1 : TEXCOORD1;
  1429. float4 ase_color : COLOR;
  1430. UNITY_VERTEX_INPUT_INSTANCE_ID
  1431. };
  1432. struct TessellationFactors
  1433. {
  1434. float edge[3] : SV_TessFactor;
  1435. float inside : SV_InsideTessFactor;
  1436. };
  1437. VertexControl vert ( VertexInput v )
  1438. {
  1439. VertexControl o;
  1440. UNITY_SETUP_INSTANCE_ID(v);
  1441. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1442. o.vertex = v.vertex;
  1443. o.ase_normal = v.ase_normal;
  1444. o.ase_texcoord = v.ase_texcoord;
  1445. o.ase_texcoord1 = v.ase_texcoord1;
  1446. o.ase_color = v.ase_color;
  1447. return o;
  1448. }
  1449. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  1450. {
  1451. TessellationFactors o;
  1452. float4 tf = 1;
  1453. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  1454. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  1455. #if defined(ASE_FIXED_TESSELLATION)
  1456. tf = FixedTess( tessValue );
  1457. #elif defined(ASE_DISTANCE_TESSELLATION)
  1458. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  1459. #elif defined(ASE_LENGTH_TESSELLATION)
  1460. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  1461. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  1462. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  1463. #endif
  1464. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  1465. return o;
  1466. }
  1467. [domain("tri")]
  1468. [partitioning("fractional_odd")]
  1469. [outputtopology("triangle_cw")]
  1470. [patchconstantfunc("TessellationFunction")]
  1471. [outputcontrolpoints(3)]
  1472. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  1473. {
  1474. return patch[id];
  1475. }
  1476. [domain("tri")]
  1477. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  1478. {
  1479. VertexInput o = (VertexInput) 0;
  1480. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  1481. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  1482. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  1483. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  1484. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  1485. #if defined(ASE_PHONG_TESSELLATION)
  1486. float3 pp[3];
  1487. for (int i = 0; i < 3; ++i)
  1488. 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));
  1489. float phongStrength = _TessPhongStrength;
  1490. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  1491. #endif
  1492. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  1493. return VertexFunction(o);
  1494. }
  1495. #else
  1496. VertexOutput vert ( VertexInput v )
  1497. {
  1498. return VertexFunction( v );
  1499. }
  1500. #endif
  1501. half4 frag(VertexOutput IN ) : SV_TARGET
  1502. {
  1503. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  1504. float2 uv_MainTex = IN.ase_texcoord1.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  1505. float2 appendResult23 = (float2(( _Uspeed * ( _TimeParameters.x ) ) , ( ( _TimeParameters.x ) * _Vspeed )));
  1506. float4 texCoord38 = IN.ase_texcoord2;
  1507. texCoord38.xy = IN.ase_texcoord2.xy * float2( 1,1 ) + float2( 0,0 );
  1508. float2 appendResult41 = (float2(texCoord38.z , texCoord38.w));
  1509. float2 lerpResult35 = lerp( ( uv_MainTex + appendResult23 ) , ( appendResult41 + uv_MainTex ) , round( _CustomDataSwitch ));
  1510. float4 break51 = ( tex2D( _MainTex, lerpResult35 ) * _MainTexChannel );
  1511. float clampResult53 = clamp( ( break51.r + break51.g + break51.b + break51.a ) , 0.0 , 1.0 );
  1512. float cos86 = cos( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  1513. float sin86 = sin( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  1514. float2 rotator86 = mul( IN.ase_texcoord1.xy - float2( 0.5,0.5 ) , float2x2( cos86 , -sin86 , sin86 , cos86 )) + float2( 0.5,0.5 );
  1515. float2 uv_Mask = IN.ase_texcoord1.xy * _Mask_ST.xy + _Mask_ST.zw;
  1516. float2 lerpResult89 = lerp( rotator86 , uv_Mask , round( _MaskTexRotationSwitch ));
  1517. float4 break78 = ( tex2D( _Mask, lerpResult89 ) * _MaskTexChannel );
  1518. float clampResult80 = clamp( ( break78.r + break78.g + break78.b + break78.a ) , 0.0 , 1.0 );
  1519. float clampResult55 = clamp( ( clampResult53 * clampResult80 * IN.ase_color.a ) , 0.0 , 1.0 );
  1520. surfaceDescription.Alpha = ( ( _Color.a * clampResult55 ) * _ca );
  1521. surfaceDescription.AlphaClipThreshold = 0.5;
  1522. #if _ALPHATEST_ON
  1523. clip(surfaceDescription.Alpha - surfaceDescription.AlphaClipThreshold);
  1524. #endif
  1525. #ifdef LOD_FADE_CROSSFADE
  1526. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  1527. #endif
  1528. float3 normalWS = IN.normalWS;
  1529. return half4(NormalizeNormalPerPixel(normalWS), 0.0);
  1530. }
  1531. ENDHLSL
  1532. }
  1533. Pass
  1534. {
  1535. Name "DepthNormalsOnly"
  1536. Tags { "LightMode"="DepthNormalsOnly" }
  1537. ZTest LEqual
  1538. ZWrite On
  1539. HLSLPROGRAM
  1540. #pragma multi_compile_instancing
  1541. #define _RECEIVE_SHADOWS_OFF 1
  1542. #define ASE_SRP_VERSION 999999
  1543. #pragma exclude_renderers glcore gles gles3
  1544. #pragma vertex vert
  1545. #pragma fragment frag
  1546. #define ATTRIBUTES_NEED_NORMAL
  1547. #define ATTRIBUTES_NEED_TANGENT
  1548. #define ATTRIBUTES_NEED_TEXCOORD1
  1549. #define VARYINGS_NEED_NORMAL_WS
  1550. #define VARYINGS_NEED_TANGENT_WS
  1551. #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY
  1552. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  1553. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  1554. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  1555. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  1556. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  1557. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  1558. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  1559. struct VertexInput
  1560. {
  1561. float4 vertex : POSITION;
  1562. float3 ase_normal : NORMAL;
  1563. float4 ase_texcoord : TEXCOORD0;
  1564. float4 ase_texcoord1 : TEXCOORD1;
  1565. float4 ase_color : COLOR;
  1566. UNITY_VERTEX_INPUT_INSTANCE_ID
  1567. };
  1568. struct VertexOutput
  1569. {
  1570. float4 clipPos : SV_POSITION;
  1571. float3 normalWS : TEXCOORD0;
  1572. float4 ase_texcoord1 : TEXCOORD1;
  1573. float4 ase_texcoord2 : TEXCOORD2;
  1574. float4 ase_color : COLOR;
  1575. UNITY_VERTEX_INPUT_INSTANCE_ID
  1576. UNITY_VERTEX_OUTPUT_STEREO
  1577. };
  1578. CBUFFER_START(UnityPerMaterial)
  1579. float4 _MainTex_ST;
  1580. float4 _MainTexChannel;
  1581. float4 _Mask_ST;
  1582. float4 _MaskTexChannel;
  1583. float4 _Color;
  1584. float _ColorPower;
  1585. float _Uspeed;
  1586. float _Vspeed;
  1587. float _CustomDataSwitch;
  1588. float _MaskTexRotation;
  1589. float _MaskTexRotationSwitch;
  1590. float _RampDirection;
  1591. float _RampPower;
  1592. float _ca;
  1593. #ifdef TESSELLATION_ON
  1594. float _TessPhongStrength;
  1595. float _TessValue;
  1596. float _TessMin;
  1597. float _TessMax;
  1598. float _TessEdgeLength;
  1599. float _TessMaxDisp;
  1600. #endif
  1601. CBUFFER_END
  1602. sampler2D _MainTex;
  1603. sampler2D _Mask;
  1604. struct SurfaceDescription
  1605. {
  1606. float Alpha;
  1607. float AlphaClipThreshold;
  1608. };
  1609. VertexOutput VertexFunction(VertexInput v )
  1610. {
  1611. VertexOutput o;
  1612. ZERO_INITIALIZE(VertexOutput, o);
  1613. UNITY_SETUP_INSTANCE_ID(v);
  1614. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1615. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  1616. o.ase_texcoord1.xy = v.ase_texcoord.xy;
  1617. o.ase_texcoord2 = v.ase_texcoord1;
  1618. o.ase_color = v.ase_color;
  1619. //setting value to unused interpolator channels and avoid initialization warnings
  1620. o.ase_texcoord1.zw = 0;
  1621. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1622. float3 defaultVertexValue = v.vertex.xyz;
  1623. #else
  1624. float3 defaultVertexValue = float3(0, 0, 0);
  1625. #endif
  1626. float3 vertexValue = defaultVertexValue;
  1627. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1628. v.vertex.xyz = vertexValue;
  1629. #else
  1630. v.vertex.xyz += vertexValue;
  1631. #endif
  1632. v.ase_normal = v.ase_normal;
  1633. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  1634. float3 normalWS = TransformObjectToWorldNormal(v.ase_normal);
  1635. o.clipPos = TransformWorldToHClip(positionWS);
  1636. o.normalWS.xyz = normalWS;
  1637. return o;
  1638. }
  1639. #if defined(TESSELLATION_ON)
  1640. struct VertexControl
  1641. {
  1642. float4 vertex : INTERNALTESSPOS;
  1643. float3 ase_normal : NORMAL;
  1644. float4 ase_texcoord : TEXCOORD0;
  1645. float4 ase_texcoord1 : TEXCOORD1;
  1646. float4 ase_color : COLOR;
  1647. UNITY_VERTEX_INPUT_INSTANCE_ID
  1648. };
  1649. struct TessellationFactors
  1650. {
  1651. float edge[3] : SV_TessFactor;
  1652. float inside : SV_InsideTessFactor;
  1653. };
  1654. VertexControl vert ( VertexInput v )
  1655. {
  1656. VertexControl o;
  1657. UNITY_SETUP_INSTANCE_ID(v);
  1658. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1659. o.vertex = v.vertex;
  1660. o.ase_normal = v.ase_normal;
  1661. o.ase_texcoord = v.ase_texcoord;
  1662. o.ase_texcoord1 = v.ase_texcoord1;
  1663. o.ase_color = v.ase_color;
  1664. return o;
  1665. }
  1666. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  1667. {
  1668. TessellationFactors o;
  1669. float4 tf = 1;
  1670. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  1671. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  1672. #if defined(ASE_FIXED_TESSELLATION)
  1673. tf = FixedTess( tessValue );
  1674. #elif defined(ASE_DISTANCE_TESSELLATION)
  1675. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  1676. #elif defined(ASE_LENGTH_TESSELLATION)
  1677. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  1678. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  1679. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  1680. #endif
  1681. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  1682. return o;
  1683. }
  1684. [domain("tri")]
  1685. [partitioning("fractional_odd")]
  1686. [outputtopology("triangle_cw")]
  1687. [patchconstantfunc("TessellationFunction")]
  1688. [outputcontrolpoints(3)]
  1689. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  1690. {
  1691. return patch[id];
  1692. }
  1693. [domain("tri")]
  1694. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  1695. {
  1696. VertexInput o = (VertexInput) 0;
  1697. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  1698. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  1699. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  1700. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  1701. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  1702. #if defined(ASE_PHONG_TESSELLATION)
  1703. float3 pp[3];
  1704. for (int i = 0; i < 3; ++i)
  1705. 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));
  1706. float phongStrength = _TessPhongStrength;
  1707. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  1708. #endif
  1709. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  1710. return VertexFunction(o);
  1711. }
  1712. #else
  1713. VertexOutput vert ( VertexInput v )
  1714. {
  1715. return VertexFunction( v );
  1716. }
  1717. #endif
  1718. half4 frag(VertexOutput IN ) : SV_TARGET
  1719. {
  1720. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  1721. float2 uv_MainTex = IN.ase_texcoord1.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  1722. float2 appendResult23 = (float2(( _Uspeed * ( _TimeParameters.x ) ) , ( ( _TimeParameters.x ) * _Vspeed )));
  1723. float4 texCoord38 = IN.ase_texcoord2;
  1724. texCoord38.xy = IN.ase_texcoord2.xy * float2( 1,1 ) + float2( 0,0 );
  1725. float2 appendResult41 = (float2(texCoord38.z , texCoord38.w));
  1726. float2 lerpResult35 = lerp( ( uv_MainTex + appendResult23 ) , ( appendResult41 + uv_MainTex ) , round( _CustomDataSwitch ));
  1727. float4 break51 = ( tex2D( _MainTex, lerpResult35 ) * _MainTexChannel );
  1728. float clampResult53 = clamp( ( break51.r + break51.g + break51.b + break51.a ) , 0.0 , 1.0 );
  1729. float cos86 = cos( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  1730. float sin86 = sin( (0.0 + (_MaskTexRotation - 0.0) * (( 2.0 * PI ) - 0.0) / (1.0 - 0.0)) );
  1731. float2 rotator86 = mul( IN.ase_texcoord1.xy - float2( 0.5,0.5 ) , float2x2( cos86 , -sin86 , sin86 , cos86 )) + float2( 0.5,0.5 );
  1732. float2 uv_Mask = IN.ase_texcoord1.xy * _Mask_ST.xy + _Mask_ST.zw;
  1733. float2 lerpResult89 = lerp( rotator86 , uv_Mask , round( _MaskTexRotationSwitch ));
  1734. float4 break78 = ( tex2D( _Mask, lerpResult89 ) * _MaskTexChannel );
  1735. float clampResult80 = clamp( ( break78.r + break78.g + break78.b + break78.a ) , 0.0 , 1.0 );
  1736. float clampResult55 = clamp( ( clampResult53 * clampResult80 * IN.ase_color.a ) , 0.0 , 1.0 );
  1737. surfaceDescription.Alpha = ( ( _Color.a * clampResult55 ) * _ca );
  1738. surfaceDescription.AlphaClipThreshold = 0.5;
  1739. #if _ALPHATEST_ON
  1740. clip(surfaceDescription.Alpha - surfaceDescription.AlphaClipThreshold);
  1741. #endif
  1742. #ifdef LOD_FADE_CROSSFADE
  1743. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  1744. #endif
  1745. float3 normalWS = IN.normalWS;
  1746. return half4(NormalizeNormalPerPixel(normalWS), 0.0);
  1747. }
  1748. ENDHLSL
  1749. }
  1750. }
  1751. CustomEditor "UnityEditor.ShaderGraphUnlitGUI"
  1752. Fallback "Hidden/InternalErrorShader"
  1753. }
  1754. /*ASEBEGIN
  1755. Version=18935
  1756. -223.3333;127.3333;1575.333;794.3334;-2357.476;-762.2515;1;True;False
  1757. Node;AmplifyShaderEditor.CommentaryNode;48;-1450.424,698.5424;Inherit;False;835.1003;568.074;Comment;8;23;24;26;27;30;25;28;29;数值控制uv 滚动;1,1,1,1;0;0
  1758. Node;AmplifyShaderEditor.CommentaryNode;81;-2453.245,2019.113;Inherit;False;1046.395;895.5822;;9;89;86;90;88;87;84;85;82;83;mask贴图可旋转;1,1,1,1;0;0
  1759. Node;AmplifyShaderEditor.CommentaryNode;47;-1460.596,1350.53;Inherit;False;808.6021;543.3561;Comment;6;41;38;44;45;46;37;数据流控制 uv 滚动;1,1,1,1;0;0
  1760. Node;AmplifyShaderEditor.RangedFloatNode;25;-1366.624,864.3157;Inherit;False;Property;_Uspeed;Uspeed;4;0;Create;True;0;0;0;False;0;False;0.5;0;0;0;0;1;FLOAT;0
  1761. Node;AmplifyShaderEditor.RangedFloatNode;28;-1358.825,1151.616;Inherit;False;Property;_Vspeed;Vspeed;5;0;Create;True;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0
  1762. Node;AmplifyShaderEditor.TimeNode;26;-1400.424,952.7159;Inherit;False;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  1763. Node;AmplifyShaderEditor.RangedFloatNode;83;-2384.245,2293.984;Inherit;False;Property;_MaskTexRotation;mask贴图旋转;13;0;Create;False;0;0;0;False;0;False;0;0;0;1;0;1;FLOAT;0
  1764. Node;AmplifyShaderEditor.PiNode;82;-2313.319,2452.113;Inherit;False;1;0;FLOAT;2;False;1;FLOAT;0
  1765. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;24;-1106.624,905.9157;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
  1766. Node;AmplifyShaderEditor.TextureCoordinatesNode;38;-1410.596,1400.53;Inherit;False;1;-1;4;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  1767. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;27;-1118.325,1077.516;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
  1768. Node;AmplifyShaderEditor.DynamicAppendNode;23;-972.7241,994.316;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0
  1769. Node;AmplifyShaderEditor.TextureCoordinatesNode;45;-1169.235,1596.491;Inherit;False;0;33;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
  1770. Node;AmplifyShaderEditor.RangedFloatNode;37;-1195.987,1782.041;Inherit;False;Property;_CustomDataSwitch;CustomDataSwitch;14;0;Create;True;0;0;0;False;0;False;1;1;0;1;0;1;FLOAT;0
  1771. Node;AmplifyShaderEditor.DynamicAppendNode;41;-1144.889,1425.48;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0
  1772. Node;AmplifyShaderEditor.TexCoordVertexDataNode;85;-2142.319,2069.113;Inherit;False;0;2;0;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  1773. Node;AmplifyShaderEditor.RangedFloatNode;87;-2194.457,2826.468;Inherit;False;Property;_MaskTexRotationSwitch;MaskUV旋转开关;12;0;Create;False;0;0;0;False;0;False;0;0;0;1;0;1;FLOAT;0
  1774. Node;AmplifyShaderEditor.TextureCoordinatesNode;29;-1024.193,748.5424;Inherit;False;0;33;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
  1775. Node;AmplifyShaderEditor.TFHCRemapNode;84;-2073.319,2282.113;Inherit;True;5;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;1;False;3;FLOAT;0;False;4;FLOAT;1;False;1;FLOAT;0
  1776. Node;AmplifyShaderEditor.RoundOpNode;46;-803.9938,1629.041;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
  1777. Node;AmplifyShaderEditor.RoundOpNode;88;-1877.157,2820.768;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
  1778. Node;AmplifyShaderEditor.TextureCoordinatesNode;90;-1903.757,2642.167;Inherit;False;0;31;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
  1779. Node;AmplifyShaderEditor.SimpleAddOpNode;44;-945.338,1427.853;Inherit;False;2;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT2;0
  1780. Node;AmplifyShaderEditor.SimpleAddOpNode;30;-767.3234,869.7328;Inherit;False;2;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT2;0
  1781. Node;AmplifyShaderEditor.RotatorNode;86;-1787.218,2098.527;Inherit;True;3;0;FLOAT2;0,0;False;1;FLOAT2;0.5,0.5;False;2;FLOAT;0;False;1;FLOAT2;0
  1782. Node;AmplifyShaderEditor.CommentaryNode;56;-634.0116,2002.491;Inherit;False;1552.253;829.8534;Comment;9;80;79;78;77;76;31;55;34;54;不透明;1,1,1,1;0;0
  1783. Node;AmplifyShaderEditor.CommentaryNode;74;-402,798;Inherit;False;2590.658;545;Comment;14;33;49;50;51;52;53;58;57;61;59;60;62;63;64;ramp;1,1,1,1;0;0
  1784. Node;AmplifyShaderEditor.LerpOp;35;-513.73,1243.171;Inherit;False;3;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;1;FLOAT2;0
  1785. Node;AmplifyShaderEditor.LerpOp;89;-1554.158,2615.566;Inherit;False;3;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;1;FLOAT2;0
  1786. Node;AmplifyShaderEditor.Vector4Node;76;-477.162,2277.381;Inherit;False;Property;_MaskTexChannel;mask通道选择;11;0;Create;False;0;0;0;False;0;False;1,0,0,0;1,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  1787. Node;AmplifyShaderEditor.SamplerNode;31;-580.1746,2052.491;Inherit;True;Property;_Mask;Mask;10;0;Create;True;0;0;0;False;0;False;-1;None;b1a99f53a79a26d478493f52ad2049b6;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
  1788. Node;AmplifyShaderEditor.Vector4Node;49;-224,1136;Inherit;False;Property;_MainTexChannel;通道选择;3;0;Create;False;0;0;0;False;0;False;1,0,0,0;0,0,0,1;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  1789. Node;AmplifyShaderEditor.SamplerNode;33;-352,848;Inherit;True;Property;_MainTex;MainTex;2;0;Create;True;0;0;0;False;0;False;-1;None;759295542dca9d54d8cc62e7426c8368;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
  1790. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;77;-285.8549,2166.243;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;1;COLOR;0
  1791. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;50;48,960;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;1;COLOR;0
  1792. Node;AmplifyShaderEditor.BreakToComponentsNode;78;-134.2965,2170.08;Inherit;False;COLOR;1;0;COLOR;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15
  1793. Node;AmplifyShaderEditor.BreakToComponentsNode;51;206.0815,944;Inherit;False;COLOR;1;0;COLOR;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15
  1794. Node;AmplifyShaderEditor.SimpleAddOpNode;79;28.77283,2156.65;Inherit;False;4;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT;0
  1795. Node;AmplifyShaderEditor.SimpleAddOpNode;52;368,944;Inherit;False;4;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT;0
  1796. Node;AmplifyShaderEditor.ClampOpNode;53;528,944;Inherit;False;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;1;False;1;FLOAT;0
  1797. Node;AmplifyShaderEditor.ClampOpNode;80;209.1081,2139.385;Inherit;False;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;1;False;1;FLOAT;0
  1798. Node;AmplifyShaderEditor.VertexColorNode;54;194.6591,2350.927;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  1799. Node;AmplifyShaderEditor.CommentaryNode;75;2322.817,428.2032;Inherit;False;1095.358;755.5518;Comment;6;71;65;67;70;72;73;color;1,1,1,1;0;0
  1800. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;34;446.1128,2063.786;Inherit;True;3;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;1;FLOAT;0
  1801. Node;AmplifyShaderEditor.ClampOpNode;55;746.9085,2110.741;Inherit;False;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;1;False;1;FLOAT;0
  1802. Node;AmplifyShaderEditor.ColorNode;67;2607.971,956.2474;Inherit;False;Property;_Color;Color;1;1;[HDR];Create;True;0;0;0;False;0;False;1,1,1,1;0.509434,0,0.004134934,1;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  1803. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;91;3089.668,1374.459;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
  1804. Node;AmplifyShaderEditor.RangedFloatNode;92;3431.476,1420.918;Inherit;False;Property;_ca;_ca;6;0;Create;True;0;0;0;False;0;False;1;1;0;0;0;1;FLOAT;0
  1805. Node;AmplifyShaderEditor.OneMinusNode;59;1136,992;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
  1806. Node;AmplifyShaderEditor.OneMinusNode;62;1536,960;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
  1807. Node;AmplifyShaderEditor.SamplerNode;64;1867.992,926.2059;Inherit;True;Property;_Ramp;Ramp;7;0;Create;True;0;0;0;False;0;False;-1;None;b2e6fd8994d94624ca419c336d6dcb96;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
  1808. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;71;3254.842,750.3658;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
  1809. Node;AmplifyShaderEditor.PowerNode;60;1328,1008;Inherit;False;False;2;0;FLOAT;0;False;1;FLOAT;1;False;1;FLOAT;0
  1810. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;93;3578.476,1324.918;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
  1811. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;65;2901.872,807.5752;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
  1812. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;70;2952.517,626.8705;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT;0;False;1;COLOR;0
  1813. Node;AmplifyShaderEditor.RangedFloatNode;58;608,1136;Inherit;False;Property;_RampDirection;RampDirection ;9;0;Create;True;0;0;0;False;0;False;0;0.513;0;1;0;1;FLOAT;0
  1814. Node;AmplifyShaderEditor.RangedFloatNode;73;2387.812,680.6241;Inherit;False;Property;_ColorPower;ColorPower;0;0;Create;True;0;0;0;False;0;False;1;10;0;80;0;1;FLOAT;0
  1815. Node;AmplifyShaderEditor.VertexColorNode;72;2660.44,478.2032;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  1816. Node;AmplifyShaderEditor.DynamicAppendNode;63;1704.643,993.3182;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0
  1817. Node;AmplifyShaderEditor.RangedFloatNode;61;1008,1184;Inherit;False;Property;_RampPower;RampPower;8;0;Create;True;0;0;0;False;0;False;0.2;3.37;0.2;8;0;1;FLOAT;0
  1818. Node;AmplifyShaderEditor.LerpOp;57;944,976;Inherit;False;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;1;FLOAT;0
  1819. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;0;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;3;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
  1820. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;2;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;3;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
  1821. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;1;3649.778,798.0112;Float;False;True;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;3;LT/AlphaUVMoveRamp;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;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=Transparent=RenderType;Queue=Transparent=Queue=0;True;2;True;8;d3d9;d3d11;glcore;gles;gles3;metal;vulkan;nomrt;0;False;True;1;5;False;-1;10;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;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;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;637805797220356835; Blend;0;0;Two Sided;0;637806821003477752;Cast Shadows;0;637805797227309104; Use Shadow Threshold;0;0;Receive Shadows;0;637805797239485842;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
  1822. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;6;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;3;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
  1823. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;5;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;3;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;5;False;-1;10;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;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;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
  1824. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;3;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;3;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
  1825. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;8;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;3;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
  1826. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;4;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;3;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
  1827. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;7;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;3;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
  1828. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;9;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;3;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
  1829. WireConnection;24;0;25;0
  1830. WireConnection;24;1;26;2
  1831. WireConnection;27;0;26;2
  1832. WireConnection;27;1;28;0
  1833. WireConnection;23;0;24;0
  1834. WireConnection;23;1;27;0
  1835. WireConnection;41;0;38;3
  1836. WireConnection;41;1;38;4
  1837. WireConnection;84;0;83;0
  1838. WireConnection;84;4;82;0
  1839. WireConnection;46;0;37;0
  1840. WireConnection;88;0;87;0
  1841. WireConnection;44;0;41;0
  1842. WireConnection;44;1;45;0
  1843. WireConnection;30;0;29;0
  1844. WireConnection;30;1;23;0
  1845. WireConnection;86;0;85;0
  1846. WireConnection;86;2;84;0
  1847. WireConnection;35;0;30;0
  1848. WireConnection;35;1;44;0
  1849. WireConnection;35;2;46;0
  1850. WireConnection;89;0;86;0
  1851. WireConnection;89;1;90;0
  1852. WireConnection;89;2;88;0
  1853. WireConnection;31;1;89;0
  1854. WireConnection;33;1;35;0
  1855. WireConnection;77;0;31;0
  1856. WireConnection;77;1;76;0
  1857. WireConnection;50;0;33;0
  1858. WireConnection;50;1;49;0
  1859. WireConnection;78;0;77;0
  1860. WireConnection;51;0;50;0
  1861. WireConnection;79;0;78;0
  1862. WireConnection;79;1;78;1
  1863. WireConnection;79;2;78;2
  1864. WireConnection;79;3;78;3
  1865. WireConnection;52;0;51;0
  1866. WireConnection;52;1;51;1
  1867. WireConnection;52;2;51;2
  1868. WireConnection;52;3;51;3
  1869. WireConnection;53;0;52;0
  1870. WireConnection;80;0;79;0
  1871. WireConnection;34;0;53;0
  1872. WireConnection;34;1;80;0
  1873. WireConnection;34;2;54;4
  1874. WireConnection;55;0;34;0
  1875. WireConnection;91;0;67;4
  1876. WireConnection;91;1;55;0
  1877. WireConnection;59;0;57;0
  1878. WireConnection;62;0;60;0
  1879. WireConnection;64;1;63;0
  1880. WireConnection;71;0;70;0
  1881. WireConnection;71;1;65;0
  1882. WireConnection;60;0;59;0
  1883. WireConnection;60;1;61;0
  1884. WireConnection;93;0;91;0
  1885. WireConnection;93;1;92;0
  1886. WireConnection;65;0;64;0
  1887. WireConnection;65;1;67;0
  1888. WireConnection;70;0;72;0
  1889. WireConnection;70;1;73;0
  1890. WireConnection;63;0;62;0
  1891. WireConnection;57;0;53;0
  1892. WireConnection;57;1;55;0
  1893. WireConnection;57;2;58;0
  1894. WireConnection;1;2;71;0
  1895. WireConnection;1;3;93;0
  1896. ASEEND*/
  1897. //CHKSM=74D26506EC9924967202D778DF4C1752D78039E1