Tuesday 22 September 2015

The Witcher 3 on a GTX 765m


Laptop Spec:

CPU:  Intel® Core™i7 Quad i7-4700MQ (2.40GHz) 6MB
Memory:  8GB
GPU: GTX 765m 2gig GDDR5
if you just want just the ini settings and the Kepler “fix” then scroll down
The Witcher 3 has recently come out and is an incredibly demanding game to run. With CDPR’s history of Witcher games this should of course be no surprise to anyone. Each one has released with high specs needed to run it well, and each one has released with many performance tweaks needed (and provided by CDPR over the first few months of each games life).
If you are like me and bought your gaming laptop just as the new consoles came out then you might have a similar spec to me. Overall it has performed at a similar level to the new consoles (somewhere just above the Xbox one and below the PS4) and so I fully expected to be able to at least run this game at 768p and 40+ frames a second.
I based this theory off my past experience with games released on the new consoles. Any game that has come out on PS4 so far that ran at 1080p 30 fps I have been able to get to run at 768p or 900p at between 40-60 fps at very similar graphic settings. Lords of the fallen is a good example of a demanding game that I ended up selling my PS4 version because of its frequent dips below 30 FPS and getting it on my laptop. With the right settings I had it looking pretty much the same, just at a lower resolution and 45-60 fps. It played so much nicer this way.
Then out comes the witcher 3 and its performance on consoles had issues so I was a bit doubtful at this point. My first step was to start at the lowest of the low settings. 768p and everything on the lowest. All post processing effect off and all graphic sliders fully to the left. The result? a rather dire 25-35 fps. And this is in the starting area, one of the least demanding points in the game. 
This is mainly because this game looks technically impressive even on its lowest settings. Shadows and vegetation all still look fantastic as well as all the main character models having great facial animations.
It took a lot of tweaking of a certain ini file and a certain kelper “fix” that was found and in the end I have managed to get the game running at 30+ fps 768p almost all of the time. There are a few areas where it dips just below, the most demanding of which is fighting foglets in the bog area where it would drop to about 25-28. Still playable, just a little sluggish. But its really very rare now to get this drop. 

The fix and settings tweaks

The following tweaks essentially fix a bug that causes your GPU to run physx instead of your CPU giving you large frame rate drops any time you encounter people or buildings as well as tweaking the draw distance and quality of foliage and shadows.
They will also give most post processing options, such as motion blur, light shafts and depth of field as well as low sharpness and Ambient Occlusion set to SSAO. You will also have high water effects and high textures (but the game will tell you its on low because I removed a mipmapbias line that got added in a patch to the ini on high textures that drops performance)

It will essentially look very similar to the console settings but at a lower resolution and in parts a better frame rate. 
First the Kepler “fix” I mention. Someone found out a file that was causing Nvidia cards with the Kepler architecture to have issues whenever they encountered buildings or people. It meant you could be playing at 35-40 fps, then encounter a small hut and your fps tanks to the mid 20′s. It was very irritating. To fix this you can use 1 of 2 methods:
1 - Go to the nvidia control panel and set your physx to run of the CPU rather than leave it at auto (its default). Just remember to change it back when you are finished with the game.
2 - The second involves removing the file causing the issue in the first place. Rather than delete it I just moved it into a folder elsewhere in case the need ever arises to put it back. Follow this youtube guide by phixsator to find the file causing the issue https://www.youtube.com/watch?v=XnWkSFqo5A4.
The other changes involve altering the games settings file so that the draw distance of grass, foliage and shadows is lower than that its preset low settings allow. You can drop all these settings lower if you want but this is the sweet spot for me for visuals and performance.
To tweak the ini file you need to load up the settings file in notepad. This should be found at the following path:  C:\Users\[name]\Documents\The Witcher 3\user.settings.
Nvidia did a fantastic guide on these ini settings but its designed for people with monster rigs trying to push visuals further. So you essentially do the opposite of what it suggests:  http://www.geforce.co.uk/whats-new/guides/the-witcher-3-wild-hunt-graphics-performance-and-tweaking-guide 
Just note that this includes other settings like difficulty. This has it set to the third difficulty (one above default) so after you do this you might want to change a few settings again. However if you have the same spec as me it should get the game running at a very acceptable level.
Open the file in notepad and copy the below over it, save and your done. 
[Gameplay/EntityPool]
SpawnedLimit=75
[Hidden]
HasSetup=true
uiVerticalFrameScale=1
uiHorizontalFrameScale=1
[Localization]
SpeechLanguage=EN
TextLanguage=EN
[Viewport]
VSync=true
Resolution=“1366x768”
FullScreenMode=2
VSyncThreshold=0
OutputMonitor=-1
[Hud]
OnelinersModule=false
QuestsModule=false
HorseStaminaBarModule=false
ControlsFeedbackModule=false
[Budget]
cvMaxAllowedLightsShadowTime=1
cvMaxAllowedApexDestroTickedTime=0.2
cvMaxAllowedGrass=5000
cvMaxAllowedDecalsDynamic=10
cvMaxAllowedDynMeshes=104857600
cvMaxAllowedChunksSkinnedTime=2.5
cvMaxAllowedTrianglesSkinned=100000
cvMaxAllowedDecalsSSTime=0.1
cvMaxAllowedLightsShadow=3
TerrainTileMipDataBudget=100
cvMaxAllowedApexTicked=60
cvMaxAllowedActiveEnvProbesTime=0.1
cvMaxAllowedStatTextures=314572800
cvMaxAllowedSpeedTree=150
cvMaxAllowedLightsNonShadowsTime=0.2
cvMaxAllowedSpeedTreeTime=2.2
cvMaxAllowedChunksStatic=1500
cvMaxAllowedTrianglesStatic=500000
cvMaxAllowedHiresChunks=25
cvMaxAllowedDecalsDynamicTime=0.5
cvMaxAllowedLightsNonShadows=40
cvMaxAllowedChunksStaticTime=1.5
cvMaxAllowedChunksSkinned=400
cvMaxAllowedApexDestroTicked=20
cvMaxAllowedStatMeshes=209715200
TerrainTileMinTimeout=2
cvMaxAllowedHiresChunksTime=0.2
cvMaxAllowedApexTickedTime=0.5
cvMaxAllowedCharTextures=209715200
cvMaxAllowedParticlesCountTime=0.2
cvMaxAllowedParticlesCount=800
cvMaxAllowedGrassTime=1.5
TerrainTileTimeout=10
OcclusionQueryAdditionalMemory=5
TerrainTileLoadingTimeout=5
cvMaxAllowedDecalsSS=160
[Audio]
Subtitles=true
[LoadingScreen/TCR]
ShowProgress=true
[Game]
DoNotPauseWhileStopped=false
[PostProcess]
AllowChromaticAberration=false
SharpenAmount=1
MotionBlurPositionTreshold=0.05
MotionBlurRotationTreshold=1
SSAOSolution=1
AllowBlur=false
[Input]
PadVibrationEnabled=false
KeyboardCooldownSpeed=0.1
InvertCameraXOnMouse=false
InvertCameraYOnMouse=true
CameraAutoRotX=true
InvertCameraX=false
UIMouseSensitivity=1
CameraAutoRotY=true
RightStickCameraSensitivity=0.7
InvertCameraY=true
RightStickAimSensitivity=0.7
MouseSensitivity=1
[DLC]
DlcEnabled_dlc_001_001=1
DlcEnabled_dlc_002_001=1
[Gameplay]
Difficulty=3
[LevelOfDetail]
SwarmHideDistance=200
DecalsHideDistance=15
DimmerHideDistance=30
DynamicDecalsHideDistance=30
StripeHideDistance=60
[General]
ConfigVersion=1
[LoadingScreen/Editor]
Disabled=false
[LoadingOverlay/TCR]
FadeOutCooldownExtraTime=1
FadeInSpinnerTime=1
NoninteractiveSpinnerTime=3
FadeOutSpinnerTime=1
NoninteractiveEndCooldown=1
[Visuals]
InventoryBgColorScaleB=0.036
InventoryFixedLuminance=0.25
InventoryBgColorScaleG=0.034
MovieFramerate=30
GammaValue=1.36
InventoryBgColorScaleR=0.02
[Rendering]
GrassDensity=500
DecalsSpawnDistanceCutoff=30
TextureStreamingHeadsDistanceLimit=10
GlobalOceanTesselationFactor=32
TextureStreamingCharacterDistanceLimit=50
CascadeShadowFadeTreshold=1
CascadeShadowDistanceScale2=0.5
MaxTextureAnizotropy=8
TextureStreamingDistanceLimit=30000
MaxCascadeCount=3
CascadeShadowDistanceScale3=0.5
MeshLODDistanceScale=1
MaxSpotShadowSize=256
ScaleformTextureUnstreamDelay=2.5
DecalsChance=1
TerrainReadAheadDistance=200
HairWorksLevel=0
MaxTextureAnisotropy=8
TerrainScreenSpaceErrorThreshold=3
MaxTerrainShadowAtlasCount=1
MaxCubeShadowSize=256
TextureInFlightCountBudget=12
TerrainErrorMetricMultiplier=20
CascadeShadowDistanceScale0=1
MeshRenderingDistanceScale=1
CascadeShadowDistanceScale1=1
[Input/Gestures]
EnableSwipe=true
EnablePan=true
EnableGestures=true
EnablePinch=true
[LoadingScreen]
FadeInTime=3
SkipShowWithAnyKey=true
GameRevealTime=3
SkipHideDelay=3
SkipInputDelay=0.25
FadeOutTime=1.5
SkipAutoshow=false
[Engine]
LimitFPS=0
[Rendering/SpeedTree]
GrassGenerationEfficiency=0.075
GrassDistanceScale=0.8
FoliageDistanceScale=0.9
FoliageShadowDistanceScale=4
GrassRingSize=4194304
[Save]
ShowCompatWarning=false
[Kinect]
Kinect=true
[Foliage]
MaxVisibilityDepth=12