SweetFX OFF



SweetFX ON
(Personal Settings)



DX9 Converter by: AnKor
SweetFX 1.5.1 by: CeeJay.dk
SweetFX Configurator 1.3.3 by: Terrasque

-----------------------------

- AnKor:

This is so called DirectX converter which allows to run World Racing 2 in DirectX 9 mode.
While such upgrade doesn't immediately provide much benefits it allows to use SweetFX which doesn't work with DX8.
All you have to do is to extract the archive into the game's folder (the one where WR2_PC.exe is).

You may also need to get the latest version of DirectX 9.0c: *LINK*

Finally, you should know that SweetFX has one specific requirement: in-game antialiasing (MSAA) must be turned off.
And this converter is already configured to automatically turn antialiasing off - this can be changed in d3d8.ini if needed.
Good news are that even if in-game antialiasing must be disabled you can still use your video driver's control panel to override and enable it again.
This may sound kind of odd ("disable here, enable there, what's the difference?"), but that's how it works.

Well, that's all (almost).

Good luck!
AnKor.

-- And now some more info for advanced users --

This converter may work with other DX8 games, not just WR2, but I haven't tested it.
It comes with a single file in ShaderMods folder which is WR2 specific, so you may get rid of that file for other games.

Additionaly it has one advanced feature, which was initially required to make it work properly with WR2, but may be used for other purposes.
WR2 uses pixel and vertex shaders version 1.1 which were standard for DirectX 8.
DirectX 9 introduced shaders 2.0 (and later 3.0) but it seems the compatibility with shaders 1.1 was slightly broken somewhere.
For one of the pixel shaders I was getting "error X5539: Modifiers are not allowed on constants for ps_1_x." which is a mystery even for google.
Luckily there was just one such shader which I successfully rewritten with using PS 2.0 HLSL.
To make it possible I've build a simple framework allowing to save all in-game shaders as PS/VS assembly and then load updated ones even with more modern profiles.

If anyone familiar with DirectX shaders will ever want to tackle with this feature, here is the details:
To save ingame shaders set
DumpShaders=1
in d3d8.ini and run the game. Note that if you also have LoadShaders=1 and a shader is loaded from the file it won't be written this time.
Shaders will be stored in "ShaderMods" folder and named ps_NNNNNN.psa and vs_NNNNNN.vsa.
Pixel shaders are stored exactly as they are in game.
Vertex shaders are upgraded to DX9 standard by adding vertex input declarations.
NNNNNN is unique number by which the shader is identified in game. I believe it is a pure luck that these numbers are constant in WR2, so it may or may not work with other games.

To support modern shader profiles you need to make a copy of the file with the same base name but different extension:
.psa -> PS assembler.
.ps20 -> HLSL, 2.b.
.ps30 -> HLSL, 3.0.
.vsa -> VS assembler.
.vs20 -> HLSL, 2.0.
.vs30 -> HLSL, 3.0.

Entry point for HLSL is either "ps_main" or "vs_main".

Note that Shader Model 3.0 requires both pixel and vertex shader to be SM 3.0. However, that one shader compiled as PS 3.0 worked well even without corresponding VS 3.0. Not sure why.

I doubt there is much demand for such modding of DirectX 8 games, but the feature is there and if anyone is willing to waste some time - you are welcome :)

-----------------------------

- Automotive Gaming:

Many thanks to AnKor who made this great Converter. :)
Many thanks to Synetic, who gave me original WR2 Shaders, as them helped the development!
Thanks alot to CeeJay.dk for SweetFX!
Thanks alot to Terrasque for SweetFX Configurator!
 
No comments yet