Skocz do zawartości

[GMS] Problemy z działaniem shaderów na Draw_GUI


Rekomendowane odpowiedzi

Uszanowanko misiaczki!

Mam malutki problemik, a dokładniej dodałem shader modyfikujący grafikę, znajduje się on w najbardziej wysuniętym do przodu obiekcie.
Wszystko działa doskonale do momentu dodania drugiego obiektu rysującego coś również w Draw_Gui, kiedy znajduje się nad shaderem to nie działa a pod w ogóle się nie rysuje. Zwykłe draw w stylu animacji gracza czy tekstem nad nim działa wyśmienicie.
Co poradzić mogę na to? :o

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Administratorzy

Na pewno robisz dobrze shader_set i shader_reset ? no i pytanie jakie mają depth te oba obiekty (przypominam, że nawet jak wszystkie mają 0, to draw gui rysuje się dopiero po wszystkich normalnych draw).

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Obiekt z shaderem ma -999, jak obiekt rysujący ustawię na -9999 to nie zniekształca a jak np -99 to w ogóle nic nie rysuje. Przypominam jedno i drugie znajduje się w Draw_GUI.
A co do poprawności shaderu to nie wiem, chyba ok skoro działa wszystko poza tym jednym eventem;)
Całość działa mniej więcej tak:
 

if shader_on=1
{
surface_set_target(surf0)
draw_surface_part(application_surface, 0, 0, 400, 256,view_xview[0],view_yview[0])
surface_reset_target()

shader_set(shd_xbr_0); 
    shader_set_uniform_f(uni_0_resolution, var_view_width*1, var_view_height*1);
    
    surface_set_target(surf1)
    draw_surface_stretched(surf0, 0, 0, var_view_width*scale, var_view_height*scale);
    surface_reset_target()
    
shader_reset();


shader_set(shd_xbr_1); 
    shader_set_uniform_f(uni_1_resolution, var_view_width*scale, var_view_height*scale);
    
    surface_set_target(surf2)
    draw_surface(surf1, 0, 0);
    surface_reset_target()
   
shader_reset();

shader_set(shd_xbr_2); 
    shader_set_uniform_f(uni_2_resolution, var_view_width*scale, var_view_height*scale);
    
    surface_set_target(surf3)
    draw_surface(surf2, 0, 0);
    surface_reset_target()
   
shader_reset();

shader_set(shd_sharper); 
    shader_set_uniform_f(uni_sh_resolution, var_view_width*scale, var_view_height*scale);

    draw_surface_stretched(surf3, 0, 0, var_view_width*force_scale, var_view_height*force_scale);
shader_reset();
view_surface_id[0]=surf0
}
else
{
    draw_surface_stretched(surf0, 0, 0, var_view_width*force_scale, var_view_height*force_scale);
    view_surface_id[0]=surf0
}

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Administratorzy

Jak przypisujesz surface do view, to w ogóle nie powinno kolidować z GUI. Chyba, że robisz to w evencie draw gui, to robisz to wtedy źle, bo GUI jest niezależne od view jeśli dobrze kojarzę. Może tutaj jest problem.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Administratorzy

a nie możesz na application surface w post draw zrobić ? (i wyłączyć automatyczne rysowanie application surface).

Odnośnik do odpowiedzi
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ę...