Last active
August 12, 2016 13:01
-
-
Save umiyuki/8588131e46fcd14b87be403cd06301eb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Shader "Custom/AlphaBlendLotOfTextures" { | |
{ | |
Properties | |
{ | |
_Texture1("Texture1", 2D) = "white" {} | |
_Texture2("Texture2", 2D) = "white" {} | |
_Texture3("Texture3", 2D) = "white" {} | |
_Texture4("Texture4", 2D) = "white" {} | |
_Texture5("Texture5", 2D) = "white" {} | |
_Texture6("Texture6", 2D) = "white" {} | |
_Texture7("Texture7", 2D) = "white" {} | |
_Texture8("Texture8", 2D) = "white" {} | |
_Texture9("Texture9", 2D) = "white" {} | |
_Texture10("Texture10", 2D) = "white" {} | |
_Texture11("Texture11", 2D) = "white" {} | |
_Texture12("Texture12", 2D) = "white" {} | |
_Texture13("Texture13", 2D) = "white" {} | |
_Texture14("Texture14", 2D) = "white" {} | |
_Texture15("Texture15", 2D) = "white" {} | |
} | |
SubShader | |
{ | |
Tags{ "RenderType" = "Transparent" "Queue" = "Transparent" } | |
LOD 200 | |
ZWrite Off | |
Blend SrcAlpha OneMinusSrcAlpha, One Zero | |
Lighting Off | |
Pass | |
{ | |
CGPROGRAM | |
#pragma vertex vert | |
#pragma fragment frag | |
#include "UnityCG.cginc" | |
struct appdata | |
{ | |
float4 vertex : POSITION; | |
float2 uv : TEXCOORD0; | |
}; | |
struct v2f | |
{ | |
float2 uv : TEXCOORD0; | |
//UNITY_FOG_COORDS(1) | |
float4 vertex : SV_POSITION; | |
}; | |
sampler2D _Texture1; | |
sampler2D _Texture2; | |
sampler2D _Texture3; | |
sampler2D _Texture4; | |
sampler2D _Texture5; | |
sampler2D _Texture6; | |
sampler2D _Texture7; | |
sampler2D _Texture8; | |
sampler2D _Texture9; | |
sampler2D _Texture10; | |
sampler2D _Texture11; | |
sampler2D _Texture12; | |
sampler2D _Texture13; | |
sampler2D _Texture14; | |
sampler2D _Texture15; | |
v2f vert(appdata v) | |
{ | |
v2f o; | |
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); | |
o.uv = v.uv; | |
UNITY_TRANSFER_FOG(o,o.vertex); | |
return o; | |
} | |
fixed4 frag(v2f i) : SV_Target | |
{ | |
fixed4 dst = tex2D(_Texture1, i.uv); //dst | |
fixed4 src = tex2D(_Texture2, i.uv); //src | |
fixed4 temp = fixed4(1,1,1,0); | |
if (src.a > 0) | |
{ | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
else | |
{ | |
temp = dst; | |
} | |
src = tex2D(_Texture3, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
src = tex2D(_Texture4, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
src = tex2D(_Texture5, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
src = tex2D(_Texture6, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
src = tex2D(_Texture7, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
src = tex2D(_Texture8, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
src = tex2D(_Texture9, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
src = tex2D(_Texture10, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
src = tex2D(_Texture11, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
src = tex2D(_Texture12, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
src = tex2D(_Texture13, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
src = tex2D(_Texture14, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
src = tex2D(_Texture15, i.uv); | |
if (src.a > 0) | |
{ | |
dst = temp; | |
temp.a = src.a + dst.a * (1 - src.a); | |
if (temp.a > 0) | |
{ | |
temp.rgb = ((src.rgb * src.a) + (dst.rgb * (1 - src.a) * dst.a)) / temp.a; | |
} | |
} | |
return temp; | |
} | |
ENDCG | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment