summaryrefslogtreecommitdiff
path: root/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources
diff options
context:
space:
mode:
Diffstat (limited to 'VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources')
-rw-r--r--VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi.meta8
-rw-r--r--VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/ModularShadersGeneratorStyle.uss26
-rw-r--r--VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/ModularShadersGeneratorStyle.uss.meta3
-rw-r--r--VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTexturePacker.shader169
-rw-r--r--VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTexturePacker.shader.meta9
-rw-r--r--VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTextureUnpacker.shader156
-rw-r--r--VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTextureUnpacker.shader.meta9
-rwxr-xr-xVRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link.pngbin0 -> 15756 bytes
-rw-r--r--VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link.png.meta99
-rwxr-xr-xVRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link_pro.pngbin0 -> 25238 bytes
-rw-r--r--VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link_pro.png.meta99
11 files changed, 578 insertions, 0 deletions
diff --git a/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi.meta b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi.meta
new file mode 100644
index 00000000..903cc2d6
--- /dev/null
+++ b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2526eb19e2b785f43934a75ebbdfb35e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/ModularShadersGeneratorStyle.uss b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/ModularShadersGeneratorStyle.uss
new file mode 100644
index 00000000..a1df90f1
--- /dev/null
+++ b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/ModularShadersGeneratorStyle.uss
@@ -0,0 +1,26 @@
+.error
+{
+ background-image: resource("CollabError");
+ margin-top: 2px;
+ margin-left: 6px;
+ height: 12px;
+ width: 12px;
+}
+
+.buttons-area
+{
+ flex-direction: row;
+ margin-bottom: 10px;
+}
+
+.folder-selector
+{
+ flex-direction: row;
+ margin-top: 10px;
+ margin-left: 4px;
+}
+
+ModularShadersGeneratorElement
+{
+ margin-left: 4px;
+} \ No newline at end of file
diff --git a/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/ModularShadersGeneratorStyle.uss.meta b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/ModularShadersGeneratorStyle.uss.meta
new file mode 100644
index 00000000..36d9b656
--- /dev/null
+++ b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/ModularShadersGeneratorStyle.uss.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a77a12c151c44847b8de5c6c7be71d8e
+timeCreated: 1638406657 \ No newline at end of file
diff --git a/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTexturePacker.shader b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTexturePacker.shader
new file mode 100644
index 00000000..2f366a9e
--- /dev/null
+++ b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTexturePacker.shader
@@ -0,0 +1,169 @@
+// Made with Amplify Shader Editor
+// Available at the Unity Asset Store - http://u3d.as/y3X
+Shader "Hidden/Poi/TexturePacker"
+{
+ Properties
+ {
+ _Invert_Red("Invert_Red", Float) = 0
+ _Invert_Green("Invert_Green", Float) = 0
+ _Invert_Blue("Invert_Blue", Float) = 0
+ _Invert_Alpha("Invert_Alpha", Float) = 0
+ _Red("Red", 2D) = "white" {}
+ _Green("Green", 2D) = "white" {}
+ _Blue("Blue", 2D) = "white" {}
+ _Alpha("Alpha", 2D) = "white" {}
+ [HideInInspector] _texcoord( "", 2D ) = "white" {}
+ }
+
+ SubShader
+ {
+ Tags { "RenderType"="Opaque" }
+ LOD 100
+ CGINCLUDE
+ #pragma target 3.0
+ ENDCG
+ Blend Off
+ Cull Back
+ ColorMask RGBA
+ ZWrite On
+ ZTest LEqual
+ Offset 0 , 0
+
+
+
+ Pass
+ {
+ Name "Unlit"
+ CGPROGRAM
+ #pragma vertex vert
+ #pragma fragment frag
+ #pragma multi_compile_instancing
+ #include "UnityCG.cginc"
+
+
+ struct appdata
+ {
+ float4 vertex : POSITION;
+ UNITY_VERTEX_INPUT_INSTANCE_ID
+ float4 ase_texcoord : TEXCOORD0;
+ };
+
+ struct v2f
+ {
+ float4 vertex : SV_POSITION;
+ float4 ase_texcoord : TEXCOORD0;
+ UNITY_VERTEX_OUTPUT_STEREO
+ UNITY_VERTEX_INPUT_INSTANCE_ID
+ };
+
+ uniform sampler2D _Red;
+ uniform float4 _Red_ST;
+ uniform float _Invert_Red;
+ uniform sampler2D _Green;
+ uniform float4 _Green_ST;
+ uniform float _Invert_Green;
+ uniform sampler2D _Blue;
+ uniform float4 _Blue_ST;
+ uniform float _Invert_Blue;
+ uniform sampler2D _Alpha;
+ uniform float4 _Alpha_ST;
+ uniform float _Invert_Alpha;
+
+ v2f vert ( appdata v )
+ {
+ v2f o;
+ UNITY_SETUP_INSTANCE_ID(v);
+ UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
+ UNITY_TRANSFER_INSTANCE_ID(v, o);
+
+ o.ase_texcoord.xy = v.ase_texcoord.xy;
+
+ //setting value to unused interpolator channels and avoid initialization warnings
+ o.ase_texcoord.zw = 0;
+
+ v.vertex.xyz += float3(0,0,0) ;
+ o.vertex = UnityObjectToClipPos(v.vertex);
+ return o;
+ }
+
+ fixed4 frag (v2f i ) : SV_Target
+ {
+ UNITY_SETUP_INSTANCE_ID(i);
+ fixed4 finalColor;
+ float2 uv_Red = i.ase_texcoord.xy * _Red_ST.xy + _Red_ST.zw;
+ float4 tex2DNode28 = tex2D( _Red, uv_Red );
+ float4 temp_cast_0 = (_Invert_Red).xxxx;
+ float4 lerpResult27 = lerp( tex2DNode28 , ( temp_cast_0 - tex2DNode28 ) , _Invert_Red);
+ float2 uv_Green = i.ase_texcoord.xy * _Green_ST.xy + _Green_ST.zw;
+ float4 tex2DNode12 = tex2D( _Green, uv_Green );
+ float4 temp_cast_2 = (_Invert_Green).xxxx;
+ float4 lerpResult20 = lerp( tex2DNode12 , ( temp_cast_2 - tex2DNode12 ) , _Invert_Green);
+ float2 uv_Blue = i.ase_texcoord.xy * _Blue_ST.xy + _Blue_ST.zw;
+ float4 tex2DNode14 = tex2D( _Blue, uv_Blue );
+ float4 temp_cast_4 = (_Invert_Blue).xxxx;
+ float4 lerpResult21 = lerp( tex2DNode14 , ( temp_cast_4 - tex2DNode14 ) , _Invert_Blue);
+ float2 uv_Alpha = i.ase_texcoord.xy * _Alpha_ST.xy + _Alpha_ST.zw;
+ float4 tex2DNode13 = tex2D( _Alpha, uv_Alpha );
+ float4 temp_cast_6 = (_Invert_Alpha).xxxx;
+ float4 lerpResult19 = lerp( tex2DNode13 , ( temp_cast_6 - tex2DNode13 ) , _Invert_Alpha);
+ float4 appendResult30 = (float4(lerpResult27.r , lerpResult20.r , lerpResult21.r , lerpResult19.r));
+
+
+ finalColor = appendResult30;
+ return finalColor;
+ }
+ ENDCG
+ }
+ }
+ CustomEditor "ASEMaterialInspector"
+
+
+}
+/*ASEBEGIN
+Version=15902
+0;0;1368;850;1368.399;595.2781;1;True;False
+Node;AmplifyShaderEditor.SamplerNode;14;-1193.289,314.7757;Float;True;Property;_Blue;Blue;6;0;Create;True;0;0;False;0;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
+Node;AmplifyShaderEditor.RangedFloatNode;25;-815.7044,759.9294;Float;False;Property;_Invert_Alpha;Invert_Alpha;3;0;Create;True;0;0;False;0;0;0;0;0;0;1;FLOAT;0
+Node;AmplifyShaderEditor.RangedFloatNode;15;-819.5868,472.4816;Float;False;Property;_Invert_Blue;Invert_Blue;2;0;Create;True;0;0;False;0;0;0;0;0;0;1;FLOAT;0
+Node;AmplifyShaderEditor.RangedFloatNode;31;-803.4256,177.2413;Float;False;Property;_Invert_Green;Invert_Green;1;0;Create;True;0;0;False;0;0;0;0;0;0;1;FLOAT;0
+Node;AmplifyShaderEditor.RangedFloatNode;29;-795.8423,-109.6157;Float;False;Property;_Invert_Red;Invert_Red;0;0;Create;True;0;0;False;0;0;0;0;0;0;1;FLOAT;0
+Node;AmplifyShaderEditor.SamplerNode;28;-1189.017,-285.634;Float;True;Property;_Red;Red;4;0;Create;True;0;0;False;0;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
+Node;AmplifyShaderEditor.SamplerNode;12;-1199.358,5.317238;Float;True;Property;_Green;Green;5;0;Create;True;0;0;False;0;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
+Node;AmplifyShaderEditor.SamplerNode;13;-1182.523,665.4475;Float;True;Property;_Alpha;Alpha;7;0;Create;True;0;0;False;0;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
+Node;AmplifyShaderEditor.SimpleSubtractOpNode;16;-610.2974,-218.5994;Float;False;2;0;FLOAT;0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
+Node;AmplifyShaderEditor.SimpleSubtractOpNode;26;-570.7031,710.9296;Float;False;2;0;FLOAT;0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
+Node;AmplifyShaderEditor.SimpleSubtractOpNode;17;-612.9231,67.14128;Float;False;2;0;FLOAT;0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
+Node;AmplifyShaderEditor.SimpleSubtractOpNode;18;-589.0041,392.5837;Float;False;2;0;FLOAT;0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
+Node;AmplifyShaderEditor.LerpOp;19;-279.5903,619.9736;Float;False;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0
+Node;AmplifyShaderEditor.LerpOp;27;-318.2486,-275.2707;Float;False;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0
+Node;AmplifyShaderEditor.LerpOp;20;-299.71,16.80488;Float;False;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0
+Node;AmplifyShaderEditor.LerpOp;21;-296.069,300.6409;Float;False;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0
+Node;AmplifyShaderEditor.DynamicAppendNode;30;98.28339,102.1202;Float;False;FLOAT4;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT4;0
+Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;0;369.802,98.57185;Float;False;True;2;Float;ASEMaterialInspector;0;1;Hidden/Poi/TexturePacker;0770190933193b94aaa3065e307002fa;0;0;Unlit;2;True;0;1;False;-1;0;False;-1;0;1;False;-1;0;False;-1;True;0;False;-1;0;False;-1;True;0;False;-1;True;True;True;True;True;0;False;-1;True;False;255;False;-1;255;False;-1;255;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;True;1;False;-1;True;3;False;-1;True;True;0;False;-1;0;False;-1;True;1;RenderType=Opaque=RenderType;True;2;0;False;False;False;False;False;False;False;False;False;False;0;;0;0;Standard;0;2;0;FLOAT4;0,0,0,0;False;1;FLOAT3;0,0,0;False;0
+WireConnection;16;0;29;0
+WireConnection;16;1;28;0
+WireConnection;26;0;25;0
+WireConnection;26;1;13;0
+WireConnection;17;0;31;0
+WireConnection;17;1;12;0
+WireConnection;18;0;15;0
+WireConnection;18;1;14;0
+WireConnection;19;0;13;0
+WireConnection;19;1;26;0
+WireConnection;19;2;25;0
+WireConnection;27;0;28;0
+WireConnection;27;1;16;0
+WireConnection;27;2;29;0
+WireConnection;20;0;12;0
+WireConnection;20;1;17;0
+WireConnection;20;2;31;0
+WireConnection;21;0;14;0
+WireConnection;21;1;18;0
+WireConnection;21;2;15;0
+WireConnection;30;0;27;0
+WireConnection;30;1;20;0
+WireConnection;30;2;21;0
+WireConnection;30;3;19;0
+WireConnection;0;0;30;0
+ASEEND*/
+//CHKSM=2C30DB01285F07958B9316BD81CB0A64AD7E3B0E \ No newline at end of file
diff --git a/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTexturePacker.shader.meta b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTexturePacker.shader.meta
new file mode 100644
index 00000000..1658d888
--- /dev/null
+++ b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTexturePacker.shader.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 71129bd3774e04d48827a25fc98d45a7
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ nonModifiableTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTextureUnpacker.shader b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTextureUnpacker.shader
new file mode 100644
index 00000000..736465be
--- /dev/null
+++ b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTextureUnpacker.shader
@@ -0,0 +1,156 @@
+// Made with Amplify Shader Editor
+// Available at the Unity Asset Store - http://u3d.as/y3X
+Shader "Hidden/Poi/TextureUnpacker"
+{
+ Properties
+ {
+ _MainTex("MainTex", 2D) = "white" {}
+ _Mode("Mode", Range( 0 , 3)) = 3
+ _Invert("Invert", Float) = 0
+ [HideInInspector] _texcoord( "", 2D ) = "white" {}
+ }
+
+ SubShader
+ {
+ Tags { "RenderType"="Opaque" }
+ LOD 100
+ CGINCLUDE
+ #pragma target 3.0
+ ENDCG
+ Blend Off
+ Cull Back
+ ColorMask RGBA
+ ZWrite On
+ ZTest LEqual
+ Offset 0 , 0
+
+
+
+ Pass
+ {
+ Name "Unlit"
+ CGPROGRAM
+ #pragma vertex vert
+ #pragma fragment frag
+ #pragma multi_compile_instancing
+ #include "UnityCG.cginc"
+
+
+ struct appdata
+ {
+ float4 vertex : POSITION;
+ UNITY_VERTEX_INPUT_INSTANCE_ID
+ float4 ase_texcoord : TEXCOORD0;
+ };
+
+ struct v2f
+ {
+ float4 vertex : SV_POSITION;
+ float4 ase_texcoord : TEXCOORD0;
+ UNITY_VERTEX_OUTPUT_STEREO
+ UNITY_VERTEX_INPUT_INSTANCE_ID
+ };
+
+ uniform float _Mode;
+ uniform sampler2D _MainTex;
+ uniform float4 _MainTex_ST;
+ uniform float _Invert;
+
+ v2f vert ( appdata v )
+ {
+ v2f o;
+ UNITY_SETUP_INSTANCE_ID(v);
+ UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
+ UNITY_TRANSFER_INSTANCE_ID(v, o);
+
+ o.ase_texcoord.xy = v.ase_texcoord.xy;
+
+ //setting value to unused interpolator channels and avoid initialization warnings
+ o.ase_texcoord.zw = 0;
+
+ v.vertex.xyz += float3(0,0,0) ;
+ o.vertex = UnityObjectToClipPos(v.vertex);
+ return o;
+ }
+
+ fixed4 frag (v2f i ) : SV_Target
+ {
+ UNITY_SETUP_INSTANCE_ID(i);
+ fixed4 finalColor;
+ float2 uv_MainTex = i.ase_texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
+ float4 tex2DNode32 = tex2D( _MainTex, uv_MainTex );
+ float ifLocalVar34 = 0;
+ if( _Mode == 0.0 )
+ ifLocalVar34 = tex2DNode32.r;
+ float ifLocalVar35 = 0;
+ if( _Mode == 1.0 )
+ ifLocalVar35 = tex2DNode32.g;
+ float ifLocalVar36 = 0;
+ if( _Mode == 2.0 )
+ ifLocalVar36 = tex2DNode32.b;
+ float ifLocalVar37 = 0;
+ if( _Mode == 3.0 )
+ ifLocalVar37 = tex2DNode32.a;
+ float4 ifLocalVar42 = 0;
+ if( _Mode < 0.0 )
+ ifLocalVar42 = tex2DNode32;
+ float4 ifLocalVar43 = 0;
+ if( _Mode > 3.0 )
+ ifLocalVar43 = tex2DNode32;
+ float4 temp_output_40_0 = ( ifLocalVar34 + ifLocalVar35 + ifLocalVar36 + ifLocalVar37 + ifLocalVar42 + ifLocalVar43 );
+ float4 temp_cast_0 = (_Invert).xxxx;
+ float4 lerpResult46 = lerp( temp_output_40_0 , ( temp_cast_0 - temp_output_40_0 ) , _Invert);
+
+
+ finalColor = lerpResult46;
+ return finalColor;
+ }
+ ENDCG
+ }
+ }
+ CustomEditor "ASEMaterialInspector"
+
+
+}
+/*ASEBEGIN
+Version=15902
+0;0;1368;850;930.0129;673.0209;1.753676;True;False
+Node;AmplifyShaderEditor.SamplerNode;32;-446.011,1.547681;Float;True;Property;_MainTex;MainTex;0;0;Create;True;0;0;False;0;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
+Node;AmplifyShaderEditor.RangedFloatNode;33;-414.2798,-86.22936;Float;False;Property;_Mode;Mode;1;0;Create;True;0;0;False;0;3;0;0;3;0;1;FLOAT;0
+Node;AmplifyShaderEditor.ConditionalIfNode;35;17.04439,123.3313;Float;False;False;5;0;FLOAT;0;False;1;FLOAT;1;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;1;FLOAT;0
+Node;AmplifyShaderEditor.ConditionalIfNode;36;17.16646,287.5046;Float;False;False;5;0;FLOAT;0;False;1;FLOAT;2;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;1;FLOAT;0
+Node;AmplifyShaderEditor.ConditionalIfNode;37;15.75801,456.534;Float;False;False;5;0;FLOAT;0;False;1;FLOAT;3;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;1;FLOAT;0
+Node;AmplifyShaderEditor.ConditionalIfNode;34;17.15299,-44.90865;Float;False;False;5;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;1;FLOAT;0
+Node;AmplifyShaderEditor.ConditionalIfNode;42;19.07808,-276.4948;Float;False;False;5;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;4;COLOR;0,0,0,0;False;1;COLOR;0
+Node;AmplifyShaderEditor.ConditionalIfNode;43;19.07608,697.2275;Float;False;False;5;0;FLOAT;0;False;1;FLOAT;3;False;2;COLOR;0,0,0,0;False;3;FLOAT;0;False;4;COLOR;0,0,0,0;False;1;COLOR;0
+Node;AmplifyShaderEditor.SimpleAddOpNode;40;370.6085,1.924235;Float;True;6;6;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;4;COLOR;0,0,0,0;False;5;COLOR;0,0,0,0;False;1;COLOR;0
+Node;AmplifyShaderEditor.RangedFloatNode;44;440.5474,232.555;Float;False;Property;_Invert;Invert;2;0;Create;True;0;0;False;0;0;0;0;0;0;1;FLOAT;0
+Node;AmplifyShaderEditor.SimpleSubtractOpNode;45;609.8499,63.25506;Float;False;2;0;FLOAT;0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
+Node;AmplifyShaderEditor.LerpOp;46;780.463,-0.6814048;Float;False;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0
+Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;0;975.2405,-1.718735;Float;False;True;2;Float;ASEMaterialInspector;0;1;Hidden/Poi/TextureUnpacker;0770190933193b94aaa3065e307002fa;0;0;Unlit;2;True;0;1;False;-1;0;False;-1;0;1;False;-1;0;False;-1;True;0;False;-1;0;False;-1;True;0;False;-1;True;True;True;True;True;0;False;-1;True;False;255;False;-1;255;False;-1;255;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;7;False;-1;1;False;-1;1;False;-1;1;False;-1;True;1;False;-1;True;3;False;-1;True;True;0;False;-1;0;False;-1;True;1;RenderType=Opaque=RenderType;True;2;0;False;False;False;False;False;False;False;False;False;False;0;;0;0;Standard;0;2;0;FLOAT4;0,0,0,0;False;1;FLOAT3;0,0,0;False;0
+WireConnection;35;0;33;0
+WireConnection;35;3;32;2
+WireConnection;36;0;33;0
+WireConnection;36;3;32;3
+WireConnection;37;0;33;0
+WireConnection;37;3;32;4
+WireConnection;34;0;33;0
+WireConnection;34;3;32;1
+WireConnection;42;0;33;0
+WireConnection;42;4;32;0
+WireConnection;43;0;33;0
+WireConnection;43;2;32;0
+WireConnection;40;0;34;0
+WireConnection;40;1;35;0
+WireConnection;40;2;36;0
+WireConnection;40;3;37;0
+WireConnection;40;4;42;0
+WireConnection;40;5;43;0
+WireConnection;45;0;44;0
+WireConnection;45;1;40;0
+WireConnection;46;0;40;0
+WireConnection;46;1;45;0
+WireConnection;46;2;44;0
+WireConnection;0;0;46;0
+ASEEND*/
+//CHKSM=FB476DC839C9D986CDFBE64BF68940FC3E2666AE \ No newline at end of file
diff --git a/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTextureUnpacker.shader.meta b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTextureUnpacker.shader.meta
new file mode 100644
index 00000000..d7c2c86d
--- /dev/null
+++ b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/PoiTextureUnpacker.shader.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 245e67c21ccaa9a43ad7e84d1c7bb5fc
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ nonModifiableTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link.png b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link.png
new file mode 100755
index 00000000..f2221935
--- /dev/null
+++ b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link.png
Binary files differ
diff --git a/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link.png.meta b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link.png.meta
new file mode 100644
index 00000000..2534f427
--- /dev/null
+++ b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link.png.meta
@@ -0,0 +1,99 @@
+fileFormatVersion: 2
+guid: bf576c4a5c9c7d6408d714bfc0779a3f
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 9
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: -100
+ wrapU: 1
+ wrapV: 1
+ wrapW: -1
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 2
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - serializedVersion: 2
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link_pro.png b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link_pro.png
new file mode 100755
index 00000000..c6454537
--- /dev/null
+++ b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link_pro.png
Binary files differ
diff --git a/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link_pro.png.meta b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link_pro.png.meta
new file mode 100644
index 00000000..1c244949
--- /dev/null
+++ b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/poi-tools/Resources/Poi/icon_link_pro.png.meta
@@ -0,0 +1,99 @@
+fileFormatVersion: 2
+guid: e5afc9f6ee88c964cbc59accc832fbbe
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 9
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: -1
+ aniso: 1
+ mipBias: -100
+ wrapU: 1
+ wrapV: 1
+ wrapW: -1
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 2
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - serializedVersion: 2
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant: