The Witcher 3
0 of 0

File information

Last updated

Original upload

Created by

Rob Jessop

Uploaded by

rj200b

Virus scan

Safe to use

About this mod

Improves performance with ray tracing. Varies by scene but is about 10% in GPU limited scenes with dense trees.

This mod contains two ini files. You can use one or both.

Permissions and credits
This mod contains two ini files. You can use one or both.

Recent updates:
Fixes/improvements in v3.4:
  • Increased shading ray count to improve quality. This fixes an issue that since 4.03 there have been patches that are over-saturated.
  • Increased grid spacing from 2.52 back to 2.625. A user reported issues possibly memory related, and using the Rusty Witcher 3 debugger I noticed that FreeProbesSpaceLeftPercent was low. 2.625 gives a little more memory headroom.
Fixes/improvements in v3.3:
  • Less flicker (set EarlyAsyncGIUpdates=false)
Fixes/improvements in v3.2:
  • Changed [Rendering/RT/Speedtree] config to work after the updates in W3 4.03

Tested in 4.03 and 4.04. CDPR improved ray tracing performance in 4.03 - performance is now similar in CPU limited scenes. If you get visual artefacts that are much worse than the ones without the mod then let me know when and when in a comment.

Compatibility:
    FasterRTifNoRTShadows.ini is NOT compatible with my "Improved Ray Traced Shadows" mod
    Don't use RT shadows with FasterRTifNoRTShadows.ini - non-RT shadows will look better.
    FasterRTUltraPerformanceGlobalIllumination.ini is NOT compatible with the "Optimized Ray Tracing" mod.

Dependencies:
none.
Unlike similar mods, this does not require the rtxgi unlocker dll .
    
Note: In v2 I used to recommend not using with RT reflections. With changes in v3 quality of Reflections is good. Small offscreen objects may pop in to reflections a bit closer than Vanilla, but rarely noticable.

Install:
    Find your Witcher 3 install directory and put the two ini files in bin\config\platform\pc\
    If you still have FasterRTifNoRTShadowsNorReflections.ini from v1 of this mod then remove it.

Uninstall:
    Delete bin\config\platform\pc\FasterRTifNoRTShadows.ini and bin\config\platform\pc\FasterRTUltraPerformanceGlobalIllumination.ini.

Configuration:

This mod adds no menus yet - config is by installing or removing the ini files.

Recommended in game graphics settings:
    Ray Tracing: ON
    Ray Traced Global Illumination: Performance
    Ray Traced Reflections: your choice
    Ray Traced Shadows: OFF (important! RT shadows will be even worse than vanilla with this mod!)
    Ray Traced Ambient Occlusion: ON

Bonus tip (may help in CPU limited scenes like busy cities):
    Number of Background Characters: Medium (not ultra)

About:

FasterRTifNoRTShadows.ini

IMPORTANT: disable ray traced shadows in the game's menu when using this they will look bad

This reduces the amount of geometry loaded into the GPU's ray tracing acceleration structure.

Advantages:
    Improves both CPU and GPU performance.

Disadvantages:     
    RT shadows and RT reflections will suffer from small objects not having shadows/reflections when far away, and trees' shadows won't move in the wind. RT shadows should be disabled as non-RT shadows look better overall. The issues aren't really noticable in RT reflections so you can play with them on if you want.  


FasterRTUltraPerformanceGlobalIllumination.ini

This changes the Global Illumination light probe grids, reducing the number of rays traced each frame, especially the most expensive rays.

Advantages:
1. Greatly improves GPU performance.
2. Improves quality at mid-far distances.
3. Fixes or reduces some artefacts in vanilla, such as visible probe grid on walls, and weirdness in the Kaer Trolde tunnel.

Disadvantages:
1. Less detailed indirect lighting near the camera - may not look as good in small rooms.
2. After loading or fast travel, it takes a couple of seconds for Global Illumination to update, during which lighting may be wrong. Vanilla W3 also has this problem, but updates much faster after load.
3. No improvement in CPU performance.
4. Occasional Flicker - this bug is present without the mod but is maybe less noticeable with vanilla settings.
5. More stalactite lighting flaws - also present in vanilla but made more common by our smaller probe spacing.

It works in the in-game Global Illumination settings in either Performance or Quality, I recommend Performance.

If using ONLY this and NOT FasterRTifNoRTShadows.ini then it is safe to enable RT Shadows (Tip: If  enabling RT shadows, check out my Improved Ray Traced Shadows mod https://www.nexusmods.com/witcher3/mods/7685 )

Benchmark:

GPU: Nvidia 3080Ti
CPU: AMD Ryzen 9 5900X
Resolution 3180x2160 DLSS Balanced
W3 Version: 4.03
Settings: No RT shadows nor reflections, Hairworks on, Shadows Ultra+, everything else Ultra.

Scene 1: Broken Bridge fast travel point, White Orchard (lots of trees)

Vanilla - 59 FPS
This mod - 65 FPS

Scene 2: Hierarch Square, Novigrad (well known worst case CPU limited scene. lots of people and buildings)
Vanilla - 50 FPS
This mod - 51 FPS

(Note: for consistency the game is exited and restarted for each benchmark and I did 3 runs, restarting each time. In reality framerates will be slightly lower as you run around the world.)

Tech details:

FasterRTifNoRTShadows.ini

How it works:
1. Increased ProximityTLASObjectAngleSize from .1 to .14. Effect: small objects are not added to Ray Tracing until they are that size within your view.
2. Decreased ProximityTLASSize from 400 to 140  and ProximityExtendedTLASSize from 800 to 600. This reduces the max distance where small and large objects are ray-traced.
3. Similar trees share data and are not animated in Ray Tracing's view of the world (they still move in the camera's view of the world.)

Settings changed:


[Rendering/RT]
ProximityTLASSize=140.000000
ProximityExtendedTLASSize=600
ProximityTLASObjectAngleSize=0.14

[Rendering/RT/SpeedTree]
RTSTTreesUpdateOnlyOnce=true
RTSTTreesUpdateOnlyNear=false
RTSTTreesInstancingOnlyDistant=false


FasterRTUltraPerformanceGlobalIllumination.ini

How it works:

By default W3 uses two RTXGI grids, a large (> ½km) global grid with slow updates, and one small local grid, Grid1, (77m) with higher light probe density and update speed. We change this:
1. Grid1 changed to type 0 - which means static location instead of following the player, and set to minimum size and update rate. We would like to remove it completely but cannot. It will be in the sky far from the player and it's performance impact is neglibile.
2. We improve the quality of the GlobalGrid by reducing the X,Y probe spacing from 3.5 to 2.625 (going smaller makes updates too slow, and can cause crashes if RT is set to quality mode).
3. Improve speed by lowering number of classification rays, and disabling DebugTlas.
4. Reduce light leaking bleeding by tweaking probe validity check, relocation and bias.
5. Make it update faster by reducing ProbeHysteresis, and smoother by reducing FramesNumPerShadingCycle. Without this it would update too slowly when a room is lit by light coming through a door, and the door closes.
6. EarlyAsyncGIUpdates is set to false - this reduces flicker. I believe the flicker is caused a race condition when two things read/write the same data structure at the same time. This changes the order/priority at which GI probe updates runs, which seems to reduce but not eliminate the problem.
7. Increased shading ray count from 32 to 64. This fixes problems of over-saturation some specific spots that appeared after patch 4.03 (e.g. in Beauclair.)


We do all this without depending on changing settings controlled by the games Performance/Quality toggle so (unlike optimizedRT) it works without needing a dll to overwrite those (Note: GridCoverage, which the game normally ignores, is defined just in case you are using  emoose's RTXGI unlocker and setting auto-updater dll.)

The performance benefit is more than you expect despite increasing GlobalGrid probe count. RTXGI is clever enough to prioritize light probes that are changing or near the player so the extra probe density ½km away doesn't hurt too much. I believe the real performance gain comes from removing Grid1 because with two grids the area near the player is being ray-traced twice, and that area is the most expensive part of the world to ray trace because everything is at maximum geometry level-of-detail near the player, and much lower level-of-detail further away.

Note: The GridCoverage settings and MaxProbes settings have no effect and get overridden based on the game's Performance/Quality mode. They're only included for compatibility if you're using the unlocker dll (which is NOT required by this mod)



[Rendering/RT]
DebugTlas=0

[Rendering/Async/RT]
EarlyAsyncGIUpdates=false

[RTXGI/GlobalGrid]  

GridCoverageX=504.000000
GridCoverageY=504.000000
GridCoverageZ=204.000000

ProbeGridSpacingX=2.625
ProbeGridSpacingY=2.625
ProbeGridSpacingZ=2.0

ViewBias=0.50000
NormalBias=0.5
MinFrontfaceDistance=0.5
BackfaceThreshold=0.4


NumClassificationRaysPerProbe=48
NumShadingRaysPerProbe=64

ProbeHysteresis=0.3333333333333333333333333333333

FramesNumPerClassificationCycle=4
FramesNumPerShadingCycle=1

MaxProbesShadedPerFrame=8192
MaxProbesClassificatedPerFrame=131072
MaxProbesClassificatedPerFrameAfterFirstPass=32768

EnableVarianceTracking=true

[RTXGI/Grid1]
Type=0

ProbeGridCountsX=1
ProbeGridCountsY=1
ProbeGridCountsZ=1

MaxProbesShadedPerFrame=1
MaxProbesClassificatedPerFrame=1


P.S. If you want more technical details on RTXGI, which W3 seems to be based on, read the documentation here: https://github.com/NVIDIAGameWorks/RTXGI . The comments in
https://github.com/NVIDIAGameWorks/RTXGI/blob/main/rtxgi-sdk/include/rtxgi/ddgi/DDGIVolume.h also explains many of the options set in the ini.

All my MODs:

FSR DLSS improve quality by enabling jitter on transparent - https://www.nexusmods.com/witcher3/mods/8186
Faster Ray Tracing Ultra Performance RT - https://www.nexusmods.com/witcher3/mods/7891
Improved Ray Traced Shadows - https://www.nexusmods.com/witcher3/mods/7685