Skocz do zawartości

GM Bloom 2D


Rekomendowane odpowiedzi

UWAGA! ZNACZNIE OPTYMALNIEJSZĄ I SZYBSZĄ WERSJE BLOOMA ZNAJDZIECIE W: XEDISPLAY

 

Poniewaz to tylko jeden object i kodu jest malo to zamieszcze go tu. Bloom uwzglednia view[0], ale mozna zmienic/usunac wartosci z viewem. Prockozerne jest nie rysowanie warstw, a samo rzutowanie do backgrounda.

 

Tworzymy object 'Bloom'

 

Event Create:

GML
depth=-1000000 // im mniejszy depth tym pozniej bedzie tworzony, co oznacza ze wiecej obiektow on obejmie

q=6 // jakosc/ilosc warstw

s=1.5 // rozmiar/przesuniecie

alp=0.05 // alpha pojedynczej warstwy

col=c_white // kolor

mode=true // tryb blooma. domyslnie efekt wlaczony</span></span>

 

Event Draw:

GML
if(mode)

{

bac=background_create_from_screen(0,0,view_wview[0],view_hview[0],0,0,0) // zrzut ekranu do backgrounda

draw_set_blend_mode(bm_add) // wlaczamy blending addywny (uwzglednianie swiatel)

//rysowanie warstw

if(q>=0)draw_background_ext(bac,view_xview[0],view_yview[0],1,1,0,col,alp)

for(i=1;i<=q;i+=1)

{

a=cos(degtorad(i/q*90))*alp

draw_background_ext(bac,view_xview[0]-i*s,view_yview[0]-i*s,1,1,0,col,a)

draw_background_ext(bac,view_xview[0]-i*s,view_yview[0]+i*s,1,1,0,col,a)

draw_background_ext(bac,view_xview[0]+i*s,view_yview[0]-i*s,1,1,0,col,a)

draw_background_ext(bac,view_xview[0]+i*s,view_yview[0]+i*s,1,1,0,col,a)

draw_background_ext(bac,view_xview[0]-i*s,view_yview[0],1,1,0,col,a)

draw_background_ext(bac,view_xview[0],view_yview[0]-i*s,1,1,0,col,a)

draw_background_ext(bac,view_xview[0]+i*s,view_yview[0],1,1,0,col,a)

draw_background_ext(bac,view_xview[0],view_yview[0]+i*s,1,1,0,col,a)

}

// porzadki

draw_set_blend_mode(bm_normal)

background_delete(bac)

}

 

Screen z EnvSys na ktorym dobrze widac blooma:

screen01bloomqz8.png

 

Uwaga. Jesli ktos chce to uzyc w 3d to niech sprobuje w drawie na poczatku ustawic d3d_set_projection_ortho() - nie testowalem tego.

 

To caly efekt blooma ktory mialem w EnvSys. Byc moze sie przyda :) Creditsy nie konieczne, lecz byloby milo ;)

Pozdrawiam :]

logo_mini.png

Odnośnik do komentarza
Udostępnij na innych stronach

Surfaces nie mozna uzywac (render do surfaces) w drawie, a screen_redraw() jest ryzykowny gdy jakis inny obiekt ma w drawie screen_redraw()

Odnośnik do komentarza
Udostępnij na innych stronach

ogólnie w swojej nowej gierce wykombinowałempodobny efekt, tyle że każdy obiekt ma własnego drawa. wygląda sporo gorzej, ale mimowszystko chodzi zdecydowanie szybciej. próbowałem zamontowaćt tego drawa do tR.I.Pa,alewyszło na to że efekt kompletnie nie nadaje sie do takiej gry :)

efekt byłby świetny gdyby tak nie mulil

EDIT.

K**** przez souljah spacje popsułem i teraz są problemy :(

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