Depth Buffer Access Issue In SC Double Agent (Xemu) — Possible Workaround For SuperDepth3D?

by ADMIN 92 views

Introduction

As an enthusiast of the Splinter Cell: Double Agent game, I've been working on overcoming various issues in the best version of the game for the Xbox Original in the Xemu emulator. After successfully removing the green glow, smoothing out the low resolution jaggies and pixels, preserving night vision / thermal / EMF goggles effects, and achieving 120fps with frame generation, I'm now focusing on adding 3D support to the game. However, I'm encountering an issue with accessing the depth buffer when using SuperDepth3D.

Background

To achieve the perfect experience, I'm trying to use SuperDepth3D, but I'm facing a challenge 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 ReshadeEffectShaderToggler add-on, but I'm still unsure how it works in practice or whether it's suitable for this kind of use.

Observations and Experiments

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.

Questions and Possible Solutions

Given this, I have a few questions:

  1. 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.

  2. 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?

Possible Workarounds

Considering the observations and experiments, I'm exploring the following possible workarounds:

  • Extracting the depth buffer earlier in the rendering pipeline: I'll investigate ReShade's depth buffer copying options and other possible solutions to extract the depth buffer before the in-game shader runs.
  • Taking advantage of SuperDepth3D and DisplayDepth behavior: I'll try to understand why SuperDepth3D and DisplayDepth can access the depth buffer when used together and see if there's a way to replicate this behavior for a more reliable solution.

Conclusion

I would greatly appreciate any thoughts or advice you may have on this issue. Once again, thank you for your work on SuperDepth3D! I'm looking forward to hearing from you and finding a solution to this depth buffer access issue.

Additional Resources

For those interested in the instructions for overcoming the major issues in the best version of Splinter Cell: Double Agent for Xbox Original in the Xemu emulator, please refer to the following document:

https://docs.google.com/document/d/1rcOwOqobpMf1LIBSEzQR6ziem0PW3jhXD7Hk2JrAQ6k/

I hope this information helps, and I look forward to hearing from you soon!

Q&A: Depth Buffer Access Issue in SC Double Agent (Xemu) — Possible Workaround for SuperDepth3D?

Q1: What is the depth buffer access issue in SC Double Agent (Xemu)?

A1: The depth buffer access issue in SC Double Agent (Xemu) is a problem where the game doesn't allow access to the depth buffer unless a specific in-game shader is disabled. This shader is used to create visual effects, but disabling it also removes these effects.

Q2: What is SuperDepth3D, and how does it relate to the depth buffer access issue?

A2: SuperDepth3D is a ReShade add-on that allows for 3D support in games. However, when used with SC Double Agent (Xemu), it encounters an issue with accessing the depth buffer. The game doesn't allow access to the depth buffer unless the in-game shader is disabled.

Q3: Why do SuperDepth3D and DisplayDepth seem to be able to access the depth buffer when used together?

A3: When SuperDepth3D and DisplayDepth are used together, they seem to be able to access the depth buffer even when the in-game shader is supposed to block it. This behavior is not fully understood, but it may be related to the way these shaders interact with the game's rendering pipeline.

Q4: Is there any way to extract the depth buffer earlier in the rendering pipeline?

A4: Yes, there are possible solutions to extract the depth buffer earlier in the rendering pipeline. ReShade's depth buffer copying options can be used to try and extract the depth buffer before the in-game shader runs. However, these options may not be effective in all cases.

Q5: What are the possible workarounds for this issue?

A5: Two possible workarounds for this issue are:

  • Extracting the depth buffer earlier in the rendering pipeline using ReShade's depth buffer copying options or other possible solutions.
  • Taking advantage of SuperDepth3D and DisplayDepth behavior by trying to understand why they can access the depth buffer when used together and see if there's a way to replicate this behavior for a more reliable solution.

Q6: What are the implications of this issue for SC Double Agent (Xemu) players?

A6: The depth buffer access issue in SC Double Agent (Xemu) can make it difficult for players to achieve a perfect 3D experience. However, by exploring possible workarounds, players may be able to find a solution that works for them.

Q7: How can players contribute to solving this issue?

A7: Players can contribute to solving this issue by sharing their experiences, providing feedback, and testing possible workarounds. By working together, players and developers can find a solution that benefits everyone.

Q8: What is the current status of this issue?

A8: The current status of this issue is that it is still being investigated and explored. Players and developers are working together to find a solution that works for everyone.

Q9: How can players stay up-to-date with the latest developments on this issue?

A9: Players can stay up-to-date with the latest developments on this issue by following the ReShade community, checking the SuperDepthD documentation, and participating in online forums and discussions.

Q10: What is the final goal of solving this issue?

A10: The final goal of solving this issue is to provide a perfect 3D experience for SC Double Agent (Xemu) players. By working together, players and developers can achieve this goal and enjoy the game in a whole new way.