A compendium of tweaks and fixes for the PC version

+
Status
Not open for further replies.
Thank you very much for testing this out, doktor1! :D

So can we conclude that ForceCinematicModeOn=true causes textures to be a bit sharper and better illuminated in general, as can be seen from your final image?
don't think that setting alone, all the mentioned previously in combination do the effect...would be wise to test them individually along with each screenshot
 
don't think that setting alone, all the mentioned previously in combination do the effect...would be wise to test them individually along with each screenshot

That is probably the case. Once I find the time, I will do some more testing myself, but normally I don't have too much time to game in general, so I usually tend to just play the damn thing instead of tweaking extensively! :p
 
... most of them starts with cv prefix but in configs they should be written without it (or with, i have not tested if cvTEST = TEST). The only problem with this list - its hard to figure out ini [section name] to which they should be applied and it seems game ignores them if they are not in a right ini section.

Looking at few vars you posted with Sector name of ini section i see now pattern for some cvars names and their ini names, so it turs out that cvars like
Code:
cvSectorAllowRigidBodies
ends up as
Code:
[Sectors]
AllowRigidBodies


Im about to release E.D.G.E (Extremely Detailed Graphics Enabler) mod that allows to edit all of hidden options right in game in real time and see results after engine refresh, funny coincidence i found miprefiner and posted screenshot with it added to game with my mod same day you did here, damn i should have looked at cdpr forums and this thread earlier, it could have saved me a lot of time.
http://vk.com/yobamustdie?z=photo-51921751_368859776/album-51921751_216455148
http://vk.com/yobamustdie?z=photo-51921751_368859774/album-51921751_216455148
http://vk.com/yobamustdie?z=photo-51921751_368859772/album-51921751_216455148

Awesome detective work! I thought that the "cv" thing was very odd, and I knew that absolutely none of them did anything in-game. Now I will try testing things without the "cv" prepended.
 
Awesome detective work! I thought that the "cv" thing was very odd, and I knew that absolutely none of them did anything in-game. Now I will try testing things without the "cv" prepended.

the rigid bodies thingy works just adding it in the user.settings under RENDERING..I don't know if allowcollision must be enabled as well,i had them enebled both anyway. I tried to go through an npc, and i coudn't so i guess it worked

---------- Updated at 03:10 PM ----------

Maybe we should do a sticky with all the settings found so far that enhance the game quality,and update the thread as they are added? Like this they are difficult to follow spreaded arounf the 50 pages of the current thread
 
Last edited:
This is not entirely correct, there is a CascadeShadowCount that tells how many cascades to use and. All cascades in this game seems to be stored in same texture, so rising scale for one not just affects render distance of cascade but also takes more resolution space in texture and leaves less space for other cascades.
I notticed that for example rising cascade 1-3 leads to reduction or resolution of cascade 0 and it goes in opposite direction.

Since cascade 0 is on that that starts from camera position and affects most notticable details its good idea to give most of resolution and distance to it and for latest cascade it would be stupid enough to give much of resolution and distance since its far enough.

Also distance scale of 1.0 seems to be almost equal to 10 meters. Increasing Cascade0 to 10.0 will render a lot of detailed shadows for area 0-100 metters from camer. setting distance scale 10.0 to cascade1 will render cascade1 at distances 100-200 meters, cascade2 = 10.0 will render cascade2 at 300-400 meters, and cascade3 = 10 fill render cascade 3 at distance 400-500 metters.

Since resolution of texture will remain the same, each pixel of shadow will need to cover bigger are, which will lead to decrease of shadow quality.

The only way to compensate it is to rise cascadeshadowresolution to 8192 (it seems to be maximum game accepts now with tweaks, but my card GTX 680 allows texture sizes up to 16k so i hope CDPR will remove texture size cap for everything and will give me accces to 16k shadow an other resolutions, which i can afford with 4gb vram.
There is a way to rise texture resolution cap, actually i did it by rising 2048 limit to 8192 for everything in startup.bundle, but i cant set 16k since it needs extra symbols added to each line, and with different size i would not be able to re-import it with QuickBMS, so i hope somebody will create proper unpacker\packer for bundle files that will allow me to import file of any size so i can rise limit of texture resolution up to 16k.

Settings ofr @Asmodean778 will give next results:
Cascade0 renders at distance 0-15 meters
Cascade1 renders at distance 15-45 meters
Cascade2 renders at distance 45-70 meters
Cascade3 renders at distance 70-90 meters

And with his settings Cascade1,2,3 gets more space in final shadow texture and reducing details of cascade0 which is bad.

Logic for cascade shadows should always be like this

Cascade0>Cascade1>Cascade2>Cascade3

So best minimal settings to start with would be

CascadeShadowDistanceScale0=4.0
CascadeShadowDistanceScale1=3.0
CascadeShadowDistanceScale2=2.0
CascadeShadowDistanceScale3=1.0

This will span shadow map across 10 meters like this
0=0-40 meters >1=40-70 meters>2=70-90 meters>3 = 90-100 meters.
Resolution will change relative to cascade with lowest one, so since cascade3 has 1.0 it will be out start point
C0=C3*4 > C1=C3*3 > C2=C3*2 > C3=C3.
Im not exactly sure how each cascade mapped to texture, they could be for example fixed in Width and have scalable heigh and aligned in one line, or they could be a square shaped and dynamically change position in texture grid depending on scalling, but i bet on 1 fixed dimension and 1 scallable.

In this is true, than with resolution of cascade texture 2048x2048 we will have to solve this (X)+(2X)+(3X)+(4X)=2048 to get idea what resolution each cascade. has. SO with integer values it would be easy and simple 10X=2048, which means x=2048/10=204.8 (most likely converted to lowest closes Power of two integer)
So cascade3 most likely has 204x2048 resolution in my example would be:
818x2048 > 614x2048 > 408x2048 > 204x2048

Seems reasonable decrease or resolution at distant cascades, right?

Now lets do some math to understand why settings of asmodean was bad
1.5X+3.0X+2.5x+2.0X=2048
9X=2048
x=~226
So each cascade woult be scale*x and resolutions would be
~338x2048< ~678x2048 > ~564x2048 > 452x2048

So closes shadows gets less detailed resolution, than most distant? This is why this is no right!

So lets do another example to understand better how shadows works in witcher and how you need to calculate settings for them for best look and expirience:

For example you want shadow to cover distance of 200 meters and want detailed shadows to stay detailed at maximum possible distance, lets say 100 meters

than we need to set it like this for first 100 meter:
CascadeShadowDistanceScale0=10.0

and we have to split remaining 100 meters which is 10.0 between cascades 1-3, and its good idea to keep integer values here (2 and 3 instead of 2.5 and 2.5 ) and even better idea to keep power of two integers (6+2+2 instead of 5+3+2)
it would be
CascadeShadowDistanceScale1=6.0
CascadeShadowDistanceScale2=2.0
CascadeShadowDistanceScale3=2.0

So each cascade will cover area:
0-100 meters > 100-160 meters>160-180 meters > 180 - 200 meters

Makes sense, isnt it?

Now what about resolution?

X = CascadeshadowResolution * (Scale0+Scale1+Scale2+Scale3)
Cascade[N]resolution = X * Scale[N]

I suggest to not count X based on cascade shadow resolution but count final resolution based on some pattern X.
Depending on you system performance i would take these as base x, since final shadow resolution is what gives most of performance hit:

16<32<64<128<256<384<512

So lets start with 16 for very slow machines, cascade resolutions would be

16*10=160 > 16*6=96 > 16*2=32 = 16*2 = 32
and cascade shadow texture would be
160 + 96 + 32 + 32 = 320, which is way too low to look good. so lets try better X.

Lets start with 128

Cascade resolutions would be
128*10=1280 > 128*6=768 > 128*2=256 = 128*2=256
and full texture resolution is
1280+768+256+256 = 2560

Now thats a good sweet spot between quality and performance, but lets not forget that cascade 0 should cover 100 meters, so 256 or even 512 are much better values, lets take a look at 256 as X:

Cascade resolutions:
256*10=2560 >266*6 = 1536 > 256*2 = 512 = 256*2 = 512 - now that an improvement we got complete 2560 from previous example just for Cascade 0 alone and minimal size of cascade is 512!

2560+1536+512+512 = 5*120 that good enough resolution, but we still have space up to 8096 (and with proper bundle editor possibly up to 16k ) so lets try 384

384*10=3840 > 384*6= 2304 > 384*2=768 = 384*2=768

3840+2304+768+768 = 7*680 - almost perfect, we almost reached 8096 with good power of two resolutions for each cascade, but lest get a little more

for example we can add 32 or 64 to 384

384+32=416

416*10=4160 > 416*6 = 2496 > 416 * 2 = 832 = 416*2 = 832

8320
Oops. we got 8*320 a little more than budget we have, we can optimise it by lowering render distance to 180 and taking 2.0x out of any cascade like this

CascadeShadowDistanceScale0=10.0
CascadeShadowDistanceScale1=6.0
CascadeShadowDistanceScale2=2.0
CascadeShadowDistanceScale3=1.0

416*10=4160 > 416*6 = 2496 > 416 * 2 = 832 = 416*1 =416
4160+1664+832+416 = 7*904

CascadeShadowmapSize=7*904

Perfect! We are under 8192!

Now lets optimize a little more to keep good balance between quallity and performance by reducing cascade shadow map size and render distance of shadow map but yet keeping good looking shadows, lets say we want cascade 0 to be 4096, so lets take X=512 and set cascades like this

CascadeShadowDistanceScale0=8.0
CascadeShadowDistanceScale1=4.0
CascadeShadowDistanceScale2=2.0
CascadeShadowDistanceScale3=1.0

We will have cascades rendered like this
C0 = 0-80 meters > C1 = 80-120 meters > C2 = 120-140 meters > C3 = 140-150 meters

And resolutions of cascades would be

C0=512*8=4096 > C1=512*4=2048 > C2=512*2=1024 > C3=512*1=512 - seems like perfect pattern, just like mip maps for textures!

4096+2048+1024+512=7*680

CascadeShadowmapSize=7 680

Seems like perfect mix between quality of each cascade, render distance and performance.

But we have slower machines and can optimize this even further. Lets not change distances and scaling anymore but just take another base X=256.

C0=256*8=2048> C1=256*4=1024> C2=256*2=512> C3=256*1=256

2048+1024+512+256=3*840

CascadeShadowmapSize=3*840

Now thats a good value for perfromance.

But if you have a weaker machine you can reduce resolution twice to

CascadeShadowmapSize=1*920 (its even performs a little better than default high shadow settings with 2048 resolution)

and will have cascade sizes
1024>512>256>128


But if thats still a performance hit because of distance, you can try to reduce each distance scale by 2 (except for last cascade) to :
CascadeShadowDistanceScale0=5.0
CascadeShadowDistanceScale1=3.0
CascadeShadowDistanceScale2=1.0
CascadeShadowDistanceScale3=1.0

This will render shadows like this

C0=0-50 meters>C1=50-80 meters>C2=80-90 meters >C3=90-100 meters.
With such settings you will have shadow render distance double comparing to default (1+1+1.5+1.5=5.0 aka 50 meters) and yet texture resolution and distance proportions would be better re-distributed for quality since you will have half of distance to cascade 0 alone.

You may wonder how come that default values are so different - i will tell you then that i wonder how game which looks and have less advanced tech than Crysis in 2007 can run well on hardware that gives 120+ fps in Crysis. But answer is simple, im not sure who responsible for optimization in CDPR but those people really did a bad job, they cut graphics a lot and yet failed to optimize game, it seems to me like people who was optimizing game like this was not even well aware of how their own engine works and to find sweet spot between graphics and performance, its seems like if level designers, artist, and even testers optimized this game in a rush after someone from above told them "optimize your assets" and forgot to mention that he is lazy to incapable to optimize red engine by art of coding, and it feels like some core programmer of red engine quit company and there was nobody to guide them and tell them they doing something really stupid.

So default settings for shadow cascade distances makes no sense at all, somebody who really is not aware of how red engine and shadow cascade works set these settings or probably just altered a little default stub values of 1.0 set for everything and 1.5 for Scale2 and 3 resulted just by observation of that someone that it increasing shadow distance a little and thats about it.

And everyone who tweaking game by keeping values close to defaults is doing mistake.

So to summarize, forget about default cascade shadow settings! They are joke!

Keep these rules in mind:
1) Cascade 0 should have at least 2x bigger resolution and distance than any of following cascades. Having distant cascades with resolution higher than close cascade is waste of resources and quality for nothing ant total nonsense!

