Sam Fisher, world's greatest stealth operative is called in again by Third Echelon to rescue hostages in a United States Embassy in East Timor. They are being held by Suhadi Sadono, leader of the Indonesian militia organization Darah Dan Doa. Although Sadono is able to evade capture during Fisher's Embassy operation, Fisher is able to gather intel on Sadono's terrorist plan "Pandora Tomorrow." Third Echelon discovers that Sadono has hidden biological bombs equipped with smallpox throughout the United States that will detonate if Sadono is killed or detained. Because of the sensitive nature of this operation, Fisher has to infiltrate various Darah Dan Doa strongholds to interrogate other leaders of the organization, and intercept phone calls placed by Sadono to learn the locations of the bombs.
Note the current version fixes only SOME from the issues.
Splinter Cell Pandora Tomorrow Lighting FIX v0.05
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.
Missing projected shadows
Missing water reflection
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.