Code Vein – Better Visuals via Engine Scalability

This will improve the appearance of the game by loading higher quality assets at the cost of performance.

Foreword

Please note: all credit goes to The Guy!

Before I get into how to do this, I do want to mention that this will do a few things that may be undesirable

  • Textures will appear to have a “shimmering” effect. This is simply because we are forcing the max resolution option for the texture. It’s not actually shimmering, there is just too much detail. This effect may be able to be reduced with further tweaking.
  • Performance will be degraded drastically, especially if your GPU has a low amount of memory.

You can see an example of this config here:

Before Example 1

Code Vein - Better Visuals via Engine Scalability

Lighting is noticeably better, textures have more dense details.

Code Vein - Better Visuals via Engine Scalability

Before Example 2

Code Vein - Better Visuals via Engine Scalability

Noticeably sharper textures, many small models are in their highest detail LODs.

Code Vein - Better Visuals via Engine Scalability

The Code

Head over to

%localappdata%/CodeVein/Saved/Config/WindowsNoEditor/Scalability.ini

Replace it with this:

; Low corresponds to FXAA
[AntiAliasingQuality@0]
r.DefaultFeature.AntiAliasing=1
r.PostProcessAAQuality=1
r.Tonemapper.Sharpen=0
r.ScreenPercentage=100.000000
r.TemporalAASamples=0
r.MSAA.CompositingSampleCount=0

; High corresponds to TAA
[AntiAliasingQuality@2]
r.DefaultFeature.AntiAliasing=2
r.PostProcessAAQuality=6 ; Cinematic AA quality
r.TemporalAASamples=16 ; Slightly increase TAA Sample count
r.TemporalAACatmullRom=1 ; Enable Catmull-Rom algorithm for TAA
r.Tonemapper.Sharpen=1 ; Sharpen the result to make it DRASTICALLY less blurry.
r.ScreenPercentage=104.000000 ; Slight natural AA
r.MSAA.CompositingSampleCount=0

; Highest corresponds to MSAA
[AntiAliasingQuality@3]
r.DefaultFeature.AntiAliasing=0
r.PostProcessAAQuality=6
r.MSAA.CompositingSampleCount=8
r.Tonemapper.Sharpen=0
r.ScreenPercentage=104.000000 ; Slight natural AA
r.TemporalAASamples=0

[ViewDistanceQuality@3]
r.ViewDistanceScale=10.0 ; See more
r.SkeletalMeshLODBias=-10 ; Animations scale further
r.StaticMeshLODDistanceScale=0.001 ; Static meshes always load best LOD
r.ForceLOD=-1
b.LevelStreamingMaxLODLevel=3
b.LevelStreamingDistanceRatioForLOD=1.0
b.NetMoveEnableByDistance=-1

[ShadowQuality@3]
; Mostly inherited from default scalability settings for “Cinematic”
r.LightFunctionQuality=1
r.ShadowQuality=5
r.Shadow.CSM.MaxCascades=10
r.Shadow.RadiusThreshold=0
r.Shadow.DistanceScale=1.0
r.Shadow.CSM.TransitionScale=1.0
r.Shadow.PreShadowResolutionFactor=1.0
r.DistanceFieldShadowing=1
r.DistanceFieldAO=1
r.VolumetricFog=1
r.VolumetricFog.GridPixelSize=4
r.VolumetricFog.GridSizeZ=128
r.VolumetricFog.HistoryMissSupersampleCount=16
r.CapsuleShadows=1
r.Shadow.MaxResolution=4096 ; This seems to be the engine max
r.Shadow.MaxCSMResolution=4096 ; This seems to be the engine max
r.Shadow.DynamicInsetShadowEnable=1
r.Shadow.DynamicInsetShadowRange=16384
r.Shadow.TexelsPerPixel=16 ; Going any higher seems unreasonable
r.Shadow.GridToCSM=2
r.Shadow.GridTextureSize=4096 ; Going any higher seems unreasonable

[PostProcessQuality@3]
; Default scalability settings for “Cinematic”
r.MotionblurQuality=4
r.AmbientOcclusionMipLevelFactor=0.4
r.AmbientOcclusionMaxQuality=100
r.AmbientOcclusionLevels=0
r.AmbientOcclusionSampleSetQuality=1
r.AmbientOcclusionRadiusScale=1.0
r.AOAsyncBuildQueue=1
r.AOMaxViewDistance=16384
r.AOMinLevel=0
r.AOScatterInterpolation=1
r.DistanceFieldAO=1
r.DistanceFieldGI=1
r.DepthOfFieldQuality=4
r.RenderTargetPoolMin=4096
r.LensFlareQuality=3
r.SceneColorFringeQuality=1
r.EyeAdaptationQuality=2
r.BloomQuality=5
r.FastBlurThreshold=100
r.Upscale.Quality=3
r.Tonemapper.GrainQuantization=1
r.LightShaftQuality=1
r.Filter.SizeScale=1
r.Tonemapper.Quality=5
r.LightShaftNumSamples=512
r.ReflectionEnvironment=2

[TextureQuality@3]
r.TextureStreaming=0 ; Disable texture streaming
r.MaxAnisotropy=16 ; Max anisotropic filtering
; If streamer doesnt get disabled, below apply
r.Streaming.PoolSize=0 ; Give us a infinite pool
r.Streaming.HLODStrategy=2 ; Load all
r.Streaming.HiddenPrimitiveScale=1 ; Try to keep native
r.Streaming.MaxEffectiveScreenSize=0 ; Disregard screen size
r.Streaming.Boost=512 ; Try for max res textures
r.Streaming.MipBias=-15 ; Pick best mips
r.MipMapLodBias=-15 ; Pick best mips, not sure which is right?
r.Streaming.UsePerTextureBias=0 ; Ignore the developers intended mip bias’
r.Streaming.FullyLoadUsedTextures=1 ; Fully load every used texture
r.Streaming.UseAllMips=1 ; Remove resolution limitations
r.Streaming.DefragDynamicBounds=1 ; Remove dynamic bounds from update loop
r.Streaming.LimitPoolSizeToVRAM=0 ; Remove memory limit
r.Streaming.ScaleTexturesByGlobalMyBias=0 ; Ignore global mip bias
r.HighQualityLightMaps=1

[EffectsQuality@3]
; Default scalability settings for “Cinematic”
r.TranslucencyLightingVolumeDim=64 ; Going any higher seems unreasonable
r.RefractionQuality=3
r.SSR.Quality=4
r.SceneColorFormat=4
r.DetailMode=2
r.TranslucencyVolumeBlur=1
r.MaterialQualityLevel=1
r.SSS.HalfRes=0
r.SSS.Scale=1
r.SSS.SampleSet=2
r.SSS.Quality=1
r.EmitterSpawnRateScale=2.0
r.ParticleLightQuality=2

[FoliageQuality@3]
; Doesn’t seem to be used, but if it is, make it very nice
foliage.DensityScale=8.0
grass.DensityScale=8.0
r.ViewFoliageDistance=800000.0

Make sure to set the file to Read-Only so the game does not modify it.

This works on the “Highest” options; however, for AntiAliasing, “Highest” corresponds to MSAA x8 and “High” corresponds to Cinematic Sharpened TAA.

Volodymyr Azimoff
About Volodymyr Azimoff 15057 Articles
I love games and I live games. Video games are my passion, my hobby and my job. My experience with games started back in 1994 with the Metal Mutant game on ZX Spectrum computer. And since then, I’ve been playing on anything from consoles, to mobile devices.

Be the first to comment

Leave a Reply

Your email address will not be published.


*