diff --git a/UnityProject/Assets/QD/QD01_FX_Shader/FX_Shader/DY_AlphaBlend.mat b/UnityProject/Assets/QD/QD01_FX_Shader/FX_Shader/DY_AlphaBlend.mat new file mode 100644 index 00000000..48c557fa --- /dev/null +++ b/UnityProject/Assets/QD/QD01_FX_Shader/FX_Shader/DY_AlphaBlend.mat @@ -0,0 +1,46 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DY_AlphaBlend + m_Shader: {fileID: 4800000, guid: 4a279542e452d6141a81a100c0f1a4eb, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaCutoff: 0.5 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + m_Colors: + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/UnityProject/Assets/QD/QD01_FX_Shader/FX_Shader/DY_AlphaBlend.mat.meta b/UnityProject/Assets/QD/QD01_FX_Shader/FX_Shader/DY_AlphaBlend.mat.meta new file mode 100644 index 00000000..5f6856ff --- /dev/null +++ b/UnityProject/Assets/QD/QD01_FX_Shader/FX_Shader/DY_AlphaBlend.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac4bce8d50e6e24469e27f518fb8d439 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/QD/QD01_FX_Shader/FX_Shader/DY_AlphaBlend.shader b/UnityProject/Assets/QD/QD01_FX_Shader/FX_Shader/DY_AlphaBlend.shader new file mode 100644 index 00000000..f7326ed8 --- /dev/null +++ b/UnityProject/Assets/QD/QD01_FX_Shader/FX_Shader/DY_AlphaBlend.shader @@ -0,0 +1,2026 @@ +// Made with Amplify Shader Editor v1.9.8 +// Available at the Unity Asset Store - http://u3d.as/y3X +Shader "DY_AlphaBlend" +{ + Properties + { + [HideInInspector] _AlphaCutoff("Alpha Cutoff ", Range(0, 1)) = 0.5 + [HideInInspector] _EmissionColor("Emission Color", Color) = (1,1,1,1) + _BaseTexture("BaseTexture", 2D) = "white" {} + [HDR]_BaseColor("BaseColor", Color) = (1,1,1,1) + [Toggle(_USEMAIN_RGBA_ON)] _UseMain_RgbA("UseMain_Rgb/A", Float) = 0 + _Power("Power", Float) = 1 + _Alpha_Intensity("Alpha_Intensity", Float) = 1 + + + //_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 + + [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) = "" {} + + [HideInInspector][ToggleOff] _ReceiveShadows("Receive Shadows", Float) = 1.0 + } + + SubShader + { + LOD 0 + + + + Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Transparent" "Queue"="Transparent" "UniversalMaterialType"="Unlit" } + + Cull Off + AlphaToMask Off + + + + HLSLINCLUDE + #pragma target 4.5 + #pragma prefer_hlslcc gles + // ensure rendering platforms toggle list is visible + + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Filtering.hlsl" + + #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 + + Stencil + { + Ref 1 + Comp Equal + Pass Keep + Fail Keep + ZFail Keep + } + + HLSLPROGRAM + + + + #pragma multi_compile_fragment _ALPHATEST_ON + #pragma shader_feature_local _RECEIVE_SHADOWS_OFF + #pragma multi_compile_instancing + #pragma instancing_options renderinglayer + #pragma multi_compile_fragment _ LOD_FADE_CROSSFADE + #pragma multi_compile_fog + #define ASE_FOG 1 + #define _SURFACE_TYPE_TRANSPARENT 1 + #define ASE_VERSION 19800 + #define ASE_SRP_VERSION 140010 + + + + + #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION + #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3 + + + + #pragma multi_compile _ DIRLIGHTMAP_COMBINED + #pragma multi_compile _ LIGHTMAP_ON + #pragma multi_compile _ DYNAMICLIGHTMAP_ON + #pragma multi_compile_fragment _ DEBUG_DISPLAY + + #pragma vertex vert + #pragma fragment frag + + #define SHADERPASS SHADERPASS_UNLIT + + + #if ASE_SRP_VERSION >=140007 + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #endif + + + + #if ASE_SRP_VERSION >=140007 + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" + #endif + + + #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.universal/ShaderLibrary/Input.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl" + + + #if ASE_SRP_VERSION >=140010 + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + #endif + + + + + #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/SurfaceData.hlsl" + + #if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif + + #define ASE_NEEDS_FRAG_COLOR + #pragma shader_feature_local _USEMAIN_RGBA_ON + + + #if defined(ASE_EARLY_Z_DEPTH_OPTIMIZE) && (SHADER_TARGET >= 45) + #define ASE_SV_DEPTH SV_DepthLessEqual + #define ASE_SV_POSITION_QUALIFIERS linear noperspective centroid + #else + #define ASE_SV_DEPTH SV_Depth + #define ASE_SV_POSITION_QUALIFIERS + #endif + + struct Attributes + { + float4 positionOS : POSITION; + float3 normalOS : NORMAL; + float4 ase_texcoord : TEXCOORD0; + float4 ase_color : COLOR; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct PackedVaryings + { + ASE_SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION; + float4 clipPosV : TEXCOORD0; + float3 positionWS : TEXCOORD1; + #if defined(ASE_FOG) || defined(_ADDITIONAL_LIGHTS_VERTEX) + half4 fogFactorAndVertexLight : TEXCOORD2; + #endif + #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS) + float4 shadowCoord : TEXCOORD3; + #endif + float4 ase_texcoord4 : TEXCOORD4; + float4 ase_color : COLOR; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + CBUFFER_START(UnityPerMaterial) + float4 _BaseTexture_ST; + float4 _BaseColor; + float _Power; + float _Alpha_Intensity; + #ifdef ASE_TESSELLATION + float _TessPhongStrength; + float _TessValue; + float _TessMin; + float _TessMax; + float _TessEdgeLength; + float _TessMaxDisp; + #endif + CBUFFER_END + + sampler2D _BaseTexture; + + + + PackedVaryings VertexFunction( Attributes input ) + { + PackedVaryings output = (PackedVaryings)0; + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + output.ase_texcoord4.xy = input.ase_texcoord.xy; + output.ase_color = input.ase_color; + + //setting value to unused interpolator channels and avoid initialization warnings + output.ase_texcoord4.zw = 0; + + #ifdef ASE_ABSOLUTE_VERTEX_POS + float3 defaultVertexValue = input.positionOS.xyz; + #else + float3 defaultVertexValue = float3(0, 0, 0); + #endif + + float3 vertexValue = defaultVertexValue; + + #ifdef ASE_ABSOLUTE_VERTEX_POS + input.positionOS.xyz = vertexValue; + #else + input.positionOS.xyz += vertexValue; + #endif + + input.normalOS = input.normalOS; + + VertexPositionInputs vertexInput = GetVertexPositionInputs( input.positionOS.xyz ); + + #if defined(ASE_FOG) || defined(_ADDITIONAL_LIGHTS_VERTEX) + output.fogFactorAndVertexLight = 0; + #if defined(ASE_FOG) && !defined(_FOG_FRAGMENT) + output.fogFactorAndVertexLight.x = ComputeFogFactor(vertexInput.positionCS.z); + #endif + #ifdef _ADDITIONAL_LIGHTS_VERTEX + half3 vertexLight = VertexLighting( vertexInput.positionWS, normalInput.normalWS ); + output.fogFactorAndVertexLight.yzw = vertexLight; + #endif + #endif + + #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS) + output.shadowCoord = GetShadowCoord( vertexInput ); + #endif + + output.positionCS = vertexInput.positionCS; + output.clipPosV = vertexInput.positionCS; + output.positionWS = vertexInput.positionWS; + return output; + } + + #if defined(ASE_TESSELLATION) + struct VertexControl + { + float4 positionOS : INTERNALTESSPOS; + float3 normalOS : 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 ( Attributes input ) + { + VertexControl output; + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + output.positionOS = input.positionOS; + output.normalOS = input.normalOS; + output.ase_texcoord = input.ase_texcoord; + output.ase_color = input.ase_color; + return output; + } + + TessellationFactors TessellationFunction (InputPatch input) + { + TessellationFactors output; + 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(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); + #elif defined(ASE_LENGTH_TESSELLATION) + tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); + #elif defined(ASE_LENGTH_CULL_TESSELLATION) + tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); + #endif + output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; + return output; + } + + [domain("tri")] + [partitioning("fractional_odd")] + [outputtopology("triangle_cw")] + [patchconstantfunc("TessellationFunction")] + [outputcontrolpoints(3)] + VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) + { + return patch[id]; + } + + [domain("tri")] + PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) + { + Attributes output = (Attributes) 0; + output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; + output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; + output.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z; + output.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] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); + float phongStrength = _TessPhongStrength; + output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; + #endif + UNITY_TRANSFER_INSTANCE_ID(patch[0], output); + return VertexFunction(output); + } + #else + PackedVaryings vert ( Attributes input ) + { + return VertexFunction( input ); + } + #endif + + half4 frag ( PackedVaryings input + #ifdef ASE_DEPTH_WRITE_ON + ,out float outputDepth : ASE_SV_DEPTH + #endif + #ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 + #endif + ) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(input); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + #if defined(LOD_FADE_CROSSFADE) + LODFadeCrossFade( input.positionCS ); + #endif + + float3 WorldPosition = input.positionWS; + float3 WorldViewDirection = _WorldSpaceCameraPos.xyz - WorldPosition; + float4 ShadowCoords = float4( 0, 0, 0, 0 ); + float4 ClipPos = input.clipPosV; + float4 ScreenPos = ComputeScreenPos( input.clipPosV ); + + float2 NormalizedScreenSpaceUV = GetNormalizedScreenSpaceUV(input.positionCS); + + #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS) + #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) + ShadowCoords = input.shadowCoord; + #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS) + ShadowCoords = TransformWorldToShadowCoord( WorldPosition ); + #endif + #endif + + WorldViewDirection = SafeNormalize( WorldViewDirection ); + + float2 uv_BaseTexture = input.ase_texcoord4.xy * _BaseTexture_ST.xy + _BaseTexture_ST.zw; + float4 tex2DNode10 = tex2D( _BaseTexture, uv_BaseTexture ); + float4 temp_cast_0 = (tex2DNode10.a).xxxx; + #ifdef _USEMAIN_RGBA_ON + float4 staticSwitch13 = temp_cast_0; + #else + float4 staticSwitch13 = tex2DNode10; + #endif + float4 temp_cast_1 = (_Power).xxxx; + + float3 BakedAlbedo = 0; + float3 BakedEmission = 0; + float3 Color = ( pow( staticSwitch13 , temp_cast_1 ) * _BaseColor * input.ase_color ).rgb; + float Alpha = saturate( ( ( input.ase_color.a * staticSwitch13 ) * _Alpha_Intensity ) ).r; + float AlphaClipThreshold = 0.5; + float AlphaClipThresholdShadow = 0.5; + + #ifdef ASE_DEPTH_WRITE_ON + float DepthValue = input.positionCS.z; + #endif + + #ifdef _ALPHATEST_ON + clip(Alpha - AlphaClipThreshold); + #endif + + InputData inputData = (InputData)0; + inputData.positionWS = WorldPosition; + inputData.viewDirectionWS = WorldViewDirection; + + #ifdef ASE_FOG + inputData.fogCoord = InitializeInputDataFog(float4(inputData.positionWS, 1.0), input.fogFactorAndVertexLight.x); + #endif + #ifdef _ADDITIONAL_LIGHTS_VERTEX + inputData.vertexLighting = input.fogFactorAndVertexLight.yzw; + #endif + + inputData.normalizedScreenSpaceUV = NormalizedScreenSpaceUV; + + #if defined(_DBUFFER) + ApplyDecalToBaseColor(input.positionCS, Color); + #endif + + #ifdef ASE_FOG + #ifdef TERRAIN_SPLAT_ADDPASS + Color.rgb = MixFogColor(Color.rgb, half3(0,0,0), inputData.fogCoord); + #else + Color.rgb = MixFog(Color.rgb, inputData.fogCoord); + #endif + #endif + + #ifdef ASE_DEPTH_WRITE_ON + outputDepth = DepthValue; + #endif + + #ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4( EncodeMeshRenderingLayer( renderingLayers ), 0, 0, 0 ); + #endif + + return half4( Color, Alpha ); + } + ENDHLSL + } + + + Pass + { + + Name "ShadowCaster" + Tags { "LightMode"="ShadowCaster" } + + ZWrite On + ZTest LEqual + AlphaToMask Off + ColorMask 0 + + HLSLPROGRAM + + + + #pragma multi_compile _ALPHATEST_ON + #pragma multi_compile_instancing + #pragma multi_compile_fragment _ LOD_FADE_CROSSFADE + #define ASE_FOG 1 + #define _SURFACE_TYPE_TRANSPARENT 1 + #define ASE_VERSION 19800 + #define ASE_SRP_VERSION 140010 + + + + + #pragma multi_compile_vertex _ _CASTING_PUNCTUAL_LIGHT_SHADOW + + #pragma vertex vert + #pragma fragment frag + + #define SHADERPASS SHADERPASS_SHADOWCASTER + + + #if ASE_SRP_VERSION >=140007 + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #endif + + + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.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.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" + + #if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif + + #pragma shader_feature_local _USEMAIN_RGBA_ON + + + #if defined(ASE_EARLY_Z_DEPTH_OPTIMIZE) && (SHADER_TARGET >= 45) + #define ASE_SV_DEPTH SV_DepthLessEqual + #define ASE_SV_POSITION_QUALIFIERS linear noperspective centroid + #else + #define ASE_SV_DEPTH SV_Depth + #define ASE_SV_POSITION_QUALIFIERS + #endif + + struct Attributes + { + float4 positionOS : POSITION; + float3 normalOS : NORMAL; + float4 ase_color : COLOR; + float4 ase_texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct PackedVaryings + { + ASE_SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION; + float4 clipPosV : TEXCOORD0; + #if defined(ASE_NEEDS_FRAG_WORLD_POSITION) + float3 positionWS : TEXCOORD1; + #endif + #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS) + float4 shadowCoord : TEXCOORD2; + #endif + float4 ase_color : COLOR; + float4 ase_texcoord3 : TEXCOORD3; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + CBUFFER_START(UnityPerMaterial) + float4 _BaseTexture_ST; + float4 _BaseColor; + float _Power; + float _Alpha_Intensity; + #ifdef ASE_TESSELLATION + float _TessPhongStrength; + float _TessValue; + float _TessMin; + float _TessMax; + float _TessEdgeLength; + float _TessMaxDisp; + #endif + CBUFFER_END + + sampler2D _BaseTexture; + + + + float3 _LightDirection; + float3 _LightPosition; + + PackedVaryings VertexFunction( Attributes input ) + { + PackedVaryings output; + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( output ); + + output.ase_color = input.ase_color; + output.ase_texcoord3.xy = input.ase_texcoord.xy; + + //setting value to unused interpolator channels and avoid initialization warnings + output.ase_texcoord3.zw = 0; + + #ifdef ASE_ABSOLUTE_VERTEX_POS + float3 defaultVertexValue = input.positionOS.xyz; + #else + float3 defaultVertexValue = float3(0, 0, 0); + #endif + + float3 vertexValue = defaultVertexValue; + #ifdef ASE_ABSOLUTE_VERTEX_POS + input.positionOS.xyz = vertexValue; + #else + input.positionOS.xyz += vertexValue; + #endif + + input.normalOS = input.normalOS; + + float3 positionWS = TransformObjectToWorld( input.positionOS.xyz ); + + #if defined(ASE_NEEDS_FRAG_WORLD_POSITION) + output.positionWS = positionWS; + #endif + + float3 normalWS = TransformObjectToWorldDir(input.normalOS); + + #if _CASTING_PUNCTUAL_LIGHT_SHADOW + float3 lightDirectionWS = normalize(_LightPosition - positionWS); + #else + float3 lightDirectionWS = _LightDirection; + #endif + + float4 positionCS = TransformWorldToHClip(ApplyShadowBias(positionWS, normalWS, lightDirectionWS)); + + #if UNITY_REVERSED_Z + positionCS.z = min(positionCS.z, UNITY_NEAR_CLIP_VALUE); + #else + positionCS.z = max(positionCS.z, UNITY_NEAR_CLIP_VALUE); + #endif + + #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS) + VertexPositionInputs vertexInput = (VertexPositionInputs)0; + vertexInput.positionWS = positionWS; + vertexInput.positionCS = positionCS; + output.shadowCoord = GetShadowCoord( vertexInput ); + #endif + + output.positionCS = positionCS; + output.clipPosV = positionCS; + return output; + } + + #if defined(ASE_TESSELLATION) + struct VertexControl + { + float4 positionOS : INTERNALTESSPOS; + float3 normalOS : NORMAL; + float4 ase_color : COLOR; + float4 ase_texcoord : TEXCOORD0; + + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct TessellationFactors + { + float edge[3] : SV_TessFactor; + float inside : SV_InsideTessFactor; + }; + + VertexControl vert ( Attributes input ) + { + VertexControl output; + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + output.positionOS = input.positionOS; + output.normalOS = input.normalOS; + output.ase_color = input.ase_color; + output.ase_texcoord = input.ase_texcoord; + return output; + } + + TessellationFactors TessellationFunction (InputPatch input) + { + TessellationFactors output; + 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(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); + #elif defined(ASE_LENGTH_TESSELLATION) + tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); + #elif defined(ASE_LENGTH_CULL_TESSELLATION) + tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); + #endif + output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; + return output; + } + + [domain("tri")] + [partitioning("fractional_odd")] + [outputtopology("triangle_cw")] + [patchconstantfunc("TessellationFunction")] + [outputcontrolpoints(3)] + VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) + { + return patch[id]; + } + + [domain("tri")] + PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) + { + Attributes output = (Attributes) 0; + output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; + output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; + output.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z; + output.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z; + #if defined(ASE_PHONG_TESSELLATION) + float3 pp[3]; + for (int i = 0; i < 3; ++i) + pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); + float phongStrength = _TessPhongStrength; + output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; + #endif + UNITY_TRANSFER_INSTANCE_ID(patch[0], output); + return VertexFunction(output); + } + #else + PackedVaryings vert ( Attributes input ) + { + return VertexFunction( input ); + } + #endif + + half4 frag(PackedVaryings input + #ifdef ASE_DEPTH_WRITE_ON + ,out float outputDepth : ASE_SV_DEPTH + #endif + ) : SV_Target + { + UNITY_SETUP_INSTANCE_ID( input ); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( input ); + + #if defined(ASE_NEEDS_FRAG_WORLD_POSITION) + float3 WorldPosition = input.positionWS; + #endif + + float4 ShadowCoords = float4( 0, 0, 0, 0 ); + float4 ClipPos = input.clipPosV; + float4 ScreenPos = ComputeScreenPos( input.clipPosV ); + + #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS) + #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) + ShadowCoords = input.shadowCoord; + #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS) + ShadowCoords = TransformWorldToShadowCoord( WorldPosition ); + #endif + #endif + + float2 uv_BaseTexture = input.ase_texcoord3.xy * _BaseTexture_ST.xy + _BaseTexture_ST.zw; + float4 tex2DNode10 = tex2D( _BaseTexture, uv_BaseTexture ); + float4 temp_cast_0 = (tex2DNode10.a).xxxx; + #ifdef _USEMAIN_RGBA_ON + float4 staticSwitch13 = temp_cast_0; + #else + float4 staticSwitch13 = tex2DNode10; + #endif + + + float Alpha = saturate( ( ( input.ase_color.a * staticSwitch13 ) * _Alpha_Intensity ) ).r; + float AlphaClipThreshold = 0.5; + float AlphaClipThresholdShadow = 0.5; + + #ifdef ASE_DEPTH_WRITE_ON + float DepthValue = input.positionCS.z; + #endif + + #ifdef _ALPHATEST_ON + #ifdef _ALPHATEST_SHADOW_ON + clip(Alpha - AlphaClipThresholdShadow); + #else + clip(Alpha - AlphaClipThreshold); + #endif + #endif + + #if defined(LOD_FADE_CROSSFADE) + LODFadeCrossFade( input.positionCS ); + #endif + + #ifdef ASE_DEPTH_WRITE_ON + outputDepth = DepthValue; + #endif + + return 0; + } + ENDHLSL + } + + + Pass + { + + Name "DepthOnly" + Tags { "LightMode"="DepthOnly" } + + ZWrite On + ColorMask R + AlphaToMask Off + + HLSLPROGRAM + + + + #pragma multi_compile _ALPHATEST_ON + #pragma multi_compile_instancing + #pragma multi_compile_fragment _ LOD_FADE_CROSSFADE + #define ASE_FOG 1 + #define _SURFACE_TYPE_TRANSPARENT 1 + #define ASE_VERSION 19800 + #define ASE_SRP_VERSION 140010 + + + + + #pragma vertex vert + #pragma fragment frag + + + #if ASE_SRP_VERSION >=140007 + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #endif + + + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.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.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" + + #if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif + + #pragma shader_feature_local _USEMAIN_RGBA_ON + + + #if defined(ASE_EARLY_Z_DEPTH_OPTIMIZE) && (SHADER_TARGET >= 45) + #define ASE_SV_DEPTH SV_DepthLessEqual + #define ASE_SV_POSITION_QUALIFIERS linear noperspective centroid + #else + #define ASE_SV_DEPTH SV_Depth + #define ASE_SV_POSITION_QUALIFIERS + #endif + + struct Attributes + { + float4 positionOS : POSITION; + float3 normalOS : NORMAL; + float4 ase_color : COLOR; + float4 ase_texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct PackedVaryings + { + ASE_SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION; + float4 clipPosV : TEXCOORD0; + #if defined(ASE_NEEDS_FRAG_WORLD_POSITION) + float3 positionWS : TEXCOORD1; + #endif + #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS) + float4 shadowCoord : TEXCOORD2; + #endif + float4 ase_color : COLOR; + float4 ase_texcoord3 : TEXCOORD3; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + CBUFFER_START(UnityPerMaterial) + float4 _BaseTexture_ST; + float4 _BaseColor; + float _Power; + float _Alpha_Intensity; + #ifdef ASE_TESSELLATION + float _TessPhongStrength; + float _TessValue; + float _TessMin; + float _TessMax; + float _TessEdgeLength; + float _TessMaxDisp; + #endif + CBUFFER_END + + sampler2D _BaseTexture; + + + + PackedVaryings VertexFunction( Attributes input ) + { + PackedVaryings output = (PackedVaryings)0; + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + output.ase_color = input.ase_color; + output.ase_texcoord3.xy = input.ase_texcoord.xy; + + //setting value to unused interpolator channels and avoid initialization warnings + output.ase_texcoord3.zw = 0; + + #ifdef ASE_ABSOLUTE_VERTEX_POS + float3 defaultVertexValue = input.positionOS.xyz; + #else + float3 defaultVertexValue = float3(0, 0, 0); + #endif + + float3 vertexValue = defaultVertexValue; + + #ifdef ASE_ABSOLUTE_VERTEX_POS + input.positionOS.xyz = vertexValue; + #else + input.positionOS.xyz += vertexValue; + #endif + + input.normalOS = input.normalOS; + + VertexPositionInputs vertexInput = GetVertexPositionInputs( input.positionOS.xyz ); + + #if defined(ASE_NEEDS_FRAG_WORLD_POSITION) + output.positionWS = vertexInput.positionWS; + #endif + + #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) && defined(ASE_NEEDS_FRAG_SHADOWCOORDS) + output.shadowCoord = GetShadowCoord( vertexInput ); + #endif + + output.positionCS = vertexInput.positionCS; + output.clipPosV = vertexInput.positionCS; + return output; + } + + #if defined(ASE_TESSELLATION) + struct VertexControl + { + float4 positionOS : INTERNALTESSPOS; + float3 normalOS : NORMAL; + float4 ase_color : COLOR; + float4 ase_texcoord : TEXCOORD0; + + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct TessellationFactors + { + float edge[3] : SV_TessFactor; + float inside : SV_InsideTessFactor; + }; + + VertexControl vert ( Attributes input ) + { + VertexControl output; + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + output.positionOS = input.positionOS; + output.normalOS = input.normalOS; + output.ase_color = input.ase_color; + output.ase_texcoord = input.ase_texcoord; + return output; + } + + TessellationFactors TessellationFunction (InputPatch input) + { + TessellationFactors output; + 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(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); + #elif defined(ASE_LENGTH_TESSELLATION) + tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); + #elif defined(ASE_LENGTH_CULL_TESSELLATION) + tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); + #endif + output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; + return output; + } + + [domain("tri")] + [partitioning("fractional_odd")] + [outputtopology("triangle_cw")] + [patchconstantfunc("TessellationFunction")] + [outputcontrolpoints(3)] + VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) + { + return patch[id]; + } + + [domain("tri")] + PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) + { + Attributes output = (Attributes) 0; + output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; + output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; + output.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z; + output.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z; + #if defined(ASE_PHONG_TESSELLATION) + float3 pp[3]; + for (int i = 0; i < 3; ++i) + pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); + float phongStrength = _TessPhongStrength; + output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; + #endif + UNITY_TRANSFER_INSTANCE_ID(patch[0], output); + return VertexFunction(output); + } + #else + PackedVaryings vert ( Attributes input ) + { + return VertexFunction( input ); + } + #endif + + half4 frag(PackedVaryings input + #ifdef ASE_DEPTH_WRITE_ON + ,out float outputDepth : ASE_SV_DEPTH + #endif + ) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(input); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( input ); + + #if defined(ASE_NEEDS_FRAG_WORLD_POSITION) + float3 WorldPosition = input.positionWS; + #endif + + float4 ShadowCoords = float4( 0, 0, 0, 0 ); + float4 ClipPos = input.clipPosV; + float4 ScreenPos = ComputeScreenPos( input.clipPosV ); + + #if defined(ASE_NEEDS_FRAG_SHADOWCOORDS) + #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) + ShadowCoords = input.shadowCoord; + #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS) + ShadowCoords = TransformWorldToShadowCoord( WorldPosition ); + #endif + #endif + + float2 uv_BaseTexture = input.ase_texcoord3.xy * _BaseTexture_ST.xy + _BaseTexture_ST.zw; + float4 tex2DNode10 = tex2D( _BaseTexture, uv_BaseTexture ); + float4 temp_cast_0 = (tex2DNode10.a).xxxx; + #ifdef _USEMAIN_RGBA_ON + float4 staticSwitch13 = temp_cast_0; + #else + float4 staticSwitch13 = tex2DNode10; + #endif + + + float Alpha = saturate( ( ( input.ase_color.a * staticSwitch13 ) * _Alpha_Intensity ) ).r; + float AlphaClipThreshold = 0.5; + + #ifdef ASE_DEPTH_WRITE_ON + float DepthValue = input.positionCS.z; + #endif + + #ifdef _ALPHATEST_ON + clip(Alpha - AlphaClipThreshold); + #endif + + #if defined(LOD_FADE_CROSSFADE) + LODFadeCrossFade( input.positionCS ); + #endif + + #ifdef ASE_DEPTH_WRITE_ON + outputDepth = DepthValue; + #endif + + return 0; + } + ENDHLSL + } + + + Pass + { + + Name "SceneSelectionPass" + Tags { "LightMode"="SceneSelectionPass" } + + Cull Off + AlphaToMask Off + + HLSLPROGRAM + + + + #define ASE_FOG 1 + #define _SURFACE_TYPE_TRANSPARENT 1 + #define ASE_VERSION 19800 + #define ASE_SRP_VERSION 140010 + + + + + #pragma vertex vert + #pragma fragment frag + + #define ATTRIBUTES_NEED_NORMAL + #define ATTRIBUTES_NEED_TANGENT + #define SHADERPASS SHADERPASS_DEPTHONLY + + + #if ASE_SRP_VERSION >=140007 + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #endif + + + + #if ASE_SRP_VERSION >=140007 + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" + #endif + + + #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" + + + #if ASE_SRP_VERSION >=140010 + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + #endif + + + + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl" + + #pragma shader_feature_local _USEMAIN_RGBA_ON + + + struct Attributes + { + float4 positionOS : POSITION; + float3 normalOS : NORMAL; + float4 ase_color : COLOR; + float4 ase_texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct PackedVaryings + { + float4 positionCS : SV_POSITION; + float4 ase_color : COLOR; + float4 ase_texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + CBUFFER_START(UnityPerMaterial) + float4 _BaseTexture_ST; + float4 _BaseColor; + float _Power; + float _Alpha_Intensity; + #ifdef ASE_TESSELLATION + float _TessPhongStrength; + float _TessValue; + float _TessMin; + float _TessMax; + float _TessEdgeLength; + float _TessMaxDisp; + #endif + CBUFFER_END + + sampler2D _BaseTexture; + + + + int _ObjectId; + int _PassValue; + + struct SurfaceDescription + { + float Alpha; + float AlphaClipThreshold; + }; + + PackedVaryings VertexFunction(Attributes input ) + { + PackedVaryings output; + ZERO_INITIALIZE(PackedVaryings, output); + + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + output.ase_color = input.ase_color; + output.ase_texcoord.xy = input.ase_texcoord.xy; + + //setting value to unused interpolator channels and avoid initialization warnings + output.ase_texcoord.zw = 0; + + #ifdef ASE_ABSOLUTE_VERTEX_POS + float3 defaultVertexValue = input.positionOS.xyz; + #else + float3 defaultVertexValue = float3(0, 0, 0); + #endif + + float3 vertexValue = defaultVertexValue; + + #ifdef ASE_ABSOLUTE_VERTEX_POS + input.positionOS.xyz = vertexValue; + #else + input.positionOS.xyz += vertexValue; + #endif + + input.normalOS = input.normalOS; + + float3 positionWS = TransformObjectToWorld( input.positionOS.xyz ); + + output.positionCS = TransformWorldToHClip(positionWS); + + return output; + } + + #if defined(ASE_TESSELLATION) + struct VertexControl + { + float4 positionOS : INTERNALTESSPOS; + float3 normalOS : NORMAL; + float4 ase_color : COLOR; + float4 ase_texcoord : TEXCOORD0; + + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct TessellationFactors + { + float edge[3] : SV_TessFactor; + float inside : SV_InsideTessFactor; + }; + + VertexControl vert ( Attributes input ) + { + VertexControl output; + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + output.positionOS = input.positionOS; + output.normalOS = input.normalOS; + output.ase_color = input.ase_color; + output.ase_texcoord = input.ase_texcoord; + return output; + } + + TessellationFactors TessellationFunction (InputPatch input) + { + TessellationFactors output; + 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(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); + #elif defined(ASE_LENGTH_TESSELLATION) + tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); + #elif defined(ASE_LENGTH_CULL_TESSELLATION) + tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); + #endif + output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; + return output; + } + + [domain("tri")] + [partitioning("fractional_odd")] + [outputtopology("triangle_cw")] + [patchconstantfunc("TessellationFunction")] + [outputcontrolpoints(3)] + VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) + { + return patch[id]; + } + + [domain("tri")] + PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) + { + Attributes output = (Attributes) 0; + output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; + output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; + output.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z; + output.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z; + #if defined(ASE_PHONG_TESSELLATION) + float3 pp[3]; + for (int i = 0; i < 3; ++i) + pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); + float phongStrength = _TessPhongStrength; + output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; + #endif + UNITY_TRANSFER_INSTANCE_ID(patch[0], output); + return VertexFunction(output); + } + #else + PackedVaryings vert ( Attributes input ) + { + return VertexFunction( input ); + } + #endif + + half4 frag(PackedVaryings input ) : SV_Target + { + SurfaceDescription surfaceDescription = (SurfaceDescription)0; + + float2 uv_BaseTexture = input.ase_texcoord.xy * _BaseTexture_ST.xy + _BaseTexture_ST.zw; + float4 tex2DNode10 = tex2D( _BaseTexture, uv_BaseTexture ); + float4 temp_cast_0 = (tex2DNode10.a).xxxx; + #ifdef _USEMAIN_RGBA_ON + float4 staticSwitch13 = temp_cast_0; + #else + float4 staticSwitch13 = tex2DNode10; + #endif + + + surfaceDescription.Alpha = saturate( ( ( input.ase_color.a * staticSwitch13 ) * _Alpha_Intensity ) ).r; + 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" } + + AlphaToMask Off + + HLSLPROGRAM + + + + #define ASE_FOG 1 + #define _SURFACE_TYPE_TRANSPARENT 1 + #define ASE_VERSION 19800 + #define ASE_SRP_VERSION 140010 + + + + + #pragma vertex vert + #pragma fragment frag + + #define ATTRIBUTES_NEED_NORMAL + #define ATTRIBUTES_NEED_TANGENT + + #define SHADERPASS SHADERPASS_DEPTHONLY + + + #if ASE_SRP_VERSION >=140007 + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #endif + + + + #if ASE_SRP_VERSION >=140007 + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" + #endif + + + #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" + + + #if ASE_SRP_VERSION >=140010 + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + #endif + + + + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl" + + #if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif + + #pragma shader_feature_local _USEMAIN_RGBA_ON + + + struct Attributes + { + float4 positionOS : POSITION; + float3 normalOS : NORMAL; + float4 ase_color : COLOR; + float4 ase_texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct PackedVaryings + { + float4 positionCS : SV_POSITION; + float4 ase_color : COLOR; + float4 ase_texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + CBUFFER_START(UnityPerMaterial) + float4 _BaseTexture_ST; + float4 _BaseColor; + float _Power; + float _Alpha_Intensity; + #ifdef ASE_TESSELLATION + float _TessPhongStrength; + float _TessValue; + float _TessMin; + float _TessMax; + float _TessEdgeLength; + float _TessMaxDisp; + #endif + CBUFFER_END + + sampler2D _BaseTexture; + + + + float4 _SelectionID; + + struct SurfaceDescription + { + float Alpha; + float AlphaClipThreshold; + }; + + PackedVaryings VertexFunction(Attributes input ) + { + PackedVaryings output; + ZERO_INITIALIZE(PackedVaryings, output); + + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + output.ase_color = input.ase_color; + output.ase_texcoord.xy = input.ase_texcoord.xy; + + //setting value to unused interpolator channels and avoid initialization warnings + output.ase_texcoord.zw = 0; + + #ifdef ASE_ABSOLUTE_VERTEX_POS + float3 defaultVertexValue = input.positionOS.xyz; + #else + float3 defaultVertexValue = float3(0, 0, 0); + #endif + + float3 vertexValue = defaultVertexValue; + + #ifdef ASE_ABSOLUTE_VERTEX_POS + input.positionOS.xyz = vertexValue; + #else + input.positionOS.xyz += vertexValue; + #endif + + input.normalOS = input.normalOS; + + float3 positionWS = TransformObjectToWorld( input.positionOS.xyz ); + output.positionCS = TransformWorldToHClip(positionWS); + return output; + } + + #if defined(ASE_TESSELLATION) + struct VertexControl + { + float4 positionOS : INTERNALTESSPOS; + float3 normalOS : NORMAL; + float4 ase_color : COLOR; + float4 ase_texcoord : TEXCOORD0; + + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct TessellationFactors + { + float edge[3] : SV_TessFactor; + float inside : SV_InsideTessFactor; + }; + + VertexControl vert ( Attributes input ) + { + VertexControl output; + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + output.positionOS = input.positionOS; + output.normalOS = input.normalOS; + output.ase_color = input.ase_color; + output.ase_texcoord = input.ase_texcoord; + return output; + } + + TessellationFactors TessellationFunction (InputPatch input) + { + TessellationFactors output; + 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(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); + #elif defined(ASE_LENGTH_TESSELLATION) + tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); + #elif defined(ASE_LENGTH_CULL_TESSELLATION) + tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); + #endif + output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; + return output; + } + + [domain("tri")] + [partitioning("fractional_odd")] + [outputtopology("triangle_cw")] + [patchconstantfunc("TessellationFunction")] + [outputcontrolpoints(3)] + VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) + { + return patch[id]; + } + + [domain("tri")] + PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) + { + Attributes output = (Attributes) 0; + output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; + output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; + output.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z; + output.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z; + #if defined(ASE_PHONG_TESSELLATION) + float3 pp[3]; + for (int i = 0; i < 3; ++i) + pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); + float phongStrength = _TessPhongStrength; + output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; + #endif + UNITY_TRANSFER_INSTANCE_ID(patch[0], output); + return VertexFunction(output); + } + #else + PackedVaryings vert ( Attributes input ) + { + return VertexFunction( input ); + } + #endif + + half4 frag(PackedVaryings input ) : SV_Target + { + SurfaceDescription surfaceDescription = (SurfaceDescription)0; + + float2 uv_BaseTexture = input.ase_texcoord.xy * _BaseTexture_ST.xy + _BaseTexture_ST.zw; + float4 tex2DNode10 = tex2D( _BaseTexture, uv_BaseTexture ); + float4 temp_cast_0 = (tex2DNode10.a).xxxx; + #ifdef _USEMAIN_RGBA_ON + float4 staticSwitch13 = temp_cast_0; + #else + float4 staticSwitch13 = tex2DNode10; + #endif + + + surfaceDescription.Alpha = saturate( ( ( input.ase_color.a * staticSwitch13 ) * _Alpha_Intensity ) ).r; + 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 _ALPHATEST_ON + #pragma multi_compile_instancing + #pragma multi_compile_fragment _ LOD_FADE_CROSSFADE + #define ASE_FOG 1 + #define _SURFACE_TYPE_TRANSPARENT 1 + #define ASE_VERSION 19800 + #define ASE_SRP_VERSION 140010 + + + + + #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT + + + + #pragma vertex vert + #pragma fragment frag + + #define ATTRIBUTES_NEED_NORMAL + #define ATTRIBUTES_NEED_TANGENT + #define VARYINGS_NEED_NORMAL_WS + + #define SHADERPASS SHADERPASS_DEPTHNORMALSONLY + + + #if ASE_SRP_VERSION >=140007 + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + #endif + + + + #if ASE_SRP_VERSION >=140007 + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" + #endif + + + #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" + + + #if ASE_SRP_VERSION >=140010 + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + #endif + + + + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl" + + #if defined(LOD_FADE_CROSSFADE) + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/LODCrossFade.hlsl" + #endif + + #pragma shader_feature_local _USEMAIN_RGBA_ON + + + #if defined(ASE_EARLY_Z_DEPTH_OPTIMIZE) && (SHADER_TARGET >= 45) + #define ASE_SV_DEPTH SV_DepthLessEqual + #define ASE_SV_POSITION_QUALIFIERS linear noperspective centroid + #else + #define ASE_SV_DEPTH SV_Depth + #define ASE_SV_POSITION_QUALIFIERS + #endif + + struct Attributes + { + float4 positionOS : POSITION; + float3 normalOS : NORMAL; + float4 ase_color : COLOR; + float4 ase_texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct PackedVaryings + { + ASE_SV_POSITION_QUALIFIERS float4 positionCS : SV_POSITION; + float4 clipPosV : TEXCOORD0; + float3 positionWS : TEXCOORD1; + float3 normalWS : TEXCOORD2; + float4 ase_color : COLOR; + float4 ase_texcoord3 : TEXCOORD3; + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + CBUFFER_START(UnityPerMaterial) + float4 _BaseTexture_ST; + float4 _BaseColor; + float _Power; + float _Alpha_Intensity; + #ifdef ASE_TESSELLATION + float _TessPhongStrength; + float _TessValue; + float _TessMin; + float _TessMax; + float _TessEdgeLength; + float _TessMaxDisp; + #endif + CBUFFER_END + + sampler2D _BaseTexture; + + + + struct SurfaceDescription + { + float Alpha; + float AlphaClipThreshold; + }; + + PackedVaryings VertexFunction( Attributes input ) + { + PackedVaryings output; + ZERO_INITIALIZE(PackedVaryings, output); + + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + output.ase_color = input.ase_color; + output.ase_texcoord3.xy = input.ase_texcoord.xy; + + //setting value to unused interpolator channels and avoid initialization warnings + output.ase_texcoord3.zw = 0; + #ifdef ASE_ABSOLUTE_VERTEX_POS + float3 defaultVertexValue = input.positionOS.xyz; + #else + float3 defaultVertexValue = float3(0, 0, 0); + #endif + + float3 vertexValue = defaultVertexValue; + + #ifdef ASE_ABSOLUTE_VERTEX_POS + input.positionOS.xyz = vertexValue; + #else + input.positionOS.xyz += vertexValue; + #endif + + input.normalOS = input.normalOS; + + VertexPositionInputs vertexInput = GetVertexPositionInputs( input.positionOS.xyz ); + + output.positionCS = vertexInput.positionCS; + output.clipPosV = vertexInput.positionCS; + output.positionWS = vertexInput.positionWS; + output.normalWS = TransformObjectToWorldNormal( input.normalOS ); + return output; + } + + #if defined(ASE_TESSELLATION) + struct VertexControl + { + float4 positionOS : INTERNALTESSPOS; + float3 normalOS : NORMAL; + float4 ase_color : COLOR; + float4 ase_texcoord : TEXCOORD0; + + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct TessellationFactors + { + float edge[3] : SV_TessFactor; + float inside : SV_InsideTessFactor; + }; + + VertexControl vert ( Attributes input ) + { + VertexControl output; + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + output.positionOS = input.positionOS; + output.normalOS = input.normalOS; + output.ase_color = input.ase_color; + output.ase_texcoord = input.ase_texcoord; + return output; + } + + TessellationFactors TessellationFunction (InputPatch input) + { + TessellationFactors output; + 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(input[0].positionOS, input[1].positionOS, input[2].positionOS, tessValue, tessMin, tessMax, GetObjectToWorldMatrix(), _WorldSpaceCameraPos ); + #elif defined(ASE_LENGTH_TESSELLATION) + tf = EdgeLengthBasedTess(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams ); + #elif defined(ASE_LENGTH_CULL_TESSELLATION) + tf = EdgeLengthBasedTessCull(input[0].positionOS, input[1].positionOS, input[2].positionOS, edgeLength, tessMaxDisp, GetObjectToWorldMatrix(), _WorldSpaceCameraPos, _ScreenParams, unity_CameraWorldClipPlanes ); + #endif + output.edge[0] = tf.x; output.edge[1] = tf.y; output.edge[2] = tf.z; output.inside = tf.w; + return output; + } + + [domain("tri")] + [partitioning("fractional_odd")] + [outputtopology("triangle_cw")] + [patchconstantfunc("TessellationFunction")] + [outputcontrolpoints(3)] + VertexControl HullFunction(InputPatch patch, uint id : SV_OutputControlPointID) + { + return patch[id]; + } + + [domain("tri")] + PackedVaryings DomainFunction(TessellationFactors factors, OutputPatch patch, float3 bary : SV_DomainLocation) + { + Attributes output = (Attributes) 0; + output.positionOS = patch[0].positionOS * bary.x + patch[1].positionOS * bary.y + patch[2].positionOS * bary.z; + output.normalOS = patch[0].normalOS * bary.x + patch[1].normalOS * bary.y + patch[2].normalOS * bary.z; + output.ase_color = patch[0].ase_color * bary.x + patch[1].ase_color * bary.y + patch[2].ase_color * bary.z; + output.ase_texcoord = patch[0].ase_texcoord * bary.x + patch[1].ase_texcoord * bary.y + patch[2].ase_texcoord * bary.z; + #if defined(ASE_PHONG_TESSELLATION) + float3 pp[3]; + for (int i = 0; i < 3; ++i) + pp[i] = output.positionOS.xyz - patch[i].normalOS * (dot(output.positionOS.xyz, patch[i].normalOS) - dot(patch[i].positionOS.xyz, patch[i].normalOS)); + float phongStrength = _TessPhongStrength; + output.positionOS.xyz = phongStrength * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-phongStrength) * output.positionOS.xyz; + #endif + UNITY_TRANSFER_INSTANCE_ID(patch[0], output); + return VertexFunction(output); + } + #else + PackedVaryings vert ( Attributes input ) + { + return VertexFunction( input ); + } + #endif + + void frag(PackedVaryings input + , out half4 outNormalWS : SV_Target0 + #ifdef ASE_DEPTH_WRITE_ON + ,out float outputDepth : ASE_SV_DEPTH + #endif + #ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 + #endif + ) + { + UNITY_SETUP_INSTANCE_ID(input); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( input ); + float3 WorldPosition = input.positionWS; + float3 WorldNormal = input.normalWS; + float4 ClipPos = input.clipPosV; + float4 ScreenPos = ComputeScreenPos( input.clipPosV ); + + float2 uv_BaseTexture = input.ase_texcoord3.xy * _BaseTexture_ST.xy + _BaseTexture_ST.zw; + float4 tex2DNode10 = tex2D( _BaseTexture, uv_BaseTexture ); + float4 temp_cast_0 = (tex2DNode10.a).xxxx; + #ifdef _USEMAIN_RGBA_ON + float4 staticSwitch13 = temp_cast_0; + #else + float4 staticSwitch13 = tex2DNode10; + #endif + + + float Alpha = saturate( ( ( input.ase_color.a * staticSwitch13 ) * _Alpha_Intensity ) ).r; + float AlphaClipThreshold = 0.5; + + #ifdef ASE_DEPTH_WRITE_ON + float DepthValue = input.positionCS.z; + #endif + + #ifdef _ALPHATEST_ON + clip(Alpha - AlphaClipThreshold); + #endif + + #if defined(LOD_FADE_CROSSFADE) + LODFadeCrossFade( input.positionCS ); + #endif + + #ifdef ASE_DEPTH_WRITE_ON + outputDepth = DepthValue; + #endif + + #if defined(_GBUFFER_NORMALS_OCT) + float3 normalWS = normalize(input.normalWS); + float2 octNormalWS = PackNormalOctQuadEncode(normalWS); + float2 remappedOctNormalWS = saturate(octNormalWS * 0.5 + 0.5); + half3 packedNormalWS = PackFloat2To888(remappedOctNormalWS); + outNormalWS = half4(packedNormalWS, 0.0); + #else + float3 normalWS = input.normalWS; + outNormalWS = half4(NormalizeNormalPerPixel(normalWS), 0.0); + #endif + + #ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); + #endif + } + ENDHLSL + } + + + } + + CustomEditor "UnityEditor.ShaderGraphUnlitGUI" + FallBack "Hidden/Shader Graph/FallbackError" + + Fallback Off +} +/*ASEBEGIN +Version=19800 +Node;AmplifyShaderEditor.TextureCoordinatesNode;14;-1264,-272;Inherit;False;0;10;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.SamplerNode;10;-816,-240;Inherit;True;Property;_BaseTexture;BaseTexture;0;0;Create;True;0;0;0;False;0;False;-1;None;None;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;6;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT3;5 +Node;AmplifyShaderEditor.StaticSwitch;13;-416,-224;Inherit;False;Property;_UseMain_RgbA;UseMain_Rgb/A;2;0;Create;True;0;0;0;False;0;False;0;0;0;True;;Toggle;2;Key0;Key1;Create;True;True;All;9;1;COLOR;0,0,0,0;False;0;COLOR;0,0,0,0;False;2;COLOR;0,0,0,0;False;3;COLOR;0,0,0,0;False;4;COLOR;0,0,0,0;False;5;COLOR;0,0,0,0;False;6;COLOR;0,0,0,0;False;7;COLOR;0,0,0,0;False;8;COLOR;0,0,0,0;False;1;COLOR;0 +Node;AmplifyShaderEditor.VertexColorNode;17;-176,-512;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 +Node;AmplifyShaderEditor.SimpleMultiplyOpNode;18;176,16;Inherit;False;2;2;0;FLOAT;0;False;1;COLOR;0,0,0,0;False;1;COLOR;0 +Node;AmplifyShaderEditor.RangedFloatNode;20;176,176;Inherit;False;Property;_Alpha_Intensity;Alpha_Intensity;4;0;Create;True;0;0;0;False;0;False;1;0;0;0;0;1;FLOAT;0 +Node;AmplifyShaderEditor.SimpleMultiplyOpNode;19;381.1917,78.3266;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT;0;False;1;COLOR;0 +Node;AmplifyShaderEditor.ColorNode;12;-384,48;Inherit;False;Property;_BaseColor;BaseColor;1;1;[HDR];Create;True;0;0;0;False;0;False;1,1,1,1;0,0,0,0;True;True;0;6;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT3;5 +Node;AmplifyShaderEditor.SimpleMultiplyOpNode;11;208,-208;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.RangedFloatNode;16;-288,-112;Inherit;False;Property;_Power;Power;3;0;Create;True;0;0;0;False;0;False;1;0;0;0;0;1;FLOAT;0 +Node;AmplifyShaderEditor.SaturateNode;22;639.6312,144.6371;Inherit;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0 +Node;AmplifyShaderEditor.PowerNode;15;-64,-128;Inherit;False;False;2;0;COLOR;0,0,0,0;False;1;FLOAT;1;False;1;COLOR;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;0;0,0;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;0;13;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ExtraPrePass;0;0;ExtraPrePass;5;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;5;True;12;all;0;False;True;1;1;False;;0;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;True;True;True;True;0;False;;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;0;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;2;0,0;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;0;13;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ShadowCaster;0;2;ShadowCaster;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;5;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;False;False;True;False;False;False;False;0;False;;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;False;True;1;LightMode=ShadowCaster;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;3;0,0;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;0;13;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthOnly;0;3;DepthOnly;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;5;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;False;False;True;True;False;False;False;0;False;;False;False;False;False;False;False;False;False;False;True;1;False;;False;False;True;1;LightMode=DepthOnly;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;4;0,0;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;0;13;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;Meta;0;4;Meta;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;5;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;LightMode=Meta;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;5;0,0;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;0;13;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;Universal2D;0;5;Universal2D;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;5;True;12;all;0;False;True;1;1;False;;0;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;True;True;True;True;0;False;;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;1;LightMode=Universal2D;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;6;0,0;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;0;13;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;SceneSelectionPass;0;6;SceneSelectionPass;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;5;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;2;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;LightMode=SceneSelectionPass;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;7;0,0;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;0;13;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ScenePickingPass;0;7;ScenePickingPass;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;5;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;LightMode=Picking;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;8;0,0;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;0;13;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthNormals;0;8;DepthNormals;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;5;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;False;True;1;LightMode=DepthNormalsOnly;False;False;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;9;0,0;Float;False;False;-1;3;UnityEditor.ShaderGraphUnlitGUI;0;13;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthNormalsOnly;0;9;DepthNormalsOnly;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;False;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;UniversalMaterialType=Unlit;True;5;True;12;all;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;1;False;;True;3;False;;False;True;1;LightMode=DepthNormalsOnly;False;True;9;d3d11;metal;vulkan;xboxone;xboxseries;playstation;ps4;ps5;switch;0;;0;0;Standard;0;False;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;1;784,-224;Float;False;True;-1;3;UnityEditor.ShaderGraphUnlitGUI;0;13;DY_AlphaBlend;2992e84f91cbeb14eab234972e07ea9d;True;Forward;0;1;Forward;9;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;2;False;;False;False;False;False;False;False;False;False;True;True;False;1;False;;255;False;;255;False;;5;False;;1;False;;1;False;;1;False;;5;False;;1;False;;1;False;;1;False;;False;False;False;False;True;4;RenderPipeline=UniversalPipeline;RenderType=Transparent=RenderType;Queue=Transparent=Queue=0;UniversalMaterialType=Unlit;True;5;True;12;all;0;True;True;2;5;False;;10;False;;1;1;False;;10;False;;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;True;True;True;True;0;False;;False;False;False;False;False;False;True;True;True;1;False;;255;False;;255;False;;5;False;;1;False;;1;False;;1;False;;5;False;;1;False;;1;False;;1;False;;False;True;2;False;;True;3;False;;True;True;0;False;;0;False;;True;1;LightMode=UniversalForwardOnly;False;False;0;;0;0;Standard;25;Surface;1;638846429615647026; Blend;0;0;Two Sided;0;638846429659220944;Alpha Clipping;1;0; Use Shadow Threshold;0;0;Forward Only;0;0;Cast Shadows;1;0;Receive Shadows;1;0;GPU Instancing;1;0;LOD CrossFade;1;0;Built-in Fog;1;0;Meta Pass;0;0;Extra Pre Pass;0;0;Tessellation;0;0; Phong;0;0; Strength;0.5,False,;0; Type;0;0; Tess;16,False,;0; Min;10,False,;0; Max;25,False,;0; Edge Length;16,False,;0; Max Displacement;25,False,;0;Write Depth;0;0; Early Z;0;0;Vertex Position,InvertActionOnDeselection;1;0;0;10;False;True;True;True;False;False;True;True;True;False;False;;False;0 +WireConnection;10;1;14;0 +WireConnection;13;1;10;0 +WireConnection;13;0;10;4 +WireConnection;18;0;17;4 +WireConnection;18;1;13;0 +WireConnection;19;0;18;0 +WireConnection;19;1;20;0 +WireConnection;11;0;15;0 +WireConnection;11;1;12;0 +WireConnection;11;2;17;0 +WireConnection;22;0;19;0 +WireConnection;15;0;13;0 +WireConnection;15;1;16;0 +WireConnection;1;2;11;0 +WireConnection;1;3;22;0 +ASEEND*/ +//CHKSM=8FB3017976C973F6BC2061BBB7280104E76AE49E \ No newline at end of file diff --git a/UnityProject/Assets/QD/QD01_FX_Shader/FX_Shader/DY_AlphaBlend.shader.meta b/UnityProject/Assets/QD/QD01_FX_Shader/FX_Shader/DY_AlphaBlend.shader.meta new file mode 100644 index 00000000..6271eb72 --- /dev/null +++ b/UnityProject/Assets/QD/QD01_FX_Shader/FX_Shader/DY_AlphaBlend.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4a279542e452d6141a81a100c0f1a4eb +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: