A downloadable asset pack

Get this asset pack and 10 more for $10.00 USD
View bundle
Buy Now
On Sale!
50% Off
$3.00 $1.50 USD or more

Create and customize your own holographic effect using this easy-to-implement asset. Gain control over effects such as line skips, artifact glitches, static noise, reflections, lighting, transparency, and scan lines.

Quick shoutout to Marshall Cannon and his studio: Runner-Up Studios for providing the awesome monster that is seen in the demonstration. This monster is from their  up-coming, sci-fi survival  game titled Cryo. Check out their work over at http://runnerupstudios.com/cryo/ and twitters: https://twitter.com/marshall_cannon https://twitter.com/RunnerUpStudios and show them some love.
Follow me over at https://twitter.com/GentooGames and my website https://www.gentooindiedev.com

How To Use:
1. Install Asset
2. Open project 
3. Create a new object with your desired sprite, and parent that object to the oHologram object.
4. Run the project and play around with the holographic settings.
5. Once you have found a set of values that you like, modify all the properties marked with: "MODIFY THIS" in the code.
5. Now delete all of the things marked with: "REMOVE W/MENU"
6. Delete all unnecessary scripts and objects related to the UI
7. Finished!
(See video for more information, and more thorough demonstration)

Even though there are only 3 presets for colors, you can use any color that you want when specifying in the code. Try getting crazy with your front and back light colors.

Yes, one major downside is that currently you have to create a copy of any sprite that you want to use for your hologram. This copy has to be an entirely white version of the sprite titled:" {originalSpriteName} + White" in order to create the scan line and static effects. If you do not have an entirely white version of your hologram sprite, the project will still run, but you will not be able to use either of those effects. This means you need two sprites for every hologram effect you want to use. I am sure there is a way to do this by drawing the original sprite to a surface with a discoloration, and then saving that surface as a new sprite; however, I believe that was beyond the scope of this project. Maybe it is something I will include in a later version.

Q: Did you use shaders for this?
A: No
Q: Could you use shaders for this?
A: Yes
Q: Shouldn't you have use shaders for this?
A: Yes
Q: Why didn't you use shaders for this?
A: I do not know shaders very well.
Q: What did you use instead?
A: draw_sprite_part_ext()
Q: Isn't this less efficient?
A: Yes, it creates a ton more draw calls per frame.
Q: Why did you do it then?
A: Because for most projects, and depending on the effects you choose to utilize, you won't notice any performance dips. Also, for those unfamiliar with shaders, this demonstrates another way to achieve some of these effects using a relatively intuitive method.
Q: Do you hate me?
A: No, I love you


Get this asset pack and 10 more for $10.00 USD
View bundle
Buy Now
On Sale!
50% Off
$3.00 $1.50 USD or more

In order to download this asset pack you must purchase it at or above the minimum price of $1.50 USD. You will get access to the following files:

Hologram.zip 84 kB
Hologram.yyz 44 kB


Log in with itch.io to leave a comment.

I know this is a stupid question, but how do I install this?

This seems to be broken in GMS2.3. Getting an error with the case statements.


very unoptimized, takes a lot of resources in the draw event. went from 70 fps to 40 fps...

This is something that I address specifically in the description and in the video. The most unoptimized effect is the static effect, which does cause a performance dip. This effect is designed to be a learning tool for showcasing how to achieve some of these effects without having to know shaders, as well as an effect that can be used sparsely with minimal downside. 

Running tests right now show that with all effects, except static, enabled, I can achieve an FPS of 2600+. Turning on static drops this down to 200+. If you are hitting an FPS of 40, then I would suggest you take a look at the rest of your code. 

Feel free to reach out if you would like a refund on your $3. The reason I charge so little for these is because I create videos that explain how to do everything for free, and in that video I address these issues explicitly. Thanks 

Would creating a sprite with several frames of static and then just blending the two together be faster?  It wouldn't involve shaders and still be fairly simple.

Absolutely! You could even write some code that would generate noise, and blend that with the sprite. This would achieve an effect very similar to what we did in this asset. However, blending sprites in game maker is not as easy as it might seem. The only way I was able to accomplish Sprite blending in another project, was to write each sprite into a buffer, and then read each buffer simultaneously, while writing the combined results into a third buffer, and then translating that buffer data back into a sprite. I’m hopping to finish up this project and release it as another tutorial so that I can show how to blend sprites. Feel free to DM in twitter if you have any specific technical questions and I can try to help out :)

Hmmm... I see.  I don't know GameMaker well enough for doing tricks but if I were to do this in Photoshop, I would just change my noise layer to Multiply or Luminous and use the clipping to force it to the shape of the main sprite.  Couldn't you use something like:  sprite_set_alpha_from_sprite() to clip the noise sprite to the same shape of the main sprite and use gpu_set_blendmode_ext() to achieve the blending mode by drawing the main sprite with it's alpha setting and then the noise sprite with an alpha setting of 0.1 to combine them?  Or is that too slow?

I sincerely hope you're able to accomplish this. I want to do something very similar with layered sprites to show battle damage over the course of a game from beginning to end (granted, that is a very long time from now) and I haven't had a whole lot of luck in actually finding any documentation that supports this, or even speculation that it might be a thing without serious performance issues.

Thank you for this awesome asset! I'll be purchasing it in the near future and hope to make use of it, but if nothing else, it looks really fun to play and learn with. :)