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

Licensing

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.

Download

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

Comments

Log in with itch.io to leave a comment.

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?

(+1)

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!

Thanks!