2) Its good to keep cascade scale values ad integers and power of too, except for value of 1, which is not power of two but good values:

3) Final render distance is based on sum of all cascade values, value of 1 equal to about 10 in-game meters of distance.

5) All cascades shares same shadow map texture, increasing its resolution decrease resolution of other cascades

6) With great resolution comes great responsibility greater number of small objects casting shadow.

7) CascadeDistanceScale controls both render distance if meters (multiplied by 10) and proportional size of cascade inside shadow map texture. So this means that increasing distance of cascade 1-3 will make their resolution higer and will reduce resolution of cascade 0, and this will lead to some objects loosing shadows and shadows getting low res jagged and blurred look at close distance.

8) Cascade distance and resolution should be distributed from MAX to MIN, period,
Settings like 1 < 2 < 3 <4 will makes shadows worse and will waste performance and quality for no good reason !
settings like 4 > 3 > 2 > 1 will make shadows look better with almost same performance cost!
But settings like 8 > 4 > 2 > 1 will make everything even more better.
9) Cascade Shadow resolution should be increased to make shadows look good, you can calculate final optimal resolution for it by using formulas and logic explained about, but shorter version would be:

CascadeShadowmapSize=(CascadeShadowDistanceScale0*+CascadeShadowDistanceScale1+CascadeShadowDistanceScale2+CascadeShadowDistanceScale3)*X

where X is value that you can devde by 4 many times (not sure how to tell this right in english, since its not my native lang) and get integers in the end like this
(256\4=64, 64\4\=16, 16\4=4). Minimal good value for X is 128. You can go further by add 16, 32, 64, 128 to it until you will find sweet spot between quality and and performance.

Recommended value for good quality is 512, for medium is 256, and for low is 128. Try not to exceed limits of 4096 by default, and 8192 or 16k if you have modded resolution cap (see below)

10) Best way to set your shadow cascade sizes and distances is to start from last one which is cascade3 (4 actually but you know, in weird programming world everything starts from 0, lol) as base value, and go to previous cascade by multiplying it by 2, and repeat it until you will get to cascade 0.
So this means if your cascade3 is 1 your cascade2 should be 2, cascade1 should be 4 and, cascade0 should be 8! Alternative way for slower machines would be adding 1 to each cascade by going from distance to closes one, so it would be cascade3=1, cascade2=2, cascade1=3, cascade0=4, you can also add 2 instead of 1 and get values like this C3=1 C2=3 C1=5 C0=7 .

11) Some level designers took shortcuts or messed things up during rushed optimisation of game, so some objects does not cast shadows in cascade 0, and only do in 1, you can do nothing GOOD about it now, patched assets or engine needed to force all objects to cast shadow in cascade0 range. Only with official patch, unofficial memory \ or hex assets hack, or redkit this can be done

12) to uncap resolution of shadows and other textures you have to unpack Conten0\Startup.bundle with QuickBMS + Witcher3.bms go to
engine\textures
open textures.xml in good editor like Notepad++ or PSpad and change anything like 1024-2048-4096 to 8192, but until proper bundle editor releaased dont touch 512 and dont try to set 16k since this will change size of file and quick bms would not properly re-import it and game would crash.

