shuimoSankai.shader 66 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698
  1. // Made with Amplify Shader Editor v1.9.1.5
  2. // Available at the Unity Asset Store - http://u3d.as/y3X
  3. Shader "shuimoSankai"
  4. {
  5. Properties
  6. {
  7. [HideInInspector] _AlphaCutoff("Alpha Cutoff ", Range(0, 1)) = 0.5
  8. [HideInInspector] _EmissionColor("Emission Color", Color) = (1,1,1,1)
  9. [ASEBegin]_MainTex("主贴图", 2D) = "white" {}
  10. _mokuaiTex("mokuai", 2D) = "white" {}
  11. [ASEEnd]_mask("mask", 2D) = "white" {}
  12. [HideInInspector] _texcoord( "", 2D ) = "white" {}
  13. //_TessPhongStrength( "Tess Phong Strength", Range( 0, 1 ) ) = 0.5
  14. //_TessValue( "Tess Max Tessellation", Range( 1, 32 ) ) = 16
  15. //_TessMin( "Tess Min Distance", Float ) = 10
  16. //_TessMax( "Tess Max Distance", Float ) = 25
  17. //_TessEdgeLength ( "Tess Edge length", Range( 2, 50 ) ) = 16
  18. //_TessMaxDisp( "Tess Max Displacement", Float ) = 25
  19. [HideInInspector] _QueueOffset("_QueueOffset", Float) = 0
  20. [HideInInspector] _QueueControl("_QueueControl", Float) = -1
  21. [HideInInspector][NoScaleOffset] unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {}
  22. [HideInInspector][NoScaleOffset] unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {}
  23. [HideInInspector][NoScaleOffset] unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {}
  24. }
  25. SubShader
  26. {
  27. LOD 0
  28. Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Transparent" "Queue"="Transparent" "UniversalMaterialType"="Unlit" }
  29. Cull Off
  30. AlphaToMask Off
  31. HLSLINCLUDE
  32. #pragma target 3.5
  33. #pragma prefer_hlslcc gles
  34. // ensure rendering platforms toggle list is visible
  35. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
  36. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Filtering.hlsl"
  37. #ifndef ASE_TESS_FUNCS
  38. #define ASE_TESS_FUNCS
  39. float4 FixedTess( float tessValue )
  40. {
  41. return tessValue;
  42. }
  43. float CalcDistanceTessFactor (float4 vertex, float minDist, float maxDist, float tess, float4x4 o2w, float3 cameraPos )
  44. {
  45. float3 wpos = mul(o2w,vertex).xyz;
  46. float dist = distance (wpos, cameraPos);
  47. float f = clamp(1.0 - (dist - minDist) / (maxDist - minDist), 0.01, 1.0) * tess;
  48. return f;
  49. }
  50. float4 CalcTriEdgeTessFactors (float3 triVertexFactors)
  51. {
  52. float4 tess;
  53. tess.x = 0.5 * (triVertexFactors.y + triVertexFactors.z);
  54. tess.y = 0.5 * (triVertexFactors.x + triVertexFactors.z);
  55. tess.z = 0.5 * (triVertexFactors.x + triVertexFactors.y);
  56. tess.w = (triVertexFactors.x + triVertexFactors.y + triVertexFactors.z) / 3.0f;
  57. return tess;
  58. }
  59. float CalcEdgeTessFactor (float3 wpos0, float3 wpos1, float edgeLen, float3 cameraPos, float4 scParams )
  60. {
  61. float dist = distance (0.5 * (wpos0+wpos1), cameraPos);
  62. float len = distance(wpos0, wpos1);
  63. float f = max(len * scParams.y / (edgeLen * dist), 1.0);
  64. return f;
  65. }
  66. float DistanceFromPlane (float3 pos, float4 plane)
  67. {
  68. float d = dot (float4(pos,1.0f), plane);
  69. return d;
  70. }
  71. bool WorldViewFrustumCull (float3 wpos0, float3 wpos1, float3 wpos2, float cullEps, float4 planes[6] )
  72. {
  73. float4 planeTest;
  74. planeTest.x = (( DistanceFromPlane(wpos0, planes[0]) > -cullEps) ? 1.0f : 0.0f ) +
  75. (( DistanceFromPlane(wpos1, planes[0]) > -cullEps) ? 1.0f : 0.0f ) +
  76. (( DistanceFromPlane(wpos2, planes[0]) > -cullEps) ? 1.0f : 0.0f );
  77. planeTest.y = (( DistanceFromPlane(wpos0, planes[1]) > -cullEps) ? 1.0f : 0.0f ) +
  78. (( DistanceFromPlane(wpos1, planes[1]) > -cullEps) ? 1.0f : 0.0f ) +
  79. (( DistanceFromPlane(wpos2, planes[1]) > -cullEps) ? 1.0f : 0.0f );
  80. planeTest.z = (( DistanceFromPlane(wpos0, planes[2]) > -cullEps) ? 1.0f : 0.0f ) +
  81. (( DistanceFromPlane(wpos1, planes[2]) > -cullEps) ? 1.0f : 0.0f ) +
  82. (( DistanceFromPlane(wpos2, planes[2]) > -cullEps) ? 1.0f : 0.0f );
  83. planeTest.w = (( DistanceFromPlane(wpos0, planes[3]) > -cullEps) ? 1.0f : 0.0f ) +
  84. (( DistanceFromPlane(wpos1, planes[3]) > -cullEps) ? 1.0f : 0.0f ) +
  85. (( DistanceFromPlane(wpos2, planes[3]) > -cullEps) ? 1.0f : 0.0f );
  86. return !all (planeTest);
  87. }
  88. float4 DistanceBasedTess( float4 v0, float4 v1, float4 v2, float tess, float minDist, float maxDist, float4x4 o2w, float3 cameraPos )
  89. {
  90. float3 f;
  91. f.x = CalcDistanceTessFactor (v0,minDist,maxDist,tess,o2w,cameraPos);
  92. f.y = CalcDistanceTessFactor (v1,minDist,maxDist,tess,o2w,cameraPos);
  93. f.z = CalcDistanceTessFactor (v2,minDist,maxDist,tess,o2w,cameraPos);
  94. return CalcTriEdgeTessFactors (f);
  95. }
  96. float4 EdgeLengthBasedTess( float4 v0, float4 v1, float4 v2, float edgeLength, float4x4 o2w, float3 cameraPos, float4 scParams )
  97. {
  98. float3 pos0 = mul(o2w,v0).xyz;
  99. float3 pos1 = mul(o2w,v1).xyz;
  100. float3 pos2 = mul(o2w,v2).xyz;
  101. float4 tess;
  102. tess.x = CalcEdgeTessFactor (pos1, pos2, edgeLength, cameraPos, scParams);
  103. tess.y = CalcEdgeTessFactor (pos2, pos0, edgeLength, cameraPos, scParams);
  104. tess.z = CalcEdgeTessFactor (pos0, pos1, edgeLength, cameraPos, scParams);
  105. tess.w = (tess.x + tess.y + tess.z) / 3.0f;
  106. return tess;
  107. }
  108. float4 EdgeLengthBasedTessCull( float4 v0, float4 v1, float4 v2, float edgeLength, float maxDisplacement, float4x4 o2w, float3 cameraPos, float4 scParams, float4 planes[6] )
  109. {
  110. float3 pos0 = mul(o2w,v0).xyz;
  111. float3 pos1 = mul(o2w,v1).xyz;
  112. float3 pos2 = mul(o2w,v2).xyz;
  113. float4 tess;
  114. if (WorldViewFrustumCull(pos0, pos1, pos2, maxDisplacement, planes))
  115. {
  116. tess = 0.0f;
  117. }
  118. else
  119. {
  120. tess.x = CalcEdgeTessFactor (pos1, pos2, edgeLength, cameraPos, scParams);
  121. tess.y = CalcEdgeTessFactor (pos2, pos0, edgeLength, cameraPos, scParams);
  122. tess.z = CalcEdgeTessFactor (pos0, pos1, edgeLength, cameraPos, scParams);
  123. tess.w = (tess.x + tess.y + tess.z) / 3.0f;
  124. }
  125. return tess;
  126. }
  127. #endif //ASE_TESS_FUNCS
  128. ENDHLSL
  129. Pass
  130. {
  131. Name "Forward"
  132. Tags { "LightMode"="UniversalForwardOnly" }
  133. Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha
  134. ZWrite Off
  135. ZTest LEqual
  136. Offset 0 , 0
  137. ColorMask RGBA
  138. HLSLPROGRAM
  139. #pragma multi_compile_instancing
  140. #define _RECEIVE_SHADOWS_OFF 1
  141. #define _SURFACE_TYPE_TRANSPARENT 1
  142. #define ASE_SRP_VERSION 120108
  143. #pragma multi_compile _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3
  144. #pragma multi_compile _ LIGHTMAP_ON
  145. #pragma multi_compile _ DIRLIGHTMAP_COMBINED
  146. #pragma shader_feature _ _SAMPLE_GI
  147. #pragma multi_compile _ DEBUG_DISPLAY
  148. #pragma vertex vert
  149. #pragma fragment frag
  150. #define SHADERPASS SHADERPASS_UNLIT
  151. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  152. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  153. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  154. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  155. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  156. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  157. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"
  158. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  159. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging3D.hlsl"
  160. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
  161. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceData.hlsl"
  162. #define ASE_NEEDS_FRAG_COLOR
  163. struct VertexInput
  164. {
  165. float4 vertex : POSITION;
  166. float3 ase_normal : NORMAL;
  167. float4 ase_color : COLOR;
  168. float4 ase_texcoord : TEXCOORD0;
  169. float4 ase_texcoord1 : TEXCOORD1;
  170. UNITY_VERTEX_INPUT_INSTANCE_ID
  171. };
  172. struct VertexOutput
  173. {
  174. float4 clipPos : SV_POSITION;
  175. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  176. float3 worldPos : TEXCOORD0;
  177. #endif
  178. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  179. float4 shadowCoord : TEXCOORD1;
  180. #endif
  181. #ifdef ASE_FOG
  182. float fogFactor : TEXCOORD2;
  183. #endif
  184. float4 ase_color : COLOR;
  185. float4 ase_texcoord3 : TEXCOORD3;
  186. float4 ase_texcoord4 : TEXCOORD4;
  187. UNITY_VERTEX_INPUT_INSTANCE_ID
  188. UNITY_VERTEX_OUTPUT_STEREO
  189. };
  190. CBUFFER_START(UnityPerMaterial)
  191. float4 _MainTex_ST;
  192. float4 _mokuaiTex_ST;
  193. float4 _mask_ST;
  194. #ifdef ASE_TESSELLATION
  195. float _TessPhongStrength;
  196. float _TessValue;
  197. float _TessMin;
  198. float _TessMax;
  199. float _TessEdgeLength;
  200. float _TessMaxDisp;
  201. #endif
  202. CBUFFER_END
  203. sampler2D _MainTex;
  204. sampler2D _mokuaiTex;
  205. sampler2D _mask;
  206. VertexOutput VertexFunction ( VertexInput v )
  207. {
  208. VertexOutput o = (VertexOutput)0;
  209. UNITY_SETUP_INSTANCE_ID(v);
  210. UNITY_TRANSFER_INSTANCE_ID(v, o);
  211. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  212. o.ase_color = v.ase_color;
  213. o.ase_texcoord3.xy = v.ase_texcoord.xy;
  214. o.ase_texcoord4 = v.ase_texcoord1;
  215. //setting value to unused interpolator channels and avoid initialization warnings
  216. o.ase_texcoord3.zw = 0;
  217. #ifdef ASE_ABSOLUTE_VERTEX_POS
  218. float3 defaultVertexValue = v.vertex.xyz;
  219. #else
  220. float3 defaultVertexValue = float3(0, 0, 0);
  221. #endif
  222. float3 vertexValue = defaultVertexValue;
  223. #ifdef ASE_ABSOLUTE_VERTEX_POS
  224. v.vertex.xyz = vertexValue;
  225. #else
  226. v.vertex.xyz += vertexValue;
  227. #endif
  228. v.ase_normal = v.ase_normal;
  229. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  230. float4 positionCS = TransformWorldToHClip( positionWS );
  231. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  232. o.worldPos = positionWS;
  233. #endif
  234. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  235. VertexPositionInputs vertexInput = (VertexPositionInputs)0;
  236. vertexInput.positionWS = positionWS;
  237. vertexInput.positionCS = positionCS;
  238. o.shadowCoord = GetShadowCoord( vertexInput );
  239. #endif
  240. #ifdef ASE_FOG
  241. o.fogFactor = ComputeFogFactor( positionCS.z );
  242. #endif
  243. o.clipPos = positionCS;
  244. return o;
  245. }
  246. #if defined(ASE_TESSELLATION)
  247. struct VertexControl
  248. {
  249. float4 vertex : INTERNALTESSPOS;
  250. float3 ase_normal : NORMAL;
  251. float4 ase_color : COLOR;
  252. float4 ase_texcoord : TEXCOORD0;
  253. float4 ase_texcoord1 : TEXCOORD1;
  254. UNITY_VERTEX_INPUT_INSTANCE_ID
  255. };
  256. struct TessellationFactors
  257. {
  258. float edge[3] : SV_TessFactor;
  259. float inside : SV_InsideTessFactor;
  260. };
  261. VertexControl vert ( VertexInput v )
  262. {
  263. VertexControl o;
  264. UNITY_SETUP_INSTANCE_ID(v);
  265. UNITY_TRANSFER_INSTANCE_ID(v, o);
  266. o.vertex = v.vertex;
  267. o.ase_normal = v.ase_normal;
  268. o.ase_color = v.ase_color;
  269. o.ase_texcoord = v.ase_texcoord;
  270. o.ase_texcoord1 = v.ase_texcoord1;
  271. return o;
  272. }
  273. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  274. {
  275. TessellationFactors o;
  276. float4 tf = 1;
  277. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  278. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  279. #if defined(ASE_FIXED_TESSELLATION)
  280. tf = FixedTess( tessValue );
  281. #elif defined(ASE_DISTANCE_TESSELLATION)
  282. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  283. #elif defined(ASE_LENGTH_TESSELLATION)
  284. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  285. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  286. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  287. #endif
  288. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  289. return o;
  290. }
  291. [domain("tri")]
  292. [partitioning("fractional_odd")]
  293. [outputtopology("triangle_cw")]
  294. [patchconstantfunc("TessellationFunction")]
  295. [outputcontrolpoints(3)]
  296. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  297. {
  298. return patch[id];
  299. }
  300. [domain("tri")]
  301. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  302. {
  303. VertexInput o = (VertexInput) 0;
  304. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  305. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  306. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  307. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  308. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  309. #if defined(ASE_PHONG_TESSELLATION)
  310. float3 pp[3];
  311. for (int i = 0; i < 3; ++i)
  312. 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));
  313. float phongStrength = _TessPhongStrength;
  314. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  315. #endif
  316. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  317. return VertexFunction(o);
  318. }
  319. #else
  320. VertexOutput vert ( VertexInput v )
  321. {
  322. return VertexFunction( v );
  323. }
  324. #endif
  325. half4 frag ( VertexOutput IN ) : SV_Target
  326. {
  327. UNITY_SETUP_INSTANCE_ID( IN );
  328. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
  329. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  330. float3 WorldPosition = IN.worldPos;
  331. #endif
  332. float4 ShadowCoords = float4( 0, 0, 0, 0 );
  333. #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  334. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
  335. ShadowCoords = IN.shadowCoord;
  336. #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
  337. ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
  338. #endif
  339. #endif
  340. float2 uv_MainTex = IN.ase_texcoord3.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  341. float4 texCoord20 = IN.ase_texcoord4;
  342. texCoord20.xy = IN.ase_texcoord4.xy * float2( 1,1 ) + float2( 0,0 );
  343. float2 appendResult21 = (float2(texCoord20.z , texCoord20.w));
  344. float2 uv_mokuaiTex = IN.ase_texcoord3.xy * _mokuaiTex_ST.xy + _mokuaiTex_ST.zw;
  345. float2 uv_mask = IN.ase_texcoord3.xy * _mask_ST.xy + _mask_ST.zw;
  346. float3 BakedAlbedo = 0;
  347. float3 BakedEmission = 0;
  348. float3 Color = IN.ase_color.rgb;
  349. float Alpha = ( IN.ase_color.a * ( tex2D( _MainTex, ( uv_MainTex + appendResult21 ) ).r * ( tex2D( _mokuaiTex, uv_mokuaiTex ).r * tex2D( _mask, uv_mask ).r ) ) );
  350. float AlphaClipThreshold = 0.5;
  351. float AlphaClipThresholdShadow = 0.5;
  352. #ifdef _ALPHATEST_ON
  353. clip( Alpha - AlphaClipThreshold );
  354. #endif
  355. #if defined(_DBUFFER)
  356. ApplyDecalToBaseColor(IN.clipPos, Color);
  357. #endif
  358. #if defined(_ALPHAPREMULTIPLY_ON)
  359. Color *= Alpha;
  360. #endif
  361. #ifdef LOD_FADE_CROSSFADE
  362. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  363. #endif
  364. #ifdef ASE_FOG
  365. Color = MixFog( Color, IN.fogFactor );
  366. #endif
  367. return half4( Color, Alpha );
  368. }
  369. ENDHLSL
  370. }
  371. Pass
  372. {
  373. Name "DepthOnly"
  374. Tags { "LightMode"="DepthOnly" }
  375. ZWrite On
  376. ColorMask 0
  377. AlphaToMask Off
  378. HLSLPROGRAM
  379. #pragma multi_compile_instancing
  380. #define _RECEIVE_SHADOWS_OFF 1
  381. #define _SURFACE_TYPE_TRANSPARENT 1
  382. #define ASE_SRP_VERSION 120108
  383. #pragma vertex vert
  384. #pragma fragment frag
  385. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  386. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  387. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  388. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  389. struct VertexInput
  390. {
  391. float4 vertex : POSITION;
  392. float3 ase_normal : NORMAL;
  393. float4 ase_color : COLOR;
  394. float4 ase_texcoord : TEXCOORD0;
  395. float4 ase_texcoord1 : TEXCOORD1;
  396. UNITY_VERTEX_INPUT_INSTANCE_ID
  397. };
  398. struct VertexOutput
  399. {
  400. float4 clipPos : SV_POSITION;
  401. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  402. float3 worldPos : TEXCOORD0;
  403. #endif
  404. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  405. float4 shadowCoord : TEXCOORD1;
  406. #endif
  407. float4 ase_color : COLOR;
  408. float4 ase_texcoord2 : TEXCOORD2;
  409. float4 ase_texcoord3 : TEXCOORD3;
  410. UNITY_VERTEX_INPUT_INSTANCE_ID
  411. UNITY_VERTEX_OUTPUT_STEREO
  412. };
  413. CBUFFER_START(UnityPerMaterial)
  414. float4 _MainTex_ST;
  415. float4 _mokuaiTex_ST;
  416. float4 _mask_ST;
  417. #ifdef ASE_TESSELLATION
  418. float _TessPhongStrength;
  419. float _TessValue;
  420. float _TessMin;
  421. float _TessMax;
  422. float _TessEdgeLength;
  423. float _TessMaxDisp;
  424. #endif
  425. CBUFFER_END
  426. sampler2D _MainTex;
  427. sampler2D _mokuaiTex;
  428. sampler2D _mask;
  429. VertexOutput VertexFunction( VertexInput v )
  430. {
  431. VertexOutput o = (VertexOutput)0;
  432. UNITY_SETUP_INSTANCE_ID(v);
  433. UNITY_TRANSFER_INSTANCE_ID(v, o);
  434. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  435. o.ase_color = v.ase_color;
  436. o.ase_texcoord2.xy = v.ase_texcoord.xy;
  437. o.ase_texcoord3 = v.ase_texcoord1;
  438. //setting value to unused interpolator channels and avoid initialization warnings
  439. o.ase_texcoord2.zw = 0;
  440. #ifdef ASE_ABSOLUTE_VERTEX_POS
  441. float3 defaultVertexValue = v.vertex.xyz;
  442. #else
  443. float3 defaultVertexValue = float3(0, 0, 0);
  444. #endif
  445. float3 vertexValue = defaultVertexValue;
  446. #ifdef ASE_ABSOLUTE_VERTEX_POS
  447. v.vertex.xyz = vertexValue;
  448. #else
  449. v.vertex.xyz += vertexValue;
  450. #endif
  451. v.ase_normal = v.ase_normal;
  452. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  453. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  454. o.worldPos = positionWS;
  455. #endif
  456. o.clipPos = TransformWorldToHClip( positionWS );
  457. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  458. VertexPositionInputs vertexInput = (VertexPositionInputs)0;
  459. vertexInput.positionWS = positionWS;
  460. vertexInput.positionCS = o.clipPos;
  461. o.shadowCoord = GetShadowCoord( vertexInput );
  462. #endif
  463. return o;
  464. }
  465. #if defined(ASE_TESSELLATION)
  466. struct VertexControl
  467. {
  468. float4 vertex : INTERNALTESSPOS;
  469. float3 ase_normal : NORMAL;
  470. float4 ase_color : COLOR;
  471. float4 ase_texcoord : TEXCOORD0;
  472. float4 ase_texcoord1 : TEXCOORD1;
  473. UNITY_VERTEX_INPUT_INSTANCE_ID
  474. };
  475. struct TessellationFactors
  476. {
  477. float edge[3] : SV_TessFactor;
  478. float inside : SV_InsideTessFactor;
  479. };
  480. VertexControl vert ( VertexInput v )
  481. {
  482. VertexControl o;
  483. UNITY_SETUP_INSTANCE_ID(v);
  484. UNITY_TRANSFER_INSTANCE_ID(v, o);
  485. o.vertex = v.vertex;
  486. o.ase_normal = v.ase_normal;
  487. o.ase_color = v.ase_color;
  488. o.ase_texcoord = v.ase_texcoord;
  489. o.ase_texcoord1 = v.ase_texcoord1;
  490. return o;
  491. }
  492. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  493. {
  494. TessellationFactors o;
  495. float4 tf = 1;
  496. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  497. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  498. #if defined(ASE_FIXED_TESSELLATION)
  499. tf = FixedTess( tessValue );
  500. #elif defined(ASE_DISTANCE_TESSELLATION)
  501. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  502. #elif defined(ASE_LENGTH_TESSELLATION)
  503. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  504. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  505. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  506. #endif
  507. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  508. return o;
  509. }
  510. [domain("tri")]
  511. [partitioning("fractional_odd")]
  512. [outputtopology("triangle_cw")]
  513. [patchconstantfunc("TessellationFunction")]
  514. [outputcontrolpoints(3)]
  515. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  516. {
  517. return patch[id];
  518. }
  519. [domain("tri")]
  520. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  521. {
  522. VertexInput o = (VertexInput) 0;
  523. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  524. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  525. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  526. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  527. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  528. #if defined(ASE_PHONG_TESSELLATION)
  529. float3 pp[3];
  530. for (int i = 0; i < 3; ++i)
  531. 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));
  532. float phongStrength = _TessPhongStrength;
  533. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  534. #endif
  535. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  536. return VertexFunction(o);
  537. }
  538. #else
  539. VertexOutput vert ( VertexInput v )
  540. {
  541. return VertexFunction( v );
  542. }
  543. #endif
  544. half4 frag(VertexOutput IN ) : SV_TARGET
  545. {
  546. UNITY_SETUP_INSTANCE_ID(IN);
  547. UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
  548. #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
  549. float3 WorldPosition = IN.worldPos;
  550. #endif
  551. float4 ShadowCoords = float4( 0, 0, 0, 0 );
  552. #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
  553. #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
  554. ShadowCoords = IN.shadowCoord;
  555. #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
  556. ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
  557. #endif
  558. #endif
  559. float2 uv_MainTex = IN.ase_texcoord2.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  560. float4 texCoord20 = IN.ase_texcoord3;
  561. texCoord20.xy = IN.ase_texcoord3.xy * float2( 1,1 ) + float2( 0,0 );
  562. float2 appendResult21 = (float2(texCoord20.z , texCoord20.w));
  563. float2 uv_mokuaiTex = IN.ase_texcoord2.xy * _mokuaiTex_ST.xy + _mokuaiTex_ST.zw;
  564. float2 uv_mask = IN.ase_texcoord2.xy * _mask_ST.xy + _mask_ST.zw;
  565. float Alpha = ( IN.ase_color.a * ( tex2D( _MainTex, ( uv_MainTex + appendResult21 ) ).r * ( tex2D( _mokuaiTex, uv_mokuaiTex ).r * tex2D( _mask, uv_mask ).r ) ) );
  566. float AlphaClipThreshold = 0.5;
  567. #ifdef _ALPHATEST_ON
  568. clip(Alpha - AlphaClipThreshold);
  569. #endif
  570. #ifdef LOD_FADE_CROSSFADE
  571. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  572. #endif
  573. return 0;
  574. }
  575. ENDHLSL
  576. }
  577. Pass
  578. {
  579. Name "SceneSelectionPass"
  580. Tags { "LightMode"="SceneSelectionPass" }
  581. Cull Off
  582. HLSLPROGRAM
  583. #pragma multi_compile_instancing
  584. #define _RECEIVE_SHADOWS_OFF 1
  585. #define _SURFACE_TYPE_TRANSPARENT 1
  586. #define ASE_SRP_VERSION 120108
  587. #pragma vertex vert
  588. #pragma fragment frag
  589. #define ATTRIBUTES_NEED_NORMAL
  590. #define ATTRIBUTES_NEED_TANGENT
  591. #define SHADERPASS SHADERPASS_DEPTHONLY
  592. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  593. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  594. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  595. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  596. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  597. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  598. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  599. struct VertexInput
  600. {
  601. float4 vertex : POSITION;
  602. float3 ase_normal : NORMAL;
  603. float4 ase_color : COLOR;
  604. float4 ase_texcoord : TEXCOORD0;
  605. float4 ase_texcoord1 : TEXCOORD1;
  606. UNITY_VERTEX_INPUT_INSTANCE_ID
  607. };
  608. struct VertexOutput
  609. {
  610. float4 clipPos : SV_POSITION;
  611. float4 ase_color : COLOR;
  612. float4 ase_texcoord : TEXCOORD0;
  613. float4 ase_texcoord1 : TEXCOORD1;
  614. UNITY_VERTEX_INPUT_INSTANCE_ID
  615. UNITY_VERTEX_OUTPUT_STEREO
  616. };
  617. CBUFFER_START(UnityPerMaterial)
  618. float4 _MainTex_ST;
  619. float4 _mokuaiTex_ST;
  620. float4 _mask_ST;
  621. #ifdef ASE_TESSELLATION
  622. float _TessPhongStrength;
  623. float _TessValue;
  624. float _TessMin;
  625. float _TessMax;
  626. float _TessEdgeLength;
  627. float _TessMaxDisp;
  628. #endif
  629. CBUFFER_END
  630. sampler2D _MainTex;
  631. sampler2D _mokuaiTex;
  632. sampler2D _mask;
  633. int _ObjectId;
  634. int _PassValue;
  635. struct SurfaceDescription
  636. {
  637. float Alpha;
  638. float AlphaClipThreshold;
  639. };
  640. VertexOutput VertexFunction(VertexInput v )
  641. {
  642. VertexOutput o;
  643. ZERO_INITIALIZE(VertexOutput, o);
  644. UNITY_SETUP_INSTANCE_ID(v);
  645. UNITY_TRANSFER_INSTANCE_ID(v, o);
  646. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  647. o.ase_color = v.ase_color;
  648. o.ase_texcoord.xy = v.ase_texcoord.xy;
  649. o.ase_texcoord1 = v.ase_texcoord1;
  650. //setting value to unused interpolator channels and avoid initialization warnings
  651. o.ase_texcoord.zw = 0;
  652. #ifdef ASE_ABSOLUTE_VERTEX_POS
  653. float3 defaultVertexValue = v.vertex.xyz;
  654. #else
  655. float3 defaultVertexValue = float3(0, 0, 0);
  656. #endif
  657. float3 vertexValue = defaultVertexValue;
  658. #ifdef ASE_ABSOLUTE_VERTEX_POS
  659. v.vertex.xyz = vertexValue;
  660. #else
  661. v.vertex.xyz += vertexValue;
  662. #endif
  663. v.ase_normal = v.ase_normal;
  664. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  665. o.clipPos = TransformWorldToHClip(positionWS);
  666. return o;
  667. }
  668. #if defined(ASE_TESSELLATION)
  669. struct VertexControl
  670. {
  671. float4 vertex : INTERNALTESSPOS;
  672. float3 ase_normal : NORMAL;
  673. float4 ase_color : COLOR;
  674. float4 ase_texcoord : TEXCOORD0;
  675. float4 ase_texcoord1 : TEXCOORD1;
  676. UNITY_VERTEX_INPUT_INSTANCE_ID
  677. };
  678. struct TessellationFactors
  679. {
  680. float edge[3] : SV_TessFactor;
  681. float inside : SV_InsideTessFactor;
  682. };
  683. VertexControl vert ( VertexInput v )
  684. {
  685. VertexControl o;
  686. UNITY_SETUP_INSTANCE_ID(v);
  687. UNITY_TRANSFER_INSTANCE_ID(v, o);
  688. o.vertex = v.vertex;
  689. o.ase_normal = v.ase_normal;
  690. o.ase_color = v.ase_color;
  691. o.ase_texcoord = v.ase_texcoord;
  692. o.ase_texcoord1 = v.ase_texcoord1;
  693. return o;
  694. }
  695. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  696. {
  697. TessellationFactors o;
  698. float4 tf = 1;
  699. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  700. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  701. #if defined(ASE_FIXED_TESSELLATION)
  702. tf = FixedTess( tessValue );
  703. #elif defined(ASE_DISTANCE_TESSELLATION)
  704. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  705. #elif defined(ASE_LENGTH_TESSELLATION)
  706. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  707. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  708. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  709. #endif
  710. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  711. return o;
  712. }
  713. [domain("tri")]
  714. [partitioning("fractional_odd")]
  715. [outputtopology("triangle_cw")]
  716. [patchconstantfunc("TessellationFunction")]
  717. [outputcontrolpoints(3)]
  718. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  719. {
  720. return patch[id];
  721. }
  722. [domain("tri")]
  723. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  724. {
  725. VertexInput o = (VertexInput) 0;
  726. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  727. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  728. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  729. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  730. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  731. #if defined(ASE_PHONG_TESSELLATION)
  732. float3 pp[3];
  733. for (int i = 0; i < 3; ++i)
  734. 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));
  735. float phongStrength = _TessPhongStrength;
  736. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  737. #endif
  738. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  739. return VertexFunction(o);
  740. }
  741. #else
  742. VertexOutput vert ( VertexInput v )
  743. {
  744. return VertexFunction( v );
  745. }
  746. #endif
  747. half4 frag(VertexOutput IN ) : SV_TARGET
  748. {
  749. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  750. float2 uv_MainTex = IN.ase_texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  751. float4 texCoord20 = IN.ase_texcoord1;
  752. texCoord20.xy = IN.ase_texcoord1.xy * float2( 1,1 ) + float2( 0,0 );
  753. float2 appendResult21 = (float2(texCoord20.z , texCoord20.w));
  754. float2 uv_mokuaiTex = IN.ase_texcoord.xy * _mokuaiTex_ST.xy + _mokuaiTex_ST.zw;
  755. float2 uv_mask = IN.ase_texcoord.xy * _mask_ST.xy + _mask_ST.zw;
  756. surfaceDescription.Alpha = ( IN.ase_color.a * ( tex2D( _MainTex, ( uv_MainTex + appendResult21 ) ).r * ( tex2D( _mokuaiTex, uv_mokuaiTex ).r * tex2D( _mask, uv_mask ).r ) ) );
  757. surfaceDescription.AlphaClipThreshold = 0.5;
  758. #if _ALPHATEST_ON
  759. float alphaClipThreshold = 0.01f;
  760. #if ALPHA_CLIP_THRESHOLD
  761. alphaClipThreshold = surfaceDescription.AlphaClipThreshold;
  762. #endif
  763. clip(surfaceDescription.Alpha - alphaClipThreshold);
  764. #endif
  765. half4 outColor = half4(_ObjectId, _PassValue, 1.0, 1.0);
  766. return outColor;
  767. }
  768. ENDHLSL
  769. }
  770. Pass
  771. {
  772. Name "ScenePickingPass"
  773. Tags { "LightMode"="Picking" }
  774. HLSLPROGRAM
  775. #pragma multi_compile_instancing
  776. #define _RECEIVE_SHADOWS_OFF 1
  777. #define _SURFACE_TYPE_TRANSPARENT 1
  778. #define ASE_SRP_VERSION 120108
  779. #pragma vertex vert
  780. #pragma fragment frag
  781. #define ATTRIBUTES_NEED_NORMAL
  782. #define ATTRIBUTES_NEED_TANGENT
  783. #define SHADERPASS SHADERPASS_DEPTHONLY
  784. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  785. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  786. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  787. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  788. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  789. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  790. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  791. struct VertexInput
  792. {
  793. float4 vertex : POSITION;
  794. float3 ase_normal : NORMAL;
  795. float4 ase_color : COLOR;
  796. float4 ase_texcoord : TEXCOORD0;
  797. float4 ase_texcoord1 : TEXCOORD1;
  798. UNITY_VERTEX_INPUT_INSTANCE_ID
  799. };
  800. struct VertexOutput
  801. {
  802. float4 clipPos : SV_POSITION;
  803. float4 ase_color : COLOR;
  804. float4 ase_texcoord : TEXCOORD0;
  805. float4 ase_texcoord1 : TEXCOORD1;
  806. UNITY_VERTEX_INPUT_INSTANCE_ID
  807. UNITY_VERTEX_OUTPUT_STEREO
  808. };
  809. CBUFFER_START(UnityPerMaterial)
  810. float4 _MainTex_ST;
  811. float4 _mokuaiTex_ST;
  812. float4 _mask_ST;
  813. #ifdef ASE_TESSELLATION
  814. float _TessPhongStrength;
  815. float _TessValue;
  816. float _TessMin;
  817. float _TessMax;
  818. float _TessEdgeLength;
  819. float _TessMaxDisp;
  820. #endif
  821. CBUFFER_END
  822. sampler2D _MainTex;
  823. sampler2D _mokuaiTex;
  824. sampler2D _mask;
  825. float4 _SelectionID;
  826. struct SurfaceDescription
  827. {
  828. float Alpha;
  829. float AlphaClipThreshold;
  830. };
  831. VertexOutput VertexFunction(VertexInput v )
  832. {
  833. VertexOutput o;
  834. ZERO_INITIALIZE(VertexOutput, o);
  835. UNITY_SETUP_INSTANCE_ID(v);
  836. UNITY_TRANSFER_INSTANCE_ID(v, o);
  837. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  838. o.ase_color = v.ase_color;
  839. o.ase_texcoord.xy = v.ase_texcoord.xy;
  840. o.ase_texcoord1 = v.ase_texcoord1;
  841. //setting value to unused interpolator channels and avoid initialization warnings
  842. o.ase_texcoord.zw = 0;
  843. #ifdef ASE_ABSOLUTE_VERTEX_POS
  844. float3 defaultVertexValue = v.vertex.xyz;
  845. #else
  846. float3 defaultVertexValue = float3(0, 0, 0);
  847. #endif
  848. float3 vertexValue = defaultVertexValue;
  849. #ifdef ASE_ABSOLUTE_VERTEX_POS
  850. v.vertex.xyz = vertexValue;
  851. #else
  852. v.vertex.xyz += vertexValue;
  853. #endif
  854. v.ase_normal = v.ase_normal;
  855. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  856. o.clipPos = TransformWorldToHClip(positionWS);
  857. return o;
  858. }
  859. #if defined(ASE_TESSELLATION)
  860. struct VertexControl
  861. {
  862. float4 vertex : INTERNALTESSPOS;
  863. float3 ase_normal : NORMAL;
  864. float4 ase_color : COLOR;
  865. float4 ase_texcoord : TEXCOORD0;
  866. float4 ase_texcoord1 : TEXCOORD1;
  867. UNITY_VERTEX_INPUT_INSTANCE_ID
  868. };
  869. struct TessellationFactors
  870. {
  871. float edge[3] : SV_TessFactor;
  872. float inside : SV_InsideTessFactor;
  873. };
  874. VertexControl vert ( VertexInput v )
  875. {
  876. VertexControl o;
  877. UNITY_SETUP_INSTANCE_ID(v);
  878. UNITY_TRANSFER_INSTANCE_ID(v, o);
  879. o.vertex = v.vertex;
  880. o.ase_normal = v.ase_normal;
  881. o.ase_color = v.ase_color;
  882. o.ase_texcoord = v.ase_texcoord;
  883. o.ase_texcoord1 = v.ase_texcoord1;
  884. return o;
  885. }
  886. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  887. {
  888. TessellationFactors o;
  889. float4 tf = 1;
  890. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  891. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  892. #if defined(ASE_FIXED_TESSELLATION)
  893. tf = FixedTess( tessValue );
  894. #elif defined(ASE_DISTANCE_TESSELLATION)
  895. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  896. #elif defined(ASE_LENGTH_TESSELLATION)
  897. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  898. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  899. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  900. #endif
  901. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  902. return o;
  903. }
  904. [domain("tri")]
  905. [partitioning("fractional_odd")]
  906. [outputtopology("triangle_cw")]
  907. [patchconstantfunc("TessellationFunction")]
  908. [outputcontrolpoints(3)]
  909. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  910. {
  911. return patch[id];
  912. }
  913. [domain("tri")]
  914. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  915. {
  916. VertexInput o = (VertexInput) 0;
  917. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  918. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  919. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  920. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  921. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  922. #if defined(ASE_PHONG_TESSELLATION)
  923. float3 pp[3];
  924. for (int i = 0; i < 3; ++i)
  925. 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));
  926. float phongStrength = _TessPhongStrength;
  927. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  928. #endif
  929. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  930. return VertexFunction(o);
  931. }
  932. #else
  933. VertexOutput vert ( VertexInput v )
  934. {
  935. return VertexFunction( v );
  936. }
  937. #endif
  938. half4 frag(VertexOutput IN ) : SV_TARGET
  939. {
  940. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  941. float2 uv_MainTex = IN.ase_texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  942. float4 texCoord20 = IN.ase_texcoord1;
  943. texCoord20.xy = IN.ase_texcoord1.xy * float2( 1,1 ) + float2( 0,0 );
  944. float2 appendResult21 = (float2(texCoord20.z , texCoord20.w));
  945. float2 uv_mokuaiTex = IN.ase_texcoord.xy * _mokuaiTex_ST.xy + _mokuaiTex_ST.zw;
  946. float2 uv_mask = IN.ase_texcoord.xy * _mask_ST.xy + _mask_ST.zw;
  947. surfaceDescription.Alpha = ( IN.ase_color.a * ( tex2D( _MainTex, ( uv_MainTex + appendResult21 ) ).r * ( tex2D( _mokuaiTex, uv_mokuaiTex ).r * tex2D( _mask, uv_mask ).r ) ) );
  948. surfaceDescription.AlphaClipThreshold = 0.5;
  949. #if _ALPHATEST_ON
  950. float alphaClipThreshold = 0.01f;
  951. #if ALPHA_CLIP_THRESHOLD
  952. alphaClipThreshold = surfaceDescription.AlphaClipThreshold;
  953. #endif
  954. clip(surfaceDescription.Alpha - alphaClipThreshold);
  955. #endif
  956. half4 outColor = 0;
  957. outColor = _SelectionID;
  958. return outColor;
  959. }
  960. ENDHLSL
  961. }
  962. Pass
  963. {
  964. Name "DepthNormals"
  965. Tags { "LightMode"="DepthNormalsOnly" }
  966. ZTest LEqual
  967. ZWrite On
  968. HLSLPROGRAM
  969. #pragma multi_compile_instancing
  970. #define _RECEIVE_SHADOWS_OFF 1
  971. #define _SURFACE_TYPE_TRANSPARENT 1
  972. #define ASE_SRP_VERSION 120108
  973. #pragma vertex vert
  974. #pragma fragment frag
  975. #define ATTRIBUTES_NEED_NORMAL
  976. #define ATTRIBUTES_NEED_TANGENT
  977. #define VARYINGS_NEED_NORMAL_WS
  978. #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY
  979. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  980. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  981. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  982. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  983. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  984. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  985. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  986. struct VertexInput
  987. {
  988. float4 vertex : POSITION;
  989. float3 ase_normal : NORMAL;
  990. float4 ase_color : COLOR;
  991. float4 ase_texcoord : TEXCOORD0;
  992. float4 ase_texcoord1 : TEXCOORD1;
  993. UNITY_VERTEX_INPUT_INSTANCE_ID
  994. };
  995. struct VertexOutput
  996. {
  997. float4 clipPos : SV_POSITION;
  998. float3 normalWS : TEXCOORD0;
  999. float4 ase_color : COLOR;
  1000. float4 ase_texcoord1 : TEXCOORD1;
  1001. float4 ase_texcoord2 : TEXCOORD2;
  1002. UNITY_VERTEX_INPUT_INSTANCE_ID
  1003. UNITY_VERTEX_OUTPUT_STEREO
  1004. };
  1005. CBUFFER_START(UnityPerMaterial)
  1006. float4 _MainTex_ST;
  1007. float4 _mokuaiTex_ST;
  1008. float4 _mask_ST;
  1009. #ifdef ASE_TESSELLATION
  1010. float _TessPhongStrength;
  1011. float _TessValue;
  1012. float _TessMin;
  1013. float _TessMax;
  1014. float _TessEdgeLength;
  1015. float _TessMaxDisp;
  1016. #endif
  1017. CBUFFER_END
  1018. sampler2D _MainTex;
  1019. sampler2D _mokuaiTex;
  1020. sampler2D _mask;
  1021. struct SurfaceDescription
  1022. {
  1023. float Alpha;
  1024. float AlphaClipThreshold;
  1025. };
  1026. VertexOutput VertexFunction(VertexInput v )
  1027. {
  1028. VertexOutput o;
  1029. ZERO_INITIALIZE(VertexOutput, o);
  1030. UNITY_SETUP_INSTANCE_ID(v);
  1031. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1032. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  1033. o.ase_color = v.ase_color;
  1034. o.ase_texcoord1.xy = v.ase_texcoord.xy;
  1035. o.ase_texcoord2 = v.ase_texcoord1;
  1036. //setting value to unused interpolator channels and avoid initialization warnings
  1037. o.ase_texcoord1.zw = 0;
  1038. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1039. float3 defaultVertexValue = v.vertex.xyz;
  1040. #else
  1041. float3 defaultVertexValue = float3(0, 0, 0);
  1042. #endif
  1043. float3 vertexValue = defaultVertexValue;
  1044. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1045. v.vertex.xyz = vertexValue;
  1046. #else
  1047. v.vertex.xyz += vertexValue;
  1048. #endif
  1049. v.ase_normal = v.ase_normal;
  1050. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  1051. float3 normalWS = TransformObjectToWorldNormal(v.ase_normal);
  1052. o.clipPos = TransformWorldToHClip(positionWS);
  1053. o.normalWS.xyz = normalWS;
  1054. return o;
  1055. }
  1056. #if defined(ASE_TESSELLATION)
  1057. struct VertexControl
  1058. {
  1059. float4 vertex : INTERNALTESSPOS;
  1060. float3 ase_normal : NORMAL;
  1061. float4 ase_color : COLOR;
  1062. float4 ase_texcoord : TEXCOORD0;
  1063. float4 ase_texcoord1 : TEXCOORD1;
  1064. UNITY_VERTEX_INPUT_INSTANCE_ID
  1065. };
  1066. struct TessellationFactors
  1067. {
  1068. float edge[3] : SV_TessFactor;
  1069. float inside : SV_InsideTessFactor;
  1070. };
  1071. VertexControl vert ( VertexInput v )
  1072. {
  1073. VertexControl o;
  1074. UNITY_SETUP_INSTANCE_ID(v);
  1075. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1076. o.vertex = v.vertex;
  1077. o.ase_normal = v.ase_normal;
  1078. o.ase_color = v.ase_color;
  1079. o.ase_texcoord = v.ase_texcoord;
  1080. o.ase_texcoord1 = v.ase_texcoord1;
  1081. return o;
  1082. }
  1083. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  1084. {
  1085. TessellationFactors o;
  1086. float4 tf = 1;
  1087. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  1088. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  1089. #if defined(ASE_FIXED_TESSELLATION)
  1090. tf = FixedTess( tessValue );
  1091. #elif defined(ASE_DISTANCE_TESSELLATION)
  1092. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  1093. #elif defined(ASE_LENGTH_TESSELLATION)
  1094. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  1095. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  1096. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  1097. #endif
  1098. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  1099. return o;
  1100. }
  1101. [domain("tri")]
  1102. [partitioning("fractional_odd")]
  1103. [outputtopology("triangle_cw")]
  1104. [patchconstantfunc("TessellationFunction")]
  1105. [outputcontrolpoints(3)]
  1106. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  1107. {
  1108. return patch[id];
  1109. }
  1110. [domain("tri")]
  1111. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  1112. {
  1113. VertexInput o = (VertexInput) 0;
  1114. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  1115. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  1116. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  1117. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  1118. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  1119. #if defined(ASE_PHONG_TESSELLATION)
  1120. float3 pp[3];
  1121. for (int i = 0; i < 3; ++i)
  1122. 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));
  1123. float phongStrength = _TessPhongStrength;
  1124. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  1125. #endif
  1126. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  1127. return VertexFunction(o);
  1128. }
  1129. #else
  1130. VertexOutput vert ( VertexInput v )
  1131. {
  1132. return VertexFunction( v );
  1133. }
  1134. #endif
  1135. half4 frag(VertexOutput IN ) : SV_TARGET
  1136. {
  1137. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  1138. float2 uv_MainTex = IN.ase_texcoord1.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  1139. float4 texCoord20 = IN.ase_texcoord2;
  1140. texCoord20.xy = IN.ase_texcoord2.xy * float2( 1,1 ) + float2( 0,0 );
  1141. float2 appendResult21 = (float2(texCoord20.z , texCoord20.w));
  1142. float2 uv_mokuaiTex = IN.ase_texcoord1.xy * _mokuaiTex_ST.xy + _mokuaiTex_ST.zw;
  1143. float2 uv_mask = IN.ase_texcoord1.xy * _mask_ST.xy + _mask_ST.zw;
  1144. surfaceDescription.Alpha = ( IN.ase_color.a * ( tex2D( _MainTex, ( uv_MainTex + appendResult21 ) ).r * ( tex2D( _mokuaiTex, uv_mokuaiTex ).r * tex2D( _mask, uv_mask ).r ) ) );
  1145. surfaceDescription.AlphaClipThreshold = 0.5;
  1146. #if _ALPHATEST_ON
  1147. clip(surfaceDescription.Alpha - surfaceDescription.AlphaClipThreshold);
  1148. #endif
  1149. #ifdef LOD_FADE_CROSSFADE
  1150. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  1151. #endif
  1152. float3 normalWS = IN.normalWS;
  1153. return half4(NormalizeNormalPerPixel(normalWS), 0.0);
  1154. }
  1155. ENDHLSL
  1156. }
  1157. Pass
  1158. {
  1159. Name "DepthNormalsOnly"
  1160. Tags { "LightMode"="DepthNormalsOnly" }
  1161. ZTest LEqual
  1162. ZWrite On
  1163. HLSLPROGRAM
  1164. #pragma multi_compile_instancing
  1165. #define _RECEIVE_SHADOWS_OFF 1
  1166. #define _SURFACE_TYPE_TRANSPARENT 1
  1167. #define ASE_SRP_VERSION 120108
  1168. #pragma exclude_renderers glcore gles gles3
  1169. #pragma vertex vert
  1170. #pragma fragment frag
  1171. #define ATTRIBUTES_NEED_NORMAL
  1172. #define ATTRIBUTES_NEED_TANGENT
  1173. #define ATTRIBUTES_NEED_TEXCOORD1
  1174. #define VARYINGS_NEED_NORMAL_WS
  1175. #define VARYINGS_NEED_TANGENT_WS
  1176. #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY
  1177. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  1178. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
  1179. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  1180. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  1181. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
  1182. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
  1183. #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
  1184. struct VertexInput
  1185. {
  1186. float4 vertex : POSITION;
  1187. float3 ase_normal : NORMAL;
  1188. float4 ase_color : COLOR;
  1189. float4 ase_texcoord : TEXCOORD0;
  1190. float4 ase_texcoord1 : TEXCOORD1;
  1191. UNITY_VERTEX_INPUT_INSTANCE_ID
  1192. };
  1193. struct VertexOutput
  1194. {
  1195. float4 clipPos : SV_POSITION;
  1196. float3 normalWS : TEXCOORD0;
  1197. float4 ase_color : COLOR;
  1198. float4 ase_texcoord1 : TEXCOORD1;
  1199. float4 ase_texcoord2 : TEXCOORD2;
  1200. UNITY_VERTEX_INPUT_INSTANCE_ID
  1201. UNITY_VERTEX_OUTPUT_STEREO
  1202. };
  1203. CBUFFER_START(UnityPerMaterial)
  1204. float4 _MainTex_ST;
  1205. float4 _mokuaiTex_ST;
  1206. float4 _mask_ST;
  1207. #ifdef ASE_TESSELLATION
  1208. float _TessPhongStrength;
  1209. float _TessValue;
  1210. float _TessMin;
  1211. float _TessMax;
  1212. float _TessEdgeLength;
  1213. float _TessMaxDisp;
  1214. #endif
  1215. CBUFFER_END
  1216. sampler2D _MainTex;
  1217. sampler2D _mokuaiTex;
  1218. sampler2D _mask;
  1219. struct SurfaceDescription
  1220. {
  1221. float Alpha;
  1222. float AlphaClipThreshold;
  1223. };
  1224. VertexOutput VertexFunction(VertexInput v )
  1225. {
  1226. VertexOutput o;
  1227. ZERO_INITIALIZE(VertexOutput, o);
  1228. UNITY_SETUP_INSTANCE_ID(v);
  1229. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1230. UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  1231. o.ase_color = v.ase_color;
  1232. o.ase_texcoord1.xy = v.ase_texcoord.xy;
  1233. o.ase_texcoord2 = v.ase_texcoord1;
  1234. //setting value to unused interpolator channels and avoid initialization warnings
  1235. o.ase_texcoord1.zw = 0;
  1236. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1237. float3 defaultVertexValue = v.vertex.xyz;
  1238. #else
  1239. float3 defaultVertexValue = float3(0, 0, 0);
  1240. #endif
  1241. float3 vertexValue = defaultVertexValue;
  1242. #ifdef ASE_ABSOLUTE_VERTEX_POS
  1243. v.vertex.xyz = vertexValue;
  1244. #else
  1245. v.vertex.xyz += vertexValue;
  1246. #endif
  1247. v.ase_normal = v.ase_normal;
  1248. float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
  1249. float3 normalWS = TransformObjectToWorldNormal(v.ase_normal);
  1250. o.clipPos = TransformWorldToHClip(positionWS);
  1251. o.normalWS.xyz = normalWS;
  1252. return o;
  1253. }
  1254. #if defined(ASE_TESSELLATION)
  1255. struct VertexControl
  1256. {
  1257. float4 vertex : INTERNALTESSPOS;
  1258. float3 ase_normal : NORMAL;
  1259. float4 ase_color : COLOR;
  1260. float4 ase_texcoord : TEXCOORD0;
  1261. float4 ase_texcoord1 : TEXCOORD1;
  1262. UNITY_VERTEX_INPUT_INSTANCE_ID
  1263. };
  1264. struct TessellationFactors
  1265. {
  1266. float edge[3] : SV_TessFactor;
  1267. float inside : SV_InsideTessFactor;
  1268. };
  1269. VertexControl vert ( VertexInput v )
  1270. {
  1271. VertexControl o;
  1272. UNITY_SETUP_INSTANCE_ID(v);
  1273. UNITY_TRANSFER_INSTANCE_ID(v, o);
  1274. o.vertex = v.vertex;
  1275. o.ase_normal = v.ase_normal;
  1276. o.ase_color = v.ase_color;
  1277. o.ase_texcoord = v.ase_texcoord;
  1278. o.ase_texcoord1 = v.ase_texcoord1;
  1279. return o;
  1280. }
  1281. TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
  1282. {
  1283. TessellationFactors o;
  1284. float4 tf = 1;
  1285. float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
  1286. float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
  1287. #if defined(ASE_FIXED_TESSELLATION)
  1288. tf = FixedTess( tessValue );
  1289. #elif defined(ASE_DISTANCE_TESSELLATION)
  1290. tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
  1291. #elif defined(ASE_LENGTH_TESSELLATION)
  1292. tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
  1293. #elif defined(ASE_LENGTH_CULL_TESSELLATION)
  1294. tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
  1295. #endif
  1296. o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
  1297. return o;
  1298. }
  1299. [domain("tri")]
  1300. [partitioning("fractional_odd")]
  1301. [outputtopology("triangle_cw")]
  1302. [patchconstantfunc("TessellationFunction")]
  1303. [outputcontrolpoints(3)]
  1304. VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
  1305. {
  1306. return patch[id];
  1307. }
  1308. [domain("tri")]
  1309. VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
  1310. {
  1311. VertexInput o = (VertexInput) 0;
  1312. o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
  1313. o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
  1314. o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
  1315. o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
  1316. o.ase_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * bary.z;
  1317. #if defined(ASE_PHONG_TESSELLATION)
  1318. float3 pp[3];
  1319. for (int i = 0; i < 3; ++i)
  1320. 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));
  1321. float phongStrength = _TessPhongStrength;
  1322. o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
  1323. #endif
  1324. UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
  1325. return VertexFunction(o);
  1326. }
  1327. #else
  1328. VertexOutput vert ( VertexInput v )
  1329. {
  1330. return VertexFunction( v );
  1331. }
  1332. #endif
  1333. half4 frag(VertexOutput IN ) : SV_TARGET
  1334. {
  1335. SurfaceDescription surfaceDescription = (SurfaceDescription)0;
  1336. float2 uv_MainTex = IN.ase_texcoord1.xy * _MainTex_ST.xy + _MainTex_ST.zw;
  1337. float4 texCoord20 = IN.ase_texcoord2;
  1338. texCoord20.xy = IN.ase_texcoord2.xy * float2( 1,1 ) + float2( 0,0 );
  1339. float2 appendResult21 = (float2(texCoord20.z , texCoord20.w));
  1340. float2 uv_mokuaiTex = IN.ase_texcoord1.xy * _mokuaiTex_ST.xy + _mokuaiTex_ST.zw;
  1341. float2 uv_mask = IN.ase_texcoord1.xy * _mask_ST.xy + _mask_ST.zw;
  1342. surfaceDescription.Alpha = ( IN.ase_color.a * ( tex2D( _MainTex, ( uv_MainTex + appendResult21 ) ).r * ( tex2D( _mokuaiTex, uv_mokuaiTex ).r * tex2D( _mask, uv_mask ).r ) ) );
  1343. surfaceDescription.AlphaClipThreshold = 0.5;
  1344. #if _ALPHATEST_ON
  1345. clip(surfaceDescription.Alpha - surfaceDescription.AlphaClipThreshold);
  1346. #endif
  1347. #ifdef LOD_FADE_CROSSFADE
  1348. LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
  1349. #endif
  1350. float3 normalWS = IN.normalWS;
  1351. return half4(NormalizeNormalPerPixel(normalWS), 0.0);
  1352. }
  1353. ENDHLSL
  1354. }
  1355. }
  1356. CustomEditor "UnityEditor.ShaderGraphUnlitGUI"
  1357. FallBack "Hidden/Shader Graph/FallbackError"
  1358. Fallback Off
  1359. }
  1360. /*ASEBEGIN
  1361. Version=19105
  1362. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;0;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ExtraPrePass;0;0;ExtraPrePass;5;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;3;True;12;all;0;False;True;1;1;False;;0;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;True;True;True;True;0;False;;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;0;False;False;0;;0;0;Standard;0;False;0
  1363. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;2;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ShadowCaster;0;2;ShadowCaster;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;3;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;False;False;True;False;False;False;False;0;False;;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;False;True;1;LightMode=ShadowCaster;False;False;0;;0;0;Standard;0;False;0
  1364. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;3;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthOnly;0;3;DepthOnly;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;3;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;False;False;True;False;False;False;False;0;False;;False;False;False;False;False;False;False;False;False;True;1;False;;False;False;True;1;LightMode=DepthOnly;False;False;0;;0;0;Standard;0;False;0
  1365. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;4;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;Meta;0;4;Meta;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;3;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;LightMode=Meta;False;False;0;;0;0;Standard;0;False;0
  1366. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;5;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;Universal2D;0;5;Universal2D;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;3;True;12;all;0;False;True;1;1;False;;0;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;True;True;True;True;0;False;;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;1;LightMode=Universal2D;False;False;0;;0;0;Standard;0;False;0
  1367. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;6;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;SceneSelectionPass;0;6;SceneSelectionPass;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;3;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;LightMode=SceneSelectionPass;False;False;0;;0;0;Standard;0;False;0
  1368. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;7;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ScenePickingPass;0;7;ScenePickingPass;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;3;True;12;all;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;False;0;;0;0;Standard;0;False;0
  1369. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;8;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthNormals;0;8;DepthNormals;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;3;True;12;all;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;;True;3;False;;False;True;1;LightMode=DepthNormalsOnly;False;False;0;;0;0;Standard;0;False;0
  1370. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;9;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthNormalsOnly;0;9;DepthNormalsOnly;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;3;True;12;all;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;;True;3;False;;False;True;1;LightMode=DepthNormalsOnly;False;True;9;d3d11;metal;vulkan;xboxone;xboxseries;playstation;ps4;ps5;switch;0;;0;0;Standard;0;False;0
  1371. Node;AmplifyShaderEditor.SamplerNode;10;-812.2568,-64.94154;Inherit;True;Property;_mokuaiTex;mokuai;1;0;Create;False;0;0;0;False;0;False;-1;2e8d32126a32a2a4f944e07a082cf4c6;2e8d32126a32a2a4f944e07a082cf4c6;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
  1372. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;12;-423.1909,80.71857;Inherit;True;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
  1373. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;13;-79.19092,-27.28143;Inherit;True;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
  1374. Node;AmplifyShaderEditor.VertexColorNode;16;6.796875,-428.3812;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
  1375. Node;AmplifyShaderEditor.SamplerNode;14;-424.2208,-453.0352;Inherit;True;Property;_MainTex;主贴图;0;0;Create;False;0;0;0;False;0;False;-1;4611f08aca6361044871a3c6a4333579;4611f08aca6361044871a3c6a4333579;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
  1376. Node;AmplifyShaderEditor.SimpleMultiplyOpNode;17;140.7295,-151.5471;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
  1377. Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;1;397,-261;Float;False;True;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;13;shuimoSankai;2992e84f91cbeb14eab234972e07ea9d;True;Forward;0;1;Forward;8;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;2;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Transparent=RenderType;Queue=Transparent=Queue=0;UniversalMaterialType=Unlit;True;3;True;12;all;0;False;True;1;5;False;;10;False;;1;1;False;;10;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;True;True;True;True;0;False;;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;True;2;False;;True;3;False;;True;True;0;False;;0;False;;True;1;LightMode=UniversalForwardOnly;False;False;0;;0;0;Standard;23;Surface;1;638134460221304984; Blend;0;0;Two Sided;0;638136104849554672;Forward Only;0;0;Cast Shadows;0;638134460122848897; Use Shadow Threshold;0;0;Receive Shadows;0;638134460119047996;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,;0; Type;0;0; Tess;16,False,;0; Min;10,False,;0; Max;25,False,;0; Edge Length;16,False,;0; Max Displacement;25,False,;0;Vertex Position,InvertActionOnDeselection;1;0;0;10;False;True;False;True;False;False;True;True;True;True;False;;False;0
  1378. Node;AmplifyShaderEditor.TextureCoordinatesNode;18;-866.543,-498.4745;Inherit;False;0;14;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
  1379. Node;AmplifyShaderEditor.SimpleAddOpNode;19;-609.543,-476.4745;Inherit;False;2;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT2;0
  1380. Node;AmplifyShaderEditor.TextureCoordinatesNode;20;-1082.543,-345.4745;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
  1381. Node;AmplifyShaderEditor.DynamicAppendNode;21;-816.543,-309.4745;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0
  1382. Node;AmplifyShaderEditor.SamplerNode;11;-767.1909,210.7186;Inherit;True;Property;_mask;mask;2;0;Create;False;0;0;0;False;0;False;-1;09d11bcd40f37fc49844e6bd5ddcc21a;09d11bcd40f37fc49844e6bd5ddcc21a;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
  1383. WireConnection;12;0;10;1
  1384. WireConnection;12;1;11;1
  1385. WireConnection;13;0;14;1
  1386. WireConnection;13;1;12;0
  1387. WireConnection;14;1;19;0
  1388. WireConnection;17;0;16;4
  1389. WireConnection;17;1;13;0
  1390. WireConnection;1;2;16;0
  1391. WireConnection;1;3;17;0
  1392. WireConnection;19;0;18;0
  1393. WireConnection;19;1;21;0
  1394. WireConnection;21;0;20;3
  1395. WireConnection;21;1;20;4
  1396. ASEEND*/
  1397. //CHKSM=C120B8A8B40191CEF714F1588E66E3DEBE0733A6