Some added thoughts: since this is a full-screen effect that affects everything, you'd apply this to application surface draw, meaning you'll need to turn off automatic draw and do it manually while applying the shader. Easiest by making a separate controller object for this operation. Put the object into your first room and make it persistent. In its Create event issue application_surface_draw_enable(false) to turn off automatic drawing. Then add some code to Post Draw event. That event is used because in Post Draw, GMS sets the default draw target to your display, so when we take app surface and do a draw, it becomes visible. This normally happens automatically, but we turned it off so we can apply a shader to the operation. Simply set the shader (and any uniforms it may need), perform draw_surface(application_surface, 0, 0) and then reset the shader. You should try this without the shader first so you can confirm your code is correctly performing the manual draw operation.