diff options
Diffstat (limited to 'VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/Shaders/Patreon/VoxelCubed')
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: |