Skocz do zawartości

[GM 1.4] Multipass Rendering


Rekomendowane odpowiedzi

Przykład z gotowymi skryptami bazowymi do zarządzania renderowaniem wieloprzebiegowym.

Nazwa może być niezrozumiała, ale zasada działania jest dosyć prosta: pozwala to wyrenderować wiele wariantów tych samych obiektów zależnie od tego, jakie informacje sobie zażyczymy. W tym przykładzie jest to renderowanie informacji o obiektach, które mają się brudzić krwią oraz informacje o obiektach brudu - po wyrenderowaniu tych obu przebiegów otrzymujemy tekstury z tymi informacjami gotowe do uzyskania finalnego zabrudzenia krwią elementów pokoju jak i ścian.

 

W razie niejasności lub niezrozumienia nie bać się, tylko pytać tutaj a ja na każde pytanie z chęcią odpowiem, bez odsyłania do jakichś linków - chcę aby każdy był w stanie na końcu rozumieć zasadę działania i potencjał multipass renderingu jak i cudownych możliwości, jakie ze sobą niesie. Co jakiś czas będę urozmaicał paczkę o nowe przykłady zastosowania, bo jest ich na prawdę masa! :D

 

Aktualne efekty:

  • Dirt (blood)
  • Distortions (heat and water)
  • Volumetric fog

 

Download: http://storage.psichix.io/MultipassRendering.gmz

 

lVSOI6g.png

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

@Uzjel @hgter wrzuciłem na inny uploader i ulepszyłem nieco przykład :P
link w pierwszym poście oraz tu: http://storage.psichix.io/MultipassRendering.gmz

Odnośnik do komentarza
Udostępnij na innych stronach

@Ignatus a wiem co powoduje ten blad i w nocy go naprawie - blad zwiazany z draw gui: miast rysowac surface jak jest, musze go zeskalowac do rozmiarow okna zeby byl zalezny od rozmiarow okna :D
a co do niezrozumienia to po to tu jestem by wyjasnic to, co niezrozumiale, ale do tego potrzebuje abys mi powiedzial czego nie rozumiesz, a raczej dlaczego nie rozumiesz - czy to wina tego, ze nie rozumiesz komentarzy, a moze co innego? gorsze od niewiedzy jest strach przed zadawaniem pytan, wiec nie krepuj sie bo jestem w stanie wszystko opowiedziec ale musze wiedziec czego nie rozumiesz i co mam wytlumaczyc, inaczej jakakolwiek proba pomocy Tobie skonczy sie fiaskiem :P

Odnośnik do komentarza
Udostępnij na innych stronach

1.multipass_add- nie wiem co to za zmienne i za odpowiadają (wiem że opisałeś ale nie rozumiem w praktyce )

2.w jaki sposób mam dodać obiekt który będzie możliwy o zabrudzenie a w jaki ten który brudzi

3.Po co są obiekt "dirt" i  "dirty"

4.Załóżmy że mam obiekt blood który po uderzeniu w ścianę ma zostawić ten ślad i zniknąć, jak to uzyskać w tym przykładzie?

5.Co robi ten shader?

6.Prosiłbym krok po kroku instrukcję  

-dodawanie do listy obiektów które mają się brudzic

-dodanie do listy obiektow ktore brudza

-co potem żeby to działało?

Odnośnik do komentarza
Udostępnij na innych stronach

@Ignatus dziś nie zdążyłem odpowiedzieć na pytania, ale o takie mi właśnie chodziło i na nie odpowiem przed zrobieniem następnego exampla!

 

A swoją drogą: UPDATE - poprawiłem błąd nieśledzenia view, oraz dodałem example załamań wody (także na maskach), ale nie skończyłem go komentować więc jest WIP. W ruchu wygląda lepiej, bo widać dobrze te delikatne załamania.

obraz.png

Odnośnik do komentarza
Udostępnij na innych stronach

UPDATE: dokończony example załamań obrazu dla efektów wody oraz ognia.

 

DOWNLOAD: http://storage.psichix.io/MultipassRendering.gmz

 

Nom, to teraz czas na odpowiedź na pytania Ignatusa :D

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jasne, bede czekal na dalsze pytania! :D

Odnośnik do komentarza
Udostępnij na innych stronach

UPDATE: Nowa wersja zawiera wolumetryczną mgłę!

 

Download: http://storage.psichix.io/MultipassRendering.gmz

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Próba użycia tego w innym projekcie niż oryginalny wyrzuca mnóstwo ABSTRAKCYJNYCH błędów- obstawiam debilne błędy w Game Makerze bo od pewnego czasu na podobne trafiam,zupełnie bez sensu i powodu.

 

Czyli np. tworzę nowy projekt i kopiuje absolutnie wszystko z oryginalnego projektu - przy czym skrypty i shadery trzeba potem manualnie kopiować bo najnowsza aktualizacja sprawia że GM nie widzi importowanych (PARANOJA).Projekt wygląda jeżeli chodzi o zawartość 1:1 identycznie jak projekt oryginalny ale uruchomić się nie da..

Najpierw takie coś do każdego obiektu w grze po kolei (oczywiście opisany sprite jak najbardziej jest na swoim miejscu)

ERROR!!! :: ############################################################################################
ERROR in
action number 1
of Draw Event
for object obj_fire:


Trying to draw non-existing sprite.
 at gml_Object_obj_fire_DrawEvent_1 (line 6) -     draw_self(); 

 

A na koniec 

ERROR!!! :: ############################################################################################
FATAL ERROR in
action number 1
of Draw Event
for object obj_distortion_multipass_renderer:


Variable obj_distortion_multipass_renderer.sh_distortion(100009, -2147483648) not set before reading it.
 at gml_Object_obj_distortion_multipass_renderer_DrawGUI_1 (line 6) - var sampler_mask = shader_get_sampler_index(sh_distortion, "s_Mask"); ############################################################################################

 

I co z tym zrobić? To ewidentnie wina GM a nie projektu PhysX...

 

 

edit.Już ogarnąłem - błąd tego crapa jakim jest w tej chwili GM.Musiałem stworzyć sprite,nazwać identycznie i wstawić w nim daną grafikę- importowany dla GM nie istnieje..Boże co za g$#no 

 

edit.2

Przy próbie importu docelowo do mojej gry mam kilka problemów

-żaden inny shader nie działa który był wcześniej

-napisy są mocno rozpikselowane i ogólnie jakoś inaczej wszystko wygląda (gorzej)

-mam zablokowany view. Tzn normalnie ekran obracał sie razem z image_angle postaci- teraz mam stały kąt co uniemożliwia grę

 

Odnośnik do komentarza
Udostępnij na innych stronach

@Ignatus bylbys w stanie wyodrebnic osobny maly projekcik, gdzie zostawilbys rooma z obracanym viewem i jakims innym shaderem, oraz mozliwie wrzucony multipass i wyslac mi gmz tego na skrzynke? sprawdzilbym, w ktorym miejscu gryza sie, bo z opisu wyglada to na jakis turbo absurdalny problem, gdyz w idei multipass z niczym sie nie gryzie, bo nigdzie nahalnei sie nie wpina, a to dosyc dziwny problem i moze powodem byc np. inna libka i moglbym znalezc co dokladnie to powoduje.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...