Wpis z mikrobloga

Chcę dodać do mojej gry efekt starego monitora CRT, coś jak w grze Kung Fury, ale trochę inaczej. Znalazłem gotowy shader na forum

http://forum.unity3d.com/threads/crt-shader.200726/#post-2003264

Działa całkiem dobrze, efekt jest zadowalający, ale tylko w edytorze, na nexusie 7 widzę jakieś artefakty, a na galaxy s mam cały różowy ekran.

Zupełnie się nie znam na shaderach, nie wiem jak to ruszyć, może ktoś wie jak uzyskać taki efekt na urządzeniach mobilnych? We wspomnianym wyżej Kung Fury wygląda to i działa całkiem dobrze.

Poniżej jak to ma wyglądać, chodzi mi o takie poziome paski i lekkie wygięcie obrazu.

#unity3d #gamedev
Pobierz
źródło: comment_XE1JriCeopbVvJ4fS6HFRuJjGWN4cHjH.jpg
  • 13
@TadeuszSynZygmunta: Shadery w Unity są pisane w Cg i potem kompilowane w zależności od potrzeb do hlsl lub glsl (czyli tak jak w tym przypadku dla androida i opengl es), więc może tutaj pojawiają się jakieś problemy (szczególnie że Cg nie jest już chyba rozwijany od paru lat)? Głowy za to nie dam, ale zdaje mi się, że kiedyś natrafiłem na temat na forum unity, gdzie ktoś naprawił niedziałające shadery w
@sortris: @Hardboiled: W standardowych assetsach unity jest taki shader jak "Vignete and Chromatic Abberation", działa na androidach, wygląda podobnie tylko nie ma tych poziomych pasków, spróbuję je dodać po prostu jako przezroczystego sprite'a rozciągniętego na cały ekran. No i nie wiem jak z wydajnością, muszę odpalić profilera i zobaczyć czy taki efekt nie będzie zmulał.
@sortris: Głównym problemem wydajności (na mobilkach szczególnie) jest sam postprocess. Trzeba narysować gotową wyrenderowaną do tekstury scenę z kolejnym passem shadera (albo i wielu). Już tutaj fill rate mocno dostaje po dupie, bo rysujemy każdy jeden piksel pełnoekranowej tekstury.