123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121 |
- // Made with Amplify Shader Editor
- // Available at the Unity Asset Store - http://u3d.as/y3X
- Shader "LT/Lightning VFX/Lightning"
- {
- Properties
- {
- [HideInInspector] _AlphaCutoff("Alpha Cutoff ", Range(0, 1)) = 0.5
- [HideInInspector] _EmissionColor("Emission Color", Color) = (1,1,1,1)
- [ASEBegin][Toggle]_ParticleMode("Particle Mode", Float) = 1
- [HDR]_Colour("Colour", Color) = (1,1,1,1)
- _AlphaErosion("Alpha Erosion", Range( 0 , 1)) = 0
- _RemapMin("Remap Min", Range( 0 , 1)) = 0
- _RemapMax("Remap Max", Range( 0 , 1)) = 0
- _AlbedoTexture("Albedo Texture", 2D) = "white" {}
- _Duplicate("Duplicate", Range( 0 , 1)) = 0
- _Ymask("Ymask", Float) = 0.21
- [ASEEnd]_YmaskExp("Ymask硬吗", Range( 1 , 10)) = 1
- [HideInInspector]_QueueOffset("_QueueOffset", Float) = 0
- [HideInInspector]_QueueControl("_QueueControl", Float) = -1
- [HideInInspector][NoScaleOffset]unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {}
- [HideInInspector][NoScaleOffset]unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {}
- [HideInInspector][NoScaleOffset]unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {}
- //_TessPhongStrength( "Tess Phong Strength", Range( 0, 1 ) ) = 0.5
- //_TessValue( "Tess Max Tessellation", Range( 1, 32 ) ) = 16
- //_TessMin( "Tess Min Distance", Float ) = 10
- //_TessMax( "Tess Max Distance", Float ) = 25
- //_TessEdgeLength ( "Tess Edge length", Range( 2, 50 ) ) = 16
- //_TessMaxDisp( "Tess Max Displacement", Float ) = 25
- }
- SubShader
- {
- LOD 0
-
- Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Transparent" "Queue"="Transparent" }
-
- Cull Off
- AlphaToMask Off
-
- HLSLINCLUDE
- #pragma target 3.0
- #pragma prefer_hlslcc gles
- #pragma only_renderers d3d9 d3d11 glcore gles gles3 metal vulkan nomrt
- #ifndef ASE_TESS_FUNCS
- #define ASE_TESS_FUNCS
- float4 FixedTess( float tessValue )
- {
- return tessValue;
- }
-
- float CalcDistanceTessFactor (float4 vertex, float minDist, float maxDist, float tess, float4x4 o2w, float3 cameraPos )
- {
- float3 wpos = mul(o2w,vertex).xyz;
- float dist = distance (wpos, cameraPos);
- float f = clamp(1.0 - (dist - minDist) / (maxDist - minDist), 0.01, 1.0) * tess;
- return f;
- }
- float4 CalcTriEdgeTessFactors (float3 triVertexFactors)
- {
- float4 tess;
- tess.x = 0.5 * (triVertexFactors.y + triVertexFactors.z);
- tess.y = 0.5 * (triVertexFactors.x + triVertexFactors.z);
- tess.z = 0.5 * (triVertexFactors.x + triVertexFactors.y);
- tess.w = (triVertexFactors.x + triVertexFactors.y + triVertexFactors.z) / 3.0f;
- return tess;
- }
- float CalcEdgeTessFactor (float3 wpos0, float3 wpos1, float edgeLen, float3 cameraPos, float4 scParams )
- {
- float dist = distance (0.5 * (wpos0+wpos1), cameraPos);
- float len = distance(wpos0, wpos1);
- float f = max(len * scParams.y / (edgeLen * dist), 1.0);
- return f;
- }
- float DistanceFromPlane (float3 pos, float4 plane)
- {
- float d = dot (float4(pos,1.0f), plane);
- return d;
- }
- bool WorldViewFrustumCull (float3 wpos0, float3 wpos1, float3 wpos2, float cullEps, float4 planes[6] )
- {
- float4 planeTest;
- planeTest.x = (( DistanceFromPlane(wpos0, planes[0]) > -cullEps) ? 1.0f : 0.0f ) +
- (( DistanceFromPlane(wpos1, planes[0]) > -cullEps) ? 1.0f : 0.0f ) +
- (( DistanceFromPlane(wpos2, planes[0]) > -cullEps) ? 1.0f : 0.0f );
- planeTest.y = (( DistanceFromPlane(wpos0, planes[1]) > -cullEps) ? 1.0f : 0.0f ) +
- (( DistanceFromPlane(wpos1, planes[1]) > -cullEps) ? 1.0f : 0.0f ) +
- (( DistanceFromPlane(wpos2, planes[1]) > -cullEps) ? 1.0f : 0.0f );
- planeTest.z = (( DistanceFromPlane(wpos0, planes[2]) > -cullEps) ? 1.0f : 0.0f ) +
- (( DistanceFromPlane(wpos1, planes[2]) > -cullEps) ? 1.0f : 0.0f ) +
- (( DistanceFromPlane(wpos2, planes[2]) > -cullEps) ? 1.0f : 0.0f );
- planeTest.w = (( DistanceFromPlane(wpos0, planes[3]) > -cullEps) ? 1.0f : 0.0f ) +
- (( DistanceFromPlane(wpos1, planes[3]) > -cullEps) ? 1.0f : 0.0f ) +
- (( DistanceFromPlane(wpos2, planes[3]) > -cullEps) ? 1.0f : 0.0f );
- return !all (planeTest);
- }
- float4 DistanceBasedTess( float4 v0, float4 v1, float4 v2, float tess, float minDist, float maxDist, float4x4 o2w, float3 cameraPos )
- {
- float3 f;
- f.x = CalcDistanceTessFactor (v0,minDist,maxDist,tess,o2w,cameraPos);
- f.y = CalcDistanceTessFactor (v1,minDist,maxDist,tess,o2w,cameraPos);
- f.z = CalcDistanceTessFactor (v2,minDist,maxDist,tess,o2w,cameraPos);
- return CalcTriEdgeTessFactors (f);
- }
- float4 EdgeLengthBasedTess( float4 v0, float4 v1, float4 v2, float edgeLength, float4x4 o2w, float3 cameraPos, float4 scParams )
- {
- float3 pos0 = mul(o2w,v0).xyz;
- float3 pos1 = mul(o2w,v1).xyz;
- float3 pos2 = mul(o2w,v2).xyz;
- float4 tess;
- tess.x = CalcEdgeTessFactor (pos1, pos2, edgeLength, cameraPos, scParams);
- tess.y = CalcEdgeTessFactor (pos2, pos0, edgeLength, cameraPos, scParams);
- tess.z = CalcEdgeTessFactor (pos0, pos1, edgeLength, cameraPos, scParams);
- tess.w = (tess.x + tess.y + tess.z) / 3.0f;
- return tess;
- }
- float4 EdgeLengthBasedTessCull( float4 v0, float4 v1, float4 v2, float edgeLength, float maxDisplacement, float4x4 o2w, float3 cameraPos, float4 scParams, float4 planes[6] )
- {
- float3 pos0 = mul(o2w,v0).xyz;
- float3 pos1 = mul(o2w,v1).xyz;
- float3 pos2 = mul(o2w,v2).xyz;
- float4 tess;
- if (WorldViewFrustumCull(pos0, pos1, pos2, maxDisplacement, planes))
- {
- tess = 0.0f;
- }
- else
- {
- tess.x = CalcEdgeTessFactor (pos1, pos2, edgeLength, cameraPos, scParams);
- tess.y = CalcEdgeTessFactor (pos2, pos0, edgeLength, cameraPos, scParams);
- tess.z = CalcEdgeTessFactor (pos0, pos1, edgeLength, cameraPos, scParams);
- tess.w = (tess.x + tess.y + tess.z) / 3.0f;
- }
- return tess;
- }
- #endif //ASE_TESS_FUNCS
- ENDHLSL
-
- Pass
- {
-
- Name "Forward"
- Tags { "LightMode"="UniversalForwardOnly" }
-
- Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha
- ZWrite Off
- ZTest LEqual
- Offset 0 , 0
- ColorMask RGBA
-
- HLSLPROGRAM
-
- #pragma multi_compile_instancing
- #define _RECEIVE_SHADOWS_OFF 1
- #define ASE_SRP_VERSION 999999
-
- #pragma multi_compile _ LIGHTMAP_ON
- #pragma multi_compile _ DIRLIGHTMAP_COMBINED
- #pragma shader_feature _ _SAMPLE_GI
- #pragma multi_compile _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3
- #pragma multi_compile _ DEBUG_DISPLAY
- #define SHADERPASS SHADERPASS_UNLIT
- #pragma vertex vert
- #pragma fragment frag
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging3D.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceData.hlsl"
- #define ASE_NEEDS_FRAG_COLOR
- #define ASE_NEEDS_FRAG_WORLD_POSITION
- struct VertexInput
- {
- float4 vertex : POSITION;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct VertexOutput
- {
- float4 clipPos : SV_POSITION;
- #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
- float3 worldPos : TEXCOORD0;
- #endif
- #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
- float4 shadowCoord : TEXCOORD1;
- #endif
- #ifdef ASE_FOG
- float fogFactor : TEXCOORD2;
- #endif
- float4 ase_texcoord3 : TEXCOORD3;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- UNITY_VERTEX_OUTPUT_STEREO
- };
- CBUFFER_START(UnityPerMaterial)
- float4 _Colour;
- float _Duplicate;
- float _ParticleMode;
- float _AlphaErosion;
- float _RemapMin;
- float _RemapMax;
- float _Ymask;
- float _YmaskExp;
- #ifdef TESSELLATION_ON
- float _TessPhongStrength;
- float _TessValue;
- float _TessMin;
- float _TessMax;
- float _TessEdgeLength;
- float _TessMaxDisp;
- #endif
- CBUFFER_END
- sampler2D _AlbedoTexture;
-
- VertexOutput VertexFunction ( VertexInput v )
- {
- VertexOutput o = (VertexOutput)0;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- o.ase_texcoord3 = v.ase_texcoord;
- o.ase_color = v.ase_color;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- float3 defaultVertexValue = v.vertex.xyz;
- #else
- float3 defaultVertexValue = float3(0, 0, 0);
- #endif
- float3 vertexValue = defaultVertexValue;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- v.vertex.xyz = vertexValue;
- #else
- v.vertex.xyz += vertexValue;
- #endif
- v.ase_normal = v.ase_normal;
- float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
- float4 positionCS = TransformWorldToHClip( positionWS );
- #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
- o.worldPos = positionWS;
- #endif
- #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
- VertexPositionInputs vertexInput = (VertexPositionInputs)0;
- vertexInput.positionWS = positionWS;
- vertexInput.positionCS = positionCS;
- o.shadowCoord = GetShadowCoord( vertexInput );
- #endif
- #ifdef ASE_FOG
- o.fogFactor = ComputeFogFactor( positionCS.z );
- #endif
- o.clipPos = positionCS;
- return o;
- }
- #if defined(TESSELLATION_ON)
- struct VertexControl
- {
- float4 vertex : INTERNALTESSPOS;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct TessellationFactors
- {
- float edge[3] : SV_TessFactor;
- float inside : SV_InsideTessFactor;
- };
- VertexControl vert ( VertexInput v )
- {
- VertexControl o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- o.vertex = v.vertex;
- o.ase_normal = v.ase_normal;
- o.ase_texcoord = v.ase_texcoord;
- o.ase_color = v.ase_color;
- return o;
- }
- TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
- {
- TessellationFactors o;
- float4 tf = 1;
- float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
- float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
- #if defined(ASE_FIXED_TESSELLATION)
- tf = FixedTess( tessValue );
- #elif defined(ASE_DISTANCE_TESSELLATION)
- tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
- #elif defined(ASE_LENGTH_TESSELLATION)
- tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
- #elif defined(ASE_LENGTH_CULL_TESSELLATION)
- tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
- #endif
- o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
- return o;
- }
- [domain("tri")]
- [partitioning("fractional_odd")]
- [outputtopology("triangle_cw")]
- [patchconstantfunc("TessellationFunction")]
- [outputcontrolpoints(3)]
- VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
- {
- return patch[id];
- }
- [domain("tri")]
- VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
- {
- VertexInput o = (VertexInput) 0;
- o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
- o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
- o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
- o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
- #if defined(ASE_PHONG_TESSELLATION)
- float3 pp[3];
- for (int i = 0; i < 3; ++i)
- 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));
- float phongStrength = _TessPhongStrength;
- o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
- #endif
- UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
- return VertexFunction(o);
- }
- #else
- VertexOutput vert ( VertexInput v )
- {
- return VertexFunction( v );
- }
- #endif
- half4 frag ( VertexOutput IN ) : SV_Target
- {
- UNITY_SETUP_INSTANCE_ID( IN );
- UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
- #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
- float3 WorldPosition = IN.worldPos;
- #endif
- float4 ShadowCoords = float4( 0, 0, 0, 0 );
- #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
- #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
- ShadowCoords = IN.shadowCoord;
- #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
- ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
- #endif
- #endif
- float2 texCoord34 = IN.ase_texcoord3.xy * float2( 1,1 ) + float2( 0,0 );
- float ParticleStableRandom42 = IN.ase_texcoord3.w;
- float2 appendResult40 = (float2(0.0 , ParticleStableRandom42));
- float2 texCoord52 = IN.ase_texcoord3.xy * float2( 1,1 ) + float2( 0,0 );
- float ifLocalVar63 = 0;
- if( ParticleStableRandom42 <= 0.5 )
- ifLocalVar63 = 1.0;
- else
- ifLocalVar63 = -1.0;
- float2 appendResult54 = (float2(0.0 , ( ParticleStableRandom42 - 0.5 )));
- float4 AlbedoTextureSample48 = saturate( ( tex2D( _AlbedoTexture, ( texCoord34 + appendResult40 ) ) + ( tex2D( _AlbedoTexture, ( ( texCoord52 * ifLocalVar63 ) + appendResult54 ) ) * _Duplicate ) ) );
- float4 temp_output_5_0 = ( AlbedoTextureSample48 * IN.ase_color * _Colour );
- float3 ColourRGB4 = (temp_output_5_0).rgb;
-
- float ColourA10 = (temp_output_5_0).a;
- float ParticleErosionOverLifetime30 = IN.ase_texcoord3.z;
- float temp_output_1_0_g2 = _RemapMin;
- float Opacity23 = saturate( ( ( saturate( ( ColourA10 - (( _ParticleMode )?( ParticleErosionOverLifetime30 ):( _AlphaErosion )) ) ) - temp_output_1_0_g2 ) / ( _RemapMax - temp_output_1_0_g2 ) ) );
- float clampResult93 = clamp( ( ( WorldPosition.y - _Ymask ) * _YmaskExp ) , 0.0 , 1.0 );
-
- float3 BakedAlbedo = 0;
- float3 BakedEmission = 0;
- float3 Color = ColourRGB4;
- float Alpha = ( Opacity23 * clampResult93 );
- float AlphaClipThreshold = 0.5;
- float AlphaClipThresholdShadow = 0.5;
- #ifdef _ALPHATEST_ON
- clip( Alpha - AlphaClipThreshold );
- #endif
- #if defined(_DBUFFER)
- ApplyDecalToBaseColor(IN.clipPos, Color);
- #endif
- #if defined(_ALPHAPREMULTIPLY_ON)
- Color *= Alpha;
- #endif
- #ifdef LOD_FADE_CROSSFADE
- LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
- #endif
- #ifdef ASE_FOG
- Color = MixFog( Color, IN.fogFactor );
- #endif
- return half4( Color, Alpha );
- }
- ENDHLSL
- }
-
- Pass
- {
-
- Name "DepthOnly"
- Tags { "LightMode"="DepthOnly" }
- ZWrite On
- ColorMask 0
- AlphaToMask Off
- HLSLPROGRAM
-
- #pragma multi_compile_instancing
- #define _RECEIVE_SHADOWS_OFF 1
- #define ASE_SRP_VERSION 999999
-
- #pragma vertex vert
- #pragma fragment frag
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
- #define ASE_NEEDS_FRAG_WORLD_POSITION
- struct VertexInput
- {
- float4 vertex : POSITION;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct VertexOutput
- {
- float4 clipPos : SV_POSITION;
- #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
- float3 worldPos : TEXCOORD0;
- #endif
- #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
- float4 shadowCoord : TEXCOORD1;
- #endif
- float4 ase_texcoord2 : TEXCOORD2;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- UNITY_VERTEX_OUTPUT_STEREO
- };
- CBUFFER_START(UnityPerMaterial)
- float4 _Colour;
- float _Duplicate;
- float _ParticleMode;
- float _AlphaErosion;
- float _RemapMin;
- float _RemapMax;
- float _Ymask;
- float _YmaskExp;
- #ifdef TESSELLATION_ON
- float _TessPhongStrength;
- float _TessValue;
- float _TessMin;
- float _TessMax;
- float _TessEdgeLength;
- float _TessMaxDisp;
- #endif
- CBUFFER_END
- sampler2D _AlbedoTexture;
-
- VertexOutput VertexFunction( VertexInput v )
- {
- VertexOutput o = (VertexOutput)0;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- o.ase_texcoord2 = v.ase_texcoord;
- o.ase_color = v.ase_color;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- float3 defaultVertexValue = v.vertex.xyz;
- #else
- float3 defaultVertexValue = float3(0, 0, 0);
- #endif
- float3 vertexValue = defaultVertexValue;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- v.vertex.xyz = vertexValue;
- #else
- v.vertex.xyz += vertexValue;
- #endif
- v.ase_normal = v.ase_normal;
- float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
- #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
- o.worldPos = positionWS;
- #endif
- o.clipPos = TransformWorldToHClip( positionWS );
- #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
- VertexPositionInputs vertexInput = (VertexPositionInputs)0;
- vertexInput.positionWS = positionWS;
- vertexInput.positionCS = o.clipPos;
- o.shadowCoord = GetShadowCoord( vertexInput );
- #endif
- return o;
- }
- #if defined(TESSELLATION_ON)
- struct VertexControl
- {
- float4 vertex : INTERNALTESSPOS;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct TessellationFactors
- {
- float edge[3] : SV_TessFactor;
- float inside : SV_InsideTessFactor;
- };
- VertexControl vert ( VertexInput v )
- {
- VertexControl o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- o.vertex = v.vertex;
- o.ase_normal = v.ase_normal;
- o.ase_texcoord = v.ase_texcoord;
- o.ase_color = v.ase_color;
- return o;
- }
- TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
- {
- TessellationFactors o;
- float4 tf = 1;
- float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
- float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
- #if defined(ASE_FIXED_TESSELLATION)
- tf = FixedTess( tessValue );
- #elif defined(ASE_DISTANCE_TESSELLATION)
- tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
- #elif defined(ASE_LENGTH_TESSELLATION)
- tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
- #elif defined(ASE_LENGTH_CULL_TESSELLATION)
- tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
- #endif
- o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
- return o;
- }
- [domain("tri")]
- [partitioning("fractional_odd")]
- [outputtopology("triangle_cw")]
- [patchconstantfunc("TessellationFunction")]
- [outputcontrolpoints(3)]
- VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
- {
- return patch[id];
- }
- [domain("tri")]
- VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
- {
- VertexInput o = (VertexInput) 0;
- o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
- o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
- o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
- o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
- #if defined(ASE_PHONG_TESSELLATION)
- float3 pp[3];
- for (int i = 0; i < 3; ++i)
- 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));
- float phongStrength = _TessPhongStrength;
- o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
- #endif
- UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
- return VertexFunction(o);
- }
- #else
- VertexOutput vert ( VertexInput v )
- {
- return VertexFunction( v );
- }
- #endif
- half4 frag(VertexOutput IN ) : SV_TARGET
- {
- UNITY_SETUP_INSTANCE_ID(IN);
- UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
- #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
- float3 WorldPosition = IN.worldPos;
- #endif
- float4 ShadowCoords = float4( 0, 0, 0, 0 );
- #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
- #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
- ShadowCoords = IN.shadowCoord;
- #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
- ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
- #endif
- #endif
- float2 texCoord34 = IN.ase_texcoord2.xy * float2( 1,1 ) + float2( 0,0 );
- float ParticleStableRandom42 = IN.ase_texcoord2.w;
- float2 appendResult40 = (float2(0.0 , ParticleStableRandom42));
- float2 texCoord52 = IN.ase_texcoord2.xy * float2( 1,1 ) + float2( 0,0 );
- float ifLocalVar63 = 0;
- if( ParticleStableRandom42 <= 0.5 )
- ifLocalVar63 = 1.0;
- else
- ifLocalVar63 = -1.0;
- float2 appendResult54 = (float2(0.0 , ( ParticleStableRandom42 - 0.5 )));
- float4 AlbedoTextureSample48 = saturate( ( tex2D( _AlbedoTexture, ( texCoord34 + appendResult40 ) ) + ( tex2D( _AlbedoTexture, ( ( texCoord52 * ifLocalVar63 ) + appendResult54 ) ) * _Duplicate ) ) );
- float4 temp_output_5_0 = ( AlbedoTextureSample48 * IN.ase_color * _Colour );
- float ColourA10 = (temp_output_5_0).a;
- float ParticleErosionOverLifetime30 = IN.ase_texcoord2.z;
- float temp_output_1_0_g2 = _RemapMin;
- float Opacity23 = saturate( ( ( saturate( ( ColourA10 - (( _ParticleMode )?( ParticleErosionOverLifetime30 ):( _AlphaErosion )) ) ) - temp_output_1_0_g2 ) / ( _RemapMax - temp_output_1_0_g2 ) ) );
- float clampResult93 = clamp( ( ( WorldPosition.y - _Ymask ) * _YmaskExp ) , 0.0 , 1.0 );
-
- float Alpha = ( Opacity23 * clampResult93 );
- float AlphaClipThreshold = 0.5;
- #ifdef _ALPHATEST_ON
- clip(Alpha - AlphaClipThreshold);
- #endif
- #ifdef LOD_FADE_CROSSFADE
- LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
- #endif
- return 0;
- }
- ENDHLSL
- }
-
- Pass
- {
-
- Name "Universal2D"
- Tags { "LightMode"="Universal2D" }
-
- Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha
- ZWrite Off
- ZTest LEqual
- Offset 0 , 0
- ColorMask RGBA
-
- HLSLPROGRAM
-
- #pragma multi_compile_instancing
- #define _RECEIVE_SHADOWS_OFF 1
- #define ASE_SRP_VERSION 999999
-
- #pragma multi_compile _ LIGHTMAP_ON
- #pragma multi_compile _ DIRLIGHTMAP_COMBINED
- #pragma shader_feature _ _SAMPLE_GI
- #pragma multi_compile _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3
- #pragma multi_compile _ DEBUG_DISPLAY
- #define SHADERPASS SHADERPASS_UNLIT
- #pragma vertex vert
- #pragma fragment frag
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging3D.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceData.hlsl"
- #define ASE_NEEDS_FRAG_COLOR
- #define ASE_NEEDS_FRAG_WORLD_POSITION
- struct VertexInput
- {
- float4 vertex : POSITION;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct VertexOutput
- {
- float4 clipPos : SV_POSITION;
- #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
- float3 worldPos : TEXCOORD0;
- #endif
- #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
- float4 shadowCoord : TEXCOORD1;
- #endif
- #ifdef ASE_FOG
- float fogFactor : TEXCOORD2;
- #endif
- float4 ase_texcoord3 : TEXCOORD3;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- UNITY_VERTEX_OUTPUT_STEREO
- };
- CBUFFER_START(UnityPerMaterial)
- float4 _Colour;
- float _Duplicate;
- float _ParticleMode;
- float _AlphaErosion;
- float _RemapMin;
- float _RemapMax;
- float _Ymask;
- float _YmaskExp;
- #ifdef TESSELLATION_ON
- float _TessPhongStrength;
- float _TessValue;
- float _TessMin;
- float _TessMax;
- float _TessEdgeLength;
- float _TessMaxDisp;
- #endif
- CBUFFER_END
- sampler2D _AlbedoTexture;
-
- VertexOutput VertexFunction ( VertexInput v )
- {
- VertexOutput o = (VertexOutput)0;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- o.ase_texcoord3 = v.ase_texcoord;
- o.ase_color = v.ase_color;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- float3 defaultVertexValue = v.vertex.xyz;
- #else
- float3 defaultVertexValue = float3(0, 0, 0);
- #endif
- float3 vertexValue = defaultVertexValue;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- v.vertex.xyz = vertexValue;
- #else
- v.vertex.xyz += vertexValue;
- #endif
- v.ase_normal = v.ase_normal;
- float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
- float4 positionCS = TransformWorldToHClip( positionWS );
- #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
- o.worldPos = positionWS;
- #endif
- #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
- VertexPositionInputs vertexInput = (VertexPositionInputs)0;
- vertexInput.positionWS = positionWS;
- vertexInput.positionCS = positionCS;
- o.shadowCoord = GetShadowCoord( vertexInput );
- #endif
- #ifdef ASE_FOG
- o.fogFactor = ComputeFogFactor( positionCS.z );
- #endif
- o.clipPos = positionCS;
- return o;
- }
- #if defined(TESSELLATION_ON)
- struct VertexControl
- {
- float4 vertex : INTERNALTESSPOS;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct TessellationFactors
- {
- float edge[3] : SV_TessFactor;
- float inside : SV_InsideTessFactor;
- };
- VertexControl vert ( VertexInput v )
- {
- VertexControl o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- o.vertex = v.vertex;
- o.ase_normal = v.ase_normal;
- o.ase_texcoord = v.ase_texcoord;
- o.ase_color = v.ase_color;
- return o;
- }
- TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
- {
- TessellationFactors o;
- float4 tf = 1;
- float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
- float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
- #if defined(ASE_FIXED_TESSELLATION)
- tf = FixedTess( tessValue );
- #elif defined(ASE_DISTANCE_TESSELLATION)
- tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
- #elif defined(ASE_LENGTH_TESSELLATION)
- tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
- #elif defined(ASE_LENGTH_CULL_TESSELLATION)
- tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
- #endif
- o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
- return o;
- }
- [domain("tri")]
- [partitioning("fractional_odd")]
- [outputtopology("triangle_cw")]
- [patchconstantfunc("TessellationFunction")]
- [outputcontrolpoints(3)]
- VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
- {
- return patch[id];
- }
- [domain("tri")]
- VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
- {
- VertexInput o = (VertexInput) 0;
- o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
- o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
- o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
- o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
- #if defined(ASE_PHONG_TESSELLATION)
- float3 pp[3];
- for (int i = 0; i < 3; ++i)
- 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));
- float phongStrength = _TessPhongStrength;
- o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
- #endif
- UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
- return VertexFunction(o);
- }
- #else
- VertexOutput vert ( VertexInput v )
- {
- return VertexFunction( v );
- }
- #endif
- half4 frag ( VertexOutput IN ) : SV_Target
- {
- UNITY_SETUP_INSTANCE_ID( IN );
- UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
- #if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
- float3 WorldPosition = IN.worldPos;
- #endif
- float4 ShadowCoords = float4( 0, 0, 0, 0 );
- #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS)
- #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
- ShadowCoords = IN.shadowCoord;
- #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
- ShadowCoords = TransformWorldToShadowCoord( WorldPosition );
- #endif
- #endif
- float2 texCoord34 = IN.ase_texcoord3.xy * float2( 1,1 ) + float2( 0,0 );
- float ParticleStableRandom42 = IN.ase_texcoord3.w;
- float2 appendResult40 = (float2(0.0 , ParticleStableRandom42));
- float2 texCoord52 = IN.ase_texcoord3.xy * float2( 1,1 ) + float2( 0,0 );
- float ifLocalVar63 = 0;
- if( ParticleStableRandom42 <= 0.5 )
- ifLocalVar63 = 1.0;
- else
- ifLocalVar63 = -1.0;
- float2 appendResult54 = (float2(0.0 , ( ParticleStableRandom42 - 0.5 )));
- float4 AlbedoTextureSample48 = saturate( ( tex2D( _AlbedoTexture, ( texCoord34 + appendResult40 ) ) + ( tex2D( _AlbedoTexture, ( ( texCoord52 * ifLocalVar63 ) + appendResult54 ) ) * _Duplicate ) ) );
- float4 temp_output_5_0 = ( AlbedoTextureSample48 * IN.ase_color * _Colour );
- float3 ColourRGB4 = (temp_output_5_0).rgb;
-
- float ColourA10 = (temp_output_5_0).a;
- float ParticleErosionOverLifetime30 = IN.ase_texcoord3.z;
- float temp_output_1_0_g2 = _RemapMin;
- float Opacity23 = saturate( ( ( saturate( ( ColourA10 - (( _ParticleMode )?( ParticleErosionOverLifetime30 ):( _AlphaErosion )) ) ) - temp_output_1_0_g2 ) / ( _RemapMax - temp_output_1_0_g2 ) ) );
- float clampResult93 = clamp( ( ( WorldPosition.y - _Ymask ) * _YmaskExp ) , 0.0 , 1.0 );
-
- float3 BakedAlbedo = 0;
- float3 BakedEmission = 0;
- float3 Color = ColourRGB4;
- float Alpha = ( Opacity23 * clampResult93 );
- float AlphaClipThreshold = 0.5;
- float AlphaClipThresholdShadow = 0.5;
- #ifdef _ALPHATEST_ON
- clip( Alpha - AlphaClipThreshold );
- #endif
- #if defined(_DBUFFER)
- ApplyDecalToBaseColor(IN.clipPos, Color);
- #endif
- #if defined(_ALPHAPREMULTIPLY_ON)
- Color *= Alpha;
- #endif
- #ifdef LOD_FADE_CROSSFADE
- LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
- #endif
- #ifdef ASE_FOG
- Color = MixFog( Color, IN.fogFactor );
- #endif
- return half4( Color, Alpha );
- }
- ENDHLSL
- }
-
- Pass
- {
-
- Name "SceneSelectionPass"
- Tags { "LightMode"="SceneSelectionPass" }
-
- Cull Off
- HLSLPROGRAM
-
- #pragma multi_compile_instancing
- #define _RECEIVE_SHADOWS_OFF 1
- #define ASE_SRP_VERSION 999999
-
- #pragma only_renderers d3d11 glcore gles gles3
- #pragma vertex vert
- #pragma fragment frag
- #define ATTRIBUTES_NEED_NORMAL
- #define ATTRIBUTES_NEED_TANGENT
- #define SHADERPASS SHADERPASS_DEPTHONLY
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
-
-
- struct VertexInput
- {
- float4 vertex : POSITION;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct VertexOutput
- {
- float4 clipPos : SV_POSITION;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- float4 ase_texcoord1 : TEXCOORD1;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- UNITY_VERTEX_OUTPUT_STEREO
- };
-
- CBUFFER_START(UnityPerMaterial)
- float4 _Colour;
- float _Duplicate;
- float _ParticleMode;
- float _AlphaErosion;
- float _RemapMin;
- float _RemapMax;
- float _Ymask;
- float _YmaskExp;
- #ifdef TESSELLATION_ON
- float _TessPhongStrength;
- float _TessValue;
- float _TessMin;
- float _TessMax;
- float _TessEdgeLength;
- float _TessMaxDisp;
- #endif
- CBUFFER_END
- sampler2D _AlbedoTexture;
-
- int _ObjectId;
- int _PassValue;
- struct SurfaceDescription
- {
- float Alpha;
- float AlphaClipThreshold;
- };
-
- VertexOutput VertexFunction(VertexInput v )
- {
- VertexOutput o;
- ZERO_INITIALIZE(VertexOutput, o);
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- float3 ase_worldPos = mul(GetObjectToWorldMatrix(), v.vertex).xyz;
- o.ase_texcoord1.xyz = ase_worldPos;
-
- o.ase_texcoord = v.ase_texcoord;
- o.ase_color = v.ase_color;
-
- //setting value to unused interpolator channels and avoid initialization warnings
- o.ase_texcoord1.w = 0;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- float3 defaultVertexValue = v.vertex.xyz;
- #else
- float3 defaultVertexValue = float3(0, 0, 0);
- #endif
- float3 vertexValue = defaultVertexValue;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- v.vertex.xyz = vertexValue;
- #else
- v.vertex.xyz += vertexValue;
- #endif
- v.ase_normal = v.ase_normal;
- float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
- o.clipPos = TransformWorldToHClip(positionWS);
- return o;
- }
- #if defined(TESSELLATION_ON)
- struct VertexControl
- {
- float4 vertex : INTERNALTESSPOS;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct TessellationFactors
- {
- float edge[3] : SV_TessFactor;
- float inside : SV_InsideTessFactor;
- };
- VertexControl vert ( VertexInput v )
- {
- VertexControl o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- o.vertex = v.vertex;
- o.ase_normal = v.ase_normal;
- o.ase_texcoord = v.ase_texcoord;
- o.ase_color = v.ase_color;
- return o;
- }
- TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
- {
- TessellationFactors o;
- float4 tf = 1;
- float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
- float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
- #if defined(ASE_FIXED_TESSELLATION)
- tf = FixedTess( tessValue );
- #elif defined(ASE_DISTANCE_TESSELLATION)
- tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
- #elif defined(ASE_LENGTH_TESSELLATION)
- tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
- #elif defined(ASE_LENGTH_CULL_TESSELLATION)
- tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
- #endif
- o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
- return o;
- }
- [domain("tri")]
- [partitioning("fractional_odd")]
- [outputtopology("triangle_cw")]
- [patchconstantfunc("TessellationFunction")]
- [outputcontrolpoints(3)]
- VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
- {
- return patch[id];
- }
- [domain("tri")]
- VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
- {
- VertexInput o = (VertexInput) 0;
- o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
- o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
- o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
- o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
- #if defined(ASE_PHONG_TESSELLATION)
- float3 pp[3];
- for (int i = 0; i < 3; ++i)
- 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));
- float phongStrength = _TessPhongStrength;
- o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
- #endif
- UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
- return VertexFunction(o);
- }
- #else
- VertexOutput vert ( VertexInput v )
- {
- return VertexFunction( v );
- }
- #endif
-
- half4 frag(VertexOutput IN ) : SV_TARGET
- {
- SurfaceDescription surfaceDescription = (SurfaceDescription)0;
- float2 texCoord34 = IN.ase_texcoord.xy * float2( 1,1 ) + float2( 0,0 );
- float ParticleStableRandom42 = IN.ase_texcoord.w;
- float2 appendResult40 = (float2(0.0 , ParticleStableRandom42));
- float2 texCoord52 = IN.ase_texcoord.xy * float2( 1,1 ) + float2( 0,0 );
- float ifLocalVar63 = 0;
- if( ParticleStableRandom42 <= 0.5 )
- ifLocalVar63 = 1.0;
- else
- ifLocalVar63 = -1.0;
- float2 appendResult54 = (float2(0.0 , ( ParticleStableRandom42 - 0.5 )));
- float4 AlbedoTextureSample48 = saturate( ( tex2D( _AlbedoTexture, ( texCoord34 + appendResult40 ) ) + ( tex2D( _AlbedoTexture, ( ( texCoord52 * ifLocalVar63 ) + appendResult54 ) ) * _Duplicate ) ) );
- float4 temp_output_5_0 = ( AlbedoTextureSample48 * IN.ase_color * _Colour );
- float ColourA10 = (temp_output_5_0).a;
- float ParticleErosionOverLifetime30 = IN.ase_texcoord.z;
- float temp_output_1_0_g2 = _RemapMin;
- float Opacity23 = saturate( ( ( saturate( ( ColourA10 - (( _ParticleMode )?( ParticleErosionOverLifetime30 ):( _AlphaErosion )) ) ) - temp_output_1_0_g2 ) / ( _RemapMax - temp_output_1_0_g2 ) ) );
- float3 ase_worldPos = IN.ase_texcoord1.xyz;
- float clampResult93 = clamp( ( ( ase_worldPos.y - _Ymask ) * _YmaskExp ) , 0.0 , 1.0 );
-
- surfaceDescription.Alpha = ( Opacity23 * clampResult93 );
- surfaceDescription.AlphaClipThreshold = 0.5;
- #if _ALPHATEST_ON
- float alphaClipThreshold = 0.01f;
- #if ALPHA_CLIP_THRESHOLD
- alphaClipThreshold = surfaceDescription.AlphaClipThreshold;
- #endif
- clip(surfaceDescription.Alpha - alphaClipThreshold);
- #endif
- half4 outColor = half4(_ObjectId, _PassValue, 1.0, 1.0);
- return outColor;
- }
- ENDHLSL
- }
-
- Pass
- {
-
- Name "ScenePickingPass"
- Tags { "LightMode"="Picking" }
-
- HLSLPROGRAM
- #pragma multi_compile_instancing
- #define _RECEIVE_SHADOWS_OFF 1
- #define ASE_SRP_VERSION 999999
- #pragma only_renderers d3d11 glcore gles gles3
- #pragma vertex vert
- #pragma fragment frag
-
- #define ATTRIBUTES_NEED_NORMAL
- #define ATTRIBUTES_NEED_TANGENT
- #define SHADERPASS SHADERPASS_DEPTHONLY
-
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
-
-
- struct VertexInput
- {
- float4 vertex : POSITION;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct VertexOutput
- {
- float4 clipPos : SV_POSITION;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- float4 ase_texcoord1 : TEXCOORD1;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- UNITY_VERTEX_OUTPUT_STEREO
- };
-
- CBUFFER_START(UnityPerMaterial)
- float4 _Colour;
- float _Duplicate;
- float _ParticleMode;
- float _AlphaErosion;
- float _RemapMin;
- float _RemapMax;
- float _Ymask;
- float _YmaskExp;
- #ifdef TESSELLATION_ON
- float _TessPhongStrength;
- float _TessValue;
- float _TessMin;
- float _TessMax;
- float _TessEdgeLength;
- float _TessMaxDisp;
- #endif
- CBUFFER_END
- sampler2D _AlbedoTexture;
-
-
- float4 _SelectionID;
-
- struct SurfaceDescription
- {
- float Alpha;
- float AlphaClipThreshold;
- };
-
- VertexOutput VertexFunction(VertexInput v )
- {
- VertexOutput o;
- ZERO_INITIALIZE(VertexOutput, o);
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- float3 ase_worldPos = mul(GetObjectToWorldMatrix(), v.vertex).xyz;
- o.ase_texcoord1.xyz = ase_worldPos;
-
- o.ase_texcoord = v.ase_texcoord;
- o.ase_color = v.ase_color;
-
- //setting value to unused interpolator channels and avoid initialization warnings
- o.ase_texcoord1.w = 0;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- float3 defaultVertexValue = v.vertex.xyz;
- #else
- float3 defaultVertexValue = float3(0, 0, 0);
- #endif
- float3 vertexValue = defaultVertexValue;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- v.vertex.xyz = vertexValue;
- #else
- v.vertex.xyz += vertexValue;
- #endif
- v.ase_normal = v.ase_normal;
- float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
- o.clipPos = TransformWorldToHClip(positionWS);
- return o;
- }
- #if defined(TESSELLATION_ON)
- struct VertexControl
- {
- float4 vertex : INTERNALTESSPOS;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct TessellationFactors
- {
- float edge[3] : SV_TessFactor;
- float inside : SV_InsideTessFactor;
- };
- VertexControl vert ( VertexInput v )
- {
- VertexControl o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- o.vertex = v.vertex;
- o.ase_normal = v.ase_normal;
- o.ase_texcoord = v.ase_texcoord;
- o.ase_color = v.ase_color;
- return o;
- }
- TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
- {
- TessellationFactors o;
- float4 tf = 1;
- float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
- float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
- #if defined(ASE_FIXED_TESSELLATION)
- tf = FixedTess( tessValue );
- #elif defined(ASE_DISTANCE_TESSELLATION)
- tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
- #elif defined(ASE_LENGTH_TESSELLATION)
- tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
- #elif defined(ASE_LENGTH_CULL_TESSELLATION)
- tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
- #endif
- o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
- return o;
- }
- [domain("tri")]
- [partitioning("fractional_odd")]
- [outputtopology("triangle_cw")]
- [patchconstantfunc("TessellationFunction")]
- [outputcontrolpoints(3)]
- VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
- {
- return patch[id];
- }
- [domain("tri")]
- VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
- {
- VertexInput o = (VertexInput) 0;
- o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
- o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
- o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
- o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
- #if defined(ASE_PHONG_TESSELLATION)
- float3 pp[3];
- for (int i = 0; i < 3; ++i)
- 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));
- float phongStrength = _TessPhongStrength;
- o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
- #endif
- UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
- return VertexFunction(o);
- }
- #else
- VertexOutput vert ( VertexInput v )
- {
- return VertexFunction( v );
- }
- #endif
- half4 frag(VertexOutput IN ) : SV_TARGET
- {
- SurfaceDescription surfaceDescription = (SurfaceDescription)0;
- float2 texCoord34 = IN.ase_texcoord.xy * float2( 1,1 ) + float2( 0,0 );
- float ParticleStableRandom42 = IN.ase_texcoord.w;
- float2 appendResult40 = (float2(0.0 , ParticleStableRandom42));
- float2 texCoord52 = IN.ase_texcoord.xy * float2( 1,1 ) + float2( 0,0 );
- float ifLocalVar63 = 0;
- if( ParticleStableRandom42 <= 0.5 )
- ifLocalVar63 = 1.0;
- else
- ifLocalVar63 = -1.0;
- float2 appendResult54 = (float2(0.0 , ( ParticleStableRandom42 - 0.5 )));
- float4 AlbedoTextureSample48 = saturate( ( tex2D( _AlbedoTexture, ( texCoord34 + appendResult40 ) ) + ( tex2D( _AlbedoTexture, ( ( texCoord52 * ifLocalVar63 ) + appendResult54 ) ) * _Duplicate ) ) );
- float4 temp_output_5_0 = ( AlbedoTextureSample48 * IN.ase_color * _Colour );
- float ColourA10 = (temp_output_5_0).a;
- float ParticleErosionOverLifetime30 = IN.ase_texcoord.z;
- float temp_output_1_0_g2 = _RemapMin;
- float Opacity23 = saturate( ( ( saturate( ( ColourA10 - (( _ParticleMode )?( ParticleErosionOverLifetime30 ):( _AlphaErosion )) ) ) - temp_output_1_0_g2 ) / ( _RemapMax - temp_output_1_0_g2 ) ) );
- float3 ase_worldPos = IN.ase_texcoord1.xyz;
- float clampResult93 = clamp( ( ( ase_worldPos.y - _Ymask ) * _YmaskExp ) , 0.0 , 1.0 );
-
- surfaceDescription.Alpha = ( Opacity23 * clampResult93 );
- surfaceDescription.AlphaClipThreshold = 0.5;
- #if _ALPHATEST_ON
- float alphaClipThreshold = 0.01f;
- #if ALPHA_CLIP_THRESHOLD
- alphaClipThreshold = surfaceDescription.AlphaClipThreshold;
- #endif
- clip(surfaceDescription.Alpha - alphaClipThreshold);
- #endif
- half4 outColor = 0;
- outColor = _SelectionID;
-
- return outColor;
- }
-
- ENDHLSL
- }
-
-
- Pass
- {
-
- Name "DepthNormals"
- Tags { "LightMode"="DepthNormalsOnly" }
- ZTest LEqual
- ZWrite On
-
- HLSLPROGRAM
-
- #pragma multi_compile_instancing
- #define _RECEIVE_SHADOWS_OFF 1
- #define ASE_SRP_VERSION 999999
-
- #pragma only_renderers d3d11 glcore gles gles3
- #pragma multi_compile_fog
- #pragma instancing_options renderinglayer
- #pragma vertex vert
- #pragma fragment frag
-
- #define ATTRIBUTES_NEED_NORMAL
- #define ATTRIBUTES_NEED_TANGENT
- #define VARYINGS_NEED_NORMAL_WS
- #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
-
-
- struct VertexInput
- {
- float4 vertex : POSITION;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct VertexOutput
- {
- float4 clipPos : SV_POSITION;
- float3 normalWS : TEXCOORD0;
- float4 ase_texcoord1 : TEXCOORD1;
- float4 ase_color : COLOR;
- float4 ase_texcoord2 : TEXCOORD2;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- UNITY_VERTEX_OUTPUT_STEREO
- };
-
- CBUFFER_START(UnityPerMaterial)
- float4 _Colour;
- float _Duplicate;
- float _ParticleMode;
- float _AlphaErosion;
- float _RemapMin;
- float _RemapMax;
- float _Ymask;
- float _YmaskExp;
- #ifdef TESSELLATION_ON
- float _TessPhongStrength;
- float _TessValue;
- float _TessMin;
- float _TessMax;
- float _TessEdgeLength;
- float _TessMaxDisp;
- #endif
- CBUFFER_END
- sampler2D _AlbedoTexture;
-
- struct SurfaceDescription
- {
- float Alpha;
- float AlphaClipThreshold;
- };
-
- VertexOutput VertexFunction(VertexInput v )
- {
- VertexOutput o;
- ZERO_INITIALIZE(VertexOutput, o);
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- float3 ase_worldPos = mul(GetObjectToWorldMatrix(), v.vertex).xyz;
- o.ase_texcoord2.xyz = ase_worldPos;
-
- o.ase_texcoord1 = v.ase_texcoord;
- o.ase_color = v.ase_color;
-
- //setting value to unused interpolator channels and avoid initialization warnings
- o.ase_texcoord2.w = 0;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- float3 defaultVertexValue = v.vertex.xyz;
- #else
- float3 defaultVertexValue = float3(0, 0, 0);
- #endif
- float3 vertexValue = defaultVertexValue;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- v.vertex.xyz = vertexValue;
- #else
- v.vertex.xyz += vertexValue;
- #endif
- v.ase_normal = v.ase_normal;
- float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
- float3 normalWS = TransformObjectToWorldNormal(v.ase_normal);
- o.clipPos = TransformWorldToHClip(positionWS);
- o.normalWS.xyz = normalWS;
- return o;
- }
- #if defined(TESSELLATION_ON)
- struct VertexControl
- {
- float4 vertex : INTERNALTESSPOS;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct TessellationFactors
- {
- float edge[3] : SV_TessFactor;
- float inside : SV_InsideTessFactor;
- };
- VertexControl vert ( VertexInput v )
- {
- VertexControl o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- o.vertex = v.vertex;
- o.ase_normal = v.ase_normal;
- o.ase_texcoord = v.ase_texcoord;
- o.ase_color = v.ase_color;
- return o;
- }
- TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
- {
- TessellationFactors o;
- float4 tf = 1;
- float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
- float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
- #if defined(ASE_FIXED_TESSELLATION)
- tf = FixedTess( tessValue );
- #elif defined(ASE_DISTANCE_TESSELLATION)
- tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
- #elif defined(ASE_LENGTH_TESSELLATION)
- tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
- #elif defined(ASE_LENGTH_CULL_TESSELLATION)
- tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
- #endif
- o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
- return o;
- }
- [domain("tri")]
- [partitioning("fractional_odd")]
- [outputtopology("triangle_cw")]
- [patchconstantfunc("TessellationFunction")]
- [outputcontrolpoints(3)]
- VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
- {
- return patch[id];
- }
- [domain("tri")]
- VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
- {
- VertexInput o = (VertexInput) 0;
- o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
- o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
- o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
- o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
- #if defined(ASE_PHONG_TESSELLATION)
- float3 pp[3];
- for (int i = 0; i < 3; ++i)
- 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));
- float phongStrength = _TessPhongStrength;
- o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
- #endif
- UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
- return VertexFunction(o);
- }
- #else
- VertexOutput vert ( VertexInput v )
- {
- return VertexFunction( v );
- }
- #endif
- half4 frag(VertexOutput IN ) : SV_TARGET
- {
- SurfaceDescription surfaceDescription = (SurfaceDescription)0;
- float2 texCoord34 = IN.ase_texcoord1.xy * float2( 1,1 ) + float2( 0,0 );
- float ParticleStableRandom42 = IN.ase_texcoord1.w;
- float2 appendResult40 = (float2(0.0 , ParticleStableRandom42));
- float2 texCoord52 = IN.ase_texcoord1.xy * float2( 1,1 ) + float2( 0,0 );
- float ifLocalVar63 = 0;
- if( ParticleStableRandom42 <= 0.5 )
- ifLocalVar63 = 1.0;
- else
- ifLocalVar63 = -1.0;
- float2 appendResult54 = (float2(0.0 , ( ParticleStableRandom42 - 0.5 )));
- float4 AlbedoTextureSample48 = saturate( ( tex2D( _AlbedoTexture, ( texCoord34 + appendResult40 ) ) + ( tex2D( _AlbedoTexture, ( ( texCoord52 * ifLocalVar63 ) + appendResult54 ) ) * _Duplicate ) ) );
- float4 temp_output_5_0 = ( AlbedoTextureSample48 * IN.ase_color * _Colour );
- float ColourA10 = (temp_output_5_0).a;
- float ParticleErosionOverLifetime30 = IN.ase_texcoord1.z;
- float temp_output_1_0_g2 = _RemapMin;
- float Opacity23 = saturate( ( ( saturate( ( ColourA10 - (( _ParticleMode )?( ParticleErosionOverLifetime30 ):( _AlphaErosion )) ) ) - temp_output_1_0_g2 ) / ( _RemapMax - temp_output_1_0_g2 ) ) );
- float3 ase_worldPos = IN.ase_texcoord2.xyz;
- float clampResult93 = clamp( ( ( ase_worldPos.y - _Ymask ) * _YmaskExp ) , 0.0 , 1.0 );
-
- surfaceDescription.Alpha = ( Opacity23 * clampResult93 );
- surfaceDescription.AlphaClipThreshold = 0.5;
- #if _ALPHATEST_ON
- clip(surfaceDescription.Alpha - surfaceDescription.AlphaClipThreshold);
- #endif
- #ifdef LOD_FADE_CROSSFADE
- LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
- #endif
- float3 normalWS = IN.normalWS;
- return half4(NormalizeNormalPerPixel(normalWS), 0.0);
- }
-
- ENDHLSL
- }
-
- Pass
- {
-
- Name "DepthNormalsOnly"
- Tags { "LightMode"="DepthNormalsOnly" }
-
- ZTest LEqual
- ZWrite On
-
-
- HLSLPROGRAM
-
- #pragma multi_compile_instancing
- #define _RECEIVE_SHADOWS_OFF 1
- #define ASE_SRP_VERSION 999999
-
- #pragma exclude_renderers glcore gles gles3
- #pragma vertex vert
- #pragma fragment frag
-
- #define ATTRIBUTES_NEED_NORMAL
- #define ATTRIBUTES_NEED_TANGENT
- #define ATTRIBUTES_NEED_TEXCOORD1
- #define VARYINGS_NEED_NORMAL_WS
- #define VARYINGS_NEED_TANGENT_WS
-
- #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY
-
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
-
-
- struct VertexInput
- {
- float4 vertex : POSITION;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct VertexOutput
- {
- float4 clipPos : SV_POSITION;
- float3 normalWS : TEXCOORD0;
- float4 ase_texcoord1 : TEXCOORD1;
- float4 ase_color : COLOR;
- float4 ase_texcoord2 : TEXCOORD2;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- UNITY_VERTEX_OUTPUT_STEREO
- };
-
- CBUFFER_START(UnityPerMaterial)
- float4 _Colour;
- float _Duplicate;
- float _ParticleMode;
- float _AlphaErosion;
- float _RemapMin;
- float _RemapMax;
- float _Ymask;
- float _YmaskExp;
- #ifdef TESSELLATION_ON
- float _TessPhongStrength;
- float _TessValue;
- float _TessMin;
- float _TessMax;
- float _TessEdgeLength;
- float _TessMaxDisp;
- #endif
- CBUFFER_END
- sampler2D _AlbedoTexture;
-
- struct SurfaceDescription
- {
- float Alpha;
- float AlphaClipThreshold;
- };
-
- VertexOutput VertexFunction(VertexInput v )
- {
- VertexOutput o;
- ZERO_INITIALIZE(VertexOutput, o);
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- float3 ase_worldPos = mul(GetObjectToWorldMatrix(), v.vertex).xyz;
- o.ase_texcoord2.xyz = ase_worldPos;
-
- o.ase_texcoord1 = v.ase_texcoord;
- o.ase_color = v.ase_color;
-
- //setting value to unused interpolator channels and avoid initialization warnings
- o.ase_texcoord2.w = 0;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- float3 defaultVertexValue = v.vertex.xyz;
- #else
- float3 defaultVertexValue = float3(0, 0, 0);
- #endif
- float3 vertexValue = defaultVertexValue;
- #ifdef ASE_ABSOLUTE_VERTEX_POS
- v.vertex.xyz = vertexValue;
- #else
- v.vertex.xyz += vertexValue;
- #endif
- v.ase_normal = v.ase_normal;
- float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
- float3 normalWS = TransformObjectToWorldNormal(v.ase_normal);
- o.clipPos = TransformWorldToHClip(positionWS);
- o.normalWS.xyz = normalWS;
- return o;
- }
- #if defined(TESSELLATION_ON)
- struct VertexControl
- {
- float4 vertex : INTERNALTESSPOS;
- float3 ase_normal : NORMAL;
- float4 ase_texcoord : TEXCOORD0;
- float4 ase_color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct TessellationFactors
- {
- float edge[3] : SV_TessFactor;
- float inside : SV_InsideTessFactor;
- };
- VertexControl vert ( VertexInput v )
- {
- VertexControl o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_TRANSFER_INSTANCE_ID(v, o);
- o.vertex = v.vertex;
- o.ase_normal = v.ase_normal;
- o.ase_texcoord = v.ase_texcoord;
- o.ase_color = v.ase_color;
- return o;
- }
- TessellationFactors TessellationFunction (InputPatch<VertexControl,3> v)
- {
- TessellationFactors o;
- float4 tf = 1;
- float tessValue = _TessValue; float tessMin = _TessMin; float tessMax = _TessMax;
- float edgeLength = _TessEdgeLength; float tessMaxDisp = _TessMaxDisp;
- #if defined(ASE_FIXED_TESSELLATION)
- tf = FixedTess( tessValue );
- #elif defined(ASE_DISTANCE_TESSELLATION)
- tf = DistanceBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos );
- #elif defined(ASE_LENGTH_TESSELLATION)
- tf = EdgeLengthBasedTess(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams );
- #elif defined(ASE_LENGTH_CULL_TESSELLATION)
- tf = EdgeLengthBasedTessCull(v[0].vertex, v[1].vertex, v[2].vertex, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes );
- #endif
- o.edge[0] = tf.x; o.edge[1] = tf.y; o.edge[2] = tf.z; o.inside = tf.w;
- return o;
- }
- [domain("tri")]
- [partitioning("fractional_odd")]
- [outputtopology("triangle_cw")]
- [patchconstantfunc("TessellationFunction")]
- [outputcontrolpoints(3)]
- VertexControl HullFunction(InputPatch<VertexControl, 3> patch, uint id : SV_OutputControlPointID)
- {
- return patch[id];
- }
- [domain("tri")]
- VertexOutput DomainFunction(TessellationFactors factors, OutputPatch<VertexControl, 3> patch, float3 bary : SV_DomainLocation)
- {
- VertexInput o = (VertexInput) 0;
- o.vertex = patch[0].vertex * bary.x + patch[1].vertex * bary.y + patch[2].vertex * bary.z;
- o.ase_normal = patch[0].ase_normal * bary.x + patch[1].ase_normal * bary.y + patch[2].ase_normal * bary.z;
- o.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z;
- o.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z;
- #if defined(ASE_PHONG_TESSELLATION)
- float3 pp[3];
- for (int i = 0; i < 3; ++i)
- 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));
- float phongStrength = _TessPhongStrength;
- o.vertex.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * o.vertex.xyz;
- #endif
- UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
- return VertexFunction(o);
- }
- #else
- VertexOutput vert ( VertexInput v )
- {
- return VertexFunction( v );
- }
- #endif
- half4 frag(VertexOutput IN ) : SV_TARGET
- {
- SurfaceDescription surfaceDescription = (SurfaceDescription)0;
- float2 texCoord34 = IN.ase_texcoord1.xy * float2( 1,1 ) + float2( 0,0 );
- float ParticleStableRandom42 = IN.ase_texcoord1.w;
- float2 appendResult40 = (float2(0.0 , ParticleStableRandom42));
- float2 texCoord52 = IN.ase_texcoord1.xy * float2( 1,1 ) + float2( 0,0 );
- float ifLocalVar63 = 0;
- if( ParticleStableRandom42 <= 0.5 )
- ifLocalVar63 = 1.0;
- else
- ifLocalVar63 = -1.0;
- float2 appendResult54 = (float2(0.0 , ( ParticleStableRandom42 - 0.5 )));
- float4 AlbedoTextureSample48 = saturate( ( tex2D( _AlbedoTexture, ( texCoord34 + appendResult40 ) ) + ( tex2D( _AlbedoTexture, ( ( texCoord52 * ifLocalVar63 ) + appendResult54 ) ) * _Duplicate ) ) );
- float4 temp_output_5_0 = ( AlbedoTextureSample48 * IN.ase_color * _Colour );
- float ColourA10 = (temp_output_5_0).a;
- float ParticleErosionOverLifetime30 = IN.ase_texcoord1.z;
- float temp_output_1_0_g2 = _RemapMin;
- float Opacity23 = saturate( ( ( saturate( ( ColourA10 - (( _ParticleMode )?( ParticleErosionOverLifetime30 ):( _AlphaErosion )) ) ) - temp_output_1_0_g2 ) / ( _RemapMax - temp_output_1_0_g2 ) ) );
- float3 ase_worldPos = IN.ase_texcoord2.xyz;
- float clampResult93 = clamp( ( ( ase_worldPos.y - _Ymask ) * _YmaskExp ) , 0.0 , 1.0 );
-
- surfaceDescription.Alpha = ( Opacity23 * clampResult93 );
- surfaceDescription.AlphaClipThreshold = 0.5;
-
- #if _ALPHATEST_ON
- clip(surfaceDescription.Alpha - surfaceDescription.AlphaClipThreshold);
- #endif
- #ifdef LOD_FADE_CROSSFADE
- LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
- #endif
- float3 normalWS = IN.normalWS;
- return half4(NormalizeNormalPerPixel(normalWS), 0.0);
- }
- ENDHLSL
- }
-
- }
-
- CustomEditor "UnityEditor.ShaderGraphUnlitGUI"
- Fallback "False"
-
- }
- /*ASEBEGIN
- Version=18935
- 2092.8;176.8;1567.2;735;829.6702;66.65156;1.026331;True;False
- Node;AmplifyShaderEditor.TexCoordVertexDataNode;86;-4907.174,995.6688;Inherit;False;0;4;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
- Node;AmplifyShaderEditor.RegisterLocalVarNode;42;-4530.296,1039.647;Inherit;False;ParticleStableRandom;-1;True;1;0;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.RangedFloatNode;65;-3804.417,269.1858;Inherit;False;Constant;_Float1;Float 1;6;0;Create;True;0;0;0;False;0;False;1;0;0;0;0;1;FLOAT;0
- Node;AmplifyShaderEditor.RangedFloatNode;64;-3803.417,177.1858;Inherit;False;Constant;_Float0;Float 0;6;0;Create;True;0;0;0;False;0;False;-1;0;0;0;0;1;FLOAT;0
- Node;AmplifyShaderEditor.GetLocalVarNode;55;-3887.397,4.424606;Inherit;False;42;ParticleStableRandom;1;0;OBJECT;;False;1;FLOAT;0
- Node;AmplifyShaderEditor.TexturePropertyNode;45;-2834.576,-1077.884;Inherit;True;Property;_AlbedoTexture;Albedo Texture;5;0;Create;True;0;0;0;False;0;False;None;af896ed708756ad4389f5afe872676b2;False;white;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1
- Node;AmplifyShaderEditor.TextureCoordinatesNode;52;-3505.815,-122.2801;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
- Node;AmplifyShaderEditor.SimpleSubtractOpNode;58;-3427.291,214.0071;Inherit;False;2;0;FLOAT;0;False;1;FLOAT;0.5;False;1;FLOAT;0
- Node;AmplifyShaderEditor.ConditionalIfNode;63;-3464.289,22.70003;Inherit;False;False;5;0;FLOAT;0;False;1;FLOAT;0.5;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.SimpleMultiplyOpNode;62;-3083.363,-61.91193;Inherit;False;2;2;0;FLOAT2;0,0;False;1;FLOAT;1;False;1;FLOAT2;0
- Node;AmplifyShaderEditor.DynamicAppendNode;54;-3044.616,83.11993;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0
- Node;AmplifyShaderEditor.RegisterLocalVarNode;46;-2546.912,-1080.454;Inherit;False;AlbedoTexture;-1;True;1;0;SAMPLER2D;;False;1;SAMPLER2D;0
- Node;AmplifyShaderEditor.GetLocalVarNode;43;-3454.442,-270.0697;Inherit;False;42;ParticleStableRandom;1;0;OBJECT;;False;1;FLOAT;0
- Node;AmplifyShaderEditor.DynamicAppendNode;40;-3031.5,-289.6468;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0
- Node;AmplifyShaderEditor.TextureCoordinatesNode;34;-3119.566,-463.8468;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
- Node;AmplifyShaderEditor.SimpleAddOpNode;53;-2784.015,-36.08008;Inherit;False;2;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT2;0
- Node;AmplifyShaderEditor.GetLocalVarNode;51;-2803.25,-170.4918;Inherit;False;46;AlbedoTexture;1;0;OBJECT;;False;1;SAMPLER2D;0
- Node;AmplifyShaderEditor.RangedFloatNode;68;-2552.866,71.40936;Inherit;False;Property;_Duplicate;Duplicate;6;0;Create;True;0;0;0;False;0;False;0;0.1;0;1;0;1;FLOAT;0
- Node;AmplifyShaderEditor.GetLocalVarNode;47;-2828.424,-556.1292;Inherit;False;46;AlbedoTexture;1;0;OBJECT;;False;1;SAMPLER2D;0
- Node;AmplifyShaderEditor.SamplerNode;50;-2541.193,-168.293;Inherit;True;Property;_TextureSample0;Texture Sample 0;2;0;Create;True;0;0;0;False;0;False;-1;0ad415cb683dc65438c8fd22c34a1500;0ad415cb683dc65438c8fd22c34a1500;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
- Node;AmplifyShaderEditor.SimpleAddOpNode;35;-2770.899,-408.8468;Inherit;False;2;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT2;0
- Node;AmplifyShaderEditor.SamplerNode;1;-2546.521,-433.6447;Inherit;True;Property;_Albedo;Albedo;2;0;Create;True;0;0;0;False;0;False;-1;0ad415cb683dc65438c8fd22c34a1500;0ad415cb683dc65438c8fd22c34a1500;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
- Node;AmplifyShaderEditor.SimpleMultiplyOpNode;67;-2079.845,-160.9764;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT;0;False;1;COLOR;0
- Node;AmplifyShaderEditor.SimpleAddOpNode;56;-1810.38,-351.0695;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
- Node;AmplifyShaderEditor.SaturateNode;57;-1582.219,-369.7292;Inherit;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0
- Node;AmplifyShaderEditor.RegisterLocalVarNode;48;-1321.7,-371.4484;Inherit;False;AlbedoTextureSample;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0
- Node;AmplifyShaderEditor.GetLocalVarNode;49;-2897.91,714.2134;Inherit;False;48;AlbedoTextureSample;1;0;OBJECT;;False;1;COLOR;0
- Node;AmplifyShaderEditor.ColorNode;17;-2867.359,1045.198;Inherit;False;Property;_Colour;Colour;1;1;[HDR];Create;True;0;0;0;False;0;False;1,1,1,1;3.688605,3.688605,3.688605,1;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
- Node;AmplifyShaderEditor.VertexColorNode;7;-2852.733,852.0948;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
- Node;AmplifyShaderEditor.SimpleMultiplyOpNode;5;-2410.602,843.3228;Inherit;False;3;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;COLOR;0,0,0,0;False;1;COLOR;0
- Node;AmplifyShaderEditor.ComponentMaskNode;9;-2123.373,920.113;Inherit;False;False;False;False;True;1;0;COLOR;0,0,0,0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.RegisterLocalVarNode;30;-4532.04,894.6838;Inherit;False;ParticleErosionOverLifetime;-1;True;1;0;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.RegisterLocalVarNode;10;-1814.059,918.3372;Inherit;False;ColourA;-1;True;1;0;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.GetLocalVarNode;31;-3473.074,2765.492;Inherit;False;30;ParticleErosionOverLifetime;1;0;OBJECT;;False;1;FLOAT;0
- Node;AmplifyShaderEditor.RangedFloatNode;13;-3464.127,2639.93;Inherit;False;Property;_AlphaErosion;Alpha Erosion;2;0;Create;True;0;0;0;False;0;False;0;0;0;1;0;1;FLOAT;0
- Node;AmplifyShaderEditor.ToggleSwitchNode;33;-3033.589,2664.47;Inherit;False;Property;_ParticleMode;Particle Mode;0;0;Create;True;0;0;0;False;0;False;1;True;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.GetLocalVarNode;11;-2958.83,2508.922;Inherit;False;10;ColourA;1;0;OBJECT;;False;1;FLOAT;0
- Node;AmplifyShaderEditor.SimpleSubtractOpNode;14;-2687.626,2566.406;Inherit;False;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.RangedFloatNode;22;-2649.944,2398.179;Inherit;False;Property;_RemapMax;Remap Max;4;0;Create;True;0;0;0;False;0;False;0;0.6;0;1;0;1;FLOAT;0
- Node;AmplifyShaderEditor.RangedFloatNode;19;-2658.175,2289.733;Inherit;False;Property;_RemapMin;Remap Min;3;0;Create;True;0;0;0;False;0;False;0;0.1;0;1;0;1;FLOAT;0
- Node;AmplifyShaderEditor.SaturateNode;15;-2481.626,2566.406;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.CommentaryNode;87;-627.5839,335.8369;Inherit;False;803.3438;451.5571;Comment;6;93;92;91;90;89;88;ymask;1,1,1,1;0;0
- Node;AmplifyShaderEditor.FunctionNode;20;-2173.595,2325.791;Inherit;False;Inverse Lerp;-1;;2;09cbe79402f023141a4dc1fddd4c9511;0;3;1;FLOAT;0;False;2;FLOAT;1;False;3;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.WorldPosInputsNode;92;-577.5839,385.8369;Inherit;False;0;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3
- Node;AmplifyShaderEditor.RangedFloatNode;88;-531.1824,535.9989;Inherit;False;Property;_Ymask;Ymask;7;0;Create;True;0;0;0;False;0;False;0.21;0.5;0;0;0;1;FLOAT;0
- Node;AmplifyShaderEditor.SaturateNode;21;-1934.944,2325.179;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.RangedFloatNode;91;-576.2746,671.9941;Inherit;False;Property;_YmaskExp;Ymask硬吗;8;0;Create;False;0;0;0;False;0;False;1;3;1;10;0;1;FLOAT;0
- Node;AmplifyShaderEditor.SimpleSubtractOpNode;90;-368.6824,452.7989;Inherit;False;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.RegisterLocalVarNode;23;-1736.821,2317.068;Inherit;False;Opacity;-1;True;1;0;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.SimpleMultiplyOpNode;89;-219.3401,476.1981;Inherit;True;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.ClampOpNode;93;4.959807,473.66;Inherit;False;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;1;False;1;FLOAT;0
- Node;AmplifyShaderEditor.GetLocalVarNode;24;-446.1404,164.6196;Inherit;False;23;Opacity;1;0;OBJECT;;False;1;FLOAT;0
- Node;AmplifyShaderEditor.GetLocalVarNode;8;-358.2879,-52.5931;Inherit;False;4;ColourRGB;1;0;OBJECT;;False;1;FLOAT3;0
- Node;AmplifyShaderEditor.SimpleMultiplyOpNode;94;121.9437,214.1526;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
- Node;AmplifyShaderEditor.ComponentMaskNode;2;-2125.706,785.3329;Inherit;False;True;True;True;False;1;0;COLOR;0,0,0,0;False;1;FLOAT3;0
- Node;AmplifyShaderEditor.RangedFloatNode;66;-3866.417,94.18584;Inherit;False;Constant;_Float2;Float 2;6;0;Create;True;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0
- Node;AmplifyShaderEditor.RegisterLocalVarNode;4;-1814.993,781.9593;Inherit;False;ColourRGB;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0
- Node;AmplifyShaderEditor.GetLocalVarNode;74;-394.8003,69.01295;Inherit;False;73;Emission_TEST_ONLY;1;0;OBJECT;;False;1;COLOR;0
- Node;AmplifyShaderEditor.RegisterLocalVarNode;73;-2284.102,1569.408;Inherit;False;Emission_TEST_ONLY;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0
- Node;AmplifyShaderEditor.ColorNode;69;-2862.788,1511.097;Inherit;False;Constant;_Emission;Emission;7;0;Create;True;0;0;0;False;0;False;1,1,1,1;0,0,0,0;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
- Node;AmplifyShaderEditor.VertexColorNode;72;-2836.96,1698.101;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
- Node;AmplifyShaderEditor.SimpleMultiplyOpNode;71;-2514.049,1571.927;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
- Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;76;89.8209,-55.05157;Float;False;True;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;3;LT/Lightning VFX/Lightning;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;0;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;False;0;0;Standard;22;Surface;1;638484904299245596; Blend;0;0;Two Sided;0;638497147069243289;Cast Shadows;0;638484904450751545; Use Shadow Threshold;0;0;Receive Shadows;0;638484904461828233;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
- Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;78;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthOnly;0;3;DepthOnly;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;0;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;False;0;0;Standard;0;False;0
- Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;83;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthNormals;0;8;DepthNormals;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;0;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;False;0;0;Standard;0;False;0
- Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;77;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ShadowCaster;0;2;ShadowCaster;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;0;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;False;0;0;Standard;0;False;0
- Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;81;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;SceneSelectionPass;0;6;SceneSelectionPass;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;0;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;False;0;0;Standard;0;False;0
- Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;84;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthNormalsOnly;0;9;DepthNormalsOnly;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;0;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;False;0;0;Standard;0;False;0
- Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;82;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ScenePickingPass;0;7;ScenePickingPass;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;0;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;False;0;0;Standard;0;False;0
- Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;79;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;Meta;0;4;Meta;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;0;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;False;0;0;Standard;0;False;0
- Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;80;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;Universal2D;0;5;Universal2D;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;0;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;False;0;0;Standard;0;False;0
- Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;75;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraphUnlitGUI;0;1;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ExtraPrePass;0;0;ExtraPrePass;5;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;True;False;0;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;False;0;0;Standard;0;False;0
- WireConnection;42;0;86;4
- WireConnection;58;0;55;0
- WireConnection;63;0;55;0
- WireConnection;63;2;64;0
- WireConnection;63;3;65;0
- WireConnection;63;4;65;0
- WireConnection;62;0;52;0
- WireConnection;62;1;63;0
- WireConnection;54;1;58;0
- WireConnection;46;0;45;0
- WireConnection;40;1;43;0
- WireConnection;53;0;62;0
- WireConnection;53;1;54;0
- WireConnection;50;0;51;0
- WireConnection;50;1;53;0
- WireConnection;35;0;34;0
- WireConnection;35;1;40;0
- WireConnection;1;0;47;0
- WireConnection;1;1;35;0
- WireConnection;67;0;50;0
- WireConnection;67;1;68;0
- WireConnection;56;0;1;0
- WireConnection;56;1;67;0
- WireConnection;57;0;56;0
- WireConnection;48;0;57;0
- WireConnection;5;0;49;0
- WireConnection;5;1;7;0
- WireConnection;5;2;17;0
- WireConnection;9;0;5;0
- WireConnection;30;0;86;3
- WireConnection;10;0;9;0
- WireConnection;33;0;13;0
- WireConnection;33;1;31;0
- WireConnection;14;0;11;0
- WireConnection;14;1;33;0
- WireConnection;15;0;14;0
- WireConnection;20;1;19;0
- WireConnection;20;2;22;0
- WireConnection;20;3;15;0
- WireConnection;21;0;20;0
- WireConnection;90;0;92;2
- WireConnection;90;1;88;0
- WireConnection;23;0;21;0
- WireConnection;89;0;90;0
- WireConnection;89;1;91;0
- WireConnection;93;0;89;0
- WireConnection;94;0;24;0
- WireConnection;94;1;93;0
- WireConnection;2;0;5;0
- WireConnection;4;0;2;0
- WireConnection;73;0;71;0
- WireConnection;71;0;69;0
- WireConnection;71;1;72;0
- WireConnection;76;2;8;0
- WireConnection;76;3;94;0
- ASEEND*/
- //CHKSM=D2F2B4F096A1E25443EDAAD2F0A3A0A3F51DAA49
|