http://bugs.winehq.org/show_bug.cgi?id=9609
--- Comment #39 from Tobias Jakobi liquid.acid@gmx.net 2011-02-03 07:20:40 CST --- @Cùran: Can you comment on your settings? I'm interested what you've selected for ForceShadowMode and EmulateGF2Mode.
The only (somehow) working combination for me is ForceShadowMode=1 (shadow buffer) and EmulateGF2Mode=1.
----------------------------------------------------------------------
From "Tom Clancey's Splinter Cell - Patch 1.2 Info/Changelog"
++++++++++++++++++++++++++++++++++++ DETAILS – BENCHMARK MODE / SPLINTER CELL DESIGN
The Splinter Cell benchmark mode was a tool created to validate our performance optimization in the engine. This tool can be especially useful to determine the performance of a specific PC configuration (GPU and CPU). 3 demos are included in this release (1_1_1TbilisiDemo.bin, 1_1_2TbilisiDemo.bin, 2_2_1_Kalinatek.bin)
Some basic understanding of the Splinter Cell renderer and settings are needed to accurately use it as a performance analysis tool. UbiSoft does not support this feature at the consumer level but will answer questions asked by hardware reviewer magazines or OEMs.
Splinter Cell has 3 different rendering pipes:
Class 2 Graphic Adaptors: NV2x/NV3x chips Dynamic Lighting system = Shadow Buffer Vertex position modifiers = Yes Light beams stopped by depth texturing = Yes Pixel Shader effects/filters/water = Yes Reflection/Details texturing/Specular = Yes
Class 1 Graphic Adaptors: R2xx/R3xx/Parhelia/Xabre 200/Xabre 400/Xabre 600/chips/Creative P9 Dynamic Lighting system = Shadow Projector Vertex position modifiers = No Light beams stopped by depth texturing = No Pixel Shader effects/filters/water = Yes Reflection/Details texturing/Specular = Yes
Class 0 Graphic Adaptors: R1xx/NV1x chips Dynamic Lighting system = Shadow Projector Vertex position modifiers = No Light beams stopped by depth texturing = No Pixel Shader effects/filters/water = No Reflection/Details texturing/Specular = No
Class 2 adaptors can run as Class 2, Class 1 or Class 0 adaptors while Class 1 adaptors can run as Class 1 or Class 0 adaptors. Class 0 adaptors are only able to run Splinter Cell as Class 0 adaptors. You can force a class 1 or class 2 adaptor to run as a different class by editing the splintercell.ini file in the \system directory. Uncomment “ForceShadowMode = 0” to force the card to run as class 1 adaptor (if able to) or change “EmulateGF2Mode=0” to “EmulateGF2Mode=1” to run as a class 0 adaptor.
Why does Splinter Cell have a special mode for NV2x/NV3x graphic chips?
Splinter Cell was originally developed on XBOXTM. Features only available on NV2x chips were used and it was decided to port them to the PC version even if these chips would be the only one able to support them. Considering the lighting system of XBOXTM was well validated, it was easy to keep that system intact.
Splinter Cell Dynamic lighting system
Splinter Cell shadow system is a major part of the game. On NV2x/NV3x hardware, it runs using a technique called Shadow Buffers. This technique is rendering the scene from every shadow casting light and store a depth buffer that represent each pixel viewed by this light source. Each pixel has an X, Y, Z coordinate in the light system and these coordinates can be transformed, per pixel, in the viewer coordinate system. It’s then easy to compare with the actual depth stored in the Z buffer to figure out if the pixel viewed by the camera is the same or is occluded by the pixel viewed by the light. If they are the same, it means the pixel is lighted, if the light pixel is in front of the viewer pixel, it means the pixel is in the shadow. On all other current hardware, the game is using another technique called projected shadows (shadow projectors). The technique is somewhat similar, we render the scene from the light point of view but instead of storing the depth, we are storing the color intensity in a texture. That texture is then mapped per vertex on each object that is going to receive the shadow. To be able to have objects casting shadows on other objects that are themselves casting shadows, Splinter Cell is using a 3-depth levels shadow casting algorithm. In general, the first level is used to compute the shadow to be used on the dynamic actors like Sam. The second level is used to compute the shadow used by the static meshes like a table or boxes. The final level is used for the projection on the BSP. This system is allowing Sam to receive the shadow of a gate on him, then Sam and the gate can cast on a box and finally all three objects can cast on the BSP (ground). This system also has a distance check algorithm to determine if Sam’s shadow should be projected on a static mesh (like a box) or if it shouldn’t base on their relative position. Both systems have their own strength/weaknesses. The main advantage of the Shadow Buffer algorithm is how easy it is to work with. Shadow Projectors are tricky and difficult to use.