summaryrefslogtreecommitdiff
path: root/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed
diff options
context:
space:
mode:
Diffstat (limited to 'VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed')
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiBasics.cginc60
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiBasics.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiData.cginc18
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiData.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDefaultPass.cginc20
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDefaultPass.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDragNDropLighting.cginc100
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDragNDropLighting.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiEmission.cginc52
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiEmission.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFrag.cginc159
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFrag.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFun.cginc62
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFun.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiGeom.cginc240
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiGeom.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiHelpers.cginc42
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiHelpers.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiLighting.cginc124
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiLighting.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMacros.cginc0
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMacros.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMatcap.cginc36
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMatcap.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMetal.cginc77
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMetal.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineFrag.cginc26
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineFrag.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineIncludes.cginc46
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineIncludes.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineVert.cginc28
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineVert.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPanosphere.cginc41
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPanosphere.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPass.cginc28
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPass.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassOutline.cginc18
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassOutline.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassShadow.cginc14
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassShadow.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRefraction.cginc49
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRefraction.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRimLighting.cginc39
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRimLighting.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiScrollingLayers.cginc23
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiScrollingLayers.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowFrag.cginc29
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowFrag.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowIncludes.cginc29
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowIncludes.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowVert.cginc11
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowVert.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSpecular.cginc173
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSpecular.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSubsurfaceScattering.cginc30
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSubsurfaceScattering.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiTextureBlending.cginc33
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiTextureBlending.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiVert.cginc32
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiVert.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/Poicludes.cginc46
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/Poicludes.cginc.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/Cubed.mat831
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/Cubed.mat.meta8
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/PoiyomiCubed.shader259
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/PoiyomiCubed.shader.meta27
68 files changed, 3074 insertions, 0 deletions
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes.meta
new file mode 100644
index 00000000..0e384408
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 05ca3d3f6b3c5984abd62db1ddc431ca
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiBasics.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiBasics.cginc
new file mode 100644
index 00000000..afce52ad
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiBasics.cginc
@@ -0,0 +1,60 @@
+#ifndef BASICS
+ #define BASICS
+
+ //Properties
+ float4 _Color;
+ float _Desaturation;
+ UNITY_DECLARE_TEX2D(_MainTex); float4 _MainTex_ST;
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_BumpMap); float4 _BumpMap_ST;
+ float4 _GlobalPanSpeed;
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_DetailNormalMap); float4 _DetailNormalMap_ST;
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_DetailNormalMask); float4 _DetailNormalMask_ST;
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_AlphaMask); float4 _AlphaMask_ST;
+ float _BumpScale;
+ float _DetailNormalMapScale;
+ float _Clip;
+
+ float3 viewDirection;
+ float viewDotNormal;
+ float4 mainTexture;
+ float alphaMask;
+ float4 albedo;
+
+ void InitializeFragmentNormal(inout v2f i)
+ {
+
+ float3 mainNormal = UnpackScaleNormal(UNITY_SAMPLE_TEX2D_SAMPLER(_BumpMap, _MainTex, TRANSFORM_TEX(i.uv, _BumpMap)), _BumpScale);
+ float detailNormalMask = UNITY_SAMPLE_TEX2D_SAMPLER(_DetailNormalMask, _MainTex, TRANSFORM_TEX(i.uv, _DetailNormalMask));
+ float3 detailNormal = UnpackScaleNormal(UNITY_SAMPLE_TEX2D_SAMPLER(_DetailNormalMap, _MainTex, TRANSFORM_TEX(i.uv, _DetailNormalMap)), _DetailNormalMapScale * detailNormalMask);
+ 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
+ );
+ }
+
+ void calculateBasics(inout v2f i)
+ {
+ UNITY_SETUP_INSTANCE_ID(i);
+ baseNormal = i.normal;
+
+ #ifndef DRAG_N_DROP
+ InitializeFragmentNormal(i);
+ #endif
+
+ viewDirection = normalize(_WorldSpaceCameraPos - i.worldPos);
+ viewDotNormal = abs(dot(viewDirection, i.normal));
+
+ mainTexture = UNITY_SAMPLE_TEX2D(_MainTex, TRANSFORM_TEX(i.uv, _MainTex));
+ alphaMask = UNITY_SAMPLE_TEX2D_SAMPLER(_AlphaMask, _MainTex, TRANSFORM_TEX(i.uv, _AlphaMask));
+ albedo = float4(lerp(mainTexture.rgb, dot(mainTexture.rgb, float3(0.3, 0.59, 0.11)), _Desaturation) * _Color.rgb, mainTexture.a * _Color.a * alphaMask);
+ }
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiBasics.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiBasics.cginc.meta
new file mode 100644
index 00000000..638c2908
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiBasics.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: baf5af145e9eff4499da9c1b47119eec
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiData.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiData.cginc
new file mode 100644
index 00000000..7383892c
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiData.cginc
@@ -0,0 +1,18 @@
+#ifndef DATA
+ #define DATA
+
+ struct PoiLighting
+ {
+ float3 direction;
+ float3 position;
+ float3 color;
+ float attenuation;
+ float3 directLighting;
+ float3 indirectLighting;
+ float lightMap;
+ float3 rampedLightMap;
+ float3 finalLighting;
+ float nDotL;
+ };
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiData.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiData.cginc.meta
new file mode 100644
index 00000000..8847efae
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiData.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f9c59d934064e36439e8b48450dd8fc9
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDefaultPass.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDefaultPass.cginc
new file mode 100644
index 00000000..364f46cb
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDefaultPass.cginc
@@ -0,0 +1,20 @@
+#ifndef POI_DEFAULT_PASS
+ #define POI_DEFAULT_PASS
+
+ #include "Poicludes.cginc"
+ #include "PoiHelpers.cginc"
+ #include "PoiBasics.cginc"
+ #include "PoiEmission.cginc"
+ #include "PoiLighting.cginc"
+ #include "PoiFun.cginc"
+ #include "PoiRimlighting.cginc"
+ #include "PoiMetal.cginc"
+ #include "PoiMatcap.cginc"
+ #include "PoiSpecular.cginc"
+ #include "PoiSubsurfaceScattering.cginc"
+
+ #include "PoiVert.cginc"
+ #include "PoiFrag.cginc"
+ #include "PoiGeom.cginc"
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDefaultPass.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDefaultPass.cginc.meta
new file mode 100644
index 00000000..96346d85
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDefaultPass.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e5b8c59f665242546a9251f482d54618
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDragNDropLighting.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDragNDropLighting.cginc
new file mode 100644
index 00000000..82979ded
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDragNDropLighting.cginc
@@ -0,0 +1,100 @@
+#ifndef DND_LIGHTING
+ #define DND_LIGHTING
+
+ sampler2D _ToonRamp;
+ float _AdditiveSoftness;
+ float _AdditiveOffset;
+ float _ForceLightDirection;
+ float _ShadowStrength;
+ float _OutlineShadowStrength;
+ float _ShadowOffset;
+ float3 _LightDirection;
+ float _ForceShadowStrength;
+ float _CastedShadowSmoothing;
+ float _MinBrightness;
+ float _MaxBrightness;
+ float _IndirectContribution;
+ float _AttenuationMultiplier;
+
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_AOMap); float4 _AOMap_ST;
+ float _AOStrength;
+
+ float3 ShadeSH9Indirect()
+ {
+ return ShadeSH9(half4(0.0, -1.0, 0.0, 1.0));
+ }
+
+ float3 ShadeSH9Direct()
+ {
+ return ShadeSH9(half4(0.0, 1.0, 0.0, 1.0));
+ }
+
+ float3 ShadeSH9Normal(float3 normalDirection)
+ {
+ return ShadeSH9(half4(normalDirection, 1.0));
+ }
+
+ half3 GetSHLength()
+ {
+ half3 x, x1;
+ x.r = length(unity_SHAr);
+ x.g = length(unity_SHAg);
+ x.b = length(unity_SHAb);
+ x1.r = length(unity_SHBr);
+ x1.g = length(unity_SHBg);
+ x1.b = length(unity_SHBb);
+ return x + x1;
+ }
+
+ float FadeShadows(float attenuation, float3 worldPosition)
+ {
+ float viewZ = dot(_WorldSpaceCameraPos - worldPosition, UNITY_MATRIX_V[2].xyz);
+ float shadowFadeDistance = UnityComputeShadowFadeDistance(worldPosition, viewZ);
+ float shadowFade = UnityComputeShadowFade(shadowFadeDistance);
+ attenuation = saturate(attenuation + shadowFade);
+ return attenuation;
+ }
+
+ float calculateAOMap(float AOMap, float AOStrength)
+ {
+ return lerp(1, AOMap, AOStrength);
+ }
+
+ void calculateBasePassLighting(float3 normal, float2 uv)
+ {
+ poiLight.direction = _WorldSpaceLightPos0;
+ poiLight.nDotL = dot(normal, poiLight.direction);
+ float AOMap = 1;
+ #ifndef OUTLINE
+ AOMap = UNITY_SAMPLE_TEX2D_SAMPLER(_AOMap, _MainTex, TRANSFORM_TEX(uv, _AOMap));
+ AOMap = calculateAOMap(AOMap, _AOStrength);
+ #endif
+ poiLight.finalLighting = saturate((GetSHLength() + poiLight.color) * AOMap);
+ }
+
+ void calculateDNDLighting(v2f i)
+ {
+ #ifdef OUTLINE
+ _ShadowStrength = _OutlineShadowStrength;
+ #endif
+ UNITY_LIGHT_ATTENUATION(attenuation, i, i.worldPos.xyz)
+ poiLight.attenuation = FadeShadows(attenuation, i.worldPos.xyz);
+ poiLight.color = _LightColor0.rgb;
+ #ifdef FORWARD_BASE_PASS
+ calculateBasePassLighting(i.normal, i.uv);
+ #else
+ #if defined(POINT) || defined(SPOT)
+ poiLight.position = _WorldSpaceLightPos0.xyz;
+ poiLight.direction = normalize(poiLight.position - i.worldPos);
+ poiLight.nDotL = dot(i.normal, poiLight.direction);
+ poiLight.finalLighting = poiLight.color * poiLight.attenuation * smoothstep(.499, .5, .5 * poiLight.nDotL + .5);
+ #endif
+ #endif
+ }
+
+ void applyDNDLighting(inout float4 finalColor)
+ {
+ finalColor.rgb *= poiLight.finalLighting;
+ }
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDragNDropLighting.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDragNDropLighting.cginc.meta
new file mode 100644
index 00000000..1b94adcd
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiDragNDropLighting.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 929b21dd7eb613f47bc07ab065883762
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiEmission.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiEmission.cginc
new file mode 100644
index 00000000..07c47016
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiEmission.cginc
@@ -0,0 +1,52 @@
+#ifndef EMISSION
+ #define EMISSION
+
+ 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;
+
+ float4 emission = 0;
+
+ void calculateEmission(float2 uv, float3 localPos)
+ {
+ float4 _Emissive_Tex_var = tex2D(_EmissionMap, TRANSFORM_TEX(uv, _EmissionMap) + _Time.y * _EmissionScrollSpeed);
+ emission = _Emissive_Tex_var * _EmissionColor * _EmissionStrength;
+
+ // scrolling emission
+ if (_ScrollingEmission == 1)
+ {
+ float phase = dot(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 *= 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 *= emissiveBlink;
+
+ float _Emission_mask_var = tex2D(_EmissionMask, TRANSFORM_TEX(uv, _EmissionMask));
+ emission *= _Emission_mask_var;
+ }
+
+ void applyEmission(inout float4 finalColor)
+ {
+ finalColor.rgb += emission;
+ }
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiEmission.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiEmission.cginc.meta
new file mode 100644
index 00000000..552c0295
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiEmission.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 47ebba48949726e48984026733ee5648
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFrag.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFrag.cginc
new file mode 100644
index 00000000..7d277674
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFrag.cginc
@@ -0,0 +1,159 @@
+#ifndef POIFRAG
+ #define POIFRAG
+
+ int _CubeGradientDebug;
+
+ float4 frag(v2f i, float facing: VFACE): SV_Target
+ {
+ if (_CubeGradientDebug == 1)
+ {
+ float4 debugCol = frac(i.localPos.z);
+ if(debugCol.x <= 0.001)
+ {
+ debugCol.rgb = float3(1,0,0);
+ }
+ return debugCol;
+ }
+
+ #ifdef BASICS
+ calculateBasics(i);
+ #endif
+
+ #ifdef LIGHTING
+ calculateLighting(i);
+ #endif
+
+ #ifdef DND_LIGHTING
+ calculateDNDLighting(i);
+ #endif
+
+ #ifdef FORWARD_BASE_PASS
+ #ifdef REFRACTION
+ calculateRefraction(i);
+ #endif
+ #endif
+
+ #ifdef METAL
+ calculateReflections(i.uv, i.normal, viewDirection);
+ #endif
+
+ #ifdef TEXTURE_BLENDING
+ calculateTextureBlending(blendAlpha, mainTexture, albedo, i.uv);
+ #endif
+
+ clip(mainTexture.a * alphaMask - _Clip);
+
+ #ifdef MATCAP
+ calculateMatcap(viewDirection, i.normal, i.uv);
+ #endif
+
+ #ifdef LIGHTING
+ #ifdef SUBSURFACE
+ calculateSubsurfaceScattering(i, viewDirection);
+ #endif
+ #endif
+
+ #ifdef RIM_LIGHTING
+ calculateRimLighting(i.uv, viewDotNormal);
+ #endif
+
+ #ifdef PANOSPHERE
+ calculatePanosphere(i.worldPos, i.uv);
+ #endif
+
+ #ifdef SCROLLING_LAYERS
+ calculateScrollingLayers(i.uv);
+ #endif
+
+ #ifdef EMISSION
+ calculateEmission(i.uv, i.localPos);
+ #endif
+
+ float4 finalColor = albedo;
+
+ #ifdef RIM_LIGHTING
+ applyRimColor(finalColor);
+ #endif
+
+ #ifdef MATCAP
+ applyMatcap(finalColor);
+ #endif
+
+ #ifdef PANOSPHERE
+ applyPanosphereColor(finalColor);
+ #endif
+
+ #ifdef FORWARD_BASE_PASS
+ #ifdef REFRACTION
+ applyRefraction(finalColor);
+ #endif
+ #endif
+
+
+ float4 finalColorBeforeLighting = finalColor;
+
+ #ifdef LIGHTING
+ applyLighting(finalColor);
+ #endif
+
+ #ifdef DND_LIGHTING
+ applyDNDLighting(finalColor);
+ #endif
+
+ #ifdef METAL
+ applyReflections(finalColor, finalColorBeforeLighting);
+ #endif
+
+ #ifdef SPECULAR
+ calculateSpecular(i.normal, albedo, viewDirection, i.uv);
+ #endif
+
+ #ifdef FORWARD_BASE_PASS
+ #ifdef LIGHTING
+ #ifdef SPECULAR
+ //applyLightingToSpecular();
+ applySpecular(finalColor);
+ #endif
+ #endif
+
+ #ifdef PANOSPHERE
+ applyPanosphereEmission(finalColor);
+ #endif
+
+ #ifdef EMISSION
+ applyEmission(finalColor);
+ #endif
+
+ #ifdef RIM_LIGHTING
+ ApplyRimEmission(finalColor);
+ #endif
+ #endif
+
+ #ifdef LIGHTING
+ #if (defined(POINT) || defined(SPOT))
+ #ifdef METAL
+ applyAdditiveReflectiveLighting(finalColor);
+ #endif
+ #ifdef TRANSPARENT
+ finalColor.rgb *= finalColor.a;
+ #endif
+
+ #ifdef SPECULAR
+ applySpecular(finalColor);
+ #endif
+ #endif
+ #endif
+
+ #ifdef LIGHTING
+ #ifdef SUBSURFACE
+ applySubsurfaceScattering(finalColor);
+ #endif
+ #endif
+
+ #ifdef FORWARD_BASE_PASS
+ UNITY_APPLY_FOG(i.fogCoord, finalColor);
+ #endif
+
+ return finalColor;
+ }
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFrag.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFrag.cginc.meta
new file mode 100644
index 00000000..5e3093b0
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFrag.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a7be1d5beafa95c4eb95a33bd490f22f
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFun.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFun.cginc
new file mode 100644
index 00000000..102f2f8e
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFun.cginc
@@ -0,0 +1,62 @@
+#ifndef FUN
+ #define FUN
+
+ int _Mirror;
+
+ void applyFun(inout float4 vertex)
+ {
+ bool inMirror = IsInMirror();
+ UNITY_BRANCH
+ if (_Mirror == 0)
+ {
+ return;
+ }
+ if(_Mirror == 1 && inMirror)
+ {
+ return;
+ }
+ if(_Mirror == 1 && !inMirror)
+ {
+ vertex = -1;
+ return;
+ }
+ if(_Mirror == 2 && inMirror)
+ {
+ vertex = -1;
+ return;
+ }
+ if(_Mirror == 2 && !inMirror)
+ {
+ return;
+ }
+ }
+
+ void applyFunFrag()
+ {
+ bool inMirror = IsInMirror();
+ UNITY_BRANCH
+ if(_Mirror == 0)
+ {
+ return;
+ }
+ if(_Mirror == 1 && inMirror)
+ {
+ return;
+ }
+ if(_Mirror == 1 && !inMirror)
+ {
+ clip(-1);
+ return;
+ }
+ if(_Mirror == 2 && inMirror)
+ {
+ clip(-1);
+ return;
+ }
+ if(_Mirror == 2 && !inMirror)
+ {
+ return;
+ }
+ }
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFun.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFun.cginc.meta
new file mode 100644
index 00000000..5fc6b222
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiFun.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f04ca200839efd84d96d09eb392df59a
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiGeom.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiGeom.cginc
new file mode 100644
index 00000000..977eac1d
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiGeom.cginc
@@ -0,0 +1,240 @@
+struct Cube
+{
+ float3 min;
+ float3 max;
+};
+
+float random(in float3 st)
+{
+ return frac(cos(dot(st.xyz, float3(12.9898, 78.233, 123.691))) * 43758.5453123);
+}
+
+float _TriToCube;
+float _SpawnAlpha;
+float3 _LocalSpawnOffset;
+float3 _WorldSpawnOffset;
+float _Pieces;
+int _AssemblyMode;
+float3 _AssemblyBegin;
+float3 _AssemblyEnd;
+int _ExplodeMode;
+float _ExplodeFadeDistance;
+
+void assembleVert(float3 newPos, v2f i, float2 newUV, float alpha, inout v2f o)
+{
+ float3 worldPos = lerp(i.worldPos, newPos, alpha);
+ o.uv = lerp(i.uv, newUV, _TriToCube);
+ o.pos = UnityWorldToClipPos(float4(worldPos, 1));
+ o.worldPos = float4(worldPos, 1);
+}
+
+[maxvertexcount(18)]
+void geom(triangle v2f IN[3], inout TriangleStream < v2f > tristream)
+{
+ 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);
+
+ float4 center = (IN[0].worldPos + IN[1].worldPos + IN[2].worldPos) / 3;
+ float2 uv = (IN[0].uv + IN[1].uv + IN[2].uv) / 3;
+ Cube cube;
+ v2f o;
+
+ float rando = random(float3(IN[0].vertexId, IN[1].vertexId, IN[2].vertexId));
+ //center += rando/50;
+ // Calculate Cube Bounds
+ cube.min = IN[0].worldPos;
+ cube.max = IN[0].worldPos;
+ for (int i = 1; i < 3; i ++)
+ {
+ cube.min = float3(min(IN[i].worldPos.x, cube.min.x), min(IN[i].worldPos.y, cube.min.y), min(IN[i].worldPos.z, cube.min.z));
+ cube.max = float3(max(IN[i].worldPos.x, cube.max.x), max(IN[i].worldPos.y, cube.max.y), max(IN[i].worldPos.z, cube.max.z));
+ }
+ cube.min = lerp(cube.min, center, rando / 20);
+ cube.max = lerp(cube.max, center, rando / 20);
+ float4 offset = 0;
+ if (_ExplodeMode == 0)
+ {
+ offset = float4(_WorldSpawnOffset, 0) + mul(unity_ObjectToWorld, _LocalSpawnOffset);
+ }
+ else if(_ExplodeMode == 1)
+ {
+ offset = float4(outDir * _ExplodeFadeDistance, 0);
+ }
+
+ float4 cameraExplodeOffset = 0;
+
+ float spawnAlpha = 0;
+
+ if(_AssemblyMode == 0) // Random
+ {
+ spawnAlpha = saturate((-rando) * _Pieces + (_SpawnAlpha * (_Pieces + 1)));
+ }
+ else if (_AssemblyMode == 1) // Building Blocks
+ {
+ float lineMagnitude = distance(_AssemblyBegin, _AssemblyEnd);
+ float3 constructionLine = (_AssemblyEnd - _AssemblyBegin);
+ float3 objectLine = (mul(unity_WorldToObject, center) - _AssemblyBegin);
+ float progress = -1 + saturate(dot(constructionLine, objectLine) / (lineMagnitude * lineMagnitude));
+
+ IN[0].localPos.z = progress;
+ IN[1].localPos.z = progress;
+ IN[2].localPos.z = progress;
+
+ spawnAlpha = saturate((progress) * _Pieces + (_SpawnAlpha * (_Pieces + 1)));
+ }
+
+ cube.min = lerp(cube.min, center + offset, spawnAlpha);
+ cube.max = lerp(cube.max, center + offset, spawnAlpha);
+
+ // Construct Cubes
+ float3 normal = float3(0, 0, 1);
+ o = IN[0];
+ o.uv = lerp(o.uv, uv, _TriToCube);
+
+ IN[0].worldPos = lerp(IN[0].worldPos, center + offset, spawnAlpha);
+ IN[1].worldPos = lerp(IN[1].worldPos, center + offset, spawnAlpha);
+ IN[2].worldPos = lerp(IN[2].worldPos, center + offset, spawnAlpha);
+
+
+ if (_TriToCube == 0)
+ {
+ for (int i = 0; i < 3; i ++)
+ {
+ IN[i].pos = UnityWorldToClipPos(IN[i].worldPos);
+ tristream.Append(IN[i]);
+ }
+ tristream.RestartStrip();
+ return;
+ }
+
+ float3 viewDirection = normalize(center - getCameraPosition());
+
+ //Front
+ o.normal = float3(0, 0, 1);
+ if (dot(viewDirection, o.normal) < 0)
+ {
+ assembleVert(float3(cube.min.x, cube.min.y, cube.max.z), IN[0], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.max.x, cube.min.y, cube.max.z), IN[1], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.min.x, cube.max.y, cube.max.z), IN[2], uv, _TriToCube, o);
+ tristream.Append(o);
+ tristream.RestartStrip();
+ assembleVert(float3(cube.max.x, cube.max.y, cube.max.z), IN[0], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.min.x, cube.max.y, cube.max.z), IN[1], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.max.x, cube.min.y, cube.max.z), IN[2], uv, _TriToCube, o);
+ tristream.Append(o);
+ tristream.RestartStrip();
+ }
+
+ //Back
+ o.normal = float3(0, 0, -1);
+ if (dot(viewDirection, o.normal) < 0)
+ {
+ assembleVert(float3(cube.min.x, cube.max.y, cube.min.z), IN[0], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.max.x, cube.min.y, cube.min.z), IN[1], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.min.x, cube.min.y, cube.min.z), IN[2], uv, _TriToCube, o);
+ tristream.Append(o);
+ tristream.RestartStrip();
+ assembleVert(float3(cube.max.x, cube.min.y, cube.min.z), IN[0], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.min.x, cube.max.y, cube.min.z), IN[1], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.max.x, cube.max.y, cube.min.z), IN[2], uv, _TriToCube, o);
+ tristream.Append(o);
+ tristream.RestartStrip();
+ }
+
+ //-x
+ o.normal = float3(1, 0, 0);
+ if (dot(viewDirection, o.normal) < 0)
+ {
+ assembleVert(float3(cube.max.x, cube.max.y, cube.min.z), IN[0], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.max.x, cube.min.y, cube.max.z), IN[1], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.max.x, cube.min.y, cube.min.z), IN[2], uv, _TriToCube, o);
+ tristream.Append(o);
+ tristream.RestartStrip();
+ assembleVert(float3(cube.max.x, cube.min.y, cube.max.z), IN[0], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.max.x, cube.max.y, cube.min.z), IN[1], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.max.x, cube.max.y, cube.max.z), IN[2], uv, _TriToCube, o);
+ tristream.Append(o);
+ tristream.RestartStrip();
+ }
+
+ //+x
+ o.normal = float3(-1, 0, 0);
+ if (dot(viewDirection, o.normal) < 0)
+ {
+ assembleVert(float3(cube.min.x, cube.min.y, cube.min.z), IN[0], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.min.x, cube.min.y, cube.max.z), IN[1], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.min.x, cube.max.y, cube.min.z), IN[2], uv, _TriToCube, o);
+ tristream.Append(o);
+ tristream.RestartStrip();
+ assembleVert(float3(cube.min.x, cube.max.y, cube.max.z), IN[0], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.min.x, cube.max.y, cube.min.z), IN[1], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.min.x, cube.min.y, cube.max.z), IN[2], uv, _TriToCube, o);
+ tristream.Append(o);
+ tristream.RestartStrip();
+ }
+
+ //up
+ o.normal = float3(0, 1, 0);
+ if (dot(viewDirection, o.normal) < 0)
+ {
+ assembleVert(float3(cube.min.x, cube.max.y, cube.max.z), IN[0], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.max.x, cube.max.y, cube.min.z), IN[1], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.min.x, cube.max.y, cube.min.z), IN[2], uv, _TriToCube, o);
+ tristream.Append(o);
+ tristream.RestartStrip();
+ assembleVert(float3(cube.max.x, cube.max.y, cube.min.z), IN[0], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.min.x, cube.max.y, cube.max.z), IN[1], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.max.x, cube.max.y, cube.max.z), IN[2], uv, _TriToCube, o);
+ tristream.Append(o);
+ tristream.RestartStrip();
+ }
+
+ //down
+ o.normal = float3(0, -1, 0);
+ if (dot(viewDirection, o.normal) < 0)
+ {
+ assembleVert(float3(cube.min.x, cube.min.y, cube.min.z), IN[0], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.max.x, cube.min.y, cube.min.z), IN[1], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.min.x, cube.min.y, cube.max.z), IN[2], uv, _TriToCube, o);
+ tristream.Append(o);
+ tristream.RestartStrip();
+ assembleVert(float3(cube.max.x, cube.min.y, cube.max.z), IN[0], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.min.x, cube.min.y, cube.max.z), IN[1], uv, _TriToCube, o);
+ tristream.Append(o);
+ assembleVert(float3(cube.max.x, cube.min.y, cube.min.z), IN[2], uv, _TriToCube, o);
+ tristream.Append(o);
+ tristream.RestartStrip();
+ }
+ /*
+ for (int i = 0; i < 3; i ++)
+ {
+ IN[i].uv = uv;
+ tristream.Append(IN[i]);
+ }
+ */
+} \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiGeom.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiGeom.cginc.meta
new file mode 100644
index 00000000..c5e1e965
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiGeom.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0110416f419d6c1428eff564e8bba8a8
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiHelpers.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiHelpers.cginc
new file mode 100644
index 00000000..a5ad08db
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiHelpers.cginc
@@ -0,0 +1,42 @@
+// Normals
+float3 CreateBinormal(float3 normal, float3 tangent, float binormalSign)
+{
+ return cross(normal, tangent.xyz) *
+ (binormalSign * unity_WorldTransformParams.w);
+}
+
+bool IsInMirror()
+{
+ return unity_CameraProjection[2][0] != 0.f || unity_CameraProjection[2][1] != 0.f;
+}
+
+// Camera
+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);
+}
+
+float3 grayscale_vector_node()
+{
+ return float3(0, 0.3823529, 0.01845836);
+}
+
+float3 grayscale_for_light()
+{
+ return float3(0.298912, 0.586611, 0.114478);
+} \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiHelpers.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiHelpers.cginc.meta
new file mode 100644
index 00000000..913b16d6
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiHelpers.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4046024b56935044b9bb885280ad296d
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiLighting.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiLighting.cginc
new file mode 100644
index 00000000..be9c72f1
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiLighting.cginc
@@ -0,0 +1,124 @@
+#ifndef LIGHTING
+ #define LIGHTING
+
+ int _LightingType;
+ sampler2D _ToonRamp;
+ float _AdditiveSoftness;
+ float _AdditiveOffset;
+ float _ForceLightDirection;
+ float _ShadowStrength;
+ float _OutlineShadowStrength;
+ float _ShadowOffset;
+ float3 _LightDirection;
+ float _ForceShadowStrength;
+ float _CastedShadowSmoothing;
+ float _MinBrightness;
+ float _MaxBrightness;
+ float _IndirectContribution;
+ float _AttenuationMultiplier;
+
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_AOMap); float4 _AOMap_ST;
+ float _AOStrength;
+
+ float3 ShadeSH9Indirect()
+ {
+ return ShadeSH9(half4(0.0, -1.0, 0.0, 1.0));
+ }
+
+ float3 ShadeSH9Direct()
+ {
+ return ShadeSH9(half4(0.0, 1.0, 0.0, 1.0));
+ }
+
+ float3 ShadeSH9Normal(float3 normalDirection)
+ {
+ return ShadeSH9(half4(normalDirection, 1.0));
+ }
+
+ half3 GetSHLength()
+ {
+ half3 x, x1;
+ x.r = length(unity_SHAr);
+ x.g = length(unity_SHAg);
+ x.b = length(unity_SHAb);
+ x1.r = length(unity_SHBr);
+ x1.g = length(unity_SHBg);
+ x1.b = length(unity_SHBb);
+ return x + x1;
+ }
+
+ float FadeShadows(float attenuation, float3 worldPosition)
+ {
+ float viewZ = dot(_WorldSpaceCameraPos - worldPosition, UNITY_MATRIX_V[2].xyz);
+ float shadowFadeDistance = UnityComputeShadowFadeDistance(worldPosition, viewZ);
+ float shadowFade = UnityComputeShadowFade(shadowFadeDistance);
+ attenuation = saturate(attenuation + shadowFade);
+ return attenuation;
+ }
+
+ float calculateAOMap(float AOMap, float AOStrength)
+ {
+ return lerp(1, AOMap, AOStrength);
+ }
+
+ void calculateBasePassLighting(float3 normal, float2 uv)
+ {
+ poiLight.direction = _WorldSpaceLightPos0;
+ poiLight.nDotL = dot(normal, poiLight.direction);
+ float AOMap = 1;
+ #ifndef OUTLINE
+ AOMap = UNITY_SAMPLE_TEX2D_SAMPLER(_AOMap, _MainTex, TRANSFORM_TEX(uv, _AOMap));
+ AOMap = calculateAOMap(AOMap, _AOStrength);
+ #endif
+
+ float3 grayscale_vector = grayscale_for_light();
+ float3 ShadeSH9Plus = GetSHLength();
+ float3 ShadeSH9Minus = ShadeSH9(float4(0, 0, 0, 1));
+ poiLight.directLighting = ShadeSH9Plus + poiLight.color;
+ poiLight.indirectLighting = ShadeSH9Minus;
+
+ float bw_lightColor = dot(poiLight.color, grayscale_vector);
+ float bw_directLighting = (((poiLight.nDotL * 0.5 + 0.5) * bw_lightColor * lerp(1, poiLight.attenuation, _AttenuationMultiplier)) + dot(ShadeSH9Normal(normal), grayscale_vector));
+ float bw_bottomIndirectLighting = dot(ShadeSH9Minus, grayscale_vector);
+ float bw_topIndirectLighting = dot(ShadeSH9Plus, grayscale_vector);
+ float lightDifference = ((bw_topIndirectLighting + bw_lightColor) - bw_bottomIndirectLighting);
+ poiLight.lightMap = smoothstep(0, lightDifference, bw_directLighting - bw_bottomIndirectLighting);
+ poiLight.rampedLightMap = tex2D(_ToonRamp, poiLight.lightMap + _ShadowOffset);
+
+ if (_LightingType == 0)
+ {
+ poiLight.finalLighting = lerp(saturate(poiLight.indirectLighting), lerp(poiLight.directLighting, poiLight.indirectLighting, _IndirectContribution), lerp(1, poiLight.rampedLightMap, _ShadowStrength)) * AOMap;
+ }
+ else
+ {
+ poiLight.finalLighting = saturate(poiLight.directLighting) * lerp(1, poiLight.rampedLightMap, _ShadowStrength) * AOMap;
+ }
+
+ poiLight.finalLighting = clamp(poiLight.finalLighting, _MinBrightness, _MaxBrightness);
+ }
+
+ void calculateLighting(v2f i)
+ {
+ #ifdef OUTLINE
+ _ShadowStrength = _OutlineShadowStrength;
+ #endif
+ UNITY_LIGHT_ATTENUATION(attenuation, i, i.worldPos.xyz)
+ poiLight.attenuation = FadeShadows(attenuation, i.worldPos.xyz);
+ poiLight.color = _LightColor0.rgb;
+ #ifdef FORWARD_BASE_PASS
+ calculateBasePassLighting(i.normal, i.uv);
+ #else
+ #if defined(POINT) || defined(SPOT)
+ poiLight.position = _WorldSpaceLightPos0.xyz;
+ poiLight.direction = normalize(poiLight.position - i.worldPos);
+ poiLight.nDotL = dot(i.normal, poiLight.direction);
+ poiLight.finalLighting = poiLight.color * poiLight.attenuation * smoothstep(.5 - _AdditiveSoftness + _AdditiveOffset, .5 + _AdditiveSoftness + _AdditiveOffset, .5 * poiLight.nDotL + .5);
+ #endif
+ #endif
+ }
+
+ void applyLighting(inout float4 finalColor)
+ {
+ finalColor.rgb *= poiLight.finalLighting;
+ }
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiLighting.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiLighting.cginc.meta
new file mode 100644
index 00000000..9d5b777f
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiLighting.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2c84013c28d21ab44a17e487e5202242
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMacros.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMacros.cginc
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMacros.cginc
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMacros.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMacros.cginc.meta
new file mode 100644
index 00000000..a9954ea2
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMacros.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ad8c37b1d1291e44da5c6ec1a305cd8c
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMatcap.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMatcap.cginc
new file mode 100644
index 00000000..4ed825f9
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMatcap.cginc
@@ -0,0 +1,36 @@
+#ifndef MATCAP
+ #define MATCAP
+
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_Matcap);
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_MatcapMap); float4 _MatcapMap_ST;
+ float4 _MatcapColor;
+ float _MatcapStrength;
+ float _ReplaceWithMatcap;
+ float _MultiplyMatcap;
+ float _AddMatcap;
+
+ float3 matcap;
+ float matcapMask;
+
+ 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;
+ }
+
+ void calculateMatcap(float3 cameraToVert, float3 normal, float2 uv)
+ {
+ float2 matcapUV = getMatcapUV(cameraToVert, normal);
+ matcap = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap, _MainTex, matcapUV) * _MatcapColor * _MatcapStrength;
+ matcapMask = UNITY_SAMPLE_TEX2D_SAMPLER(_MatcapMap, _MainTex, TRANSFORM_TEX(uv, _MatcapMap));
+ }
+
+ void applyMatcap(inout float4 finalColor)
+ {
+ finalColor.rgb = lerp(finalColor, matcap, _ReplaceWithMatcap * matcapMask);
+ finalColor.rgb *= lerp(1, matcap, _MultiplyMatcap * matcapMask);
+ finalColor.rgb += matcap * _AddMatcap * matcapMask;
+ }
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMatcap.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMatcap.cginc.meta
new file mode 100644
index 00000000..d9411dbf
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMatcap.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9e7eb4a81e5a57243b485f097c939493
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMetal.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMetal.cginc
new file mode 100644
index 00000000..43d84dc7
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMetal.cginc
@@ -0,0 +1,77 @@
+#ifndef METAL
+ #define METAL
+
+ samplerCUBE _CubeMap;
+ float _SampleWorld;
+ float _PurelyAdditive;
+ sampler2D _MetallicMap; float4 _MetallicMap_ST;
+ float _Metallic;
+ sampler2D _SmoothnessMap; float4 _SmoothnessMap_ST;
+ float _InvertSmoothness;
+ float _Smoothness;
+
+ float3 finalreflections;
+ float metalicMap;
+ float3 reflection;
+ float roughness;
+ float lighty_boy_uwu_var;
+
+ void calculateReflections(float2 uv, float3 normal, float3 cameraToVert)
+ {
+ metalicMap = tex2D(_MetallicMap, TRANSFORM_TEX(uv, _MetallicMap)) * _Metallic;
+ float _Smoothness_map_var = (tex2D(_SmoothnessMap, TRANSFORM_TEX(uv, _SmoothnessMap)));
+ if (_InvertSmoothness == 1)
+ {
+ _Smoothness_map_var = 1 - _Smoothness_map_var;
+ }
+ _Smoothness_map_var *= _Smoothness;
+ roughness = 1 - _Smoothness_map_var;
+ roughness *= 1.7 - 0.7 * roughness;
+ float3 reflectedDir = reflect(-cameraToVert, normal);
+
+ 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;
+ lighty_boy_uwu_var = 0;
+ if (no_probe || _SampleWorld)
+ {
+ lighty_boy_uwu_var = 1;
+ reflection = texCUBElod(_CubeMap, float4(reflectedDir, roughness * UNITY_SPECCUBE_LOD_STEPS));
+ }
+ }
+
+ void applyReflections(inout float4 finalColor, float4 finalColorBeforeLighting)
+ {
+ #ifdef FORWARD_BASE_PASS
+ finalreflections = reflection.rgb * lerp(finalColorBeforeLighting.rgb, 1, _PurelyAdditive);
+ finalColor.rgb = finalColor.rgb * (1 - metalicMap);
+ finalColor.rgb += (finalreflections * ((1 - roughness + metalicMap) / 2)) * lerp(1, poiLight.finalLighting, lighty_boy_uwu_var);
+ #endif
+ }
+
+ void applyAdditiveReflectiveLighting(inout float4 finalColor)
+ {
+ finalColor *= (1 - metalicMap);
+ }
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMetal.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMetal.cginc.meta
new file mode 100644
index 00000000..36c6e192
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiMetal.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7c691dfa699477f4190c7b70403a3f36
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineFrag.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineFrag.cginc
new file mode 100644
index 00000000..52cba137
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineFrag.cginc
@@ -0,0 +1,26 @@
+ float4 frag(v2f i, float facing: VFACE): COLOR
+ {
+ float alphaMultiplier = smoothstep(_OutlineFadeDistance.x, _OutlineFadeDistance.y, distance(getCameraPosition(), i.worldPos));
+ clip(_LineWidth - 0.001);
+ float _alphaMask_tex_var = tex2D(_AlphaMask, TRANSFORM_TEX(i.uv, _AlphaMask));
+ fixed4 _main_tex_var = UNITY_SAMPLE_TEX2D(_MainTex, TRANSFORM_TEX(i.uv, _MainTex));
+ fixed4 col = tex2D(_OutlineTexture, TRANSFORM_TEX((i.uv + (_OutlineTexturePan.xy * _Time.g)), _OutlineTexture));
+ col.a *= alphaMultiplier;
+
+ clip(col.a * _alphaMask_tex_var - _Clip);
+
+ col *= _LineColor;
+
+ #ifdef LIGHTING
+ calculateLighting(i);
+ #endif
+
+ float4 finalColor = col;
+
+ #ifdef LIGHTING
+ applyLighting(finalColor);
+ #endif
+
+ finalColor.rgb += (col.rgb * _OutlineEmission);
+ return finalColor;
+ } \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineFrag.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineFrag.cginc.meta
new file mode 100644
index 00000000..5ddf8ab9
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineFrag.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3245036ffbf442745a7f0038571b9d7d
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineIncludes.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineIncludes.cginc
new file mode 100644
index 00000000..2057bc8b
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineIncludes.cginc
@@ -0,0 +1,46 @@
+
+#ifndef POICLUDES
+ #define POICLUDES
+
+ #include "PoiData.cginc"
+ #include "UnityCG.cginc"
+ #include "Lighting.cginc"
+ #include "UnityPBSLighting.cginc"
+ #include "AutoLight.cginc"
+
+ UNITY_DECLARE_TEX2D(_MainTex); float4 _MainTex_ST;
+ float _LineWidth;
+ float _OutlineEmission;
+ float4 _LineColor;
+ float4 _Color;
+ float _Clip;
+ sampler2D _OutlineTexture; float4 _OutlineTexture_ST;
+ sampler2D _AlphaMask; float4 _AlphaMask_ST;
+ float4 _OutlineTexturePan;
+
+ float4 _OutlineFadeDistance;
+ float4 _OutlineGlobalPan;
+
+ struct VertexInput
+ {
+ float4 vertex: POSITION;
+ float3 normal: NORMAL;
+ float2 texcoord0: TEXCOORD0;
+ UNITY_VERTEX_INPUT_INSTANCE_ID
+ };
+ struct v2f
+ {
+ float4 pos: SV_POSITION;
+ float2 uv: TEXCOORD0;
+ float3 normal: TEXCOORD1;
+ float3 worldPos: TEXCOORD2;
+ UNITY_VERTEX_INPUT_INSTANCE_ID
+ UNITY_VERTEX_OUTPUT_STEREO
+ UNITY_SHADOW_COORDS(3)
+ UNITY_FOG_COORDS(4)
+ };
+
+ static PoiLighting poiLight;
+ float pi;
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineIncludes.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineIncludes.cginc.meta
new file mode 100644
index 00000000..b54d15c6
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineIncludes.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8bc5e7c580bf74f4daf36e44f0bcc552
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineVert.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineVert.cginc
new file mode 100644
index 00000000..d82223d2
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineVert.cginc
@@ -0,0 +1,28 @@
+#ifndef OutlineVert
+ #define OutlineVert
+
+ v2f vert(VertexInput v)
+ {
+ v2f o;
+ UNITY_SETUP_INSTANCE_ID(v);
+ UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
+ UNITY_TRANSFER_INSTANCE_ID(v, o);
+
+ #ifdef FUN
+ applyFun(v.vertex);
+ #endif
+
+ o.uv = v.texcoord0 + _OutlineGlobalPan.xy * _Time.y;
+
+ o.normal = UnityObjectToWorldNormal(v.normal);
+ float3 offset = o.normal * (_LineWidth/100);
+ o.worldPos = mul(unity_ObjectToWorld, v.vertex) + float4(offset,0);
+
+ o.pos = UnityWorldToClipPos(o.worldPos);
+
+ UNITY_TRANSFER_SHADOW(o, o.uv);
+ UNITY_TRANSFER_FOG(o, o.pos);
+ return o;
+ }
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineVert.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineVert.cginc.meta
new file mode 100644
index 00000000..8552b862
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiOutlineVert.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 31c5e772bdbeb7e438a6cb639b69815a
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPanosphere.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPanosphere.cginc
new file mode 100644
index 00000000..d167c6a0
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPanosphere.cginc
@@ -0,0 +1,41 @@
+#ifndef PANOSPHERE
+ #define PANOSPHERE
+
+ sampler2D _PanosphereTexture; float4 _PanosphereTexture_ST;
+ sampler2D _PanoMapTexture; float4 _PanoMapTexture_ST;
+ float _PanoEmission;
+ float _PanoBlend;
+ float4 _PanosphereColor;
+ float4 _PanosphereScroll;
+
+ float3 panoColor;
+ float panoMask;
+
+ float2 StereoPanoProjection(float3 coords)
+ {
+ float3 normalizedCoords = normalize(coords);
+ float latitude = acos(normalizedCoords.y);
+ float longitude = atan2(normalizedCoords.z, normalizedCoords.x);
+ float2 sphereCoords = float2(longitude + _Time.y * _PanosphereScroll.x, latitude + _Time.y * _PanosphereScroll.y) * float2(0.5 / UNITY_PI, 1.0 / UNITY_PI);
+ sphereCoords = float2(0.5, 1.0) - sphereCoords;
+ return(sphereCoords + float4(0, 1 - unity_StereoEyeIndex, 1, 0.5).xy) * float4(0, 1 - unity_StereoEyeIndex, 1, 0.5).zw;
+ }
+
+ void calculatePanosphere(float3 worldPos, float2 uv)
+ {
+ float2 _StereoEnabled_var = StereoPanoProjection(normalize(_WorldSpaceCameraPos.xyz - worldPos.xyz) * - 1);
+ panoColor = tex2D(_PanosphereTexture, TRANSFORM_TEX(_StereoEnabled_var, _PanosphereTexture)) * _PanosphereColor.rgb;
+ panoMask = tex2D(_PanoMapTexture, TRANSFORM_TEX(uv, _PanoMapTexture));
+ }
+
+ void applyPanosphereColor(inout float4 finalColor)
+ {
+ finalColor.rgb = lerp(finalColor.rgb, panoColor, _PanoBlend * panoMask);
+ }
+
+ void applyPanosphereEmission(inout float4 finalColor)
+ {
+ finalColor.rgb += panoColor * _PanoBlend * panoMask * _PanoEmission;
+ }
+
+#endif
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPanosphere.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPanosphere.cginc.meta
new file mode 100644
index 00000000..ff1c1083
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPanosphere.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: eaa1b35980202f640aba378002e247c0
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPass.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPass.cginc
new file mode 100644
index 00000000..fdcd589b
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPass.cginc
@@ -0,0 +1,28 @@
+#ifndef POI_PASS
+ #define POI_PASS
+
+ #include "Poicludes.cginc"
+ #include "PoiHelpers.cginc"
+ #include "PoiBasics.cginc"
+ #include "PoiEmission.cginc"
+ #ifndef DRAG_N_DROP
+ #include "PoiLighting.cginc"
+ #include "PoiFun.cginc"
+ #ifndef GOTTA_GO_FAST
+ #include "PoiScrollingLayers.cginc"
+ #include "PoiTextureBlending.cginc"
+ #include "PoiPanosphere.cginc"
+ #include "PoiRimlighting.cginc"
+ #include "PoiMetal.cginc"
+ #include "PoiMatcap.cginc"
+ #include "PoiSpecular.cginc"
+ #include "PoiSubsurfaceScattering.cginc"
+ #endif
+ #else
+ #include "PoiDragNDropLighting.cginc"
+ #endif
+
+ #include "PoiVert.cginc"
+ #include "PoiFrag.cginc"
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPass.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPass.cginc.meta
new file mode 100644
index 00000000..20709994
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPass.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8e55c50551f60a043b5127d93c0a7906
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassOutline.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassOutline.cginc
new file mode 100644
index 00000000..b77839ff
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassOutline.cginc
@@ -0,0 +1,18 @@
+#ifndef POI_PASS_OUTLINE
+ #define POI_PASS_OUTLINE
+
+ #pragma target 5.0
+ #pragma multi_compile_fwdbase
+ #pragma fragmentoption ARB_precision_hint_fastest
+ #pragma multi_compile_fog
+ #pragma multi_compile_instancing
+ #define FORWARD_BASE_PASS
+ #define OUTLINE
+ #include "PoiOutlineIncludes.cginc"
+ #include "PoiHelpers.cginc"
+ #include "PoiFun.cginc"
+ #include "PoiLighting.cginc"
+ #include "PoiOutlineVert.cginc"
+ #include "PoiOutlineFrag.cginc"
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassOutline.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassOutline.cginc.meta
new file mode 100644
index 00000000..a29147a7
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassOutline.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: be0358aa48706344da098705a5795d9a
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassShadow.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassShadow.cginc
new file mode 100644
index 00000000..42abd7ec
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassShadow.cginc
@@ -0,0 +1,14 @@
+#ifndef POI_PASS_SHADOW
+ #define POI_PASS_SHADOW
+
+ #pragma target 5.0
+ #pragma multi_compile_shadowcaster
+ #include "UnityCG.cginc"
+ #include "UnityShaderVariables.cginc"
+ #include "PoiShadowIncludes.cginc"
+ #include "PoiHelpers.cginc"
+ #include "PoiFun.cginc"
+ #include "PoiShadowVert.cginc"
+ #include "PoiShadowFrag.cginc"
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassShadow.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassShadow.cginc.meta
new file mode 100644
index 00000000..0d897a88
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiPassShadow.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a67f98d2ea6b4d64f82e39d30923f91e
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRefraction.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRefraction.cginc
new file mode 100644
index 00000000..6da9a05a
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRefraction.cginc
@@ -0,0 +1,49 @@
+#ifndef REFRACTION
+ #define REFRACTION
+
+ sampler2D _PoiGrab;
+ float _IndexOfRefraction;
+ float _RefractionOpacity;
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_RefractionOpacityMask); float4 _RefractionOpacityMask_ST;
+
+ float3 refraction;
+ float refractionOpacityMask;
+
+ inline float4 Refraction(v2f i, float indexOfRefraction/*, float chomaticAberration*/)
+ {
+ float4 screenPos = i.screenPos;
+ #if UNITY_UV_STARTS_AT_TOP
+ float scale = -1.0;
+ #else
+ float scale = 1.0;
+ #endif
+ float halfPosW = screenPos.w * 0.5;
+ screenPos.y = (screenPos.y - halfPosW) * _ProjectionParams.x * scale + halfPosW;
+ #if SHADER_API_D3D9 || SHADER_API_D3D11
+ screenPos.w += 0.00000000001;
+ #endif
+ float2 projScreenPos = (screenPos / screenPos.w).xy;
+ float3 worldViewDir = normalize(UnityWorldSpaceViewDir(i.worldPos));
+ float3 refractionOffset = ((((indexOfRefraction - 1.0) * mul(UNITY_MATRIX_V, float4(i.normal, 0.0))) * (1.0 / (screenPos.z + 1.0))) * (1.0 - dot(i.normal, worldViewDir)));
+ float2 cameraRefraction = float2(refractionOffset.x, - (refractionOffset.y * _ProjectionParams.x));
+ return tex2D(_PoiGrab, (projScreenPos + cameraRefraction));
+ /*
+ float4 redAlpha = tex2D(_GrabTexture, (projScreenPos + cameraRefraction));
+ float green = tex2D(_GrabTexture, (projScreenPos + (cameraRefraction * (1.0 - chomaticAberration)))).g;
+ float blue = tex2D(_GrabTexture, (projScreenPos + (cameraRefraction * (1.0 + chomaticAberration)))).b;
+ return float4(redAlpha.r, green, blue, redAlpha.a);
+ */
+ }
+
+ void calculateRefraction(v2f i)
+ {
+ refraction = Refraction(i, _IndexOfRefraction).rgb;
+ refractionOpacityMask = UNITY_SAMPLE_TEX2D_SAMPLER(_RefractionOpacityMask, _MainTex, TRANSFORM_TEX(i.uv, _RefractionOpacityMask));
+ }
+
+ void applyRefraction(inout float4 finalColor)
+ {
+ finalColor.rgb = lerp(refraction, finalColor, _RefractionOpacity * refractionOpacityMask);
+ }
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRefraction.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRefraction.cginc.meta
new file mode 100644
index 00000000..dd3363d0
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRefraction.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3b42a5209d7a47440a5f7466b1dac531
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRimLighting.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRimLighting.cginc
new file mode 100644
index 00000000..f5cacba3
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRimLighting.cginc
@@ -0,0 +1,39 @@
+#ifndef RIM_LIGHTING
+ #define RIM_LIGHTING
+
+ float4 _RimLightColor;
+ float _RimWidth;
+ float _RimStrength;
+ float _RimSharpness;
+ float _RimLightColorBias;
+ float4 _RimTexPanSpeed;
+ float _ShadowMix;
+ float _ShadowMixThreshold;
+ float _ShadowMixWidthMod;
+
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_RimTex); float4 _RimTex_ST;
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_RimMask); float4 _RimMask_ST;
+
+ float4 rimColor = float4(0, 0, 0, 0);
+ float rim = 0;
+
+ void calculateRimLighting(float2 uv, float cameraDotVert)
+ {
+ float rimMask = UNITY_SAMPLE_TEX2D_SAMPLER(_RimMask, _MainTex, TRANSFORM_TEX(uv, _RimMask));
+ rimColor = UNITY_SAMPLE_TEX2D_SAMPLER(_RimTex, _MainTex, TRANSFORM_TEX(uv, _RimTex) + (_Time.y * _RimTexPanSpeed.xy)) * _RimLightColor;
+ _RimWidth = lerp(_RimWidth,_RimWidth * lerp(0,1,poiLight.lightMap-_ShadowMixThreshold) * _ShadowMixWidthMod,_ShadowMix);
+ rim = 1-smoothstep(min(_RimSharpness,_RimWidth),_RimWidth,cameraDotVert);
+ rim *= _RimLightColor.a * rimColor.a * rimMask;
+ }
+
+ void applyRimColor(inout float4 finalColor)
+ {
+ finalColor.rgb = lerp(finalColor.rgb, lerp(finalColor.rgb, rimColor, _RimLightColorBias), rim);
+ }
+
+ void ApplyRimEmission(inout float4 finalColor)
+ {
+ finalColor.rgb += rim * rimColor * _RimStrength;
+ }
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRimLighting.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRimLighting.cginc.meta
new file mode 100644
index 00000000..02866e40
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiRimLighting.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8cc181529cb7e164eb0bc84365fc12a4
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiScrollingLayers.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiScrollingLayers.cginc
new file mode 100644
index 00000000..cc27ff88
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiScrollingLayers.cginc
@@ -0,0 +1,23 @@
+#ifndef SCROLLING_LAYERS
+ #define SCROLLING_LAYERS
+
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_LayerTexture); float4 _LayerTexture_ST;
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_LayerMask); float4 _LayerMask_ST;
+ float4 _LayerColor;
+ float4 _LayerSpeed;
+ float _Layers;
+ float _LayerShrinkage;
+
+ float4 color;
+ float4 calculateScrollingLayers(float2 uv)
+ {
+ color = 0;
+
+ for (int i = 0; i < _Layers; i++) {
+ float2 uvMod = (1 + i*_LayerShrinkage) + (_Time.y * _LayerSpeed.xy);// / (1+i/3);
+ color = saturate(color + UNITY_SAMPLE_TEX2D_SAMPLER(_LayerTexture, _MainTex, TRANSFORM_TEX(uv, _LayerTexture) * uvMod )) / (1+i*2);
+ }
+
+ return color * _LayerColor;
+ }
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiScrollingLayers.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiScrollingLayers.cginc.meta
new file mode 100644
index 00000000..2e31cfb7
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiScrollingLayers.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 04d6f9981ab9b9a489db5cb7bedbe941
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowFrag.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowFrag.cginc
new file mode 100644
index 00000000..02331e51
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowFrag.cginc
@@ -0,0 +1,29 @@
+#ifndef SHADOW_FRAG
+ #define SHADOW_FRAG
+
+ half4 fragShadowCaster(
+ #if !defined(V2F_SHADOW_CASTER_NOPOS_IS_EMPTY) || defined(UNITY_STANDARD_USE_SHADOW_UVS)
+ VertexOutputShadowCaster i
+ #endif
+ ): SV_Target
+ {
+ #ifdef FUN
+ applyFunFrag();
+ #endif
+
+ #if defined(UNITY_STANDARD_USE_SHADOW_UVS)
+ half alpha = tex2D(_MainTex, TRANSFORM_TEX(i.uv, _MainTex)).a * _Color.a;
+ half alphaMask = tex2D(_AlphaMask, TRANSFORM_TEX(i.uv, _AlphaMask));
+
+ #ifdef CUTOUT
+ clip(alpha * alphaMask - _Clip);
+ #endif
+ #ifdef TRANSPARENT
+ clip(alpha * alphaMask - 0.01);
+ #endif
+ #endif
+
+ SHADOW_CASTER_FRAGMENT(i)
+ }
+
+ #endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowFrag.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowFrag.cginc.meta
new file mode 100644
index 00000000..8613fdcb
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowFrag.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e264d11d61c3f6b4da7cf7ca0afeb2b8
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowIncludes.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowIncludes.cginc
new file mode 100644
index 00000000..0bdf8e2e
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowIncludes.cginc
@@ -0,0 +1,29 @@
+#ifndef SHADOW_INCLUDES
+ #define SHADOW_INCLUDES
+
+ #define UNITY_STANDARD_USE_SHADOW_UVS 1
+
+ float4 _Color;
+ float _Clip;
+ sampler2D _MainTex; float4 _MainTex_ST;
+ float4 _GlobalPanSpeed;
+ sampler2D _AlphaMask; float4 _AlphaMask_ST;
+
+ struct VertexInput
+ {
+ float4 vertex: POSITION;
+ float3 normal: NORMAL;
+ float2 uv0: TEXCOORD0;
+ };
+
+ #if !defined(V2F_SHADOW_CASTER_NOPOS_IS_EMPTY) || defined(UNITY_STANDARD_USE_SHADOW_UVS)
+ struct VertexOutputShadowCaster
+ {
+ V2F_SHADOW_CASTER_NOPOS
+ #if defined(UNITY_STANDARD_USE_SHADOW_UVS)
+ float2 uv: TEXCOORD1;
+ #endif
+ };
+ #endif
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowIncludes.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowIncludes.cginc.meta
new file mode 100644
index 00000000..159bff8a
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowIncludes.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1e46f338a3c4bac43b616326ad55efae
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowVert.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowVert.cginc
new file mode 100644
index 00000000..a855047b
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowVert.cginc
@@ -0,0 +1,11 @@
+void vertShadowCaster(VertexInput v,
+#if !defined(V2F_SHADOW_CASTER_NOPOS_IS_EMPTY) || defined(UNITY_STANDARD_USE_SHADOW_UVS)
+ out VertexOutputShadowCaster o,
+#endif
+out float4 opos: SV_POSITION)
+{
+ TRANSFER_SHADOW_CASTER_NOPOS(o, opos)
+ #if defined(UNITY_STANDARD_USE_SHADOW_UVS)
+ o.uv = TRANSFORM_TEX(v.uv0 + _GlobalPanSpeed.xy * float2(_Time.y, _Time.y), _MainTex);
+ #endif
+} \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowVert.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowVert.cginc.meta
new file mode 100644
index 00000000..fb104209
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiShadowVert.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b779a0b47859b5444b0a513ac6ee601c
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSpecular.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSpecular.cginc
new file mode 100644
index 00000000..058bcb7c
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSpecular.cginc
@@ -0,0 +1,173 @@
+#ifndef SPECULAR
+ #define SPECULAR
+
+ int _SpecularType;
+ int _SmoothnessFrom;
+ int _SpecularColorFrom;
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_SpecularMap); float4 _SpecularMap_ST;
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_SpecularHighTexture); float4 _SpecularHighTexture_ST;
+ float4 _SpecularTint;
+ float _SpecularSmoothness;
+
+ // Globals
+ half4 finalSpecular;
+ half4 highTexture;
+
+ UnityIndirect ZeroIndirect()
+ {
+ UnityIndirect ind;
+ ind.diffuse = 0;
+ ind.specular = 0;
+ return ind;
+ }
+
+ // From unity just putting it here in case I want to mod it
+ half4 poiRealisticSpecular(half3 diffColor, half3 specColor, half oneMinusReflectivity, half smoothness,
+ float3 normal, float3 viewDir,
+ UnityLight light, UnityIndirect gi)
+ {
+ float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
+ float3 halfDir = Unity_SafeNormalize(float3(light.dir) + viewDir);
+
+ // NdotV should not be negative for visible pixels, but it can happen due to perspective projection and normal mapping
+ // In this case normal should be modified to become valid (i.e facing camera) and not cause weird artifacts.
+ // but this operation adds few ALU and users may not want it. Alternative is to simply take the abs of NdotV (less correct but works too).
+ // Following define allow to control this. Set it to 0 if ALU is critical on your platform.
+ // This correction is interesting for GGX with SmithJoint visibility function because artifacts are more visible in this case due to highlight edge of rough surface
+ // Edit: Disable this code by default for now as it is not compatible with two sided lighting used in SpeedTree.
+ #define UNITY_HANDLE_CORRECTLY_NEGATIVE_NDOTV 0
+
+ #if UNITY_HANDLE_CORRECTLY_NEGATIVE_NDOTV
+ // The amount we shift the normal toward the view vector is defined by the dot product.
+ half shiftAmount = dot(normal, viewDir);
+ normal = shiftAmount < 0.0f ? normal + viewDir * (-shiftAmount + 1e-5f): normal;
+ // A re-normalization should be applied here but as the shift is small we don't do it to save ALU.
+ //normal = normalize(normal);
+
+ float nv = saturate(dot(normal, viewDir)); // TODO: this saturate should no be necessary here
+ #else
+ half nv = abs(dot(normal, viewDir)); // This abs allow to limit artifact
+ #endif
+
+ float nl = saturate(dot(normal, light.dir));
+ float nh = saturate(dot(normal, halfDir));
+
+ half lv = saturate(dot(light.dir, viewDir));
+ half lh = saturate(dot(light.dir, halfDir));
+
+ // Diffuse term
+ half diffuseTerm = DisneyDiffuse(nv, nl, lh, perceptualRoughness) * nl;
+
+ // Specular term
+ // HACK: theoretically we should divide diffuseTerm by Pi and not multiply specularTerm!
+ // BUT 1) that will make shader look significantly darker than Legacy ones
+ // and 2) on engine side "Non-important" lights have to be divided by Pi too in cases when they are injected into ambient SH
+ float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
+
+ // GGX with roughtness to 0 would mean no specular at all, using max(roughness, 0.002) here to match HDrenderloop roughtness remapping.
+ roughness = max(roughness, 0.002);
+ float V = SmithJointGGXVisibilityTerm(nl, nv, roughness);
+ float D = GGXTerm(nh, roughness);
+
+ float specularTerm = V * D * UNITY_PI; // Torrance-Sparrow model, Fresnel is applied later
+
+ #ifdef UNITY_COLORSPACE_GAMMA
+ specularTerm = sqrt(max(1e-4h, specularTerm));
+ #endif
+
+ // specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
+ specularTerm = max(0, specularTerm * nl);
+ #if defined(_SPECULARHIGHLIGHTS_OFF)
+ specularTerm = 0.0;
+ #endif
+
+ // surfaceReduction = Int D(NdotH) * NdotH * Id(NdotL>0) dH = 1/(roughness^2+1)
+ half surfaceReduction;
+ #ifdef UNITY_COLORSPACE_GAMMA
+ surfaceReduction = 1.0 - 0.28 * roughness * perceptualRoughness; // 1-0.28*x^3 as approximation for (1/(x^4+1))^(1/2.2) on the domain [0;1]
+ #else
+ surfaceReduction = 1.0 / (roughness * roughness + 1.0); // fade \in [0.5;1]
+ #endif
+
+ // To provide true Lambert lighting, we need to be able to kill specular completely.
+ specularTerm *= any(specColor) ? 1.0: 0.0;
+
+ half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
+ half3 color = diffColor * (gi.diffuse + light.color * diffuseTerm)
+ + specularTerm * light.color * FresnelTerm(specColor, lh)
+ + surfaceReduction * gi.specular * FresnelLerp(specColor, grazingTerm, nv);
+
+ return half4(color, 1);
+ }
+
+ void calculateRealisticSpecular(float3 normal, float4 albedo, float3 viewDir, float2 uv)
+ {
+ half4 spec = UNITY_SAMPLE_TEX2D_SAMPLER(_SpecularMap, _MainTex, TRANSFORM_TEX(uv, _SpecularMap));
+
+ half oneMinusReflectivity;
+
+ UnityLight unityLight;
+ unityLight.color = poiLight.color;
+ unityLight.dir = poiLight.direction;
+ unityLight.ndotl = poiLight.nDotL;
+
+ UNITY_BRANCH
+ if(_SmoothnessFrom == 0)
+ {
+ half3 diffColor = EnergyConservationBetweenDiffuseAndSpecular(albedo, spec.rgb * _SpecularTint.rgb, /*out*/ oneMinusReflectivity);
+ finalSpecular = poiRealisticSpecular(diffColor, spec.rgb, oneMinusReflectivity, spec.a * _SpecularSmoothness, normal, viewDir, unityLight, ZeroIndirect());
+ }
+ else
+ {
+ half3 diffColor = EnergyConservationBetweenDiffuseAndSpecular(albedo, _SpecularTint.rgb, /*out*/ oneMinusReflectivity);
+ float smoothness = max (max (spec.r, spec.g), spec.b);
+ finalSpecular = poiRealisticSpecular(diffColor, 1, oneMinusReflectivity, smoothness * _SpecularSmoothness, normal, viewDir, unityLight, ZeroIndirect());
+ }
+ }
+
+ void calculateToonSpecular(float3 normal, float4 albedo, float3 viewDir, float2 uv)
+ {
+ finalSpecular = 1;
+ calculateRealisticSpecular(normal, albedo, viewDir, uv);
+ float specIntensity = dot(finalSpecular.rgb, grayscale_for_light());
+ finalSpecular.rgb = smoothstep(0.99,1, specIntensity) * poiLight.color.rgb * poiLight.attenuation;
+ }
+
+ void calculateSpecular(float3 normal, float4 albedo, float3 viewDir, float2 uv)
+ {
+ highTexture = UNITY_SAMPLE_TEX2D_SAMPLER(_SpecularHighTexture, _MainTex, TRANSFORM_TEX(uv, _SpecularHighTexture));
+
+ UNITY_BRANCH
+ if (_SpecularType == 0) // Off
+ {
+ return;
+ }
+ else if (_SpecularType == 1) // Realistic
+ {
+ calculateRealisticSpecular(normal, albedo, viewDir, uv);
+ finalSpecular *= poiLight.attenuation;
+ }
+ else if (_SpecularType == 2) // Toon
+ {
+ calculateToonSpecular(normal, albedo, viewDir, uv);
+ }
+ else if (_SpecularType == 4) // anisotropic
+ {
+ return;
+ }
+ }
+
+ void applySpecular(inout float4 finalColor)
+ {
+ if(_SpecularColorFrom == 0)
+ {
+ finalColor.rgb += finalSpecular.rgb * _SpecularTint.rgb;
+ }
+ else
+ {
+ float specIntensity = max (max (finalSpecular.r, finalSpecular.g), finalSpecular.b);
+ finalColor.rgb += lerp(0, highTexture.rgb, saturate(specIntensity)) * _SpecularTint.rgb;
+ }
+ }
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSpecular.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSpecular.cginc.meta
new file mode 100644
index 00000000..f3eddf8a
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSpecular.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7d524a9f958280e4ca1b5f64f8b1e50b
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSubsurfaceScattering.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSubsurfaceScattering.cginc
new file mode 100644
index 00000000..58cf74a0
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSubsurfaceScattering.cginc
@@ -0,0 +1,30 @@
+#ifndef SUBSURFACE
+ #define SUBSURFACE
+
+ float _SSSThicknessMod;
+ float _SSSStrength;
+ float _SSSPower;
+ float _SSSDistortion;
+ float4 _SSSColor;
+
+ UNITY_DECLARE_TEX2D_NOSAMPLER(_SSSThicknessMap); float4 _SSSThicknessMap_ST;
+
+ float3 finalSSS;
+
+ void calculateSubsurfaceScattering(v2f i, float3 viewDir)
+ {
+ float SSS = 1 - UNITY_SAMPLE_TEX2D_SAMPLER(_SSSThicknessMap, _MainTex, TRANSFORM_TEX(i.uv, _SSSThicknessMap));
+
+ half3 vLTLight = poiLight.direction + baseNormal * _SSSDistortion;
+ half flTDot = pow(saturate(dot(viewDir, -vLTLight)), _SSSPower) * _SSSStrength;
+ half3 fLT = poiLight.attenuation * (flTDot) * saturate(SSS + -1 * _SSSThicknessMod);
+
+ finalSSS = fLT;
+ }
+
+ void applySubsurfaceScattering(inout float4 finalColor)
+ {
+ finalColor.rgb += finalSSS * poiLight.color * albedo * _SSSColor;
+ }
+
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSubsurfaceScattering.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSubsurfaceScattering.cginc.meta
new file mode 100644
index 00000000..2910fa3c
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiSubsurfaceScattering.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 652e127dbbf09f8439c062ffcfd431b4
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiTextureBlending.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiTextureBlending.cginc
new file mode 100644
index 00000000..cf9d199a
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiTextureBlending.cginc
@@ -0,0 +1,33 @@
+#ifndef TEXTURE_BLENDING
+ #define TEXTURE_BLENDING
+
+ int _Blend;
+ float4 _BlendTextureColor;
+ sampler2D _BlendTexture; float4 _BlendTexture_ST;
+ sampler2D _BlendNoiseTexture; float4 _BlendNoiseTexture_ST;
+ float _BlendAlpha;
+ float _BlendTiling;
+ float _AutoBlend;
+ float _AutoBlendSpeed;
+ float _AutoBlendDelay;
+
+ float blendAlpha = 0;
+
+ void calculateTextureBlending(float blendAlpha, inout float4 mainTexture, inout float4 diffuse, float2 uv)
+ {
+ UNITY_BRANCH
+ if (_Blend != 0)
+ {
+ float blendNoise = tex2D(_BlendNoiseTexture, TRANSFORM_TEX(uv, _BlendNoiseTexture));
+ if(_AutoBlend > 0)
+ {
+ blendAlpha = (clamp(sin(_Time.y * _AutoBlendSpeed / _AutoBlendDelay) * (_AutoBlendDelay + 1), -1, 1) + 1) / 2;
+ }
+ blendAlpha = lerp(saturate((blendNoise - 1) + blendAlpha * 2), step(blendAlpha * 1.001, blendNoise), _Blend - 1);
+
+ float4 blendCol = tex2D(_BlendTexture, TRANSFORM_TEX(uv, _BlendTexture)) * _BlendTextureColor;
+ diffuse = lerp(diffuse, blendCol, blendAlpha);
+ mainTexture.a = lerp(mainTexture.a, blendCol.a, blendAlpha);
+ }
+ }
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiTextureBlending.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiTextureBlending.cginc.meta
new file mode 100644
index 00000000..a0f15399
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiTextureBlending.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d23c5fcad4c581c47ad9c14ea07c3ab1
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiVert.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiVert.cginc
new file mode 100644
index 00000000..6fe6dde6
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiVert.cginc
@@ -0,0 +1,32 @@
+#ifndef POIVERT
+ #define POIVERT
+ v2f vert(appdata v)
+ {
+ v2f o;
+ UNITY_SETUP_INSTANCE_ID(v);
+ UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
+ UNITY_TRANSFER_INSTANCE_ID(v, o);
+
+ #ifdef FUN
+ applyFun(v.vertex);
+ #endif
+
+ TANGENT_SPACE_ROTATION;
+ o.localPos = v.vertex;
+ o.pos = UnityObjectToClipPos(o.localPos);
+ //o.screenPos = ComputeScreenPos(o.pos);
+ o.worldPos = mul(unity_ObjectToWorld, o.localPos);
+ o.uv = v.texcoord.xy + _GlobalPanSpeed.xy * _Time.y;
+ 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
+ UNITY_TRANSFER_SHADOW(o, o.uv);
+ UNITY_TRANSFER_FOG(o, o.pos);
+ o.vertexId = v.vertexId;
+ return o;
+ }
+#endif \ No newline at end of file
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiVert.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiVert.cginc.meta
new file mode 100644
index 00000000..3e338521
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/PoiVert.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ff346a2a2e9500945a02a9c50e8feccf
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/Poicludes.cginc b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/Poicludes.cginc
new file mode 100644
index 00000000..0dfa5e24
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/Poicludes.cginc
@@ -0,0 +1,46 @@
+#ifndef POICLUDES
+ #define POICLUDES
+
+ #include "PoiData.cginc"
+ #include "UnityCG.cginc"
+ #include "Lighting.cginc"
+ #include "UnityPBSLighting.cginc"
+ #include "AutoLight.cginc"
+
+ //Structs
+ struct appdata
+ {
+ float4 vertex: POSITION;
+ float3 normal: NORMAL;
+ float4 tangent: TANGENT;
+ float2 texcoord: TEXCOORD0;
+ float2 texcoord1: TEXCOORD1;
+ uint vertexId : SV_VertexID;
+ UNITY_VERTEX_INPUT_INSTANCE_ID
+ };
+
+ struct v2f
+ {
+ 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;
+ UNITY_VERTEX_INPUT_INSTANCE_ID
+ UNITY_VERTEX_OUTPUT_STEREO
+ UNITY_SHADOW_COORDS(7)
+ UNITY_FOG_COORDS(8)
+ uint vertexId: TEXCOORD9;
+ };
+
+ static PoiLighting poiLight;
+ float3 baseNormal;
+ #define pi float(3.14159265359)
+
+#endif
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/Poicludes.cginc.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/Poicludes.cginc.meta
new file mode 100644
index 00000000..4c6f3622
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Includes/Poicludes.cginc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1477de18f5f465643b94da7909775248
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader.meta
new file mode 100644
index 00000000..3e9aa553
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 69844908da5c4324d91145e259b408d3
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/Cubed.mat b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/Cubed.mat
new file mode 100644
index 00000000..0eac8493
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/Cubed.mat
@@ -0,0 +1,831 @@
+%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: Cubed
+ m_Shader: {fileID: 4800000, guid: cd0442380db86bb4783e70d0dd6a7e96, type: 3}
+ m_ShaderKeywords: _NORMALMAP
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _AOMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _AdditiveRamp:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _AlphaMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _AnisoTangentMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BackTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BlendNoiseTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BlendTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BulgeMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ClearCoatCubeMap:
+ m_Texture: {fileID: 8900000, guid: 1f79f71b84fc2844bb81e9ae4f5bc384, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ClearCoatMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ClearCoatSmoothnessMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _CubeMap:
+ m_Texture: {fileID: 8900000, guid: 1f79f71b84fc2844bb81e9ae4f5bc384, 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}
+ - _DetailNormalMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DissolveDetailNoise:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DissolveEdgeGradient:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DissolveMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DissolveNoiseTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DissolveToTexture:
+ 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}
+ - _FlipbookTexArray:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _FlipbookTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _FrontTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _FurHeightMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _FurMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _FurTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _GradientBack:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _GradientFront:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _HighlightMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _LightingShadowMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _LineworkMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainFadeTexture:
+ 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}
+ - _Matcap2:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Matcap2Mask:
+ 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}
+ - _MatcapMask:
+ 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}
+ - _MetallicMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MirrorTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NameTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NoiseBack:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NoiseFront:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NoiseTexture:
+ 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}
+ - _PanoCubeMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _PanoMapTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _PanosphereTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxHeightMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxInternalMap:
+ 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}
+ - _ParticleFlipbookTexArray:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParticleMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParticleStartColorGradient:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParticleTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Ramp:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _RimEnviroMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _RimMask:
+ m_Texture: {fileID: 0}
+ 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}
+ - _RimWidthNoiseTexture:
+ 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}
+ - _SSSThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SmoothnessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SmoothnessMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecularHighTexture:
+ 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}
+ - _SpecularMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ToonRamp:
+ m_Texture: {fileID: 2800000, guid: 61bd594533da4fc42bd46ef93ba5a4f6, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _UnderWaveTexture:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ 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:
+ - DSGI: 0
+ - Instancing: 0
+ - LightmapFlags: 0
+ - _AOStrength: 1
+ - _AddMatcap: 0
+ - _AdditiveClearCoat: 0
+ - _AdditiveOffset: 0
+ - _AdditiveSoftness: 0.005
+ - _AngleCompareTo: 0
+ - _AngleMinAlpha: 0
+ - _AngleType: 0
+ - _AnisoSpec1Alpha: 1
+ - _AnisoSpec2Alpha: 1
+ - _AnisoUseTangentMap: 0
+ - _AoRampMax: 1
+ - _AoRampMin: 0
+ - _AssemblyMode: 0
+ - _AttenuationMultiplier: 0
+ - _AutoBlend: 0
+ - _AutoBlendDelay: 2
+ - _AutoBlendSpeed: 2
+ - _BackEmission: 0
+ - _BackGradientMod: 0
+ - _BackgroundEmission: 0
+ - _BackgroundGradientMax: 0.4
+ - _BackgroundGradientMin: 0.25
+ - _Blend: 0
+ - _BlendAlpha: 0
+ - _BlendBack: 1
+ - _BlendFront: 1
+ - _BuldgeFadeLength: 0.02
+ - _BuldgeHeight: 0.02
+ - _BumpMapUV: 0
+ - _BumpScale: 1
+ - _CameraAngleMax: 90
+ - _CameraAngleMin: 45
+ - _ClearCoat: 1
+ - _ClearCoatInvertSmoothness: 0
+ - _ClearCoatNormalToUse: 0
+ - _ClearCoatSampleWorld: 0
+ - _ClearCoatSmoothness: 0
+ - _Clip: 0.5
+ - _ColorOverLifeSpeed: 1
+ - _ColorOverLifetime: 0
+ - _ContinuousDissolve: 0
+ - _CubeGradientDebug: 0
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DebugCameraData: 0
+ - _DebugDisplayDebug: 0
+ - _DebugLightingData: 0
+ - _DebugMeshData: 0
+ - _DebugSpecularData: 0
+ - _DepthGlowEmission: 3
+ - _Desaturation: 0
+ - _DestinationBlend: 10
+ - _DetailBrightness: 1
+ - _DetailNormalMapScale: 1
+ - _DetailNormalUV: 0
+ - _DetailTexIntensity: 1
+ - _DetailTexUV: 0
+ - _DissolveAlpha: 0
+ - _DissolveDetailStrength: 0.1
+ - _DissolveEdgeEmission: 0
+ - _DissolveEdgeHardness: 0.5
+ - _DissolveEdgeWidth: 0.025
+ - _DissolveInvertDetailNoise: 0
+ - _DissolveInvertNoise: 0
+ - _DissolveP2PEdgeLength: 0.1
+ - _DissolveP2PWorldLocal: 0
+ - _DissolveSideEmission: 0
+ - _DissolveSideFlipbook: 0
+ - _DissolveSideMatcap: 0
+ - _DissolveSideMetallic: 0
+ - _DissolveSidePanosphere: 0
+ - _DissolveSideRim: 0
+ - _DissolveSideSpecular: 0
+ - _DissolveSideSubsurface: 0
+ - _DissolveToEmissionStrength: 0
+ - _DissolveType: 0
+ - _DstBlend: 0
+ - _EmissionCenterOutEnabled: 0
+ - _EmissionCenterOutSpeed: 5
+ - _EmissionStrength: 0
+ - _EmissionUV: 0
+ - _EmissiveBlink_Max: 1
+ - _EmissiveBlink_Min: 1
+ - _EmissiveBlink_Velocity: 4
+ - _EmissiveScroll_Interval: 20
+ - _EmissiveScroll_Velocity: 10
+ - _EmissiveScroll_Width: 10
+ - _EnableClearCoat: 0
+ - _EnableDissolve: 0
+ - _EnableEmission: 0
+ - _EnableEnvironmentalRim: 0
+ - _EnableFlipbook: 0
+ - _EnableFun: 0
+ - _EnableGITDEmission: 0
+ - _EnableLighting: 1
+ - _EnableMatcap: 0
+ - _EnableMetallic: 0
+ - _EnableMirrorOptions: 0
+ - _EnableMirrorTexture: 0
+ - _EnableParticleFlipbook: 0
+ - _EnableRandom: 0
+ - _EnableRimLighting: 0
+ - _EnableSSS: 0
+ - _EnableSpecular: 0
+ - _ExplodeFadeDistance: 0.3
+ - _ExplodeMode: 0
+ - _FadeLength: 0.02
+ - _FlatOrFullAmbientLighting: 0
+ - _FlipbookAdd: 0
+ - _FlipbookColumns: 1
+ - _FlipbookCurrentFrame: -1
+ - _FlipbookEmissionStrength: 0
+ - _FlipbookFPS: 30
+ - _FlipbookMultiply: 0
+ - _FlipbookReplace: 0
+ - _FlipbookRotation: 0
+ - _FlipbookRows: 1
+ - _FlipbookTiled: 0
+ - _FlipbookTotalFrames: 1
+ - _FlipbookUV: 0
+ - _ForceLightDirection: 0
+ - _ForceOpaque: 1
+ - _ForceShadowStrength: 0
+ - _ForegroundGradientMax: 0.25
+ - _ForegroundGradientMin: 0.2
+ - _Fresnel: 5
+ - _FrontEmission: 0
+ - _FrontGradientMod: 0
+ - _FurAO: 0.5
+ - _FurDebug: 0
+ - _FurGravityStrength: 0
+ - _FurHeightMapMax: 1
+ - _FurHeightMapMin: 0
+ - _FurLayers: 20
+ - _FurLength: 0.025
+ - _FurMaxDistance: 10
+ - _FurMinDistance: 2
+ - _GIEmissionMultiplier: 1
+ - _GITDEMaxEmissionMultiplier: 0
+ - _GITDEMaxLight: 1
+ - _GITDEMinEmissionMultiplier: 1
+ - _GITDEMinLight: 0
+ - _GITDEWorldOrMesh: 0
+ - _GlitchTime: 1
+ - _Gloss: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _HardSpecular: 0
+ - _HeightThreshold: 0.98
+ - _HighlightEmission: 0
+ - _HoloCenterTransparency: 0.2
+ - _HoloEmission: 0.5
+ - _HoloLineDensity: 500
+ - _HoloPanSpeed: 5
+ - _HoloTransparency: 0.75
+ - _IOR: 1.45
+ - _IndirectContribution: 0
+ - _InvertSmoothness: 0
+ - _LightingAOUV: 0
+ - _LightingIndirectContribution: 0.25
+ - _LightingMinLightBrightness: 0
+ - _LightingStandardControlsToon: 0
+ - _LightingStandardSmoothness: 0
+ - _LightingType: 0
+ - _LineworkEmission: 0
+ - _Lit: 0
+ - _MainAlphaToCoverage: 1
+ - _MainEmissionStrength: 0
+ - _MainMinAlpha: 0
+ - _MainMipScale: 0.25
+ - _MainTextureUV: 0
+ - _Matcap2Add: 0
+ - _Matcap2Border: 0.43
+ - _Matcap2Enable: 0
+ - _Matcap2Intensity: 1
+ - _Matcap2LightMask: 0
+ - _Matcap2Multiply: 0
+ - _Matcap2Replace: 0
+ - _MatcapAdd: 0
+ - _MatcapBorder: 0.43
+ - _MatcapBrightness: 1
+ - _MatcapEnable: 0
+ - _MatcapIntensity: 1
+ - _MatcapLightMask: 0
+ - _MatcapMultiply: 0
+ - _MatcapReplace: 1
+ - _MatcapStrength: 1
+ - _MaxBrightness: 1
+ - _MaxDirectionalIntensity: 1
+ - _Metallic: 0
+ - _MinBrightness: 0
+ - _Mirror: 0
+ - _Mode: 0
+ - _ModelAngleMax: 90
+ - _ModelAngleMin: 45
+ - _MultiplyMatcap: 0
+ - _OcclusionStrength: 1
+ - _OutlineStencilCompareFunction: 8
+ - _OutlineStencilFailOp: 0
+ - _OutlineStencilPassOp: 0
+ - _OutlineStencilReadMaskRef: 0
+ - _OutlineStencilRef: 0
+ - _OutlineStencilWriteMaskRef: 0
+ - _OutlineStencilZFailOp: 0
+ - _PanoBlend: 0
+ - _PanoCubeMapToggle: 0
+ - _PanoEmission: 0
+ - _PanoToggle: 0
+ - _Parallax: 0.02
+ - _ParallaxBias: 0.42
+ - _ParallaxHeightIterations: 1
+ - _ParallaxHeightMapEnabled: 0
+ - _ParallaxInternalHeightFromAlpha: 0
+ - _ParallaxInternalHeightmapMode: 0
+ - _ParallaxInternalIterations: 1
+ - _ParallaxInternalMapEnabled: 0
+ - _ParallaxInternalMaxDepth: 1
+ - _ParallaxInternalMaxFade: 0
+ - _ParallaxInternalMinDepth: 0
+ - _ParallaxInternalMinFade: 1
+ - _ParallaxMap: 0
+ - _ParallaxStrength: 0
+ - _ParticleAlphaCutoff: 0
+ - _ParticleFlipParticlesGoingInward: 0
+ - _ParticleFlipbookCurrentFrame: -1
+ - _ParticleFlipbookFPS: 30
+ - _ParticleFlipbookTotalFrames: 1
+ - _ParticleLinearEndAlpha: 1
+ - _ParticleLinearEndSizeMin: 0
+ - _ParticleLinearEndsizeMax: 0
+ - _ParticleLinearNormalRange: -1
+ - _ParticleLinearSpeedMax: 10
+ - _ParticleLinearSpeedMin: 0.1
+ - _ParticleLinearStartAlpha: 1
+ - _ParticleLinearStartSizeMax: 0.02
+ - _ParticleLinearStartSizeMin: 0.02
+ - _ParticleLit: 0
+ - _ParticleMinRenderDistance: 0.2
+ - _ParticleMovementMode: 0
+ - _ParticlePerCMSquared: 1
+ - _ParticleRandomRotation: 0
+ - _ParticleRandomTimeOffset: 0
+ - _ParticleRotation: 0
+ - _ParticleScaleMax: 0.02
+ - _ParticleScaleMin: 0.01
+ - _ParticleSphericalMaxRadius: 0.2
+ - _ParticleSphericalMaxSpeed: 5
+ - _ParticleSphericalMinRadius: 0
+ - _ParticleSphericalMinSpeed: -5
+ - _ParticleStencilCompareFunction: 8
+ - _ParticleStencilFailOp: 0
+ - _ParticleStencilPassOp: 0
+ - _ParticleStencilRef: 0
+ - _ParticleStencilZFailOp: 0
+ - _Pieces: 20
+ - _PurelyAdditive: 0
+ - _RefractionChromaticAberattion: 0
+ - _RefractionIndex: 1.333333
+ - _ReplaceWithMatcap: 0
+ - _RimBrighten: 0
+ - _RimEnviroBlur: 0.7
+ - _RimEnviroMinBrightness: 0
+ - _RimEnviroSharpness: 0
+ - _RimEnviroWidth: 0.45
+ - _RimLightColorBias: 0
+ - _RimLightingInvert: 0
+ - _RimSharpness: 0.25
+ - _RimStrength: 0
+ - _RimWidth: 0.8
+ - _RimWidthNoiseStrength: 0.1
+ - _Roughness: 0
+ - _SSSAttenuation: 0
+ - _SSSDistortion: 0
+ - _SSSPower: 1
+ - _SSSSCale: 0
+ - _SSSThicknessMod: 0
+ - _SampleWorld: 0
+ - _Saturation: 0
+ - _ScrollingEmission: 0
+ - _ShadowMix: 0
+ - _ShadowMixThreshold: 0.5
+ - _ShadowMixWidthMod: 0.5
+ - _ShadowOffset: 0
+ - _ShadowStrength: 1
+ - _ShowUnderWave: 1
+ - _Smoothness: 0
+ - _SmoothnessFrom: 1
+ - _SmoothnessTextureChannel: 0
+ - _SourceBlend: 5
+ - _SpawnAlpha: 0.7
+ - _Spec2Smoothness: 0
+ - _SpecWhatTangent: 0
+ - _SpecularBias: 0
+ - _SpecularColorFrom: 0
+ - _SpecularHighlights: 1
+ - _SpecularInvertSmoothness: 0
+ - _SpecularMinLightBrightness: 0
+ - _SpecularMixAlbedoIntoTint: 0
+ - _SpecularSize: 0.005
+ - _SpecularSmoothness: 0
+ - _SpecularStrength: 0
+ - _SpecularType: 0
+ - _SrcBlend: 1
+ - _StencilCompareFunction: 8
+ - _StencilFailOp: 0
+ - _StencilPassOp: 0
+ - _StencilReadMaskRef: 0
+ - _StencilRef: 0
+ - _StencilWriteMaskRef: 0
+ - _StencilZFailOp: 0
+ - _TriToCube: 1
+ - _UVSec: 0
+ - _UnderWaveEmission: 2
+ - _VoronoiCells: 3
+ - _VoronoiSpeed: 0.33
+ - _WaveEmission: 2
+ - _WaveHeight: 0.01
+ - _ZBias: 0
+ - _ZTest: 4
+ - _ZWrite: 1
+ - footer_discord: 0
+ - footer_github: 0
+ - footer_patreon: 0
+ - footer_twitter: 0
+ - footer_youtube: 0
+ - m_CubedOptions: 1
+ - m_HologramOptions: 0
+ - m_RandomOptions: 0
+ - m_RefractionOptions: 0
+ - m_StencilPassOptions: 0
+ - m_TouchOptions: 0
+ - m_bakedLighting: 0
+ - m_debugOptions: 0
+ - m_dissolve: 0
+ - m_emissionOptions: 0
+ - m_end_Alpha: 0
+ - m_end_Angle: 0
+ - m_end_Anisotropic: 0
+ - m_end_CenterOutEmission: 0
+ - m_end_Depth: 0
+ - m_end_DetailOptions: 0
+ - m_end_Fade: 0
+ - m_end_LinearMotion: 0
+ - m_end_Matcap2: 0
+ - m_end_OutlineStencil: 0
+ - m_end_ParticleFlipbook: 0
+ - m_end_ParticleStencilPassOptions: 0
+ - m_end_ShadowMix: 0
+ - m_end_SpecularToon: 0
+ - m_end_blinkingEmissionOptions: 0
+ - m_end_clearCoat: 0
+ - m_end_constructedMode: 0
+ - m_end_explodeMode: 0
+ - m_end_furAdvanced: 0
+ - m_end_glowInDarkEmissionOptions: 0
+ - m_end_lightingAdvanced: 0
+ - m_end_lightingBeta: 0
+ - m_end_lightingStandard: 0
+ - m_end_mainAdvanced: 0
+ - m_end_manualFlipbookControl: 0
+ - m_end_manualParticleFlipbookControl: 0
+ - m_end_parallaxAdvanced: 0
+ - m_end_parallaxHeightmap: 0
+ - m_end_parallaxInternal: 0
+ - m_end_pointToPoint: 0
+ - m_end_reflectionRim: 0
+ - m_end_rimWidthNoise: 0
+ - m_end_scrollingEmissionOptions: 0
+ - m_end_sphericalMotion: 0
+ - m_fakeLightingOptions: 0
+ - m_flipBook: 0
+ - m_funOptions: 0
+ - m_furOptions: 0
+ - m_lavaOptions: 0
+ - m_mainOptions: 0
+ - m_matcapOptions: 0
+ - m_metallicOptions: 0
+ - m_mirrorOptions: 0
+ - m_miscOptions: 0
+ - m_panosphereOptions: 0
+ - m_parallaxMap: 0
+ - m_particleOptions: 0
+ - m_renderingOptions: 0
+ - m_rimLightOptions: 0
+ - m_shatterWave: 0
+ - m_specularHighlightsOptions: 0
+ - m_start_Alpha: 0
+ - m_start_Angle: 0
+ - m_start_Anisotropic: 0
+ - m_start_CenterOutEmission: 0
+ - m_start_Depth: 0
+ - m_start_DetailOptions: 0
+ - m_start_Fade: 0
+ - m_start_LinearMotion: 0
+ - m_start_Matcap2: 0
+ - m_start_OutlineStencil: 0
+ - m_start_ParticleFlipbook: 0
+ - m_start_ParticleStencilPassOptions: 0
+ - m_start_ShadowMix: 0
+ - m_start_SpecularToon: 0
+ - m_start_blinkingEmissionOptions: 0
+ - m_start_clearCoat: 0
+ - m_start_constructedMode: 0
+ - m_start_explodeMode: 0
+ - m_start_furAdvanced: 0
+ - m_start_glowInDarkEmissionOptions: 0
+ - m_start_lightingAdvanced: 0
+ - m_start_lightingBeta: 0
+ - m_start_lightingStandard: 0
+ - m_start_mainAdvanced: 0
+ - m_start_manualFlipbookControl: 0
+ - m_start_manualParticleFlipbookControl: 0
+ - m_start_parallaxAdvanced: 0
+ - m_start_parallaxHeightmap: 0
+ - m_start_parallaxInternal: 0
+ - m_start_pointToPoint: 0
+ - m_start_reflectionRim: 0
+ - m_start_rimWidthNoise: 0
+ - m_start_scrollingEmissionOptions: 0
+ - m_start_sphericalMotion: 0
+ - m_subsurfaceOptions: 0
+ - m_textureBlending: 0
+ - shader_is_using_thry_editor: 69.12
+ - shader_master_label: 0
+ - shader_presets: 0
+ - shader_properties_label_file: 0
+ m_Colors:
+ - _AngleForwardDirection: {r: 0, g: 0, b: 1, a: 0}
+ - _AssemblyBegin: {r: 0, g: -1, b: 0, a: 0}
+ - _AssemblyEnd: {r: 0, g: 1, b: 0, a: 0}
+ - _BackTexturePan: {r: 0, g: 0, b: 0, a: 0}
+ - _BackgroundColor: {r: 1, g: 0.09999997, b: 0.09999997, a: 1}
+ - _BlendTextureColor: {r: 1, g: 1, b: 1, a: 1}
+ - _ClearCoatTint: {r: 1, g: 1, b: 1, a: 1}
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _DepthGlowColor: {r: 1, g: 1, b: 1, a: 1}
+ - _DetailTexturePan: {r: 0, g: 0, b: 0, a: 0}
+ - _DetailTint: {r: 1, g: 1, b: 1, a: 1}
+ - _DissolveEdgeColor: {r: 1, g: 1, b: 1, a: 1}
+ - _DissolveEndPoint: {r: 0, g: 1, b: 0, a: 0}
+ - _DissolvePan: {r: 0, g: 0, b: 0, a: 0}
+ - _DissolveStartPoint: {r: 0, g: -1, b: 0, a: 0}
+ - _DissolveTextureColor: {r: 1, g: 1, b: 1, a: 1}
+ - _DissolveToPanning: {r: 0, g: 0, b: 0, a: 0}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _EmissionPan: {r: 0, g: 0, b: 0, a: 0}
+ - _EmissionScrollSpeed: {r: 0, g: 0, b: 0, a: 0}
+ - _EmissiveScroll_Direction: {r: 0, g: -10, b: 0, a: 0}
+ - _FlipbookColor: {r: 1, g: 1, b: 1, a: 1}
+ - _FlipbookScaleOffset: {r: 1, g: 1, b: 0, a: 0}
+ - _ForegroundColor: {r: 1, g: 1, b: 1, a: 1}
+ - _FrontTexturePan: {r: 0, g: 0, b: 0, a: 0}
+ - _FurColor: {r: 1, g: 1, b: 1, a: 1}
+ - _GlobalPanSpeed: {r: 0, g: 0, b: 0, a: 0}
+ - _GradientBackColor: {r: 1, g: 1, b: 1, a: 1}
+ - _GradientFrontColor: {r: 1, g: 1, b: 1, a: 1}
+ - _HighlightColor: {r: 1, g: 1, b: 1, a: 1}
+ - _HoloLineWidth: {r: 0, g: 0.5, b: 0, a: 0}
+ - _HoloPanDirection: {r: 0, g: 1, b: 0, a: 0}
+ - _HoloTint: {r: 0, g: 1, b: 1, a: 1}
+ - _LightDirection: {r: 0, g: 1, b: 0, a: 0}
+ - _LineworkColor: {r: 1, g: 1, b: 1, a: 1}
+ - _LocalSpawnOffset: {r: 0, g: 0, b: 0, a: 0}
+ - _MainDetailNormalPan: {r: 0, g: 0, b: 0, a: 0}
+ - _MainDistanceFade: {r: 0, g: 0, b: 0, a: 0}
+ - _MainNormalPan: {r: 0, g: 0, b: 0, a: 0}
+ - _Matcap2Color: {r: 1, g: 1, b: 1, a: 1}
+ - _MatcapColor: {r: 1, g: 1, b: 1, a: 1}
+ - _MetalReflectionTint: {r: 1, g: 1, b: 1, a: 1}
+ - _NameColor: {r: 0, g: 0, b: 0, a: 0}
+ - _NamePan: {r: 0.1, g: 0, b: 0, a: 0}
+ - _NoiseBackPanSpeed: {r: 0, g: 0, b: 0, a: 0}
+ - _NoiseFrontPanSpeed: {r: 0, g: 0, b: 0, a: 0}
+ - _NoisePan: {r: 0, g: 0.3, b: 0, a: 0}
+ - _PanosphereColor: {r: 1, g: 1, b: 1, a: 1}
+ - _PanospherePan: {r: 0, g: 0, b: 0, a: 0}
+ - _PanosphereScroll: {r: 0, g: 0, b: 0, a: 0}
+ - _ParallaxInternalMaxColor: {r: 1, g: 1, b: 1, a: 1}
+ - _ParallaxInternalMinColor: {r: 1, g: 1, b: 1, a: 1}
+ - _ParallaxInternalPanDepthSpeed: {r: 0, g: 0, b: 0, a: 0}
+ - _ParallaxInternalPanSpeed: {r: 0, g: 0, b: 0, a: 0}
+ - _ParticleColor: {r: 1, g: 1, b: 1, a: 1}
+ - _ParticleLinearEndOffsetMax: {r: -0.05, g: -0.05, b: -0.05, a: 0}
+ - _ParticleLinearEndOffsetMin: {r: 0.05, g: 0.05, b: 0.05, a: 0}
+ - _RimLightColor: {r: 1, g: 1, b: 1, a: 1}
+ - _RimTexPanSpeed: {r: 0, g: 0, b: 0, a: 0}
+ - _RimWidthNoisePan: {r: 0, g: 0, b: 0, a: 0}
+ - _SSSColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SpecularTint: {r: 1, g: 1, b: 1, a: 1}
+ - _SpecularToonInnerOuter: {r: 0.25, g: 0.3, b: 0, 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}
+ - _WorldSpawnOffset: {r: 0, g: 0, b: 0, a: 0}
+ - _underWaveColor: {r: 1, g: 1, b: 1, a: 1}
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/Cubed.mat.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/Cubed.mat.meta
new file mode 100644
index 00000000..e2b9ed0c
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/Cubed.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ff209eec2e436e048a20f736af35fb23
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/PoiyomiCubed.shader b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/PoiyomiCubed.shader
new file mode 100644
index 00000000..7b9924e4
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/PoiyomiCubed.shader
@@ -0,0 +1,259 @@
+Shader ".poiyomi/Patreon/Cubed"
+{
+ Properties
+ {
+ [HideInInspector] shader_is_using_thry_editor ("", Float) = 0
+ [HideInInspector] shader_master_label ("<color=#008080>Poiyomi³</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 ("Saturation", 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
+ _AlphaMask ("Alpha Mask", 2D) = "white" { }
+ _Clip ("Alpha Cuttoff", Range(0, 1.001)) = 0.5
+ [HideInInspector] m_start_mainAdvanced ("Advanced", Float) = 0
+ _GlobalPanSpeed ("Pan Speed XY", Vector) = (0, 0, 0, 0)
+ [Normal]_DetailNormalMap ("Detail Map", 2D) = "bump" { }
+ _DetailNormalMask ("Detail Mask", 2D) = "white" { }
+ _DetailNormalMapScale ("Detail Intensity", Range(0, 10)) = 1
+ [HideInInspector] m_end_mainAdvanced ("Advanced", Float) = 0
+
+ [HideInInspector] m_CubedOptions ("Cubed Options", Float) = 0
+ [Enum(Random, 0, Constructed, 1)] _AssemblyMode("Assembly Mode", Int) = 0
+ _TriToCube ("Tri to Cube", Range(0,1)) = 0
+ _SpawnAlpha ("Spawn Alpha", Range(0,1)) = 0
+ _LocalSpawnOffset ("Local Spawn Offset", Vector) = (0, 0, 0, 0)
+ _WorldSpawnOffset ("World Spawn Offset", Vector) = (0, 0, 0, 0)
+ _Pieces ("Pieces", Float) = 20
+ [HideInInspector] m_start_constructedMode ("Constructed Mode", Float) = 0
+ _AssemblyBegin ("Assembly Begin", Vector) = (0, -1, 0, 0)
+ _AssemblyEnd ("Assembly End", Vector) = (0, 1, 0, 0)
+ [Enum(Off, 0, On, 1)] _CubeGradientDebug("Debug View", Int) = 0
+ [HideInInspector] m_end_constructedMode ("Constructed Mode", Float) = 0
+ [HideInInspector] m_start_explodeMode ("Explode Mode", Float) = 0
+ [Enum(Off, 0, On, 1)] _ExplodeMode("Assembly Mode", Int) = 0
+ _ExplodeFadeDistance ("Explode Fade Distance", Float) = .3
+ [HideInInspector] m_end_explodeMode ("Explode Mode", Float) = 0
+
+ [HideInInspector] m_metallicOptions ("Metallic", Float) = 0
+ _CubeMap ("Baked CubeMap", Cube) = "" { }
+ [ToggleUI]_SampleWorld ("Force Baked Cubemap", Range(0, 1)) = 0
+ _PurelyAdditive ("Purely Additive", Range(0, 1)) = 0
+ _MetallicMap ("Metallic Map", 2D) = "white" { }
+ _Metallic ("Metallic", Range(0, 1)) = 0
+ _SmoothnessMap ("Smoothness Map", 2D) = "white" { }
+ [ToggleUI]_InvertSmoothness ("Invert Smoothness Map", Range(0, 1)) = 0
+ _Smoothness ("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
+ [Enum(Natural, 0, Controlled, 1)] _LightingType("Lighting Type", Int) = 0
+ [Gradient]_ToonRamp ("Lighting Ramp", 2D) = "white" { }
+ _ShadowStrength ("Shadow Strength", Range(0, 1)) = 1
+ _ShadowOffset ("Shadow Offset", Range(-1, 1)) = 0
+ _MinBrightness ("Min Brightness", Range(0, 1)) = 0
+ _MaxBrightness ("Max Brightness", Float) = 1
+ _AOMap ("AO Map", 2D) = "white" { }
+ _AOStrength ("AO Strength", Range(0, 1)) = 1
+ [HideInInspector] m_start_lightingAdvanced ("Advanced", Float) = 0
+ _IndirectContribution ("Indirect Contribution", Range(0, 1)) = 0
+ _AdditiveSoftness ("Additive Softness", Range(0, 0.5)) = 0.05
+ _AdditiveOffset ("Additive Offset", Range(-0.5, 0.5)) = 0
+ _AttenuationMultiplier ("Attenuation", Range(0, 1)) = 0
+ [HideInInspector] m_end_lightingAdvanced ("Advanced", Float) = 0
+
+ [HideInInspector] m_specularHighlightsOptions ("Specular Highlights", Float) = 0
+ [Enum(Off, 0, Realistic, 1, Toon, 2, soon.jpg, 3)] _SpecularType ("Specular Type", Int) = 0
+ _SpecularTint ("Specular Tint", Color) = (1, 1, 1, 1)
+ _SpecularSmoothness ("Smoothness", Range(0, 1)) = 0
+ _SpecularMap ("Specular Map", 2D) = "white" { }
+ [Enum(Alpha, 0, Grayscale, 1)] _SmoothnessFrom ("Smoothness From", Int) = 1
+ _SpecularHighTexture ("Specular High Tex", 2D) = "white" { }
+ [Enum(Lighting, 0, HighTexture, 1)] _SpecularColorFrom("Specular Color From", Int) = 0
+
+ [HideInInspector] m_subsurfaceOptions ("Subsurface Scattering", Float) = 0
+ _SSSColor ("Subsurface Color", Color) = (1, 1, 1, 1)
+ _SSSThicknessMap ("Thickness Map", 2D) = "black" { }
+ _SSSThicknessMod ("Thickness mod", Range(-1, 1)) = 0
+ _SSSStrength ("Attenuation", Range(0, 1)) = 0
+ _SSSPower ("Light Spread", Range(1, 100)) = 1
+ _SSSDistortion ("Light Distortion", Range(0, 1)) = 0
+
+ [HideInInspector] m_rimLightOptions ("Rim Lighting", Float) = 0
+ _RimLightColor ("Rim Color", Color) = (1, 1, 1, 1)
+ _RimWidth ("Rim Width", Range(0, 1)) = 0.8
+ _RimSharpness ("Rim Sharpness", Range(0, 1)) = .25
+ _RimStrength ("Rim Emission", Range(0, 20)) = 0
+ _RimLightColorBias ("Rim Color Bias", Range(0, 1)) = 0
+ _RimTex ("Rim Texture", 2D) = "white" { }
+ _RimMask ("Rim Mask", 2D) = "white" { }
+ _RimTexPanSpeed ("Rim Texture Pan Speed", Vector) = (0, 0, 0, 0)
+ [HideInInspector] m_start_ShadowMix ("Shadow Mix", Float) = 0
+ _ShadowMix ("Shadow Mix In", Range(0, 1)) = 0
+ _ShadowMixThreshold ("Shadow Mix Threshold", Range(0, 1)) = .5
+ _ShadowMixWidthMod ("Shadow Mix Width Mod", Range(0, 10)) = .5
+ [HideInInspector] m_end_ShadowMix ("Shadow Mix", Float) = 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_funOptions ("Fun", Float) = 0
+ [Enum(ShowInBoth, 0, ShowOnlyInMirror, 1, DontShowInMirror, 2)] _Mirror ("Show in mirror", Int) = 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
+ [Enum(Off, 0, On, 1)] _ZWrite ("ZWrite", Int) = 1
+
+ }
+
+ CustomEditor "Thry.ShaderEditor"
+ SubShader
+ {
+ Tags { "RenderType" = "Opaque" "Queue" = "Geometry" }
+
+ Pass
+ {
+ Name "MainPass"
+ Tags { "LightMode" = "ForwardBase" }
+ Stencil
+ {
+ Ref [_StencilRef]
+ ReadMask [_StencilReadMaskRef]
+ WriteMask [_StencilWriteMaskRef]
+ Ref [_StencilRef]
+ Comp [_StencilCompareFunction]
+ Pass [_StencilPassOp]
+ Fail [_StencilFailOp]
+ ZFail [_StencilZFailOp]
+ }
+ ZWrite [_ZWrite]
+ Cull [_Cull]
+ ZTest [_ZTest]
+ CGPROGRAM
+
+ #pragma target 5.0
+ #define FORWARD_BASE_PASS
+ #pragma multi_compile_instancing
+ #pragma multi_compile_fwdbase
+ #pragma fragmentoption ARB_precision_hint_fastest
+ #pragma multi_compile_fog
+ #pragma vertex vert
+ #pragma fragment frag
+ #pragma geometry geom
+ #include "../Includes/PoiDefaultPass.cginc"
+ ENDCG
+
+ }
+
+ Pass
+ {
+ Name "ForwardAddPass"
+ 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
+ #define FORWARD_ADD_PASS
+ #pragma multi_compile_instancing
+ #pragma multi_compile_fwdadd_fullshadows
+ #pragma vertex vert
+ #pragma fragment frag
+ #pragma geometry geom
+ #include "../Includes/PoiDefaultPass.cginc"
+ ENDCG
+
+ }
+ /*
+ Pass
+ {
+ Name "ShadowCasterPass"
+ 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
+ #define CUTOUT
+ #pragma multi_compile_instancing
+ #pragma vertex vertShadowCaster
+ #pragma fragment fragShadowCaster
+ #include "../Includes/PoiPassShadow.cginc"
+ ENDCG
+
+ }
+ */
+ }
+}
diff --git a/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/PoiyomiCubed.shader.meta b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/PoiyomiCubed.shader.meta
new file mode 100644
index 00000000..024e9a08
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed/Shader/PoiyomiCubed.shader.meta
@@ -0,0 +1,27 @@
+fileFormatVersion: 2
+guid: cd0442380db86bb4783e70d0dd6a7e96
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures:
+ - _MainTex: {instanceID: 0}
+ - _BumpMap: {instanceID: 0}
+ - _AlphaMask: {instanceID: 0}
+ - _DetailNormalMap: {instanceID: 0}
+ - _DetailNormalMask: {instanceID: 0}
+ - _CubeMap: {instanceID: 0}
+ - _MetallicMap: {instanceID: 0}
+ - _SmoothnessMap: {instanceID: 0}
+ - _Matcap: {instanceID: 0}
+ - _MatcapMap: {instanceID: 0}
+ - _EmissionMap: {instanceID: 0}
+ - _EmissionMask: {instanceID: 0}
+ - _ToonRamp: {fileID: 2800000, guid: 7744a2dff3641604fa8b6601a055824c, type: 3}
+ - _AOMap: {instanceID: 0}
+ - _SpecularMap: {instanceID: 0}
+ - _SpecularHighTexture: {instanceID: 0}
+ - _SSSThicknessMap: {instanceID: 0}
+ - _RimTex: {instanceID: 0}
+ - _RimMask: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: