For my own most recent playthrough I’ve used some of the following shaders (mostly of crosire/reshade-shaders, except where noted):

MXAO

DepthHaze

MagicDOF

MotionBlur

HDR

Smart_Sharp (of BlueSkyDefender/Depth3D)

DiffuseGlow (of Ioxa53‘s shaders)

Your mileage may vary, but I’ve found you can certainly layer on the shaders to achieve all sorts of effects, some other shaders I would recommend would be DepthHaze (especially in combination with DOF shaders), SMAA, AdaptiveFog, AmbientLight, and 3DFX.

Of course, I cannot recommend experimenting with the various shaders available in reshade enough, it’s more than worth playing around until you’ve found that comfortable spot of every pixel on screen looking just the way you like it.

To get ReShade up and running with Project64/GLideN64 you’ll have to do some configuration. First, you’ll need to install ReShade for Project64. Grab the installer here, when you run the installer select your Project64.exe file from your installation directory, and then select “OpenGL” for your rendering API and the installer will take care of the rest.

You’ll then need to configure GLideN64. First, let’s open up the graphics plugin configuration and head to the “Frame buffer” tab to configure our frame buffer emulation. You’ll want to ensure “Emulate frame buffer” is checked, as is “Use emulator help to read/write frame buffers”. I haven’t checked any other boxes, and ReShade works for me, but feel free to experiment with the settings a bit. As well, for the “Frame buffer swap on” setting you’ll need to select the option “VI origin change”.

Next, head to the “Emulation” tab, and ensure your “Internal Resolution” is set to “Same as output resolution”. This one I’m not so sure I can explain, I don’t seem to be able to get ReShade’s depth buffer rendering unless I specifically use this setting, although it strikes me that this should be configurable even with ReShade. If anyone finds they’re able to change their internal resolution and still use ReShade, please let me know as I’d be interested to see if it’s simply a setting I’ve gotten wrong.

ReShade’s loading incator inside of Ocarina of Time.

Once you’ve gotten through the installation and configuration above, you should be able to fire up Project64 with Ocarina of Time just as normal, however you’ll notice that ReShade’s loading indicator will appear along the top of the screen!

You’ll now be able to press Shift + F2 to open the ReShade menu where you can enable, disable, reorder, and configure any shaders you’ve downloaded.

If at this point you haven’t downloaded any shaders, I recommend downloading some from these repositories:

crosire/reshade-shaders (these are essentially the “default” shaders, it’s a considerable collection).

BlueSkyDefender/Depth3D (some useful shaders for interacting with the game’s depth maps, allows you to play in various formats of 3D).

AWBuchanan7/reshade-shaders-retooled (these are some of the crosire/reshade-shaders, however, they’ve been retooled to use BlueSkyDefender’s depth linearization method which is more configurable. You’ll want to grab this if you’re interested in features like ambient occlusion or depth of field).

ReShade’s configuration menu overlaid in a running instance of Ocarina of Time in Project64!

You should notice ReShade provides a list of your available shaders under the “Home” tab. Keep in mind that there is a “Settings” tab as well. Under the “Settings” tab you’ll want to double check the Effect Search and Texture Search paths and that they lead to where you’ve stored your downloaded shaders. You’ll also want to make a note of the “Usage Mode” setting. Switching to Performance Mode grants a considerable performance boost (something you’ll likely find yourself needing if you’re using high res textures, the 30 frames per second hack (described below) and shaders in combination) however keep in mind you can only configure your shader settings in Configuration Mode.

Temple (Scripting)

Temple is a project of my own (of which I am quite proud) so this is my plug for it. Temple provides an interface to the game’s memory space through TypeScript classes which enables the simplified creation of “mods” for the game in TypeScript.

Temple currently comes bundled with a couple of small mods, that you can use to customize your Ocarina of Time game as you see fit.

CameraController is a Temple mod that enables enhanced camera controls. This is done through mapping player 3’s controller’s joystick to the camera, allowing Project64 users to then configure their controllers or keyboard/mouse combos to utilize both player 1’s controller and player 3’s analog stick however they best see fit. CameraController is in active development and more specific controls, including those for the roll and zoom of the camera are on the way!

DisplayAmplify is a Temple mod that aims to provide a single interface (and configuration file!) to manage a handful of display-related hacks such as increasing the game’s framerate (a default of 20fps) some 50% to 30fps, adjusting the aspect ratio for 16:9 “Widescreen” or 21:9 “UltraWide” hacks, and boosting the game’s draw distance, among other functions.

I’ll be the first to admit Temple, CameraController, and DisplayAmplify are all in early alpha stages and have more than a fair share of the bugs that are character to this early alpha stage, but if you have a particular interest in modding it’s a project worth checking out!