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

Remaining issues

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

History

Version 0.04 (31.03.2015) - Very experimental.
Source code
Version 0.03 (31.03.2015) - Very experimental.
Source code
Version 0.02 (30.03.2015) - Very experimental.
Source code
Version 0.01 (29.03.2015) - Very experimental.
Source code