Сообщение от Morganolla
Тяжело написать такой шейдер самому? Еще не писал шейдеры в юнити...
|
Нет, берешь готовый шейдер, например без z теста и освещения, и редактируешь GLSL код в нем. Примеры шейдеров можно выгуглить.
Алгоритм пиксельшейдера прост:
srs = tex2d(srs_img,pos)
mask = tex2d(mask_img,pos-vec2d(1-xoffset,0))
srs.a = mask.r
outcolor = srs.a
pos- координата пикселя
xoffset - смещение маски по x 0-1
outcolor - расчитаный пиксель
Просто ставит в альфа канал картинки значение красного канала маски из положения пикселя+смешение, получается альфамаска)
Так как не помню наизусть синтаксиса GLSL,то писал как помню.
Такой шейдер пойдет? В нем маска едет (вроде правильно, правил на мобиле):
Shader "Custom/NewShader" {
Properties {
_MainTex ("Base (RGB A-mask)", 2D) = "white" {}
_SecondTex ("Base (RGB)", 2D) = "white" {}
_Offset ("Offset", Range(0,1))=0.5
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
sampler2D _SecondTex;
fixed _Offset;
struct Input
{
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
fixed4 c1 = tex2D (_SecondTex, IN.uv_MainTex-float2(1-_Offset,0));
o.Albedo = c.rgb;
o.Alpha = c1.r;
}
ENDCG
}
FallBack "Diffuse"
}