IF you are lazy to do your own calculations and just want settings you can play with or start tweaking, this is default base with optimal performance and quality on high end machines everyone (who plays with uber settings) should stick to:

Code:
CascadeShadowDistanceScale0=8
CascadeShadowDistanceScale1=4
CascadeShadowDistanceScale2=2
CascadeShadowDistanceScale3=1
CascadeShadowmapSize=7680

For high settings change to this
Code:
CascadeShadowmapSize=3840

For mid settings to this
Code:
CascadeShadowmapSize=1920

For low
Code:
CascadeShadowmapSize=960

Alternate performance optimisation by reducing render distance would this for high settings

Code:
CascadeShadowDistanceScale0=6
CascadeShadowDistanceScale1=4
CascadeShadowDistanceScale2=2
CascadeShadowDistanceScale3=1

This for mid

Code:
CascadeShadowDistanceScale0=4
CascadeShadowDistanceScale1=2
CascadeShadowDistanceScale2=1
CascadeShadowDistanceScale3=1

or

Code:
CascadeShadowDistanceScale0=4
CascadeShadowDistanceScale1=3
CascadeShadowDistanceScale2=2
CascadeShadowDistanceScale3=1

And this for low
Code:
CascadeShadowDistanceScale0=2
CascadeShadowDistanceScale1=2
CascadeShadowDistanceScale2=1
CascadeShadowDistanceScale3=1

Combine distance presets with resolution presets to achieve best balance for you


And for better settings use this (100 meters of C0, 60 meters for C1, 20 meters for C2, 20 meters for C3, 200 meters overall):

Code:
CascadeShadowDistanceScale0=10
CascadeShadowDistanceScale1=6
CascadeShadowDistanceScale2=2
CascadeShadowDistanceScale3=2
CascadeShadowmapSize=8192

or this for ultra uber hardcore settings (160 meters, 80 meters, 40 meters, 20 meters, 300 overall)

Code:
CascadeShadowDistanceScale0=16
CascadeShadowDistanceScale1=8
CascadeShadowDistanceScale2=4
CascadeShadowDistanceScale3=2
CascadeShadowmapSize=8192

Hope CDPR will read this and unlock 16k resolution for shadows to improve uber quallity even better.

There is also a

CascadeShadowQuality

settings,which controls shadow filtering, im not sure about final value, but i play at 4, values like 2 or 1 would probably give a little perfromance boost, while 0 will gve maximum performance with trade of shadow filtering quality.

P.S. - these observation was done by tweaking all of this in a game with my E.D.G.E. mod, its much harder to nottice when you do it by restarting and tweaking settings one by one.

Almost forgot to atach xml file with texture resolution cap raised to 8192, it goes to startup.bundle\engine\texture :
View attachment 16143
 

Attachments

  • texturegroups.zip
    1 KB · Views: 69
@Voodooman really nice work. Thanks for sharing ^^

Unfortunately, I've not been at my own machine at home, for the past few days. I won't be until tomorrow. But I'm looking forward to diving into all of that info in your previous posts.

---------- Updated at 05:35 PM ----------

#Edit: @Voodooman I've been having quick read of the posts, for the moment. I thought it worth mentioning - I have those cascade shadow scale values set to what they are, to attempt to minimize in-game shadow map culling & downscaling lod issues. Not as random as it first appears ;p

I've noticed in a lot of locations (exterior ofc) that under a lot of set values(including default preset values) the cascade values would be either prematurely culled. or incorrectly downscaled depending on camera position / distance from camera's center / focal point. It was bugging me, so I found the values that minimized / resolved these issues for me, personally.

I've got a list of some test locations on my own system, But as I've mentioned I'm not there atm. Two I remember off the top of my head were: Fyke Isle (especially along the bulwark / woodan rampards, and on the tower itself). Also Kaer Morhen (out on the balcony)., & Random spots around Velen (I've not progressed past Velen yet, so I don't know of further instances).

I tested at various TOD - found evening / sunset to be the best at demonstrating these issues clearly.
 
Last edited:
Alright good people,

I've been fiddling with .ini files to maybe find a way around npc pop-in and/or mouse stutter and I think I've made some progress but I would appreciate if you guys could try it as well because I'm not sure if it's a placebo effect or not. First of all, let me give you a brief information as to what I was observing before and after the .ini tweaks.

1- The infamous mouse movement stutter
2- Npc pop-in
3- Npc texture pop-in (scars, tattoos etc.)
4- House interior pop-in

So, there were several lines that had my interest as I was checking user.settings.ini in Documents/The Witcher 3, which are:
[Rendering]
DecalsSpawnDistanceCutoff= I doubled this value from 10 to 20
TextureStreamingHeadsDistanceLimit= I doubled this value from 10 to 20
TextureStreamingCharacterDistanceLimit=I doubled this value from 50 to 100

[Input/Gestures] All these lines were set to false as I thought they are relevant to xbone/ps4 gamepads or touchpads
EnableSwipe=false
EnablePan=false
EnableGestures=false
EnablePinch=false

[Kinect]
Kinect=false

