ZyperPL Opublikowano 3 Września 2011 Udostępnij Opublikowano 3 Września 2011 Cześć! Nie wiem czy potrzebny jest jakiś shader, czy coś innego. Ale potrzebuje efekt rozmycia obok krawędzi ekranu. Da się coś takiego zrobić? Nie chodzi mi o blur (że obiekty zostawiają smugę) tylko, żeby krawędzie były rozmyte. Wolałbym nie używać Xenona, tylko jeśli da radę zrobić to jakoś na surface'ach. Bardzo proszę o pomoc. Pozdrawiam :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 3 Września 2011 Udostępnij Opublikowano 3 Września 2011 Jest jak najbardziej możliwe. Wyłączasz na starcie autodraw, i w stepie czy czymkolwiek innym, byle nie draw (bo się ci zapętli, oczywiście) - rysujesz wszystko (używasz do tego funkcji redraw). To ma na celu ominięcie rysowania wszystkiego po 2x razy, a ponadto cały "widok" masz sobie w surface'u. Samo rozmycie, jako "rozmycie" polegać będzie na narysowania surface'a (wszystko wywołujesz w jakimś stepie, wybierz sobie), a potem z jakąś zmniejszoną alfą rysowanie "obok", czyli w górę, dół, lewo, prawo, czy jak już tam uważasz. To jest cała koncepcja. Przynajmniej ja to tak robię (np. w tym tds'sie z "nad czym aktualnie pracujesz") - działa bardzo szybko. Z rozmywaniem ekranu po krawędziach, będzie trochę problematycznie. Gdyby istniało coś takiego jak "surface_set_alpha_from_sprite", albo "add_sprite_from_surface", było by to możliwe. ...znaczy, jest "możliwe" w pewnym sensie. Jeśli co stepa będziesz przerabiał surface na sprite, po czym jeszcze nakładał na to maskę o takiej samej rozdziejczości co ekran, zabijesz się o fpsy. - No i musisz jeszcze znaleźć funkcję które to umożliwiają, bo z tego co mi wiadomo chyba takich nie ma. ; ) ///EDIT: Jednak, chyba mam pomysł. Tylko muszę coś sprawdzić. Po prostu daj mi trochę czasu. ; ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 4 Września 2011 Autor Udostępnij Opublikowano 4 Września 2011 Spoko. Surface'y są strasznie skomplikowane, więc nie umiem się nimi zbytnio obsługiwać. Gdybyście mogli, to bym prosił w miarę zrozumiale wszystko opisane ;) (z komendami) Proszę i dziękuję z góry. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PoxiPol Opublikowano 4 Września 2011 Udostępnij Opublikowano 4 Września 2011 Spoko. Surface'y są strasznie skomplikowane, więc nie umiem się nimi zbytnio obsługiwać. Gdybyście mogli, to bym prosił w miarę zrozumiale wszystko opisane ;) (z komendami) Proszę i dziękuję z góry. Ok, nie chce sie znowu udzielac w rozmowe: co dla kogo jest latwe/trudne w gmie, ale czesto ludzie tak mowia, niw wiedzac co mowia. Pewno jak miales 5 lat, nie lubiles pomidorow, czy czegos innego, a tak naprawde rzadko je dotykales jezykiem. Pierw sprobuj, pozniej mow. Jak znajdziesz dobry tutorial, zrozumiesz to raz dwa. Wiecej lini != trudniejszy problem. Ja nie tykalem 3D myslac ze jest trudne, a pozniej wreszcie zrobilem 1(!) tutorial, i od razu zaczalem robic grywalne fajne gry. Tak samo z 39dll. "Meh, jakis przyklad znajde, to jest za trudne", patze, a to kilka logicznych linii kodu, i grasz online! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 4 Września 2011 Udostępnij Opublikowano 4 Września 2011 Samo rozmycie, jako "rozmycie" polegać będzie na narysowania surface'a ... z jakąś zmniejszoną alfą rysowanie "obok", czyli w górę, dół, lewo, prawoTutaj podam drugi pomysł na rozmycie w gmie - wykorzystanie interpolacji przy rysowaniu. Rysujemy surface (z włączoną interpolacją) na dwa razy mniejszy surface, po czym przywracamy go do pierwotnego rozmiaru (powiększamy dwa razy). Później znowu zmniejszamy, znowu powiększamy itd. Można tutaj stosować różne kombinacje skali surfaców (zmniejszyć go dwa razy, potem zwiększyć dwa, zmniejszyć cztery, zwiększyć cztery itd.) i kombinować z nimi w celu uzyskania najlepszego stosunku jakośći do fpsu. Jakiś sample który dla kogośtam robiłem kiedyś, w sumie sam nie pamiętam kogo: http://dl.dropbox.com/u/25762547/blur.gmk Fps tej techniki może nie powala (choć można to jeszcze zoptymalizować) ale jakość rozmycia jest myślę znacząco lepsza niż wersji z półprzezroczystymi surface'ami. Gdyby istniało coś takiego jak "surface_set_alpha_from_sprite"Istnieje:GML draw_set_blend_mode_ext(bm_zero, bm_inv_src_color); draw_sprite(sprite, 0, 0, 0); draw_set_blend_mode(bm_normal); Rysujemy to oczywiście na surfacie (surface_set_target()). Maska "sprite" powinna być cała czarna i wtedy jej kanał alpha zostanie przeniesiony na surfejsa (tam gdzie sprite jest przezroczysty na x% tam surface będzie przezroczysty na x%). W sumie pisze te blendy z pamięci ale chyba się nie pomyliłem : p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 4 Września 2011 Udostępnij Opublikowano 4 Września 2011 Co do blendingu, to można też: GML draw_set_blend_mode(bm_subtract); draw_sprite(sprite, 0, 0, 0); draw_set_blend_mode(bm_normal); tylko że przy tym ustawieniu tam, gdzie sprite jest przezroczysty na x%, tam na surface'u będzie na (100-x)%. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 4 Września 2011 Autor Udostępnij Opublikowano 4 Września 2011 Dzięki wszystkim za pomoc. Tyle, że nie skorzystam. Nie dość, że strasznie to zżera zasoby procka to jeszcze ciężko to zrobić (tzn. tak, żeby krawędzie się tylko rozmazywały). Dzięki, ale niestety :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 4 Września 2011 Administratorzy Udostępnij Opublikowano 4 Września 2011 Jakiś sample który dla kogośtam robiłem kiedyś, w sumie sam nie pamiętam kogo: http://dl.dropbox.com/u/25762547/blur.gmk Dla mnie ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się