-
-
Notifications
You must be signed in to change notification settings - Fork 74
Description
Hi,
I found a way to overcome all the major issues in the best version of Splinter Cell: Double Agent for Xbox Original in the Xemu emulator (fixing the green glow in the upper-left corner, smoothing out the horrible low resolution jaggies and pixels, preserving night vision / thermal / EMF goggles effects and working in-game video cutscenes, and even achieving 120fps with frame generation). Here's the instruction for those who interested: https://docs.google.com/document/d/1rcOwOqobpMf1LIBSEzQR6ziem0PW3jhXD7Hk2JrAQ6k/
But for the perfect experience, I would like to add 3D support to the game.
That’s where I’m trying to use SuperDepth3D, but I’m encountering an issue with accessing the depth buffer. The game doesn’t allow access to the depth buffer unless I disable a specific in-game shader, which I do using ShaderToggler (Reshade add-on). However, disabling this shader also removes some important visual effects tied to it, which I’d rather not lose.
I’ve also tried another Reshade add-on ReshadeEffectShaderToggler, but I’m still not sure how it works in practice or whether it’s suitable for this kind of use.
Here’s where things get interesting: when I enable both SuperDepth3D (at the top of the shader list in ReShade) and DisplayDepth (further down in the list), the depth buffer becomes visible — showing the typical purple hue on the left and a grey gradient on the right — even without disabling the in-game shader that normally blocks it. The buffer flickers heavily and constantly: every other frame displays the correct depth, while alternating frames show a white flash. I’ve noticed that this behavior might somehow be related to a mismatch between the game running at 30fps and the Xemu window rendering at 60Hz.
If I apply ShaderGlass over the emulator window and limit ShaderGlass’s FPS to 30 by RivaTuner, effectively removing every second frame, the depth buffer display becomes almost stable and flicker-free — at least for a while, until the frame synchronization eventually appears to break down.
Given this, I have a few questions:
-
Is there any way to extract the depth buffer earlier in the rendering pipeline, before the in-game shader that “blocks” or overwrites it gets a chance to run? (I’ve tried ReShade’s depth buffer copying options, but they haven’t been effective for me in this case).
-
Why do SuperDepth3D and DisplayDepth seem to be able to access the depth buffer when they are used together, even when the in-game shader is supposed to block it? Is there a way to take advantage of this behavior for a more reliable solution?
I would greatly appreciate any thoughts or advice you may have.