Files
2025-06-09 23:23:13 +08:00

129 lines
3.5 KiB
Plaintext

Shader "Hidden/MicroVerse/NineCombine"
{
Properties
{
_Tex0 ("Texture", 2D) = "black" {}
_Tex1 ("Texture", 2D) = "black" {}
_Tex2 ("Texture", 2D) = "black" {}
_Tex3 ("Texture", 2D) = "black" {}
_Tex4 ("Texture", 2D) = "black" {}
_Tex5 ("Texture", 2D) = "black" {}
_Tex6 ("Texture", 2D) = "black" {}
_Tex7 ("Texture", 2D) = "black" {}
_Tex8 ("Texture", 2D) = "black" {}
_Zoom ("Zoom", Float) = 1
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include_with_pragmas "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
Texture2D _Tex0;
Texture2D _Tex1;
Texture2D _Tex2;
Texture2D _Tex3;
Texture2D _Tex4;
Texture2D _Tex5;
Texture2D _Tex6;
Texture2D _Tex7;
Texture2D _Tex8;
float _Zoom;
SamplerState my_linear_clamp_sampler;
float4 _Tex4_TexelSize;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
float4 frag (v2f i) : SV_Target
{
float2 uv = i.uv;
float fac = (1 + (_Zoom-1)*2); // 1.25 zoom = 1.5
uv = uv * fac - ((_Zoom-1)); // 0-1.5, -0.25 -> 1.25
UNITY_BRANCH
if (uv.y < 0)
{
uv.y++;
if (uv.x < 0)
{
uv.x++;
return _Tex6.Sample(my_linear_clamp_sampler, uv).r;
}
else if (uv.x > 1)
{
uv.x--;
return _Tex8.Sample(my_linear_clamp_sampler, uv).r;
}
else
{
return _Tex7.Sample(my_linear_clamp_sampler, uv).r;
}
}
else if (uv.y > 1)
{
uv.y--;
if (uv.x < 0)
{
uv.x++;
return _Tex0.Sample(my_linear_clamp_sampler, uv).r;
}
else if (uv.x > 1)
{
uv.x--;
return _Tex2.Sample(my_linear_clamp_sampler, uv).r;
}
else
{
return _Tex1.Sample(my_linear_clamp_sampler, uv).r;
}
}
else if (uv.x < 0)
{
uv.x++;
return _Tex3.Sample(my_linear_clamp_sampler, uv).r;
}
else if (uv.x > 1)
{
uv.x--;
return _Tex5.Sample(my_linear_clamp_sampler, uv).r;
}
else
{
return _Tex4.Sample(my_linear_clamp_sampler, uv).r;
}
}
ENDCG
}
}
}