A downloadable tool for Windows

Download NowName your own price

Retro 3D Shader Pack for Unity

A collection of shaders used to replicate the distinct visual style of early 3D games within the modern Unity engine. Designed to be usable by non-programmers while also featuring in-depth code commenting for easy modification.

Follow @leakyfingers on Twitter for updates.

Features (v1.1)

  • Built for Unity 2019.1.9
  • Four distinct lighting models; unlit, vertex lit, flat lit, and standard Unity lighting
  • Support for common material properties such as transparency, color tint, specularity, normal mapping, emission, and more
  • Retro material properties which can be easily enabled and disabled including:
    • Vertex jitter/snapping (world/screen space toggle)
    • Affine texture mapping with intensity slider
    • Vertex draw distance
  • Lit and unlit sprite shaders 
  • Retro post-processing shader which uses the in-built Unity Post-Processing Stack (v2) for simple integration with other post process effects - includes:
    • Pixelation (can be toggled between pixel scaling vs. fixed vertical resolution)
    • Color depth/posterization
    • Dithering (scalable, comes with a set of supplied dither patterns as well as the option to use your own)
  • Example scene showcasing the practical use of each shader with existing materials


This pack is licensed under the Creative Commons (Attribution Share-Alike License) - the pack itself can be freely shared and adapted as long as proper attribution is given and it remains under the same licensing terms.

Rated 5.0 out of 5 stars
Made withUnity
Tags3D, Demake, DRM Free, Game Design, Game engine, Lo-fi, Low-poly, Retro, Unity


Download NowName your own price

Click download now to get access to the following files:

Retro 3D Shader Pack for Unity v1.1.unitypackage 2 MB
Demo Scene v1.1 19 MB

Development log


Log in with itch.io to leave a comment.

heeey thanks I think it will come in handy :)

looks. cool :)
imma try that out sometime


Dude this was a lifesaver, this was the best out of all the choices and I am very happy with it.

How do you use this?


Hello, does this shader supports urp/hdrp?

Hey, amazing stuff!

Is there any chance you can make an iteration of the transparent versions which are cutout alpha rather than blend alpha? I've been fiddling around with this and I can't for the life of me figure out how to alter the code in a way that will allow for cutout transparency.

Thanks so much!


When I import this I have 20 asset errors it still works but I cant go into play mode. Is there anyway I can fix this?


Yep, all you have to do is select Window > Package Manager, wait a few seconds for all the packages to load and then select the Post Processing package and install it and that should sort everything out.



I have the same issue, but I'm not seeing the Post Processing package at all. Is there something I'm missing?

This is super helpful and cool! Thanks for making this!

No worries, glad it's come in handy!

Outstanding work! Using this in my Jam submission https://zellator.itch.io/sortium 

aw come on.why is it private?

This is very cool. I like the options. Specially the draw distance and emission.

Though the vertex lit shader isn't working like I expected it to. Yours is the top, and the bottom is the legacy vertex lit shader. 

Was the difference intentional?

(2 edits)

Yup, this is a bug - just did some testing myself and spotlights are lighting up the entire face when my vertex shader is being used.

Thanks for pointing it out, I'll try to get it sorted as soon as I can + let you know when it's fixed.

Ok, so I looked into it and I unfortunately don't think I can do much about it - my vertex shader uses the 'LightMode = Vertex' tag which means that the lighting calculations only take into account the nearest 4 point lights and a directional light. All spotlights are treated as point lights which is why the light radius in the upper image is way bigger.

I can't use the lighting of the legacy vertex shader because its a fixed function shader which has basically no flexibility and means that I can't properly implement the additional retro properties.

Sorry I can't help with this problem - if you're trying to simulate a flashlight, maybe you could approximate the old Source Engine method by attaching a point light to the camera, raycasting from the center of the screen to find the distance to whatever surface the player is looking at, then adjusting the distance of the point light so it's just in front of that surface?


Shader code is a mystic magic I may never grasp fully. 

Thank you for looking into it so swiftly.

Haha I don't think I ever will either!

Thanks for the feedback :)

Wow! This looks amazing! Can't wait to try it out!