This page contains very early version of simple wrapper which improves compatibility of Splinter Cell: Pandora Tomorrow with never versions of Nvidia drivers. Note the current version fixes only SOME from the issues.
Fixed issues
- Missing projected shadows
- Missing water reflection
Remaining issues
- Reflections on the sea surface is probably still not entirely correct.
- There is lighting issue in area near the ladder.
I am planning to look at those issues eventually however there is no specific timeline.
Background of the problem with shadows
When taking advantage of shadowmap textures supported since GeForce 3, there is a difference between DirectX8 (used by the game) and DirectX9+ in how the API expects the Z/W value at input of the texture sampler with shadowmap texture. For DirectX8 the application is supposed to provide the value in <0;2^bitdepth-1> range where the bitdepth is bit depth of the depth texture. For all other APIs the value is expected to be as <0;1>. For more info see here. It seems that starting with some version of the driver or HW, the DirectX8 path no longer comply with the original behavior and instead expects the DirectX9+ behavior.
What the wrapper does
It monitors upload of vertex shader constants and when it sees constant which looks like projection matrix with the bithdepth-scaled values for 24bit shadow buffer, it changes it to correspond to the DX9+ behavior. At this moment there is nothing specific to SC:PT so it is possible that the wrapper might work for other games with this problem as well.
Background of the problem with reflections
The game uses a fixed function stage setup to apply the projected water and expects that the XY/W is used for the projection and the vertex shader does not define value for Z component. It is possible that the driver generates setup which divides by Z which leads to garbage.
What the wrapper does
It replaces the fixed function setup with pixel shader.
Installation
Unpack the archive to the directory containing SplinterCell2.exe (e.g. <SCInstallDir>offline\system).
Download
Version 0.05 (12.04.2015) - Very experimental.
Source code
- Fixed missing light beams.
- Fixed more missing shadows.
- Support for additional chained wrappers. Will first try to load file d3d8_trace.dll from the current directory.
History
Version 0.04 (31.03.2015) - Very experimental.
Source code
- Fixed shader emulating fixed function water effect.
Version 0.03 (31.03.2015) - Very experimental.
Source code
- Improved heuristic used to detect shadowmap projection matrix. Various small light sources should now work.
Version 0.02 (30.03.2015) - Very experimental.
Source code
- Partially fixed the water rendering
Version 0.01 (29.03.2015) - Very experimental.
Source code
- Initial version. I did only minimal testing on the first level. There are still some issues (see above)