Horri-Fi is a simple and easy-to-use Shader for Game Maker Studio 2! Setup is as simple as calling:


and then applying it to your surface:

draw_surface(application_surface, 0, 0);

  Thats it!

This shader includes:

  • Bloom
  • Chromatic Abberation
  • Scanlines
  • VHS Distortion
  • CRT TV Curve
  • Noise
  • Vignette

You can dynamically set any of the shader values using the 


functions such as:


The demo above is also included as an EXE file that you can run, adjust settings, and press the "Copy GML code to clipboard" button and paste in your game!!

Using Defold? Check out TheKing0x9 port of this shader for defold here!

Rated 5.0 out of 5 stars
Made withGameMaker: Studio
Tags2D, 3D, Creepy, GameMaker, Horror, Lo-fi, post-processing, Spooky, vfx


Download NowName your own price

Click download now to get access to the following files: 9 MB

Development log


Log in with to leave a comment.

Is it possible to attach these effects to single objects, and not the whole scene?

absolutely! It's just a shader so you can treat it as you would any other shader. My example just shows it used on the application surfaces since it was designed with 'post processing' in mind, but it can be used for anything you want! You just might need to go into the scripts and copy some things for use outside of the functions I have provided. :)


Hi! I have a question, so when I tried this project out it seems like my characters can appear over the scan lines which is weird, like its not affected by the shader for some reason, I simply used the example code. What could be the issue here?


Ok nevermind, turns out I just have to read more carefully,  I did not use draw gui for this,

haha. No worries! Yeah, its just a standard shader protocol. So you can even use Horrifi on individual sprites if you wanted! The GUI just makes it so that you an apply it to the entirety of the application surface. You could also set it as a 'layer script begin/end' for the layer you have all of your instances being drawn if you want as well. Totally up to you! :D I am glad you figured it out! :)



is there a way to limit/ clamp the effect of the shader ? I am trying to figure it out and cant seem to find it. I would like to adjust it so it wont cover the whole camera view but a desire area.

hey! That would come more to either applying the application surface to a separate surface and then using 'draw_surface_part' or just applying horrifi to the specific thing you want to use it on. Horrifi can even be applied to sprites! Just use 

draw_sprte(sprite, index, x, y);


Thanks a lot for this awesome shader. Amazed by the functionality it offers, I ported this shader over to Defold. Please check it out and let me know if I gave you proper credit, or is there something more you’d like to be added.

GitHub :

Thanks again :)


thats sick! Great work! I have been looking for a better CRT so I might have to update mine! Are you okay if I put a link to your repo on this page? Great work, very cool!!


Thanks!! Adding a link to either GitHub or Itch( will be cool with me! Thanks again for this awesome shader!


the .yymps file format is invalid for me. is that where the "render" object is? is there something i'm missing? can't figure out how to get this into my game.


Strange! Are you using an older version of GM? Either way there should be a vertex/fragment shader text file as well as a GML code text file that you can simple copy and paste into your game. You can also find the copy/paste code here as well! Hope that helps! :)

should I paste it into an object or a script?


paste the gml code into a general script, and post the shader codes in a shader. The shader should be named 'shd_horrifi'. Then just follow the above examples for setting it up. :)


Gizmo delivering something awesome once again. How can you not love him?

Aw thanks! 🥰


this works beautifully for class project. i do need to know what license or permissions it has.

(2 edits)

license is included in the project files. ;) free to use MIT


The best plug and play asset I have ever used for gamemaker. It just works and very simple. The effects are all amazing and stuff I've always wanted to include in projects but couldn't figure out. Thanks for your fine work!

yay! Glad it was of use! :D

(1 edit) (+1)

Quick question, I've noticed that the image doubles in size when applying this shader, resizing the application surface down to half the resolution I normally have it at works, but the image quality degrades a bit. Any idea why this might be happening? 

EDIT: Nevermind, I realised that the automatic drawing of the application surface was disabled in the create event, so halfing the scale there worked perfectly. Thanks again!

Glad you figured it out! :) yeah resolution stuff wont be effect by this system. You could apply this shader to a single sprite and it would work (though you'd wanna go into global.__horriFi > render() function and get the correct texture/texel size).


Looks cool.


I loved it, very simple to implement! 10/10

Yay! Thanks! :D

(1 edit) (+1)

Wow!  This looks great.  Can the effect be used on individual objects rather than the whole surface?

(1 edit)

Absolutely! Though you might have to go into the gml code and tweak some stuff for the bloom effect. It takes in the texel size of the application surface, but if you go into global.__horriFi.render() you will see where I am setting that and you can change it if you wish! :)


This looks great!! Would it be okay to add this to a paid product, and if so how would you like to be credited?


absolutely! There is an included license for free use to distribute/alter the code as you please. :) no credit required but it is much appreciated!! :)


Looks great! I'll definitely keep this one in mind when I do another horror game! Thanks, Gizmo199

Thanks! I hope it is useful! :D


another classic to add to the gms collection

Thanks so much!! I hope it will be of use to you! :D