After saving and running the game, I noticed a stutter free movement and weird enough, npcs were being rendered pretty far ahead. In crow's perch, I could see the soldiers stationed in front of the Baron's manor's entrance from the actual village entrance (at the bridge.) As I've said, I'm not sure if that's a placebo effect so I'm asking you to try these settings and let me know if anything improves.

Thanks a lot in advance ;)
 
good work everyone, really happy to see more peoples dig in

anyone found how to increase the lod/view distance ? the flat lego building untextured and mesh details poping right in your face are seriously getting on my nerve, i tried everything on the render.ini and user.settings without any success
 
@essenthy Unless somebody has found something out that I've yet to hear. So far as I'm aware, the lod params are baked into assets, and will require either CDPR changing this (apparently they might be "unlocking" some values for tweaking in a future patch), or REDKit. The view distance is hardlocked by the renderer itself, currently.

Not to say there may not be a way to circumvent these, but atm that's the score with those.
 
@essenthy Unless somebody has found something out that I've yet to hear. So far as I'm aware, the lod params are baked into assets, and will require either CDPR changing this (apparently they might be "unlocking" some values for tweaking in a future patch), or REDKit. The view distance is hardlocked by the renderer itself, currently.

Not to say there may not be a way to circumvent these, but atm that's the score with those.

