Godot N64 Shader Demo

Available on GitHub (MIT License)

A collection of shaders and materials for Godot engine that aim to recreate the following aspects of the N64 aesthetic:

  • 3-point texture filtering
  • Light anti-aliasing
  • Linear mip-map filtering
  • Horizontal blur across the screen
  • Limited color depth
  • Hardware dithering to hide color banding
  • Shiny chrome-like metallic surfaces
  • Billboard sprites
  • Fog to limit draw distance

Demo Controls

  • Space: Toggle camera and object movement
  • R: Reset scene

Tips for best results

  • Use very low poly models
    • Prefer smooth-shading over flat-shading wherever possible
  • Keep textures as low resolution as humanly possible
    • Huge blurry texels are the cornerstone of the N64 look
    • Make sure filtering is disabled - the filtering is handled in the shader
    • Make sure mip-maps are enabled
    • Rely on a mix of vertex colours and texture maps, instead of higher detailed texture maps wherever possible
  • Keep your internal resolution low
    • Resolution on N64 is a complicated affair. While the system would output to video at certain specific resolutions, games themselves would have their own separate internal resolutions
    • These internal resolutions could vary wildly between games, but 320x240 seems to be the most common choice
    • That being said, you can easily go widescreen by using a 16:9 resolution with similar height
  • Use as basic of a lighting set up as you can get away with
    • Modern lighting techniques are a very easy way to break the illusion of appearing like early 3D!
    • Where possible, prefer to use white ambient light, with vertex colours on geometry to fake lighting

Floor texture (available under CC-0): https://stealthix.itch.io/rpg-nature-tileset

StatusReleased
CategoryOther
PlatformsHTML5, Windows, Linux
Rating
Rated 5.0 out of 5 stars
(16 total ratings)
AuthorMenacingMecha
Tagsdemo, Godot, n64, Retro, Shaders, tech-demo

Download

Download NowName your own price

Click download now to get access to the following files:

godot-n64-shader-demo-v1.x_windows.zip 15 MB
Version v1.0.3
godot-n64-shader-demo-v2.x_linux.zip 25 MB
Version v2.0.1
godot-n64-shader-demo-v2.x_html5.zip 7.1 MB
Version v2.0.1
godot-n64-shader-demo-v2.x_windows.zip 25 MB
Version v2.0.1
godot-n64-shader-demo-v1.x_linux.zip 16 MB
Version v1.0.3
godot-n64-shader-demo-win.zip 13 MB
Version 1
godot-n64-shader-demo-windows.zip 14 MB
Version v1.0.2
godot-n64-shader-demo-linux.zip 15 MB
Version v1.0.2
godot-n64-shader-demo-x11.zip 14 MB
Version 1
godot-n64-shader-demo-html5.zip 4.1 MB
Version v1.0.2

Development log

Comments

Log in with itch.io to leave a comment.

Really cool tool! But I'm having a few issues. 

From what I understand, if I want to have an object be rendered in the scene I need to put it inside the N64 layer, childed under 'Sub Viewport', but if I want to do this with a character controller, it removes the ability to turn the camera.

I'm assuming I need a way to render the layer onto the player camera, but I'm not sure how I'd go about doing this.

I'm new to Godot so this might be a really simple fix and I'm just missing it.

did you figure out a fix?

i did not unfortunately

I think the fix is mainly to have your world scene as a child of the subviewport. The subviewport is basically a texture, and it wont display to anything unless you assign it to display to something. You do this by putting as a child of a subviewport container node. However, the subviewport wont have anything to display unless it has a camera as a child. So make sure to put the entire world scene as the child.

If that doesnt fix anything, make sure the subviewport container is not eating mouse inputs. Since the container is a control node, it will likely automatically take all mouse inputs and not pass them down. Just mess with the option highlighted in the picture until you hopefully get it working!

thanks!

this is quite epic. i might make a use of it, like a first person game most likely.