Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered May 16, 2015 · View creator page →

Creator of

Recent community posts

If you have suggestions on what functionality you'd like to see supported by this, don't hesitate to type them here. I may implement custom sprite drawing functions, but the main reason I don't really want to update this is because of how imperfect the existing code is (but I can't change it for compatibility reasons, so...), plus I don't really use GM any more these days.

Hi! You should be able to get somewhat decent results by using the shader w/ standard sprite drawing functions (though you might have to use the provided asset API to set the shader resolution to match the sprite size), provided the sprite resides on its own texture page (you'll get bleed-in from atlas contents otherwise).

Hi, someone's made a filter implementation of this, maybe that's what you're looking for -

The shader is only meant to be applied on surfaces, though you might have luck with sprites, assuming they're on their own separate texture page and provided there's enough empty space around them for the various texture shifting effects to be properly rendered. Also, the shader will work just fine with or without standard alpha blending, there aren't any special requirements in regards to that.

Yes, the legacy version is known not to run well on phones. The GMS2 one is basically a complete rewrite that should work better across the board.

Hi! There's a simple GMS2 example included in the project that demonstrates the usage of the shader with little code.

I don't use Unity, so I can't as of now. I also don't consider the product to be good enough to warrant a fresh release on a different platform.




Plenty of those online!

Hi. The shader is not really meant to be used to render individual sprites (not counting the obvious texture page issue, it would also require a custom draw_sprite function that would provide a large enough rasterised area for the "offset" effects not to be cut off). It's a full-scale post-processing effect. AFAIK, people usually get around this by using a big surface instead.

As for the resolution problem, by default the size of the application surface is used. If you need a different one, pass it via the arguments of the BktGlitch_activate function.

I made it, and it's there only for the purposes of the demo.
It isn't a "usable" part of the package.



The new version contains a yymp file you can drag-and-drop into GMS2 to import the files.


If you're still interested in making the shader work, please try out the new update.


The shader can be used on anything rendered by the GPU. In this case, the usual approach would be to render everything you'd like to have the effect applied to into a new surface, which you would then draw with the shader active. 

Yes, and yes. :)

Please read the comments provided in the code of the controller object, it's all explained in there!

It works fine through GM:S 1.4 on a Xiaomi MI4c, which isn't really a high-end phone.

If the demo doesn't work, your device is probably too old.



Thanks! <3

Looks like you're using the shader in your object draw calls instead of only when you're rendering the application surface.

Does the demo work?

You're welcome!

(1 edit)

If Godot supports GLSL ES, then sure, the fragment shader should work fine as long as you hook up all the uniform/varying variables correctly.