Piedro Opublikowano 3 Lutego 2014 Udostępnij Opublikowano 3 Lutego 2014 W jaki sposób uzyskać koloryzacje sprita za pomocą shaderów aby koloryzować ,mocniej im ciemniejszy jest sprite? Prykład wzięty z metroid zero mission. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lechu4444 Opublikowano 3 Lutego 2014 Udostępnij Opublikowano 3 Lutego 2014 Przeszukaj temat YXE, na pewno był tam efekt koloryzacji powinien wystarczyć. Dokładnie to 3 strona. ;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 3 Lutego 2014 Udostępnij Opublikowano 3 Lutego 2014 vec4 col = texture2D( gm_BaseTexture, texCoord ); float gray = dot( col.xyz, vec3( 0.299, 0.587, 0.144 ) ); gl_FragColor = mix( vec4( 0.0, 0.0, 1.0, 1.0 ), vec4( 1.0, 1.0, 1.0, 1.0 ), gray ); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piedro Opublikowano 3 Lutego 2014 Autor Udostępnij Opublikowano 3 Lutego 2014 Proszę się ze mnie nie śmiać ale gdzie znalazłbym jakiś tutorial aby nauczyć się używać tego co podałeś? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 3 Lutego 2014 Udostępnij Opublikowano 3 Lutego 2014 Vertex zostawiasz tak jaki jest, a w fragment wklejasz to co podał Psyś. funkcje od wyświetlania spritu obejmij pomiędzy shader_set(nazwa_shadera); shader_reset(); tak jak to się robi przy surface. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piedro Opublikowano 3 Lutego 2014 Autor Udostępnij Opublikowano 3 Lutego 2014 Vertex zostawiasz tak jaki jest, a w fragment wklejasz to co podał Psyś. funkcje od wyświetlania spritu obejmij pomiędzy shader_set(nazwa_shadera); shader_reset(); tak jak to się robi przy surface. ERROR: In Shader shdr_frozen at line 10 : 'texCoord' : undeclared identifier In Shader shdr_frozen at line 10 : 'texture2D' : no matching overloaded function found In Shader shdr_frozen at line 10 : '=' : cannot convert from 'const mediump float' to '4-component vector of float' znaczy gdzie mam wkleić? Między klamry w "Fragment"? GML // // Simple passthrough fragment shader // varying vec2 v_vTexcoord; varying vec4 v_vColour; void main() { gl_FragColor = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord ); vec4 col = texture2D( gm_BaseTexture, texCoord ); float gray = dot( col.xyz, vec3( 0.299, 0.587, 0.144 ) ); gl_FragColor = mix( vec4( 0.0, 0.0, 1.0, 1.0 ), vec4( 1.0, 1.0, 1.0, 1.0 ), gray ); } Jak widać krzaczy się. Zupełnie nie mam pojęcia jak załapać. Ale efekty przyciągają uwagę głupiutkiej małpki. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 3 Lutego 2014 Udostępnij Opublikowano 3 Lutego 2014 A bo psyś inaczej nazwał zmienne poprostu GML varying vec2 v_vTexcoord; varying vec4 v_vColour; void main() { vec4 v_vColour = texture2D( gm_BaseTexture, v_vTexcoord ); float gray = dot( v_vColour.xyz, vec3( 0.299, 0.587, 0.144 ) ); gl_FragColor = mix( vec4( 0.0, 0.0, 1.0, 1.0 ), vec4( 1.0, 1.0, 1.0, 1.0 ), gray ); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piedro Opublikowano 3 Lutego 2014 Autor Udostępnij Opublikowano 3 Lutego 2014 A bo psyś inaczej nazwał zmienne poprostu GML varying vec2 v_vTexcoord; varying vec4 v_vColour; void main() { vec4 v_vColour = texture2D( gm_BaseTexture, v_vTexcoord ); float gray = dot( v_vColour.xyz, vec3( 0.299, 0.587, 0.144 ) ); gl_FragColor = mix( vec4( 0.0, 0.0, 1.0, 1.0 ), vec4( 1.0, 1.0, 1.0, 1.0 ), gray ); } Jeszcze bardziej się krzaczy. czy musze zainicjować coś w create? GML In Shader shdr_frozen at line 14 : 'gm_BaseTexture' : undeclared identifier In Shader shdr_frozen at line 14 : 'texture2D' : no matching overloaded function found In Shader shdr_frozen at line 14 : '=' : cannot convert from 'const mediump float' to '4-component vector of float' In Shader shdr_frozen at line 16 : 'gl_FragColor' : undeclared identifier In Shader shdr_frozen at line 16 : 'assign' : cannot convert from '4-component vector of float' to 'float' Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 3 Lutego 2014 Udostępnij Opublikowano 3 Lutego 2014 gm_BaseTexture nie podświetla ci się na czerwono? Bo to jest stała z GMa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piedro Opublikowano 3 Lutego 2014 Autor Udostępnij Opublikowano 3 Lutego 2014 gm_BaseTexture nie podświetla ci się na czerwono? Bo to jest stała z GMa. podświetla się; owszem [EDIT] O matko. Głupi ja wsadziłem to do Vertexa a nie do Fragmentu. Ale teraz jak pozbyć sie tła? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 3 Lutego 2014 Udostępnij Opublikowano 3 Lutego 2014 Nie wiem o co chodzi. Mi działa http://sandbox.mediafire.com/download/y0tt...c0ih/Piedro.gmz No też zauważyłem że ten shader alphy nie uwzględnia Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 3 Lutego 2014 Udostępnij Opublikowano 3 Lutego 2014 faktycznie, zapomniałem o alfie. wrzuć to do fragment shadera: varying vec2 v_vTexcoord; void main() { vec4 col = texture2D( gm_BaseTexture, v_vTexcoord ); // pobieramy kolor pixela z tekstury. float gray = dot( col.xyz, vec3( 0.299, 0.587, 0.144 ) ); // ta operacja wykonuje szybka transformacje koloru w skale szarosci. gl_FragColor = vec4( mix( vec3( 0.0, 0.0, 1.0 ), vec3( 1.0, 1.0, 1.0 ), vec3( gray ) ), col.a ); } a jak chcesz specjalnie dla Ciebie zajefajny efekt animowanego stopniowego zamrazania, wyslij mi grafike na PW - dam CI efekt i pokaze Ci jak kolejne grafiki przygotowywac zeby i one wspoldzialaly z efektem :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piedro Opublikowano 3 Lutego 2014 Autor Udostępnij Opublikowano 3 Lutego 2014 faktycznie, zapomniałem o alfie. wrzuć to do fragment shadera: varying vec2 v_vTexcoord; void main() { vec4 col = texture2D( gm_BaseTexture, v_vTexcoord ); // pobieramy kolor pixela z tekstury. float gray = dot( col.xyz, vec3( 0.299, 0.587, 0.144 ) ); // ta operacja wykonuje szybka transformacje koloru w skale szarosci. gl_FragColor = vec4( mix( vec3( 0.0, 0.0, 1.0 ), vec3( 1.0, 1.0, 1.0 ), vec3( gray ) ), col.a ); } a jak chcesz specjalnie dla Ciebie zajefajny efekt animowanego stopniowego zamrazania, wyslij mi grafike na PW - dam CI efekt i pokaze Ci jak kolejne grafiki przygotowywac zeby i one wspoldzialaly z efektem :) grałeś kiedyś w metroida? ice beam mrozi od razu. [edit] mogę to łączyć ze zmianą blendingu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 3 Lutego 2014 Udostępnij Opublikowano 3 Lutego 2014 nie to nie, ale example i tak robie, bo fajny motyw na efekt podsunales :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piedro Opublikowano 3 Lutego 2014 Autor Udostępnij Opublikowano 3 Lutego 2014 to zrób i daj do forumowej biblioteki shaderów, ludzie na pewno skorzystają. [EDIT] Efekt jest wspaniały! Oh nie mogę się doczekać. Jeszcze tylko dorzucić spadające particle ze sprita... cud miód i maliny. nie to nie, ale example i tak robie, bo fajny motyw na efekt podsunales :) można to przerobić aby można było blendować sprita względem nasycenia. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 7 Lutego 2014 Administratorzy Udostępnij Opublikowano 7 Lutego 2014 Yhm... 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ę