summaryrefslogtreecommitdiff
path: root/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2
diff options
context:
space:
mode:
Diffstat (limited to 'VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2')
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/PoiShatterHelpers.cginc20
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/PoiShatterHelpers.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/Shatter.mat220
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/Shatter.mat.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterPass.cginc517
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterPass.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterWave2.shader264
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterWave2.shader.meta22
8 files changed, 1067 insertions, 0 deletions
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/PoiShatterHelpers.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/PoiShatterHelpers.cginc
new file mode 100644
index 00000000..e9f80a54
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/PoiShatterHelpers.cginc
@@ -0,0 +1,20 @@
+
+
+float2 getMatcapUV(float3 viewDirection, float3 normalDirection)
+{
+ half3 worldViewUp = normalize(half3(0, 1, 0) - viewDirection * dot(viewDirection, half3(0, 1, 0)));
+ half3 worldViewRight = normalize(cross(viewDirection, worldViewUp));
+ half2 matcapUV = half2(dot(worldViewRight, normalDirection), dot(worldViewUp, normalDirection)) * 0.5 + 0.5;
+ return matcapUV;
+}
+
+float3 CreateBinormal(float3 normal, float3 tangent, float binormalSign)
+{
+ return cross(normal, tangent.xyz) *
+ (binormalSign * unity_WorldTransformParams.w);
+}
+
+float random(in float3 st)
+{
+ return frac(cos(dot(st.xyz, float3(12.9898, 78.233, 123.691))) * 43758.5453123);
+} \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/PoiShatterHelpers.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/PoiShatterHelpers.cginc.meta
new file mode 100644
index 00000000..86915e07
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/PoiShatterHelpers.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5bcdb4bafbb424d4c957bdde3305b07c
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/Shatter.mat b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/Shatter.mat
new file mode 100644
index 00000000..516b3bf0
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/Shatter.mat
@@ -0,0 +1,220 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_Name: Shatter
+ m_Shader: {fileID: 4800000, guid: 53331eb0f5c357448b7969f013d8cf5f, type: 3}
+ m_ShaderKeywords:
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _AdditiveRamp:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 2, y: 2}
+ m_Offset: {x: 0, y: 0}
+ - _CubeMap:
+ m_Texture: {fileID: 8900000, guid: a0fde614a95c2d44ca3dec1fba756a6f, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Matcap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MatcapMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Ramp:
+ m_Texture: {fileID: 2800000, guid: 2b2456e68290a8847a6903bc0005d58f, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _RimTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _RoughnessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecularMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _UnderWaveTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 20, y: 20}
+ m_Offset: {x: 0, y: 0}
+ - _WaveTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Floats:
+ - _AddMatcap: 0
+ - _AdditiveClearCoat: 0
+ - _AdditiveOffset: 0
+ - _AdditiveSoftness: 0.05
+ - _BumpScale: 0.28
+ - _Clip: 0.5
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _Desaturation: 0
+ - _DestinationBlend: 10
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _EmissionStrength: 0
+ - _EmissiveBlink_Max: 1
+ - _EmissiveBlink_Min: 1
+ - _EmissiveBlink_Velocity: 4
+ - _EmissiveScroll_Interval: 20
+ - _EmissiveScroll_Velocity: 10
+ - _EmissiveScroll_Width: 10
+ - _FlatOrFullAmbientLighting: 0
+ - _ForceLightDirection: 0
+ - _ForceShadowStrength: 0
+ - _Gloss: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _HardSpecular: 0
+ - _HeightThreshold: 0.944
+ - _MatcapStrength: 1
+ - _MaxDirectionalIntensity: 1
+ - _Metallic: 1
+ - _MinBrightness: 0
+ - _Mode: 0
+ - _MultiplyMatcap: 0
+ - _OcclusionStrength: 1
+ - _OutlineStencilCompareFunction: 8
+ - _OutlineStencilFailOp: 0
+ - _OutlineStencilPassOp: 0
+ - _OutlineStencilReadMaskRef: 0
+ - _OutlineStencilRef: 0
+ - _OutlineStencilWriteMaskRef: 0
+ - _OutlineStencilZFailOp: 0
+ - _Parallax: 0.02
+ - _PurelyAdditive: 0
+ - _ReplaceWithMatcap: 0
+ - _RimLightColorBias: 0
+ - _RimSharpness: 0.25
+ - _RimStrength: 0
+ - _RimWidth: 0.8
+ - _Roughness: 1
+ - _SampleWorld: 0
+ - _ScrollingEmission: 0
+ - _ShadowOffset: 0
+ - _ShadowStrength: 1
+ - _ShowUnderWave: 1
+ - _SmoothnessTextureChannel: 0
+ - _SourceBlend: 5
+ - _SpecularBias: 0
+ - _SpecularHighlights: 1
+ - _SpecularSize: 0.005
+ - _SpecularStrength: 0
+ - _SrcBlend: 1
+ - _StencilCompareFunction: 8
+ - _StencilFailOp: 0
+ - _StencilPassOp: 0
+ - _StencilReadMaskRef: 0
+ - _StencilRef: 0
+ - _StencilWriteMaskRef: 0
+ - _StencilZFailOp: 0
+ - _UVSec: 0
+ - _UnderWaveEmission: 3
+ - _WaveEmission: 0
+ - _WaveHeight: 0.03
+ - _ZTest: 4
+ - _ZWrite: 1
+ - footer_discord: 0
+ - footer_donate: 0
+ - footer_github: 0
+ - footer_patreon: 0
+ - m_StencilPassOptions: 0
+ - m_emissionOptions: 0
+ - m_end_OutlineStencil: 0
+ - m_end_blinkingEmissionOptions: 0
+ - m_end_mainAdvanced: 0
+ - m_end_scrollingEmissionOptions: 0
+ - m_fakeLightingOptions: 0
+ - m_mainOptions: 1
+ - m_matcapOptions: 0
+ - m_metallicOptions: 1
+ - m_miscOptions: 0
+ - m_rimLightOptions: 0
+ - m_shatterWave: 0
+ - m_specularHighlightsOptions: 0
+ - m_start_OutlineStencil: 0
+ - m_start_blinkingEmissionOptions: 0
+ - m_start_mainAdvanced: 0
+ - m_start_scrollingEmissionOptions: 0
+ - shader_is_using_thry_editor: 69.12
+ - shader_master_label: 0
+ - shader_presets: 0
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _EmissionScrollSpeed: {r: 0, g: 0, b: 0, a: 0}
+ - _EmissiveScroll_Direction: {r: 0, g: -10, b: 0, a: 0}
+ - _LightDirection: {r: 0, g: 1, b: 0, a: 0}
+ - _MatcapColor: {r: 1, g: 1, b: 1, a: 1}
+ - _RimLightColor: {r: 1, g: 1, b: 1, a: 1}
+ - _RimTexPanSpeed: {r: 0, g: 0, b: 0, a: 0}
+ - _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
+ - _WaveColor: {r: 1, g: 1, b: 1, a: 1}
+ - _WaveDensity: {r: 10, g: 8, b: 9, a: 0}
+ - _WaveSlope: {r: 2, g: 2, b: 2, a: 0}
+ - _WaveSpeed: {r: 0.5, g: 0.6, b: 0.7, a: 0}
+ - _underWaveColor: {r: 1, g: 0.47586215, b: 0, a: 1}
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/Shatter.mat.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/Shatter.mat.meta
new file mode 100644
index 00000000..39734e33
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/Shatter.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bb9bb81b164ff1b4d8a18130851a284d
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterPass.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterPass.cginc
new file mode 100644
index 00000000..ea28b3e8
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterPass.cginc
@@ -0,0 +1,517 @@
+
+#if !defined(MY_LIGHTING_INCLUDED)
+ #define MY_LIGHTING_INCLUDED
+
+ #include "UnityCG.cginc"
+ #include "Lighting.cginc"
+ #include "UnityPBSLighting.cginc"
+ #include "AutoLight.cginc"
+ #include "PoiShatterHelpers.cginc"
+
+ //Structs
+ struct appdata
+ {
+ float4 vertex: POSITION;
+ float3 normal: NORMAL;
+ float4 tangent: TANGENT;
+ float2 texcoord: TEXCOORD0;
+ float2 texcoord1: TEXCOORD1;
+ };
+
+ struct v2g
+ {
+ float2 uv: TEXCOORD0;
+ float3 normal: TEXCOORD1;
+ #if defined(BINORMAL_PER_FRAGMENT)
+ float4 tangent: TEXCOORD2;
+ #else
+ float3 tangent: TEXCOORD2;
+ float3 binormal: TEXCOORD3;
+ #endif
+ float4 pos: SV_POSITION;
+ float4 worldPos: TEXCOORD4;
+ float4 localPos: TEXCOORD5;
+ SHADOW_COORDS(6)
+ };
+
+ struct g2f
+ {
+ float2 uv: TEXCOORD0;
+ float3 normal: TEXCOORD1;
+ #if defined(BINORMAL_PER_FRAGMENT)
+ float4 tangent: TEXCOORD2;
+ #else
+ float3 tangent: TEXCOORD2;
+ float3 binormal: TEXCOORD3;
+ #endif
+ float4 pos: SV_POSITION;
+ float4 worldPos: TEXCOORD4;
+ float4 localPos: TEXCOORD5;
+ float4 waveSettings: TEXCOORD6;
+ SHADOW_COORDS(7)
+ };
+
+ //Properties
+ float4 _Color;
+ float _Desaturation;
+ sampler2D _MainTex; float4 _MainTex_ST;
+ sampler2D _BumpMap; float4 _BumpMap_ST;
+ sampler2D _DetailNormalMap; float4 _DetailNormalMap_ST;
+ float _BumpScale;
+ float _DetailNormalMapScale;
+
+ sampler2D _WaveTexture; float4 _WaveTexture_ST;
+ sampler2D _UnderWaveTexture; float4 _UnderWaveTexture_ST;
+ float _ShowUnderWave;
+ float4 _WaveSpeed;
+ float4 _WaveSlope;
+ float4 _WaveDensity;
+
+ float _HeightThreshold;
+ float4 _WaveColor;
+ float _WaveEmission;
+ float _UnderWaveEmission;
+ float4 _underWaveColor;
+ float _WaveHeight;
+
+ samplerCUBE _CubeMap;
+ float _SampleWorld;
+ float _AdditiveClearCoat;
+ float _PurelyAdditive;
+ sampler2D _MetallicMap; float4 _MetallicMap_ST;
+ float _Metallic;
+ sampler2D _RoughnessMap; float4 _RoughnessMap_ST;
+ float _Roughness;
+
+ sampler2D _Matcap;
+ sampler2D _MatcapMap; float4 _MatcapMap_ST;
+ float4 _MatcapColor;
+ float _MatcapStrength;
+ float _ReplaceWithMatcap;
+ float _MultiplyMatcap;
+ float _AddMatcap;
+
+ sampler2D _SpecularMap; float4 _SpecularMap_ST;
+ float _Gloss;
+ float4 _EmissionColor;
+ sampler2D _EmissionMap; float4 _EmissionMap_ST;
+ sampler2D _EmissionMask; float4 _EmissionMask_ST;
+ float _EmissionStrength;
+
+ float4 _EmissiveScroll_Direction;
+ float4 _EmissionScrollSpeed;
+ float _EmissiveScroll_Width;
+ float _EmissiveScroll_Velocity;
+ float _EmissiveScroll_Interval;
+ float _EmissiveBlink_Min;
+ float _EmissiveBlink_Max;
+ float _EmissiveBlink_Velocity;
+ float _ScrollingEmission;
+
+ sampler2D _Ramp;
+ float _ForceLightDirection;
+ float _ShadowStrength;
+ float _ShadowOffset;
+ float3 _LightDirection;
+ float _ForceShadowStrength;
+ float _MinBrightness;
+ float _MaxDirectionalIntensity;
+ sampler2D _AdditiveRamp;
+ float _FlatOrFullAmbientLighting;
+
+ float4 _SpecularColor;
+ float _SpecularBias;
+ float _SpecularStrength;
+ float _SpecularSize;
+ float _HardSpecular;
+
+ float4 _RimLightColor;
+ float _RimWidth;
+ float _RimStrength;
+ float _RimSharpness;
+ float _RimLightColorBias;
+ float4 _RimTexPanSpeed;
+ sampler2D _RimTex; float4 _RimTex_ST;
+
+ float _Clip;
+
+ float3 getCameraPosition()
+ {
+ #ifdef USING_STEREO_MATRICES
+ return lerp(unity_StereoWorldSpaceCameraPos[0], unity_StereoWorldSpaceCameraPos[1], 0.5);
+ #endif
+ return _WorldSpaceCameraPos;
+ }
+
+ float3 getCameraForward()
+ {
+ #if UNITY_SINGLE_PASS_STEREO
+ float3 p1 = mul(unity_StereoCameraToWorld[0], float4(0, 0, 1, 1));
+ float3 p2 = mul(unity_StereoCameraToWorld[0], float4(0, 0, 0, 1));
+ #else
+ float3 p1 = mul(unity_CameraToWorld, float4(0, 0, 1, 1));
+ float3 p2 = mul(unity_CameraToWorld, float4(0, 0, 0, 1));
+ #endif
+ return normalize(p2 - p1);
+ }
+
+ v2g vert(appdata v)
+ {
+ v2g o;
+ TANGENT_SPACE_ROTATION;
+ o.localPos = v.vertex;
+ o.pos = UnityObjectToClipPos(v.vertex);
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex);
+ o.uv = v.texcoord.xy;
+ o.normal = UnityObjectToWorldNormal(v.normal);
+
+ #if defined(BINORMAL_PER_FRAGMENT)
+ o.tangent = float4(UnityObjectToWorldDir(v.tangent.xyz), v.tangent.w);
+ #else
+ o.tangent = UnityObjectToWorldDir(v.tangent.xyz);
+ o.binormal = CreateBinormal(o.normal, o.tangent, v.tangent.w);
+ #endif
+
+ TRANSFER_SHADOW(i);
+ return o;
+ }
+
+ float3 WaveHeight(float3 position)
+ {
+ return(sin(
+ 2 * pow(((sin((position.x + _Time.x * _WaveSpeed.x) * _WaveDensity.x + sin(_Time.y * _WaveSpeed.x)) + 1) / 2), _WaveSlope.x) +
+ 2 * pow(((sin((position.y + _Time.x * _WaveSpeed.y) * _WaveDensity.y + sin(_Time.y * _WaveSpeed.y)) + 1) / 2), _WaveSlope.y) +
+ 2 * pow(((sin((position.z + _Time.x * _WaveSpeed.z) * _WaveDensity.z + sin(_Time.y * _WaveSpeed.z)) + 1) / 2), _WaveSlope.z)
+ ) + 1) / 2;
+ }
+
+ [maxvertexcount(6)]
+ void geom(triangle v2g IN[3], inout TriangleStream < g2f > tristream)
+ {
+ float4 mid = (IN[0].localPos + IN[1].localPos + IN[2].localPos) / 3;
+ float4 objectPosition = mul(unity_ObjectToWorld, float4(0, 0, 0, 1));
+ float4 WavePosition = objectPosition;
+
+ float hash = random(mid);
+
+ float distanceToWave = clamp(WaveHeight(mid.xyz), 0, 1);
+ if (distanceToWave <= _HeightThreshold)
+ {
+ distanceToWave = 0;
+ }
+
+ float range = 1 - _HeightThreshold;
+ float delta = 1 - distanceToWave;
+ float percent = delta / range;
+ percent = saturate(percent);
+
+ if(percent == 0)
+ return;
+
+ g2f o;
+ g2f milk[3];
+ float count = 0;
+
+ float3 edgeA = IN[1].localPos - IN[0].localPos;
+ float3 edgeB = IN[2].localPos - IN[0].localPos;
+ float3 c = cross(edgeA, edgeB);
+ float3 outDir = normalize(c);
+ float3 normalDir = normalize(c);
+ float4 pos = float4(0, 0, 0, 0);
+
+ float3 over = cos(IN[1].localPos * 1234.56);
+ for (int i = 0; i < 3; i ++)
+ {
+ if(percent < .5)
+ {
+ over = normalize(over);
+ pos.xyz = (lerp(over, 0, percent * 2) + normalDir) * _WaveHeight;
+ }
+ else
+ {
+ pos.xyz = normalDir * _WaveHeight * (1 - percent) * 2 ;
+ }
+ o.localPos = IN[i].localPos + pos;
+ o.worldPos = mul(unity_ObjectToWorld, o.localPos);
+ o.pos = UnityObjectToClipPos(IN[i].localPos + pos);
+ o.uv = IN[i].uv;
+ // r = wave height percentage
+ // g = isUnderside?
+ o.waveSettings = float4(0, 0, 0, 0);
+
+ o.normal = IN[i].normal;
+ #if defined(BINORMAL_PER_FRAGMENT)
+ o.tangent = IN[i].tangent;
+ #else
+ o.tangent = IN[i].tangent;
+ o.binormal = IN[i].binormal;
+ #endif
+
+ if (distanceToWave > 0)
+ {
+ o.waveSettings = float4(1-percent, 0, 0, 0);
+
+ milk[i].binormal = IN[i].binormal;
+ milk[i].localPos = IN[i].localPos;
+ milk[i].normal = IN[i].normal;
+ milk[i].pos = IN[i].pos;
+ milk[i].tangent = IN[i].tangent;
+ milk[i].uv = IN[i].uv;
+ if(distanceToWave > 0)
+ {
+ milk[i].waveSettings = float4(1-percent, 1, 0, 0);
+ }
+ milk[i].worldPos = IN[i].worldPos;
+ count ++ ;
+ }
+ tristream.Append(o);
+ }
+ if(_ShowUnderWave)
+ {
+ tristream.RestartStrip();
+ if(count == 3)
+ {
+ for (int i = 0; i < 3; i ++)
+ {
+ for (int i = 0; i < 3; i ++)
+ {
+ tristream.Append(milk[i]);
+ }
+ }
+ }
+ }
+ tristream.RestartStrip();
+ }
+
+ void InitializeFragmentNormal(inout g2f i)
+ {
+ float3 mainNormal = UnpackScaleNormal(tex2D(_BumpMap, TRANSFORM_TEX(i.uv, _BumpMap)), _BumpScale);
+ float3 detailNormal = UnpackScaleNormal(tex2D(_DetailNormalMap, TRANSFORM_TEX(i.uv, _DetailNormalMap)), _DetailNormalMapScale);
+ float3 tangentSpaceNormal = BlendNormals(mainNormal, detailNormal);
+
+ #if defined(BINORMAL_PER_FRAGMENT)
+ float3 binormal = CreateBinormal(i.normal, i.tangent.xyz, i.tangent.w);
+ #else
+ float3 binormal = i.binormal;
+ #endif
+
+ i.normal = normalize(
+ tangentSpaceNormal.x * i.tangent +
+ tangentSpaceNormal.y * binormal +
+ tangentSpaceNormal.z * i.normal
+ );
+ }
+
+ float4 frag(g2f i, float facing: VFACE): SV_Target
+ {
+ float Pi = 3.141592654;
+ #ifdef FORWARD_BASE_PASS
+ float3 _light_direction_var = normalize(_LightDirection);
+ if(!any(_WorldSpaceLightPos0) == 0 && _ForceLightDirection == 0)
+ {
+
+ _light_direction_var = _WorldSpaceLightPos0;
+ }
+ #else
+ #if defined(POINT) || defined(SPOT)
+ float3 _light_direction_var = normalize(_WorldSpaceLightPos0.xyz - i.worldPos);
+ #elif defined(DIRECTIONAL)
+ return 0;
+ float3 _light_direction_var = _WorldSpaceLightPos0;
+ #endif
+ #endif
+
+ // diffuse
+ float4 _main_tex_var = tex2D(_MainTex, TRANSFORM_TEX(i.uv, _MainTex));
+ float4 _diffuse_var = float4(lerp(_main_tex_var.rgb, dot(_main_tex_var.rgb, float3(0.3, 0.59, 0.11)), _Desaturation) * _Color.rgb, _main_tex_var.a * _Color.a);
+ float4 _underwave_tex_var = tex2D(_UnderWaveTexture, TRANSFORM_TEX(i.uv, _UnderWaveTexture)) * _underWaveColor;
+
+ // cutout
+ #ifndef TRANSPARENT
+ clip(_diffuse_var.a - _Clip);
+ #endif
+
+ // shatterDiffuse
+ float4 _wave_tex_var = tex2D(_WaveTexture, TRANSFORM_TEX(i.uv, _WaveTexture)) * _WaveColor;
+ if (i.waveSettings.r > 0)
+ {
+ _diffuse_var = lerp(_diffuse_var, _wave_tex_var, i.waveSettings.r);
+ }
+ // math
+ InitializeFragmentNormal(i);
+ float3 _camera_to_vert_var = normalize(getCameraPosition() - i.worldPos);
+ float3 _camera_to_vert_vr_var = normalize(_WorldSpaceCameraPos - i.worldPos);
+ float3 _camera_vert_dot_var = abs(dot(_camera_to_vert_var, i.normal));
+
+ // metal
+ float _metallic_map_var = tex2D(_MetallicMap, TRANSFORM_TEX(i.uv, _MetallicMap));
+ float _final_metalic_var = _metallic_map_var * _Metallic;
+ float _roughness_map_var = tex2D(_RoughnessMap, TRANSFORM_TEX(i.uv, _RoughnessMap));
+ float roughness = (1 - _final_metalic_var * _Roughness * _roughness_map_var);
+ roughness *= 1.7 - 0.7 * roughness;
+ float3 reflectedDir = reflect(-_camera_to_vert_vr_var, i.normal);
+ float3 reflection = float3(0, 0, 0);
+
+ float4 envSample = UNITY_SAMPLE_TEXCUBE_LOD(unity_SpecCube0, reflectedDir, roughness * UNITY_SPECCUBE_LOD_STEPS);
+
+ float interpolator = unity_SpecCube0_BoxMin.w;
+ UNITY_BRANCH
+ if (interpolator < 0.99999)
+ {
+ //Probe 1
+ float4 reflectionData0 = UNITY_SAMPLE_TEXCUBE_LOD(unity_SpecCube0, reflectedDir, roughness * UNITY_SPECCUBE_LOD_STEPS);
+ float3 reflectionColor0 = DecodeHDR(reflectionData0, unity_SpecCube0_HDR);
+
+ //Probe 2
+ float4 reflectionData1 = UNITY_SAMPLE_TEXCUBE_SAMPLER_LOD(unity_SpecCube1, unity_SpecCube0, reflectedDir, roughness * UNITY_SPECCUBE_LOD_STEPS);
+ float3 reflectionColor1 = DecodeHDR(reflectionData1, unity_SpecCube1_HDR);
+
+ reflection = lerp(reflectionColor1, reflectionColor0, interpolator);
+ }
+ else
+ {
+ float4 reflectionData = UNITY_SAMPLE_TEXCUBE_LOD(unity_SpecCube0, reflectedDir, roughness * UNITY_SPECCUBE_LOD_STEPS);
+ reflection = DecodeHDR(reflectionData, unity_SpecCube0_HDR);
+ }
+
+
+ bool no_probe = unity_SpecCube0_HDR.a == 0 && envSample.a == 0;
+ float lighty_boy_uwu_var = 0;
+ if (no_probe || _SampleWorld)
+ {
+ lighty_boy_uwu_var = 1;
+ reflection = texCUBElod(_CubeMap, float4(reflectedDir, roughness * UNITY_SPECCUBE_LOD_STEPS));
+ }
+
+ // matcap / spehere textures
+ half2 matcapUV = getMatcapUV(_camera_to_vert_vr_var, i.normal);
+ float _matcapMap_var = tex2D(_MatcapMap, TRANSFORM_TEX(i.uv, _MatcapMap));
+ float3 _matcap_var = tex2D(_Matcap, matcapUV) * _MatcapColor * _MatcapStrength;
+
+ //rim lighting
+ float4 rimColor = tex2D(_RimTex, TRANSFORM_TEX(i.uv, _RimTex) + (_Time.y * _RimTexPanSpeed.xy)) * _RimLightColor;
+ float rim = pow((1 - _camera_vert_dot_var), (1 - _RimWidth) * 10);
+ _RimSharpness /= 2;
+ rim = (smoothstep(_RimSharpness, 1 - _RimSharpness, rim));
+
+ // lighting
+ UNITY_LIGHT_ATTENUATION(attenuation, i, i.worldPos.xyz);
+ float nDotL = dot(i.normal, _light_direction_var);
+ float fakeLight = clamp((nDotL + 1) / 2 + _ShadowOffset, 0, 1);
+ float4 LightingRamp = tex2D(_Ramp, float2(fakeLight, fakeLight));
+ #if defined(FORWARD_BASE_PASS)
+ //return float4(ShadeSH9(half4(0.0, 0.0, 0.0, 1.0)),1);
+ float3 _flat_lighting_var = 1;
+ float3 ambient = ShadeSH9(float4(i.normal * _FlatOrFullAmbientLighting, 1));
+ if (any(_LightColor0.rgb))
+ {
+ float4 lightZero = min(_LightColor0, _MaxDirectionalIntensity);
+
+ if(_ForceShadowStrength == 0)
+ {
+ _flat_lighting_var = ambient + lightZero.rgb * lerp(1, LightingRamp, _ShadowStrength);
+ _flat_lighting_var = clamp(_flat_lighting_var, _MinBrightness, max(lightZero.a, ambient));
+ }
+ else
+ {
+ _flat_lighting_var = (ambient + lightZero.rgb) * lerp(1, LightingRamp, _ShadowStrength);
+ _flat_lighting_var = clamp(_flat_lighting_var, _MinBrightness, max(lightZero.a, ambient));
+ }
+ }
+ else
+ {
+ _flat_lighting_var = clamp(ambient + ambient * lerp(1, LightingRamp, _ShadowStrength) - ambient * (_ShadowStrength * lerp(.75, 1, _ForceShadowStrength)), _MinBrightness, ambient);
+ }
+ //return float4(_flat_lighting_var, 1);
+ #else
+ float3 _flat_lighting_var = _LightColor0.rgb * attenuation * tex2D(_AdditiveRamp, .5 * nDotL + .5);
+ #endif
+
+
+
+ // emission
+ float4 _Emissive_Tex_var = tex2D(_EmissionMap, TRANSFORM_TEX(i.uv, _EmissionMap) + _Time.y * _EmissionScrollSpeed);
+ ///
+ float4 _emission_var = _Emissive_Tex_var * _EmissionColor * _EmissionStrength;
+
+ // scrolling emission
+ if (_ScrollingEmission == 1)
+ {
+ float phase = dot(i.localPos, _EmissiveScroll_Direction);
+ phase -= _Time.y * _EmissiveScroll_Velocity;
+ phase /= _EmissiveScroll_Interval;
+ phase -= floor(phase);
+ float width = _EmissiveScroll_Width;
+ phase = (pow(phase, width) + pow(1 - phase, width * 4)) * 0.5;
+ _emission_var *= phase;
+ }
+
+
+
+ // blinking emission
+ float amplitude = (_EmissiveBlink_Max - _EmissiveBlink_Min) * 0.5f;
+ float base = _EmissiveBlink_Min + amplitude;
+ float emissiveBlink = sin(_Time.y * _EmissiveBlink_Velocity) * amplitude + base;
+ _emission_var *= emissiveBlink;
+
+ float _Emission_mask_var = tex2D(_EmissionMask, TRANSFORM_TEX(i.uv, _EmissionMask));
+ _emission_var *= _Emission_mask_var;
+
+ // add it all up
+ float4 finalColor = _diffuse_var;
+
+ float3 _rim_color_var = lerp(finalColor.rgb, rimColor, _RimLightColorBias);
+
+ finalColor.rgb = lerp(finalColor.rgb, _rim_color_var, rim * _RimLightColor.a * rimColor.a);
+
+
+ finalColor.rgb = lerp(finalColor, _matcap_var, _ReplaceWithMatcap * _matcapMap_var);
+ finalColor.rgb *= lerp(1, _matcap_var, _MultiplyMatcap * _matcapMap_var);
+ finalColor.rgb += _matcap_var * _AddMatcap * _matcapMap_var;
+ float4 finalColorBeforeLighting = finalColor;
+
+ finalColor.rgb *= _flat_lighting_var;
+ #ifdef FORWARD_BASE_PASS
+ float3 finalreflections = reflection.rgb * lerp(finalColorBeforeLighting.rgb, 1, _PurelyAdditive);
+ finalColor.rgb = finalColor.rgb * lerp((1 - _final_metalic_var), 1, _AdditiveClearCoat);
+ finalColor.rgb += (finalreflections * ((1 - roughness + _final_metalic_var) / 2)) * lerp(1, _flat_lighting_var, lighty_boy_uwu_var);
+ #endif
+ // specular
+ #if (defined(POINT) || defined(SPOT))
+ _SpecularColor.rgb = _LightColor0.rgb;
+ _SpecularBias = 0;
+ #endif
+ float specular_map_var = tex2D(_SpecularMap, TRANSFORM_TEX(i.uv, _SpecularMap));
+ float3 specularColor = ((finalColor.a * _SpecularStrength) * lerp(finalColor.rgb * _LightColor0.rgb, _SpecularColor.rgb, _SpecularBias));
+ float specPow = exp2(_Gloss * 20.0 + 1.0);
+ float normTerm = (specPow + 10) / (10 * Pi);
+ float3 halfDirection = normalize(_camera_to_vert_vr_var + _light_direction_var);
+ float3 _specular_var = float3(0, 0, 0);
+ if(_HardSpecular == 1)
+ {
+ _specular_var = step(1 - (.5 * dot(halfDirection, i.normal) + .5), _SpecularSize) * _SpecularColor * _SpecularBias * specular_map_var;
+ }
+ else
+ {
+ _specular_var = pow(max(0, dot(halfDirection, i.normal)), specPow) * normTerm * specularColor * _SpecularStrength * specular_map_var;
+ }
+
+ #if defined(FORWARD_BASE_PASS)
+ finalColor.rgb += _specular_var * _flat_lighting_var;
+ finalColor.rgb += lerp(_emission_var, _wave_tex_var * _WaveEmission, i.waveSettings.r) + ((rim * _rim_color_var * _RimStrength) * rimColor.a);
+ if(i.waveSettings.g > 0)
+ {
+ finalColor.rgb = _underwave_tex_var.rgb * _flat_lighting_var;
+ finalColor.rgb += _underwave_tex_var.rgb * _UnderWaveEmission;
+ }
+ #else
+ finalColor.rgb += _specular_var;
+ #endif
+
+ #if(defined(POINT) || defined(SPOT))
+ finalColor *= (1 - _final_metalic_var);
+ #endif
+
+ return finalColor;
+ }
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterPass.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterPass.cginc.meta
new file mode 100644
index 00000000..2ba6772c
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterPass.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 236d1f882f98e3a4dbe00bdcb170aee6
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterWave2.shader b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterWave2.shader
new file mode 100644
index 00000000..934eb6db
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterWave2.shader
@@ -0,0 +1,264 @@
+Shader ".poiyomi/Patreon/ShatterWave2"
+{
+ Properties
+ {
+ [HideInInspector] shader_is_using_thry_editor("", Float)=0
+
+ [HideInInspector] shader_master_label("<color=#008080>❤ Poiyomi Shatter Wave V2.0 ❤</color>", Float) = 0
+ [HideInInspector] shader_presets("poiToonPresets", Float) = 0
+
+
+ [HideInInspector] footer_youtube ("youtube footer button", Float) = 0
+ [HideInInspector] footer_twitter ("twitter footer button", Float) = 0
+ [HideInInspector] footer_patreon ("patreon footer button", Float) = 0
+ [HideInInspector] footer_discord ("discord footer button", Float) = 0
+ [HideInInspector] footer_github ("github footer button", Float) = 0
+
+ [HideInInspector] m_mainOptions ("Main", Float) = 0
+ _Color ("Color", Color) = (1, 1, 1, 1)
+ _Desaturation ("Desaturation", Range(-1, 1)) = 0
+ _MainTex ("Texture", 2D) = "white" { }
+ [Enum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, DistortedUV1, 4)] _MainTextureUV ("Tex UV#", Int) = 0
+ [Normal]_BumpMap ("Normal Map", 2D) = "bump" { }
+ _BumpScale ("Normal Intensity", Range(0, 10)) = 1
+ _Clip ("Alpha Cuttoff", Range(0, 1.001)) = 0.5
+ [HideInInspector] m_start_mainAdvanced ("Advanced", Float) = 0
+ [Normal]_DetailNormalMap ("Detail Map", 2D) = "bump" { }
+ _DetailNormalMapScale ("Detail Intensity", Range(0, 10)) = 1
+ [HideInInspector] m_end_mainAdvanced ("Advanced", Float) = 0
+
+ [HideInInspector] m_shatterWave ("Shatter Wave", Float) = 0
+ [ToggleUI]_ShowUnderWave ("Show Under Wave?", Range(0, 1)) = 1
+ _WaveColor ("Wave Color", Color) = (1,1,1,1)
+ _WaveTexture ("Wave Texture", 2D) = "white" {}
+ _WaveEmission ("Wave Emission", Range(0, 10)) = 2
+ _underWaveColor ("Under Wave Color", Color) = (1,1,1,1)
+ _UnderWaveTexture ("Under Wave Texture", 2D) = "white" {}
+ _UnderWaveEmission ("Under Wave Emission", Range(0, 10)) = 2
+ _WaveSpeed ("Wave Speed X Y Z", Vector) = (.5,.6,.7,0)
+ _WaveSlope ("Wave Slope X Y Z", Vector) = (2,2,2,0)
+ _WaveDensity ("Wave Density X Y Z", Vector) = (10,8,9,0)
+ _HeightThreshold ("WaveWidth", Range(0, 1)) = .98
+ _WaveHeight ("Wave Height", Range(0,50)) = .01
+
+ [HideInInspector] m_metallicOptions ("Metallic", Float) = 0
+ _CubeMap ("Baked CubeMap", Cube) = "" { }
+ [ToggleUI]_SampleWorld ("Force Baked Cubemap", Range(0, 1)) = 0
+ _AdditiveClearCoat ("Additive Clear Coat", Range(0, 1)) = 0
+ _PurelyAdditive ("Purely Additive", Range(0, 1)) = 0
+ _MetallicMap ("Metallic Map", 2D) = "white" { }
+ _Metallic ("Metallic", Range(0, 1)) = 0
+ _RoughnessMap ("Roughness Map", 2D) = "white" { }
+ _Roughness ("Smoothness", Range(0, 1)) = 0
+
+ [HideInInspector] m_matcapOptions ("Matcap / Sphere Textures", Float) = 0
+ _Matcap ("Matcap", 2D) = "white" { }
+ _MatcapMap ("Matcap Map", 2D) = "white" { }
+ _MatcapColor ("Matcap Color", Color) = (1, 1, 1, 1)
+ _MatcapStrength ("Matcap Strength", Range(0, 20)) = 1
+ _ReplaceWithMatcap ("Replace With Matcap", Range(0, 1)) = 0
+ _MultiplyMatcap ("Multiply Matcap", Range(0, 1)) = 0
+ _AddMatcap ("Add Matcap", Range(0, 1)) = 0
+
+ [HideInInspector] m_emissionOptions ("Emission", Float) = 0
+ [HDR]_EmissionColor ("Emission Color", Color) = (1, 1, 1, 1)
+ _EmissionMap ("Emission Map", 2D) = "white" { }
+ _EmissionMask ("Emission Mask", 2D) = "white" { }
+ _EmissionScrollSpeed ("Emission Scroll Speed", Vector) = (0, 0, 0, 0)
+ _EmissionStrength ("Emission Strength", Range(0, 20)) = 0
+
+ [HideInInspector] m_start_blinkingEmissionOptions ("Blinking Emission", Float) = 0
+ _EmissiveBlink_Min ("Emissive Blink Min", Float) = 1
+ _EmissiveBlink_Max ("Emissive Blink Max", Float) = 1
+ _EmissiveBlink_Velocity ("Emissive Blink Velocity", Float) = 4
+ [HideInInspector] m_end_blinkingEmissionOptions ("Blinking Emission", Float) = 0
+
+ [HideInInspector] m_start_scrollingEmissionOptions ("Scrolling Emission", Float) = 0
+ [ToggleUI] _ScrollingEmission ("Enable Scrolling Emission", Float) = 0
+ _EmissiveScroll_Direction ("Direction", Vector) = (0, -10, 0, 0)
+ _EmissiveScroll_Width ("Width", Float) = 10
+ _EmissiveScroll_Velocity ("Velocity", Float) = 10
+ _EmissiveScroll_Interval ("Interval", Float) = 20
+ [HideInInspector] m_end_scrollingEmissionOptions ("Scrolling Emission", Float) = 0
+
+ [HideInInspector] m_fakeLightingOptions ("Lighting", Float) = 0
+ [NoScaleOffset]_Ramp ("Lighting Ramp", 2D) = "white" { }
+ _ShadowStrength ("Shadow Strength", Range(0, 1)) = 1
+ _ShadowOffset ("Shadow Offset", Range(-1, 1)) = 0
+ [ToggleUI] _ForceLightDirection ("Force Light Direction", Range(0, 1)) = 0
+ [ToggleUI] _ForceShadowStrength ("Force Shadow Strength", Range(0, 1)) = 0
+ _LightDirection ("Fake Light Direction", Vector) = (0, 1, 0, 0)
+ _MinBrightness ("Min Brightness", Range(0, 1)) = 0
+ _MaxDirectionalIntensity ("Max Directional Intensity", Float) = 1
+ [NoScaleOffset]_AdditiveRamp ("Additive Ramp", 2D) = "white" { }
+ _FlatOrFullAmbientLighting ("Flat or Full Ambient Lighting", Range(0, 1)) = 0
+
+ [HideInInspector] m_specularHighlightsOptions ("Specular Highlights", Float) = 0
+ _SpecularMap ("Specular Map", 2D) = "white" { }
+ _Gloss ("Glossiness", Range(0, 1)) = 0
+ _SpecularColor ("Specular Color", Color) = (1, 1, 1, 1)
+ _SpecularBias ("Specular Color Bias", Range(0, 1)) = 0
+ _SpecularStrength ("Specular Strength", Range(0, 5)) = 0
+ [ToggleUI]_HardSpecular ("Enable Hard Specular", Float) = 0
+ _SpecularSize ("Hard Specular Size", Range(0, 1)) = .005
+
+ [HideInInspector] m_rimLightOptions ("Rim Lighting", Float) = 0
+ _RimLightColor ("Rim Color", Color) = (1, 1, 1, 1)
+ _RimWidth ("Rim Width", Range(0, 1)) = 0.8
+ _RimStrength ("Rim Emission", Range(0, 20)) = 0
+ _RimSharpness ("Rim Sharpness", Range(0, 1)) = .25
+ _RimLightColorBias ("Rim Color Bias", Range(0, 1)) = 0
+ _RimTex ("Rim Texture", 2D) = "white" { }
+ _RimTexPanSpeed ("Rim Texture Pan Speed", Vector) = (0, 0, 0, 0)
+
+ [HideInInspector] m_StencilPassOptions ("Stencil", Float) = 0
+ [IntRange] _StencilRef ("Stencil Reference Value", Range(0, 255)) = 0
+ [IntRange] _StencilReadMaskRef ("Stencil ReadMask Value", Range(0, 255)) = 0
+ [IntRange] _StencilWriteMaskRef ("Stencil WriteMask Value", Range(0, 255)) = 0
+ [Enum(UnityEngine.Rendering.StencilOp)] _StencilPassOp ("Stencil Pass Op", Float) = 0
+ [Enum(UnityEngine.Rendering.StencilOp)] _StencilFailOp ("Stencil Fail Op", Float) = 0
+ [Enum(UnityEngine.Rendering.StencilOp)] _StencilZFailOp ("Stencil ZFail Op", Float) = 0
+ [Enum(UnityEngine.Rendering.CompareFunction)] _StencilCompareFunction ("Stencil Compare Function", Float) = 8
+
+ [HideInInspector] m_start_OutlineStencil ("Outline Stencil", Float) = 0
+ [IntRange] _OutlineStencilRef ("Stencil Reference Value", Range(0, 255)) = 0
+ [IntRange] _OutlineStencilReadMaskRef ("Stencil ReadMask Value", Range(0, 255)) = 0
+ [IntRange] _OutlineStencilWriteMaskRef ("Stencil WriteMask Value", Range(0, 255)) = 0
+ [Enum(UnityEngine.Rendering.StencilOp)] _OutlineStencilPassOp ("Stencil Pass Op", Float) = 0
+ [Enum(UnityEngine.Rendering.StencilOp)] _OutlineStencilFailOp ("Stencil Fail Op", Float) = 0
+ [Enum(UnityEngine.Rendering.StencilOp)] _OutlineStencilZFailOp ("Stencil ZFail Op", Float) = 0
+ [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineStencilCompareFunction ("Stencil Compare Function", Float) = 8
+ [HideInInspector] m_end_OutlineStencil ("Outline Stencil", Float) = 0
+
+ [HideInInspector] m_miscOptions ("Misc", Float) = 0
+ [Enum(UnityEngine.Rendering.CullMode)] _Cull ("Cull", Float) = 2
+ [Enum(UnityEngine.Rendering.CompareFunction)] _ZTest ("ZTest", Float) = 4
+ [Enum(UnityEngine.Rendering.BlendMode)] _SourceBlend ("Source Blend", Float) = 5
+ [Enum(UnityEngine.Rendering.BlendMode)] _DestinationBlend ("Destination Blend", Float) = 10
+ }
+
+ //originalEditorCustomEditor "PoiShatter"
+CustomEditor "Thry.ShaderEditor"
+ SubShader
+ {
+ Tags { "RenderType" = "TransparentCutout" "Queue" = "AlphaTest" }
+
+
+ Pass
+ {
+ Name "MainPass"
+ Tags { "LightMode" = "ForwardBase" }
+ Stencil
+ {
+ Ref [_StencilRef]
+ ReadMask [_StencilReadMaskRef]
+ WriteMask [_StencilWriteMaskRef]
+ Ref [_StencilRef]
+ Comp [_StencilCompareFunction]
+ Pass [_StencilPassOp]
+ Fail [_StencilFailOp]
+ ZFail [_StencilZFailOp]
+ }
+ Cull [_Cull]
+ ZTest [_ZTest]
+ CGPROGRAM
+
+ #pragma target 5.0
+ #pragma vertex vert
+ #pragma fragment frag
+ #pragma geometry geom
+ #define FORWARD_BASE_PASS
+ #include "ShatterPass.cginc"
+ ENDCG
+
+ }
+
+ Pass
+ {
+ Tags { "LightMode" = "ForwardAdd" }
+ Stencil
+ {
+ Ref [_StencilRef]
+ ReadMask [_StencilReadMaskRef]
+ WriteMask [_StencilWriteMaskRef]
+ Ref [_StencilRef]
+ Comp [_StencilCompareFunction]
+ Pass [_StencilPassOp]
+ Fail [_StencilFailOp]
+ ZFail [_StencilZFailOp]
+ }
+ ZWrite Off Blend One One
+ Cull [_Cull]
+ ZTest [_ZTest]
+ CGPROGRAM
+
+ #pragma target 5.0
+ #pragma multi_compile DIRECTIONAL POINT SPOT
+ #pragma vertex vert
+ #pragma fragment frag
+ #include "ShatterPass.cginc"
+ ENDCG
+
+ }
+ Pass
+ {
+ Tags { "LightMode" = "ShadowCaster" }
+ Stencil
+ {
+ Ref [_StencilRef]
+ ReadMask [_StencilReadMaskRef]
+ WriteMask [_StencilWriteMaskRef]
+ Ref [_StencilRef]
+ Comp [_StencilCompareFunction]
+ Pass [_StencilPassOp]
+ Fail [_StencilFailOp]
+ ZFail [_StencilZFailOp]
+ }
+ CGPROGRAM
+
+ #pragma target 5.0
+ #pragma multi_compile_shadowcaster
+ #pragma vertex MyShadowVertexProgram
+ #pragma fragment MyShadowFragmentProgram
+ #include "UnityCG.cginc"
+
+ struct VertexData {
+ float4 position : POSITION;
+ float3 normal : NORMAL;
+ };
+
+ #if defined(SHADOWS_CUBE)
+ struct Interpolators {
+ float4 position : SV_POSITION;
+ float3 lightVec : TEXCOORD0;
+ };
+
+ Interpolators MyShadowVertexProgram (VertexData v) {
+ Interpolators i;
+ i.position = UnityObjectToClipPos(v.position);
+ i.lightVec =
+ mul(unity_ObjectToWorld, v.position).xyz - _LightPositionRange.xyz;
+ return i;
+ }
+
+ float4 MyShadowFragmentProgram (Interpolators i) : SV_TARGET {
+ float depth = length(i.lightVec) + unity_LightShadowBias.x;
+ depth *= _LightPositionRange.w;
+ return UnityEncodeCubeShadowDepth(depth);
+ }
+ #else
+ float4 MyShadowVertexProgram (VertexData v) : SV_POSITION {
+ float4 position =
+ UnityClipSpaceShadowCasterPos(v.position.xyz, v.normal);
+ return UnityApplyLinearShadowBias(position);
+ }
+
+ half4 MyShadowFragmentProgram () : SV_TARGET {
+ return 0;
+ }
+ #endif
+ ENDCG
+
+ }
+ }
+} \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterWave2.shader.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterWave2.shader.meta
new file mode 100644
index 00000000..03b7291a
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/ShatterWave2/ShatterWave2.shader.meta
@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 53331eb0f5c357448b7969f013d8cf5f
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures:
+ - _MainTex: {instanceID: 0}
+ - _BumpMap: {instanceID: 0}
+ - _CubeMap: {fileID: 8900000, guid: a0fde614a95c2d44ca3dec1fba756a6f, type: 3}
+ - _MetallicMap: {instanceID: 0}
+ - _RoughnessMap: {instanceID: 0}
+ - _Matcap: {instanceID: 0}
+ - _MatcapMap: {instanceID: 0}
+ - _OutlineTexture: {instanceID: 0}
+ - _EmissionMap: {instanceID: 0}
+ - _EmissionMask: {instanceID: 0}
+ - _Ramp: {fileID: 2800000, guid: 2b2456e68290a8847a6903bc0005d58f, type: 3}
+ - _AdditiveRamp: {fileID: 2800000, guid: 2b2456e68290a8847a6903bc0005d58f, type: 3}
+ - _SpecularMap: {instanceID: 0}
+ - _RimTex: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: