129 lines
3.5 KiB
Plaintext
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
|
|
}
|
|
}
|
|
}
|