Tutaj podam drugi pomysł na rozmycie w gmie - wykorzystanie interpolacji przy rysowaniu. Rysujemy surface (z włączoną interpolacją) na dwa razy mniejszy surface, po czym przywracamy go do pierwotnego rozmiaru (powiększamy dwa razy). Później znowu zmniejszamy, znowu powiększamy itd. Można tutaj stosować różne kombinacje skali surfaców (zmniejszyć go dwa razy, potem zwiększyć dwa, zmniejszyć cztery, zwiększyć cztery itd.) i kombinować z nimi w celu uzyskania najlepszego stosunku jakośći do fpsu.
Jakiś sample który dla kogośtam robiłem kiedyś, w sumie sam nie pamiętam kogo:
http://dl.dropbox.com/u/25762547/blur.gmk
Fps tej techniki może nie powala (choć można to jeszcze zoptymalizować) ale jakość rozmycia jest myślę znacząco lepsza niż wersji z półprzezroczystymi surface'ami.
Istnieje:GML
draw_set_blend_mode_ext(bm_zero, bm_inv_src_color);
draw_sprite(sprite, 0, 0, 0);
draw_set_blend_mode(bm_normal);
Rysujemy to oczywiście na surfacie (surface_set_target()).
Maska "sprite" powinna być cała czarna i wtedy jej kanał alpha zostanie przeniesiony na surfejsa (tam gdzie sprite jest przezroczysty na x% tam surface będzie przezroczysty na x%).
W sumie pisze te blendy z pamięci ale chyba się nie pomyliłem : p