Skocz do zawartości

[GM:S] Polish Shader Library


Rekomendowane odpowiedzi

  • Odpowiedzi 137
  • Dodano
  • Ostatniej odpowiedzi

Top użytkownicy w tym temacie

Top użytkownicy w tym temacie

obawiam sie, ze moze to byc zbyt skomplikowany shader (nie do napisania, a do uruchomienia - limity ilosci instrukcji kompilatora GMowego)

Odnośnik do komentarza
Udostępnij na innych stronach

Trafił nowy, zaawansowany przykład użycia shaderów do obliczeń logiki gry na GPU :)

 

GPU Game of Life

Windows Executable

psl_game_of_life.PNG

Odnośnik do komentarza
Udostępnij na innych stronach

Kolejny przykład, tym razem dynamiczne punkty jako prosty i wydajny śnieg (w ilości cząstek tysiąca, ale i można więcej):

Dynamic Points (Snow)

psl_dynamic_points.PNG

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem jak inni, ja miałem następujący błąd przy "Windows Executable":

GML
___________________________________________

################################################################################

############

FATAL ERROR in Vertex Shader compilation

ShaderName: fxSimulation

 

D3DXCompile failed - result

 

at gml_Object_objSimulation_Draw_0 (line -1) - <unknown source line>

################################################################################

############

Odnośnik do komentarza
Udostępnij na innych stronach

GML
ai=10

shader_set(...)

draw_rectangle(10,10,20,20,0)

shader_reset()

To nie będzie działać? Tak? Siedziałem 30 minut szukając czemu nie działa, aż zamieniłem draw na sprite. Zadziałało. Ktoś wie może czy tak ma być?

 

Edit:

Przy okazji. Próbuję zrobić shader który wykona to:

GML
random_set_seed(x)

color=draw_getpixel(x,y);

r=color_get_red(color)+random_range(-10,10)

g=color_get_green(color)+random_range(-10,10)

b=color_get_blue(color)+random_range(-10,10)

output=make_color_rgb(r,g,b)

Odnośnik do komentarza
Udostępnij na innych stronach

zapewne samplujesz w shaderze base texture, a draw_rectangle nie posiada tekstury bazowej, stad nic nie widac. rozwiazanie jest proste: nie sampluj, tylko przypisz na sztywno jakis kolor do gl_FragColor :)

 

a zeby zrobic random w shaderze, musisz niestety wygenerowac teksture szumu w jakims programie i magiczna operacja latac po UVce tej tekstury w celu zsamplowania randomowej wartosci. daj mi 30 minutek, a pokaze Ci jak to zrobic :)

Odnośnik do komentarza
Udostępnij na innych stronach

Dodano nowy przykład - Szum obrazu:

RandomNoise

psl_randomnoise.PNG

Odnośnik do komentarza
Udostępnij na innych stronach

Dodano nowy przykład zbiorczych efektów do gry Top Down:

Top Down Effects

psl_td_effects.PNG

Odnośnik do komentarza
Udostępnij na innych stronach

Colorize partial w GM.

gdzie moge to znalezc? dawno nie uzywalem GMa :<

Odnośnik do komentarza
Udostępnij na innych stronach

Huder, pokminie jak to zrobic i dam znac ;)

 

Oto w Wasze ręce trafia nowy shader dynamicznego nieba i słońca:

Atmos (Dynamic Sky Simulation)

psl_atmos.PNG

Odnośnik do komentarza
Udostępnij na innych stronach

bo są złe i należy ich unikać, aby byłą jak najlepsza kompatybilność ze starszymi mobilami zwłaszcza. Zrobi się tego shaderka, no problemo - nie wiem tylko, czy dziś <prywata>bo samsung mnie nagli z wysłaniem daftpada </prywata>

Odnośnik do komentarza
Udostępnij na innych stronach

Do biblioteki trafia kolejny shader, rekoloryzacja zakresu kolorów w systemie HSV:

Recolorize (HSV)

psl_recolorize.PNG

 

oraz:

Radial Blur

psl_radialblur.PNG

 

a także:

Fish Eye Distortion

psl_fisheye.PNG

Odnośnik do komentarza
Udostępnij na innych stronach

Do zestawu trafia nowy shader (bazujący na Recolorize, lecz nie zmienia koloru, a teksture na inna):

 

Repaint

psl_repaint.PNG

 

Swoją drogą: Nieco przystopuje z robieniem nowych shaderó, bo aktualnei tworze edytor shaderów na node'ach (jak Unreal Material Editor) z eksportem do GMa, Flasha, oraz natywnie na GLSL i AGAL.

Odnośnik do komentarza
Udostępnij na innych stronach

aktualnie szum perlina opłaca sie robić generując surfaces, wrzucać na niego wyliczony szum - liczenie tego na GPU co klatke zabije wydajność. nie tylko w GMie.

Odnośnik do komentarza
Udostępnij na innych stronach

no to da sie oczywiscie, nawet bez shaderow :)

Odnośnik do komentarza
Udostępnij na innych stronach

moze pokaz, jak generujesz szum. bo 5 sekund dla tego rozmiaru tekstury to zdecydowanie za duzo. no i oczywiscie moge zrobic taki shader, ale watpie, ze przelknie go GMowy kompilator (za duzo instrukcji obstawiam) :<

Odnośnik do komentarza
Udostępnij na innych stronach

https://gmclan.org/up539_4_ValueNoise2.html

Jest generowanych 5 tablic 256x256 każda kolejna ma 2 razy bardziej wygładzony szum od poprzedniej i potem wszystkie są tablice sumowane i normalizowane. Potem tylko interpolacja liniowa 2 kolorów na surface.

 

Możesz jeszcze sprawdzić czy u ciebie pixele są na surface przesunięte o 1 w prawo i dół, jak tak to będziesz widział jedno-pixelowy pasek. Coś gnysek mówił że na radeonach tak jest. Ja mam radeona i tak faktycznie się dzieje.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Do przykładów trafiły dwa shadery Ditheringu (ziarnistości obrazu jak w animowanych GIFach):

(ot takie małe przygotowanie do Game Boy Jamu ;>)

 

Dithering (Black & White)

psl_dithering.PNG

 

Dithering (Color)

psl_dithering_color.PNG

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

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ę...