-
-
Save rngtm/b4b23e3ea185331e003e47c6aed7afd4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Made with Amplify Shader Editor | |
// Available at the Unity Asset Store - http://u3d.as/y3X | |
Shader "VoidDistortion" | |
{ | |
Properties | |
{ | |
[HideInInspector] _AlphaCutoff("Alpha Cutoff ", Range(0, 1)) = 0.5 | |
[HideInInspector] _EmissionColor("Emission Color", Color) = (1,1,1,1) | |
_TimeScale("TimeScale", Range( 0 , 4)) = 2 | |
_DistortionAmount("Distortion Amount", Float) = 0.2705882 | |
_DistortionScrollSpeed("Distortion Scroll Speed", Vector) = (0,0.1,0,0) | |
[Toggle(_USEDISTORTIONMASK_ON)] _UseDistortionMask("UseDistortionMask", Float) = 0 | |
_DistortionMask("DistortionMask", 2D) = "white" {} | |
_UVShear("UV Shear", Vector) = (0,0,0,0) | |
[ASEEnd]_DistortionMap("DistortionMap", 2D) = "gray" {} | |
[HideInInspector] _texcoord( "", 2D ) = "white" {} | |
//_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 Back | |
AlphaToMask Off | |
HLSLINCLUDE | |
#pragma target 2.0 | |
#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"="UniversalForward" } | |
Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha | |
ZWrite Off | |
ZTest Always | |
Offset 0 , 0 | |
ColorMask RGBA | |
HLSLPROGRAM | |
#pragma multi_compile_instancing | |
#define ASE_SRP_VERSION 999999 | |
#define REQUIRE_OPAQUE_TEXTURE 1 | |
#pragma prefer_hlslcc gles | |
#pragma exclude_renderers d3d11_9x | |
#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.core/ShaderLibrary/Color.hlsl" | |
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl" | |
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl" | |
#if ASE_SRP_VERSION <= 70108 | |
#define REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR | |
#endif | |
#pragma shader_feature_local _USEDISTORTIONMASK_ON | |
struct VertexInput | |
{ | |
float4 vertex : POSITION; | |
float3 ase_normal : NORMAL; | |
float4 ase_texcoord : TEXCOORD0; | |
float4 ase_texcoord1 : TEXCOORD1; | |
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_texcoord4 : TEXCOORD4; | |
float4 ase_texcoord5 : TEXCOORD5; | |
UNITY_VERTEX_INPUT_INSTANCE_ID | |
UNITY_VERTEX_OUTPUT_STEREO | |
}; | |
CBUFFER_START(UnityPerMaterial) | |
float4 _DistortionMap_ST; | |
float4 _DistortionMask_ST; | |
float2 _UVShear; | |
float2 _DistortionScrollSpeed; | |
float _TimeScale; | |
float _DistortionAmount; | |
#ifdef TESSELLATION_ON | |
float _TessPhongStrength; | |
float _TessValue; | |
float _TessMin; | |
float _TessMax; | |
float _TessEdgeLength; | |
float _TessMaxDisp; | |
#endif | |
CBUFFER_END | |
sampler2D _DistortionMap; | |
sampler2D _DistortionMask; | |
inline float4 ASE_ComputeGrabScreenPos( float4 pos ) | |
{ | |
#if UNITY_UV_STARTS_AT_TOP | |
float scale = -1.0; | |
#else | |
float scale = 1.0; | |
#endif | |
float4 o = pos; | |
o.y = pos.w * 0.5f; | |
o.y = ( pos.y - o.y ) * _ProjectionParams.x * scale + o.y; | |
return o; | |
} | |
inline float2 UVShear92( float2 UV, float2 Shear ) | |
{ | |
return UV.xy + UV.yx * Shear.xy; | |
} | |
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); | |
float4 ase_clipPos = TransformObjectToHClip((v.vertex).xyz); | |
float4 screenPos = ComputeScreenPos(ase_clipPos); | |
o.ase_texcoord3 = screenPos; | |
o.ase_texcoord4.xy = v.ase_texcoord.xy; | |
o.ase_texcoord5 = v.ase_texcoord1; | |
//setting value to unused interpolator channels and avoid initialization warnings | |
o.ase_texcoord4.zw = 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 ); | |
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_texcoord1 : TEXCOORD1; | |
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_texcoord1 = v.ase_texcoord1; | |
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_texcoord1 = patch[0].ase_texcoord1 * bary.x + patch[1].ase_texcoord1 * bary.y + patch[2].ase_texcoord1 * 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 | |
float4 screenPos = IN.ase_texcoord3; | |
float4 ase_grabScreenPos = ASE_ComputeGrabScreenPos( screenPos ); | |
float4 ase_grabScreenPosNorm = ase_grabScreenPos / ase_grabScreenPos.w; | |
float2 uv_DistortionMap = IN.ase_texcoord4.xy * _DistortionMap_ST.xy + _DistortionMap_ST.zw; | |
float2 CenteredUV15_g1 = ( uv_DistortionMap - float2( 0.5,0.5 ) ); | |
float2 break17_g1 = CenteredUV15_g1; | |
float2 appendResult23_g1 = (float2(( length( CenteredUV15_g1 ) * 1.0 * 2.0 ) , ( atan2( break17_g1.x , break17_g1.y ) * ( 1.0 / TWO_PI ) * 1.0 ))); | |
float2 UV92 = appendResult23_g1; | |
float2 Shear92 = _UVShear; | |
float2 localUVShear92 = UVShear92( UV92 , Shear92 ); | |
float mulTime18 = _TimeParameters.x * _TimeScale; | |
float4 appendResult72 = (float4(IN.ase_texcoord5.y , IN.ase_texcoord5.z , 0.0 , 0.0)); | |
float3 unpack8 = UnpackNormalScale( tex2D( _DistortionMap, frac( (localUVShear92*1.0 + ( float4( ( mulTime18 * _DistortionScrollSpeed ), 0.0 , 0.0 ) + appendResult72 ).xy) ) ), _DistortionAmount ); | |
unpack8.z = lerp( 1, unpack8.z, saturate(_DistortionAmount) ); | |
float3 temp_output_57_0 = ( unpack8 * IN.ase_texcoord5.x ); | |
float2 uv_DistortionMask = IN.ase_texcoord4.xy * _DistortionMask_ST.xy + _DistortionMask_ST.zw; | |
#ifdef _USEDISTORTIONMASK_ON | |
float4 staticSwitch38 = ( float4( temp_output_57_0 , 0.0 ) * tex2D( _DistortionMask, uv_DistortionMask ) ); | |
#else | |
float4 staticSwitch38 = float4( temp_output_57_0 , 0.0 ); | |
#endif | |
float4 clampResult95 = clamp( ( ase_grabScreenPosNorm + staticSwitch38 ) , float4( float2( 0.01,0.01 ), 0.0 , 0.0 ) , float4( float2( 0.999,0.999 ), 0.0 , 0.0 ) ); | |
float4 fetchOpaqueVal7 = float4( SHADERGRAPH_SAMPLE_SCENE_COLOR( clampResult95.xy ), 1.0 ); | |
float3 BakedAlbedo = 0; | |
float3 BakedEmission = 0; | |
float3 Color = fetchOpaqueVal7.rgb; | |
float Alpha = 1; | |
float AlphaClipThreshold = 0.5; | |
float AlphaClipThresholdShadow = 0.5; | |
#ifdef _ALPHATEST_ON | |
clip( Alpha - AlphaClipThreshold ); | |
#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 "ShadowCaster" | |
Tags { "LightMode"="ShadowCaster" } | |
ZWrite On | |
ZTest LEqual | |
AlphaToMask Off | |
HLSLPROGRAM | |
#pragma multi_compile_instancing | |
#define ASE_SRP_VERSION 999999 | |
#pragma prefer_hlslcc gles | |
#pragma exclude_renderers d3d11_9x | |
#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" | |
struct VertexInput | |
{ | |
float4 vertex : POSITION; | |
float3 ase_normal : NORMAL; | |
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 | |
UNITY_VERTEX_INPUT_INSTANCE_ID | |
UNITY_VERTEX_OUTPUT_STEREO | |
}; | |
CBUFFER_START(UnityPerMaterial) | |
float4 _DistortionMap_ST; | |
float4 _DistortionMask_ST; | |
float2 _UVShear; | |
float2 _DistortionScrollSpeed; | |
float _TimeScale; | |
float _DistortionAmount; | |
#ifdef TESSELLATION_ON | |
float _TessPhongStrength; | |
float _TessValue; | |
float _TessMin; | |
float _TessMax; | |
float _TessEdgeLength; | |
float _TessMaxDisp; | |
#endif | |
CBUFFER_END | |
float3 _LightDirection; | |
VertexOutput VertexFunction( VertexInput v ) | |
{ | |
VertexOutput o; | |
UNITY_SETUP_INSTANCE_ID(v); | |
UNITY_TRANSFER_INSTANCE_ID(v, o); | |
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( o ); | |
#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 | |
float3 normalWS = TransformObjectToWorldDir( v.ase_normal ); | |
float4 clipPos = TransformWorldToHClip( ApplyShadowBias( positionWS, normalWS, _LightDirection ) ); | |
#if UNITY_REVERSED_Z | |
clipPos.z = min(clipPos.z, clipPos.w * UNITY_NEAR_CLIP_VALUE); | |
#else | |
clipPos.z = max(clipPos.z, clipPos.w * 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 = clipPos; | |
o.shadowCoord = GetShadowCoord( vertexInput ); | |
#endif | |
o.clipPos = clipPos; | |
return o; | |
} | |
#if defined(TESSELLATION_ON) | |
struct VertexControl | |
{ | |
float4 vertex : INTERNALTESSPOS; | |
float3 ase_normal : NORMAL; | |
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; | |
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; | |
#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 | |
float Alpha = 1; | |
float AlphaClipThreshold = 0.5; | |
float AlphaClipThresholdShadow = 0.5; | |
#ifdef _ALPHATEST_ON | |
#ifdef _ALPHATEST_SHADOW_ON | |
clip(Alpha - AlphaClipThresholdShadow); | |
#else | |
clip(Alpha - AlphaClipThreshold); | |
#endif | |
#endif | |
#ifdef LOD_FADE_CROSSFADE | |
LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x ); | |
#endif | |
return 0; | |
} | |
ENDHLSL | |
} | |
Pass | |
{ | |
Name "DepthOnly" | |
Tags { "LightMode"="DepthOnly" } | |
ZWrite On | |
ColorMask 0 | |
AlphaToMask Off | |
HLSLPROGRAM | |
#pragma multi_compile_instancing | |
#define ASE_SRP_VERSION 999999 | |
#pragma prefer_hlslcc gles | |
#pragma exclude_renderers d3d11_9x | |
#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" | |
struct VertexInput | |
{ | |
float4 vertex : POSITION; | |
float3 ase_normal : NORMAL; | |
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 | |
UNITY_VERTEX_INPUT_INSTANCE_ID | |
UNITY_VERTEX_OUTPUT_STEREO | |
}; | |
CBUFFER_START(UnityPerMaterial) | |
float4 _DistortionMap_ST; | |
float4 _DistortionMask_ST; | |
float2 _UVShear; | |
float2 _DistortionScrollSpeed; | |
float _TimeScale; | |
float _DistortionAmount; | |
#ifdef TESSELLATION_ON | |
float _TessPhongStrength; | |
float _TessValue; | |
float _TessMin; | |
float _TessMax; | |
float _TessEdgeLength; | |
float _TessMaxDisp; | |
#endif | |
CBUFFER_END | |
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); | |
#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; | |
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; | |
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; | |
#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 | |
float Alpha = 1; | |
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 | |
} | |
} | |
CustomEditor "DistortionShaderGUI" | |
Fallback "Hidden/InternalErrorShader" | |
} | |
/*ASEBEGIN | |
Version=18909 | |
1920;-712;2560;1379;5295.814;2516.708;1;True;False | |
Node;AmplifyShaderEditor.CommentaryNode;46;-4266.161,-1406.23;Inherit;False;938.5898;558.9496;UV Scroll;7;68;72;19;20;18;24;52;;0.09019608,0,0.1411765,1;0;0 | |
Node;AmplifyShaderEditor.CommentaryNode;94;-4267.052,-1834.358;Inherit;False;946.442;408.5205;UV ;4;86;92;91;34;;0.09019608,0,0.1411765,1;0;0 | |
Node;AmplifyShaderEditor.CommentaryNode;52;-4239.93,-1110.558;Inherit;False;487.1458;240.9912;UV Scroll (Custom Data2.yz);1;44;;0.09019608,0,0.1411765,1;0;0 | |
Node;AmplifyShaderEditor.CommentaryNode;73;-3143.694,-527.3294;Inherit;False;358.0955;273;Distortion Amount (CustomData.x);1;74;;0.09019608,0,0.1411765,1;0;0 | |
Node;AmplifyShaderEditor.TextureCoordinatesNode;91;-4207.389,-1757.354;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.Vector2Node;86;-3870.078,-1574.783;Inherit;False;Property;_UVShear;UV Shear;5;0;Create;True;0;0;0;False;0;False;0,0;2,0;0;3;FLOAT2;0;FLOAT;1;FLOAT;2 | |
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;57;-2716.899,-564.5695;Inherit;False;2;2;0;FLOAT3;0,0,0;False;1;FLOAT;0;False;1;FLOAT3;0 | |
Node;AmplifyShaderEditor.RangedFloatNode;24;-4218.161,-1347.23;Inherit;False;Property;_TimeScale;TimeScale;0;0;Create;True;0;0;0;False;0;False;2;0.05;0;4;0;1;FLOAT;0 | |
Node;AmplifyShaderEditor.SimpleTimeNode;18;-3908.921,-1347.579;Inherit;False;1;0;FLOAT;1;False;1;FLOAT;0 | |
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;20;-3697.921,-1348.579;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT2;0,0;False;1;FLOAT2;0 | |
Node;AmplifyShaderEditor.Vector2Node;19;-3966.921,-1246.579;Inherit;False;Property;_DistortionScrollSpeed;Distortion Scroll Speed;2;0;Create;True;0;0;0;False;0;False;0,0.1;0,0;0;3;FLOAT2;0;FLOAT;1;FLOAT;2 | |
Node;AmplifyShaderEditor.TexCoordVertexDataNode;44;-4169.2,-1062.271;Inherit;True;1;4;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | |
Node;AmplifyShaderEditor.DynamicAppendNode;72;-3691.688,-1017.707;Inherit;False;FLOAT4;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT4;0 | |
Node;AmplifyShaderEditor.SimpleAddOpNode;68;-3492.688,-1350.707;Inherit;False;2;2;0;FLOAT2;0,0;False;1;FLOAT4;0,0,0,0;False;1;FLOAT4;0 | |
Node;AmplifyShaderEditor.ScaleAndOffsetNode;35;-3276.834,-1466.126;Inherit;False;3;0;FLOAT2;0,0;False;1;FLOAT;1;False;2;FLOAT2;0,0;False;1;FLOAT2;0 | |
Node;AmplifyShaderEditor.CustomExpressionNode;92;-3596.762,-1758.213;Inherit;False;UV.xy + UV.yx * Shear.xy;2;Create;2;True;UV;FLOAT2;0,0;In;;Inherit;False;True;Shear;FLOAT2;0,0;In;;Inherit;False;UV Shear;True;False;0;;False;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT2;0 | |
Node;AmplifyShaderEditor.TexCoordVertexDataNode;74;-3073.293,-463.5296;Inherit;True;1;4;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | |
Node;AmplifyShaderEditor.TexturePropertyNode;93;-4574.15,-790.5954;Inherit;True;Property;_DistortionMap;DistortionMap;6;0;Create;True;0;0;0;False;0;False;None;46326ad2c8f07774da2560fb18ed280c;True;gray;Auto;Texture2D;-1;0;2;SAMPLER2D;0;SAMPLERSTATE;1 | |
Node;AmplifyShaderEditor.SamplerNode;37;-2756.463,-416.8518;Inherit;True;Property;_DistortionMask;DistortionMask;4;0;Create;True;0;0;0;False;0;False;-1;None;d34687d8ad96042419c08cead92a7c62;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.StaticSwitch;38;-2267.35,-564.6226;Inherit;False;Property;_UseDistortionMask;UseDistortionMask;3;0;Create;True;0;0;0;False;0;False;0;0;1;True;;Toggle;2;Key0;Key1;Create;True;True;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.ScreenColorNode;7;-1476.978,-620.8874;Inherit;False;Global;_GrabScreen0;Grab Screen 0;0;0;Create;True;0;0;0;False;0;False;Object;-1;False;False;False;2;0;FLOAT2;0,0;False;1;FLOAT;0;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | |
Node;AmplifyShaderEditor.GrabScreenPosition;9;-2223.535,-791.8912;Inherit;False;0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | |
Node;AmplifyShaderEditor.Vector2Node;96;-1924.261,-605.671;Inherit;False;Constant;_Vector0;Vector 0;14;0;Create;True;0;0;0;False;0;False;0.01,0.01;0,0;0;3;FLOAT2;0;FLOAT;1;FLOAT;2 | |
Node;AmplifyShaderEditor.SimpleAddOpNode;10;-1909.413,-786.6934;Inherit;False;2;2;0;FLOAT4;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;FLOAT4;0 | |
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;39;-2427.563,-463.3517;Inherit;False;2;2;0;FLOAT3;0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0 | |
Node;AmplifyShaderEditor.RangedFloatNode;11;-3242.695,-701.5659;Inherit;False;Property;_DistortionAmount;Distortion Amount;1;0;Create;True;0;0;0;False;0;False;0.2705882;4;0;0;0;1;FLOAT;0 | |
Node;AmplifyShaderEditor.ClampOpNode;95;-1662.262,-621.6711;Inherit;False;3;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;2;FLOAT4;1,0,0,0;False;1;FLOAT4;0 | |
Node;AmplifyShaderEditor.FractNode;21;-3074.792,-1464.534;Inherit;False;1;0;FLOAT2;0,0;False;1;FLOAT2;0 | |
Node;AmplifyShaderEditor.SamplerNode;8;-3004.614,-790.1652;Inherit;True;Property;_DistortionTex;_DistortionTex;2;0;Create;True;0;0;0;False;0;False;-1;546911dbcb6f26d4d82b147c2e5acdc2;546911dbcb6f26d4d82b147c2e5acdc2;True;0;True;bump;Auto;True;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;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | |
Node;AmplifyShaderEditor.Vector2Node;97;-1888.261,-462.6711;Inherit;False;Constant;_Vector1;Vector 1;14;0;Create;True;0;0;0;False;0;False;0.999,0.999;0,0;0;3;FLOAT2;0;FLOAT;1;FLOAT;2 | |
Node;AmplifyShaderEditor.FunctionNode;34;-3925.792,-1756.301;Inherit;False;Polar Coordinates;-1;;1;7dab8e02884cf104ebefaa2e788e4162;0;4;1;FLOAT2;0,0;False;2;FLOAT2;0.5,0.5;False;3;FLOAT;1;False;4;FLOAT;1;False;1;FLOAT2;0 | |
Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;5;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraph.PBRMasterGUI;0;3;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;Meta;0;4;Meta;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;3;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;0;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;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0 | |
Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;4;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraph.PBRMasterGUI;0;3;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;DepthOnly;0;3;DepthOnly;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;3;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;0;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;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0 | |
Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;3;0,0;Float;False;False;-1;2;UnityEditor.ShaderGraph.PBRMasterGUI;0;3;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ShadowCaster;0;2;ShadowCaster;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;3;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;0;0;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;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=ShadowCaster;False;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0 | |
Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;1;-856.3,80.30005;Float;False;False;-1;2;UnityEditor.ShaderGraph.PBRMasterGUI;0;3;New Amplify Shader;2992e84f91cbeb14eab234972e07ea9d;True;ExtraPrePass;0;0;ExtraPrePass;5;False;False;False;False;False;False;False;False;False;False;False;False;True;0;False;-1;False;True;0;False;-1;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;3;RenderPipeline=UniversalPipeline;RenderType=Opaque=RenderType;Queue=Geometry=Queue=0;True;0;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;0;Hidden/InternalErrorShader;0;0;Standard;0;False;0 | |
Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;2;-1219.088,-624.9771;Float;False;True;-1;2;DistortionShaderGUI;0;3;VoidDistortion;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;0;False;-1;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;3;RenderPipeline=UniversalPipeline;RenderType=Transparent=RenderType;Queue=Transparent=Queue=0;True;0;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;True;True;2;False;-1;True;7;False;-1;True;True;0;False;-1;0;False;-1;True;1;LightMode=UniversalForward;False;0;Hidden/InternalErrorShader;0;0;Standard;22;Surface;1; Blend;0;Two Sided;1;Cast Shadows;1; Use Shadow Threshold;0;Receive Shadows;1;GPU Instancing;1;LOD CrossFade;0;Built-in Fog;0;DOTS Instancing;0;Meta Pass;0;Extra Pre Pass;0;Tessellation;0; Phong;0; Strength;0.5,False,-1; Type;0; Tess;16,False,-1; Min;10,False,-1; Max;25,False,-1; Edge Length;16,False,-1; Max Displacement;25,False,-1;Vertex Position,InvertActionOnDeselection;1;0;5;False;True;True;True;False;False;;False;0 | |
WireConnection;91;2;93;0 | |
WireConnection;57;0;8;0 | |
WireConnection;57;1;74;1 | |
WireConnection;18;0;24;0 | |
WireConnection;20;0;18;0 | |
WireConnection;20;1;19;0 | |
WireConnection;72;0;44;2 | |
WireConnection;72;1;44;3 | |
WireConnection;68;0;20;0 | |
WireConnection;68;1;72;0 | |
WireConnection;35;0;92;0 | |
WireConnection;35;2;68;0 | |
WireConnection;92;0;34;0 | |
WireConnection;92;1;86;0 | |
WireConnection;38;1;57;0 | |
WireConnection;38;0;39;0 | |
WireConnection;7;0;95;0 | |
WireConnection;10;0;9;0 | |
WireConnection;10;1;38;0 | |
WireConnection;39;0;57;0 | |
WireConnection;39;1;37;0 | |
WireConnection;95;0;10;0 | |
WireConnection;95;1;96;0 | |
WireConnection;95;2;97;0 | |
WireConnection;21;0;35;0 | |
WireConnection;8;0;93;0 | |
WireConnection;8;1;21;0 | |
WireConnection;8;5;11;0 | |
WireConnection;34;1;91;0 | |
WireConnection;2;2;7;0 | |
ASEEND*/ | |
//CHKSM=E5755BF06A16247E70234558A107FD7D64A1C7E4 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment