Показать сообщение отдельно
Старый 19.08.2014, 17:42   #1967
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Вопросы от новичка

Сообщение от 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 INinout SurfaceOutput o)
                {
                        
fixed4 c tex2D (_MainTexIN.uv_MainTex);
                        
fixed4 c1 tex2D (_SecondTexIN.uv_MainTex-float2(1-_Offset,0));

                        
o.Albedo c.rgb;
                        
o.Alpha c1.r;
                }
                
ENDCG
        

        
FallBack "Diffuse"

__________________
Сайт: http://iexpo.ml

Последний раз редактировалось RegIon, 19.08.2014 в 18:05. Причина: добавил шейдер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Morganolla (03.09.2014)