It's possible to use Reshade to add modern effects such as ambient occlusion to N64 games using this plugin, but some of these enhancements require frame buffer emulation to be disabled in order to work. This can cause issues when a game requires frame buffer emulation for certain effects or cutscenes. I've been exiting fullscreen and entering the menu to temporarily enable the frame buffer when needed, but it would be much more convenient to have a hotkey so that I can remain in fullscreen mode without interrupting gameplay. If it's not too much trouble, could this feature be implemented down the road?
Tell the Reshade developer to fix thier hooks.
Disabling framebuffer emulation breaks... so much stuff.
@Nerrel
Frame buffer emulation is pretty important for most of the N64 library, I think. It would probably end up breaking most of the games you were trying to enhance.
I understand the problems, but Majora's Mask at least runs mostly without issues outside of cutscenes and the visual enhancements gained in exchange are pretty substantial. Apparently framebuffer emulation needs to be disabled to reveal some form of depth information needed for the AO effect to work. I wish there were a way to apply the effect with fb emulation, but for now this seems to be it. It's not a priority, but if new hotkeys are being considered anyway then this one would be helpful to me.
After reading a little more it seems that the reason framebuffer emulation has to be disabled in order for ambient occlusion to work is because the AO shader needs to have depth buffer access, and disabling framebuffer emulation apparently gives it that. Is there any possible way that the depth buffer could be made available without disabling framebuffer emulation? Forgive me if these are really ignorant questions, but it would really expand the range of effects that could be used if this were possible.
The ambient occlusion shader in question is explained here: https://reshade.me/forum/shader-presentation/1874-marty-mcfly-s-ambient-obscurance-mxao-with-il?limitstart=0
Again, it works really nicely with N64 games and especially with Majora's Mask. It's a shame that it can't be used without disabling fb emulation and breaking a lot of other effects.
After reading a little more it seems that the reason framebuffer emulation has to be disabled in order for ambient occlusion to work is because the AO shader needs to have depth buffer access, and disabling framebuffer emulation apparently gives it that.
Depth buffer is not available regardless of fb emulation option since major code changes made few months ago. Now Frame Buffer Objects (FBO) always used to render frame.
However, your problem has relatively simple solution. Currently, color buffer from FBO is copied to main frame buffer and displayed on screen. FBO has depth buffer as well, but it is not copied to main depth buffer, it would be waste of GPU resources. If you need depth buffer for external shaders library, it also can be copied. As I said, it is relatively simple, but I loaded with other tasks and can't take this one atm. May be somebody else will do it. Necessary steps:
Thank you for answering this, it's great to hear that it's possible. I'd be grateful if anyone is able to take it up; I want to include the AO shader in the texture pack I'm doing, but I can't really recommend anyone using it if fb emulation has to be disabled. It adds a lot of depth to the image and I think it's worth the effort.
http://screenshotcomparison.com/comparison/216502
http://screenshotcomparison.com/comparison/216507
Since having a depth buffer option would be far better than what I was asking for here, I'll go ahead and close this.
Most helpful comment
Tell the Reshade developer to fix thier hooks.