yea that was my conclusion too, but i want to believe :(
 
@Asmodean778 U know if they are locked since 1.02 or ? the real poping problems start with 1.03. and more with 1.04... il try a lot of tweak for fixe it but its realy not worth ....have not to much NPC pop... but when am focus on details i can see rocks....stuff in market like boots and a lot of other stuff ..pop at realy 3m on me ...and i start to ask myself if maybe is not a maximun number of 3d models around geralt ...maybe that why the npc pop is less after the fast travel cuz of purge of memory ......


IDK maybe i just smoke to much .......

But i need to try ....stop try to increase the range but the number.. have u hever try this way ?

value like:
cvMaxAllowedDynMeshes
cvMaxAllowedTrianglesSkinned
cvMaxAllowedTrianglesStatic
cvMaxAllowedCharTextures

can maybe help ? i have an idea of what those values change but not how to increase them
 
Last edited:
This is not entirely correct, there is a CascadeShadowCount that tells how many cascades to use and. All cascades in this game seems to be stored in same texture, so rising scale for one not just affects render distance of cascade but also takes more resolution space in texture and leaves less space for other cascades.
This isn't true at all. I just tested it.

Ultra Preset (1/1/1.5/1.5)



Custom (1/1/4/4)



Custom (1/4/4/4)



So, the '0' cascade remains unchanged.

Edited to add:

Now, let's change the '0' cascade scale:

Custom (4/4/4/4)



This is the first time the foreground shadows have changed in any of the photos. Notice some aliasing in the shadow in the foreground.

So, when you said this:

And with his settings Cascade1,2,3 gets more space in final shadow texture and reducing details of cascade0 which is bad.

it's just plain wrong. Increasing the scale of Cascade 1/2/3 does not affect the resolution or distance of Cascade 0 whatsoever.

----

Also, technologically speaking it doesn't make sense to literally render them into the same texture. And given that the dithering effect that occurs between cascade transitions is clearly done during the stage where the shadows are composited into the scene (the dithering is in screenspace), this tells me that each shadow is in its own texture.

There *may* be one larger atlas or something, but I really doubt it. It likely just has a list of the textures for each cascade. What the system likely does is base the resolution of each cascade off of the CascadeShadowmapSize in the INI. So something like:

3072 = 0 size
1536 = 1 size
768 = 2 size
384 = 3 size.

Edited to add:

It's important to realize that changing the cascade distance scales do nothing to affect the resolution of their shadow map texture. Regardless of scale, in the example above, if you assume that CascadeShadowmapSize=3072 means that Cascade 3 gets a 384x384 texture, it will always get this size no matter the distance you tell it to scale to.


Since cascade 0 is on that that starts from camera position and affects most notticable details its good idea to give most of resolution and distance to it and for latest cascade it would be stupid enough to give much of resolution and distance since its far enough.
Not the "most" per se. You want cascades 2 and 3 to take up the largest actual distance. As in, miles away from the camera.

Also, since many small objects are only flagged to render in the 0 cascade, you are exponentially increasing the cost of rendering the 0 cascade's shadow map each time you double it. Because that many more objects are being rendered into the 0 cascade's shadow map.

Also distance scale of 1.0 seems to be almost equal to 10 meters. Increasing Cascade0 to 10.0 will render a lot of detailed shadows for area 0-100 metters from camer. setting distance scale 10.0 to cascade1 will render cascade1 at distances 100-200 meters, cascade2 = 10.0 will render cascade2 at 300-400 meters, and cascade3 = 10 fill render cascade 3 at distance 400-500 metters.

This seems wrong to me. The distance from the camera to the 0<->1 transition is a lot smaller than the distance between the 0<->1 and 1<->2 transitions. At least as far as I can measure by eye. I mean, the point of cascades is to have each cover a slightly larger area than the next. But I dunno, it's hard to debug the cascade transitions so I can't be sure.

What I'm saying is that I'd assume if cascade 0 is 10 meters deep, then cascade 1 might be 20, cascade 2 might be 80, cascade 3 might be 160. But that is still only 270m and that doesn't seem deep enough to me.

-----

So, I stopped reading after noticing that your predicating points seem to be wrong. If all the math and stuff is based on these predications, I don't want to spend a long time quoting each part and discussing it. I'd rather hear back from you about why you stated these things to begin with, as experimentally they are not true.

TL;DR - Increasing the scale of a cascade only affects that cascade.

----

Edit: OK, so after glancing over the rest of your post, it seems to me that you are misunderstanding the point of CascadeShadowDistanceScale entirely. I'm getting the feeling that you think that it's increasing the resolution of that cascade, when it's not. It's increasing the distance over which that cascade stretches.

Changing the CascadeShadowDistanceScale for any cascade leaves the total size of that texture for that shadow map unchanged. What it does is render a greater area of the game into that texture. Thus increasing CascadeShadowDistanceScale = decrease in apparent resolution. Decreasing the scale = increase in apparent resolution, but you get higher resolution over a smaller area.
 
Last edited:
Ok gotta ask, curiosity is consuming me: what does that Kinect line do? Does it affect performance?

Well, it's probably the Xbox Kinect setting. I tried to disable everything related to consoles. That's why I set everything under Input/Gesture tab to false as well as they are probably related to touchscreen gestures probably. I have played for at least two hours just now and there is seriously no camera stutter. I am really happy at the moment.
 
Last edited:
@jonwd7 @Asmodean778 I have been following the shadow cascading / dithering discussion and someone mentioned how this dithering affect was also part of TW2, I am not sure if it is for the same reasons but there was a .ini tweak to help alleviate the issue. Adding the following kind of softened the dots: allowsharpen=0

I have tried this in TW3 and it made no impact, it does not seem to be tied to Sharpening either. Do you think a similar tweak may exist to help soften the dithering in a similar way?
 
Hey @Asmodean778 , i see you looking for hidden text strings with hex editor, i did same thing and also found a lot o hiddenf things including mip refiner, but with initial release of game on steam they pushed map file which they removed with 1st patch, and it contained mapping for all strings ini oirignal v1.0 exe, with regexp search i extracted every string that game can be read from config files (they all tied to @config@ group), most of them starts with cv prefix but in configs they should be written without it (or with, i have not tested if cvTEST = TEST). The only problem with this list - its hard to figure out ini [section name] to which they should be applied and it seems game ignores them if they are not in a right ini section.
With this list you dont need to search for cvars anymore, they are all here, the only thing you will have to do - search for ini section names, value types and default values. Offsets probably changed since patch 1.01 but could be still same, i have not tested this, but version 1.0 exe is best way to debug with these values.

Complete list of hidden cvars attached bellow, here a quick example of how it looks:
Code:
?cvSectorAllowCollision          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 00000001429851e8     engine.Final:sectorDataGenericRuntime.obj
?cvSectorAllowCollision          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 00000001429851e8     engine.Final:sectorDataGenericRuntime.obj
?cvSectorAllowDecals          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142985258     engine.Final:sectorDataGenericRuntime.obj
?cvSectorAllowDecals          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142985258     engine.Final:sectorDataGenericRuntime.obj
?cvSectorAllowDimmers          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142985220     engine.Final:sectorDataGenericRuntime.obj
?cvSectorAllowDimmers          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142985220     engine.Final:sectorDataGenericRuntime.obj
?cvSectorAllowLights          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142985290     engine.Final:sectorDataGenericRuntime.obj
?cvSectorAllowLights          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142985290     engine.Final:sectorDataGenericRuntime.obj
?cvSectorAllowMeshes          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 00000001429851b0     engine.Final:sectorDataGenericRuntime.obj
?cvSectorAllowMeshes          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 00000001429851b0     engine.Final:sectorDataGenericRuntime.obj
?cvSectorAllowParticles          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 00000001429852d0     engine.Final:sectorDataParticlesRuntime.obj
?cvSectorAllowParticles          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 00000001429852d0     engine.Final:sectorDataParticlesRuntime.obj
?cvSectorAllowRigidBodies          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 000000014297e128     engine.Final:sectorDataRigidMeshRuntime.obj
?cvSectorAllowRigidBodies          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 000000014297e128     engine.Final:sectorDataRigidMeshRuntime.obj
?cvSectorAllowStreaming          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984ec0     engine.Final:sectorDataStreamingContext.obj
?cvSectorAllowStreaming          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984ec0     engine.Final:sectorDataStreamingContext.obj
?cvSectorForceRefreshVisibilityMask          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984f68     engine.Final:sectorDataStreamingContext.obj
?cvSectorForceRefreshVisibilityMask          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984f68     engine.Final:sectorDataStreamingContext.obj
?cvSectorForceUnstream          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984ef8     engine.Final:sectorDataStreamingContext.obj
?cvSectorForceUnstream          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984ef8     engine.Final:sectorDataStreamingContext.obj
?cvSectorMaxVisibleSectorID          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@HVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984fd8     engine.Final:sectorDataStreamingContext.obj
?cvSectorMaxVisibleSectorID          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@HVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984fd8     engine.Final:sectorDataStreamingContext.obj
?cvSectorMinVisibleSectorID          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@HVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984fa0     engine.Final:sectorDataStreamingContext.obj
?cvSectorMinVisibleSectorID          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@HVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984fa0     engine.Final:sectorDataStreamingContext.obj
?cvSectorResourcePrefetchRadius          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@MVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 00000001429840a8     engine.Final:sectorDataStreaming.obj
?cvSectorResourcePrefetchRadius          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@MVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 00000001429840a8     engine.Final:sectorDataStreaming.obj
?cvSectorShowAllSectors          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984f30     engine.Final:sectorDataStreamingContext.obj
?cvSectorShowAllSectors          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984f30     engine.Final:sectorDataStreamingContext.obj
?cvSectorStreamingEnabled          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984070     engine.Final:sectorDataStreaming.obj
?cvSectorStreamingEnabled          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984070     engine.Final:sectorDataStreaming.obj
?cvShadowDistanceBillboardScale          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@MV?$FloatRange@$0A@$0GE@$0GE@@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142a7ba00     renderer.Final:renderProxySpeedTree.obj
?cvShadowDistanceBillboardScale          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@MV?$FloatRange@$0A@$0GE@$0GE@@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142a7ba00     renderer.Final:renderProxySpeedTree.obj
?cvShowSaveCompatWarning          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 00000001429a3548     game.Final:gameSaver.obj
?cvShowSaveCompatWarning          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 00000001429a3548     game.Final:gameSaver.obj
?cvShowStreamingCollisionBoxes          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984808     engine.Final:physicsWorldPhysXImpl.obj
?cvShowStreamingCollisionBoxes          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@_NVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984808     engine.Final:physicsWorldPhysXImpl.obj
?cvSmallCollisionDataPreloadTreshold          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@HV?$IntRange@$0A@$0HPPPPPPP@@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142942ab8     engine.Final:collisionCacheReadOnly.obj
?cvSmallCollisionDataPreloadTreshold          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@HV?$IntRange@$0A@$0HPPPPPPP@@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142942ab8     engine.Final:collisionCacheReadOnly.obj
?cvSmallCollisionDecompressionTreshold          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@HV?$IntRange@$0A@$0HPPPPPPP@@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984c28     engine.Final:collisionCacheAsyncReader.obj
?cvSmallCollisionDecompressionTreshold          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@HV?$IntRange@$0A@$0HPPPPPPP@@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142984c28     engine.Final:collisionCacheAsyncReader.obj
?cvSoftFramePrefetchTimeout          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@MVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 00000001429fe1c8     renderer.Final:renderFramePrefetch.obj
?cvSoftFramePrefetchTimeout          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@MVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 00000001429fe1c8     renderer.Final:renderFramePrefetch.obj
?cvSoftTextureRequestTimeout          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@MVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142a80260     renderer.Final:renderTextureStreamRequest.obj
?cvSoftTextureRequestTimeout          [MENTION=2855431]confi[/MENTION]g@@3V?$TConfigVar@MVAlways@Validation          [MENTION=2855431]confi[/MENTION]g@@@1@A 0000000142a80260     renderer.Final:renderTextureStreamRequest.obj

use these search patterns to make life easy

Code:
?cv
__Ecv
__Fcv
          [MENTION=2855431]confi[/MENTION]g@@
$TConfigVar
inGameConfig
renderSettings.obj
inputUserConfig.obj
configVarSystem.obj
configVarLegacyWrapper.obj

Looking at few vars you posted with Sector name of ini section i see now pattern for some cvars names and their ini names, so it turs out that cvars like
Code:
cvSectorAllowRigidBodies
ends up as
Code:
[Sectors]
AllowRigidBodies

Some tips for section name could be given by references like engine.Final:renderSettings.obj but they are not very consitent (by the way, i was looking for paralax and tesselation hidden settings and found out that game have absolutely no tesselation or paralax configuration, except for water, CDPR really should add POM to every ground and wall surfaces, because they are so flat now)

Im about to release E.D.G.E (Extremely Detailed Graphics Enabler) mod that allows to edit all of hidden options right in game in real time and see results after engine refresh, funny coincidence i found miprefiner and posted screenshot with it added to game with my mod same day you did here, damn i should have looked at cdpr forums and this thread earlier, it could have saved me a lot of time.
http://vk.com/yobamustdie?z=photo-51921751_368859776/album-51921751_216455148
http://vk.com/yobamustdie?z=photo-51921751_368859774/album-51921751_216455148
http://vk.com/yobamustdie?z=photo-51921751_368859772/album-51921751_216455148

So this is how part of E.D.G.E. mod enabled graphics settings looks in game, there are dozens more, some however locked or capped and does not affect game (but i leave them be in case CDPR would be smart enough to unlock them and remove caps for values).




Still have to figure out how to add new localised strings to game to make them look prettier.

These screenshots (except for settings) of my CryGFX mod was made with some hidden tweaks fine tuned (except for pseudo GI effect and tonemap, its a mix of custom shaders and fine tuned or modded reshade framework stock shaders) with help of my EDGE mod, and was taken before patch 1.04, just a quick example of what could be achieved with CryEngine 3 EDGE mod XD




Before i polished and released E.D.G.E. i can share wip version with you in private (PM me), to ease our searches and help each other to help us all, so you can add few more cvars you found working. At the moment i have already all of ini settings from config folder added to game plus few hidden like mip refiner, high precision and cinematic mode. Will add now few more from your post, since i know now correct ini section names for these cvars.

Oh, can you tell me about ini section names with names like [name\name2\name3] are those combined from separate [name] + [name2] .. and ini setting can go eatch of separate section or they are fixed names that should be always combined like that? I have not tested that yet.

View attachment 16101

P.S. - little note to CDPR forum admins - could you please disable parsing of @ symbol for anything inside
Code:
        [MENTION=2116718]tag[/MENTION]s
to avoid @ turning into mentions in a middle of code?

---------- Updated at 10:33 AM ----------



But @doktor1 you did not лууз it, you totally ruined luminance\brightness and saturation of pixels, look at wall at left upper side of screen. Seems like i need to release my additional shader to SweetFX\Framework which turns RGB color space to HSV and allows to properly control brightness and saturation to stop people turning their white and black to 50 shades of gray and restore whites in game that have it ruined, just like Witcher 3, GTAV and Darwin knows how many more not well ported games with Xbox one calibrated dimmed gamma will appear soon.

---------- Updated at 11:01 AM ----------



These

MaxCubeShadowSize
MaxSpotShadowSize

Only affects shadow of fire places and torches and self shadowing, and they are razor sharp even at 512, increasing spot resolution does not add anything to their quality, and at resolution of 1024 some of the disappear, for example fireplace in intro near Yenifer, with 512 for both you have shadows from logs and rest of things, with 1024 logs shadows missing, with 2048 all shadows are gone. Also it seems that indoors whenever you in global shadows, cubed self shadowing disabled for characters, gameplay self shadowing also disabled, it only works fine in cutscenes outdoors and very few places like intro (yet its very blob like) which looks very ugly and flat. I hope they will enabled self shadowing indoors and inside global\cascade shadows. Witcher 2 was better in terms of shadows.

I ruined luminance\brightness and saturation of pixels?
Look at your washed out bloomed look of game?
What are you talking about?
What is this?? You cant read font from all that glow!

____

This is ruined luminance\brightness and saturation of pixels??
OK....








They sure look different on each monitors or settings.There is no point in arguing on presets. For example, adding digital vibrance in nvidia control panel, changes a lot things

My digital vibrance is at 60%

mine is 80, and colors look obviously more vivid.

---------- Updated at 11:39 AM ----------



Really no point in this, you don't know how looks on his monitor. If it looks crap on yours, doesn't mean looks crap on his or on someone's elses

@kilyan82 yes this is correct that pictures looks different on different monitors due of gamma calibrations of lack of, but there are things you can see with any calibration, like, for example, LACK OF WHITE COLOR which is controlled by brightness\value\luminance.

@doktor1 - rule number 1 before you release anything that changes colors - calibrate your displace settings to most common standards, if you want this to look the same for most of people. This means you have to tweak your mod with vibrance set to 50, and gamma set to non linear sRGB \ 2.2 which is Gamma 0.45 on Nvidia control panel. Look at my screenshots again when you set gamma to proper value 0.45 . It seems to me that you are playing on wide gamut display with linear gamma 1.0 instead of 2.2 or 0.45 But most of displays are 2.2 and you have to use this value to set proper colors

Anyway, at my screenshots wich actually more naturally looking lighting at 2.2 gamma you can see presence of white color, at yours i dont see white is white. Game already has problems with incorrect color calibrations in PC version, which leads to lack of white color and dimmed dersaturated look (more clear in this xbox to pc comarision side to side):



And you reduced value (brightness) of pixels even more, your value is about 85% of correct on. this is easy to see on histogram if you can see it by your own eyes, i even sampled the most bright point of screen and it proves again that your white is not white but grey and value is indeed about 85%:



Histogram at right should reach upper end, but as you see it stops at about 85%.

I correct your screenshot so that histogram would look as supposed, and sampled same brighest pixel, and now i got 100% value and colors. this is how your screenshots should look when you dont ruin color hue, saturation an value:



Lets try another one, situation here even worse, we got only 80% of value:



and let me correct your mistake, now thats how correct colors suppose to look:


if you think its about taste or personal preferences think better, histogram dont have taste or preferences, it only shows distribution of colors and lets you clearly see whats wrong with them, if you dont trust my human eye then trust computer histogram which proves my words.

And another thing we have to address, is your unfair critism of my screenshot, lets look at histogram of my screenshot and sample brightest pixel:



Histogram says that you are wrong again, luminance on my screenshots is 100% correct, and your screenshots are 15% wrong. I know what im talking about and what im doing with shader modification to achieve the most realistic and correct look and im not trying to folow my tastes im following just a plain logic and color correction rules which i read a lot recently to fix CDPR mistakes and measuring results in programs, you just randomly tossing values in cfg without having idea of what you doing, and you doing this until you having some values that gives you incorrect colors but suits your tastes and gives you feel like its look better.

And dont be so agressive please, i just suggested you to review your settings na recalibrate colors, no offence.
 
Voodooman, for all your technical analysis, the fact is - your screenshots look washed out/too much bloom on everything.
Yes, I understand you're showing more colorspace or whatever, but it just looks like I've had some vaseline smeared over my eyes.

Specifically the two images that feature bright lighting. (sunlight off trees, and the sunset/sunrise)
 
Status
Not open for further replies.
Top Bottom