Войти
ПрограммированиеФорум2D графика и изометрия

Unity: Как добавить Particles/Additive эффект?

#0
21:51, 28 фев. 2015

Привет всем!
Написал шейдер для 2D игры, что-то работает, а что-то нет.
Вообщем нужно шейдером прокручивать анимацию. Это работает, спрайт бьется на куски и каждый по очереди показывается:
Properties {
    _MainTex ("Base (RGB)", 2D) = "white" {}
    _TexWidth("Sheet width", float)=0.0
    _CellAmount("Cell Amount", float)=0.0
    _Speed("Speed", Range(0.01,32))=12
  }
  SubShader {
    Tags { "RenderType"="Opaque" }
    //UsePass "Particles/Additive"
   
    CGPROGRAM
    #pragma surface surf Lambert

    sampler2D _MainTex;
    float _TexWidth;
    float _CellAmount;
    float _Speed;

    struct Input {
      float2 uv_MainTex;
    };

    void surf (Input IN, inout SurfaceOutput o) {
      // Shader UV motion cap
      float2 spriteUV = IN.uv_MainTex;
      float cellPixelWidth = _TexWidth / _CellAmount;
      float cellUVPercentage = cellPixelWidth / _TexWidth;
      float timeVal = fmod(_Time.y * _Speed, _CellAmount);
      timeVal = ceil(timeVal);
     
      float xValue = spriteUV.x;
      xValue += cellUVPercentage * timeVal * _CellAmount;
      xValue *= cellUVPercentage;
      spriteUV = float2(xValue, spriteUV.y);
   
      half4 c = tex2D (_MainTex, spriteUV);
      o.Albedo = c.rgb;
      o.Alpha = c.a;
    }
    ENDCG
  }
  FallBack "Diffuse"

Хочу добавить Additive в этот шейдер, но не знаю как это сделать. Помогите пожалуйста)


#1
0:37, 1 мар. 2015

http://docs.unity3d.com/Manual/SL-Blend.html

#2
11:09, 1 мар. 2015

  Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
  Blend SrcAlpha One
  Cull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) }

#3
13:44, 1 мар. 2015

Durane спасибо! Пробую)

#4
16:17, 2 мар. 2015

Эффекты получились и работают) Но есть одно но, я переключил режим сборки с версии для web на ios и вся анимация слетела, кадры сместились. Все работает, только анимация кривая. Для версии на компы и web этот шейдер показывает анимацию нормально, а для мобильных устройств ios и Android анимация смещена( Еще когда меняю разрешение спрайта, то в матерале видно как деформируется кадр анимации. Почкму? Какие идеи?

#5
16:24, 2 мар. 2015

Решение нашел(говорим спрайту что он текстура), но почему текстура работает нормально, а спрайт нет?

#6
17:42, 2 мар. 2015

Alerr

Решение нашел(говорим спрайту что он текстура), но почему текстура работает нормально, а спрайт нет?

Решение. Говорим себе , что все прекрасно и великолепно работает :)

#7
18:42, 2 мар. 2015

О. Еще один проталкиватель своего движка.
Совет. Охаиванием чужого - свой не продвинешь. Видишь каку в чужом движке - пиши (обязательно с примером!) "А у меня все класс!" Глядишь со временем народ и потянется...

#8
19:00, 2 мар. 2015

seaman
Зачем такой злой? У тебя мама был, а папа ?
Может не было в детстве 40 тысяч собак ? :)

Мне понравился подход ТС

Решение нашел(говорим спрайту что он текстура)

Оригинальный подход :)

#9
20:35, 2 мар. 2015

Alerr
> почему текстура работает нормально, а спрайт нет?
Потому что ты сам выводишь нужный кусок текстуры шейдером, а со спрайтом работает Юнити - выводит нужный кусок сама. Оттого видимо и глюки.

#10
20:39, 2 мар. 2015

ronniko
> Зачем такой злой?
Я не говорю, что твой двиг плохой. Может со временем будет несравнимо лучше других. Я говорю, что твой подход к его рекламе плохой. выпячивай достоинства своего, а не хай недостатки другого. Так кстати и агрессии от адептов других движков будет меньше.

#11
21:02, 2 мар. 2015

seaman
> Потому что ты сам выводишь нужный кусок текстуры шейдером, а со спрайтом работает Юнити - выводит нужный кусок сама. Оттого видимо и глюки.
Спасибо)

ПрограммированиеФорум2D графика и изометрия

Тема в архиве.