• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Dark Souls internal rendering resolution fix (DSfix)

epmode

Member
Ah, thanks... will dial that back down to 1600 then.
I'm pretty sure you're going to want it even lower. My monitor is a native 2560x1600 and I found 800 to be a good DoF setting. It's noticeable enough in the right areas yet 684737288575631426476 times better than the vanilla setting.

I chose 800 because the suggested examples tend to cut the vertical resolution in half.
 

BloodyBonzai

Neo Member
About triple buffering: I still don't fully understand how the game manages its FPS limit / presentation interval, and until I do I won't be able to do anything about things related to vsync.

Isnt it possible to make your fixes compatible with D3DOverrider so that you dont need to understand the aspects of vsync in dark souls? Or I dunno about obtaining the code and implementing it into your code since D3DOverrider works on Dark Souls w/o your fixes. Although I dont think it is your fixes causing the problem, moreso the method in which they are applied.
 

TheExodu5

Banned
Isnt it possible to make your fixes compatible with D3DOverrider so that you dont need to understand the aspects of vsync in dark souls? Or I dunno about obtaining the code and implementing it into your code since D3DOverrider works on Dark Souls w/o your fixes.

Are you sure D3DOverrider works with Dark Souls? You can see the framerate clearly fluctuating at a point that is not 15fps or 30fps? Personally, I can't even test this as no area in the game can make my framerate drop at the default resolution.

It's my contention that Dark Souls does not limit its framerate in the usual sense...it uses an internal frame limiter to limit it to either 30fps or 15fps. It does not use traditional double buffering, as it never outputs at 20fps, as a double buffered title would.
 

BloodyBonzai

Neo Member
Are you sure D3DOverrider works with Dark Souls? You can see the framerate clearly fluctuating at a point that is not 15fps or 30fps? Personally, I can't even test this as no area in the game can make my framerate drop at the default resolution.

It's my contention that Dark Souls does not limit its framerate in the usual sense...it uses an internal frame limiter to limit it to either 30fps or 15fps. It does not use traditional double buffering, as it never outputs at 20fps, as a double buffered title would.

D3DOverrider makes a ringing sound upon starting a game to indicate to the user that it is functioning properly with the game being started. So if you play Rage for example it does not ring due to the fact the game is OpenGL. So you will notice D3DOverrider will make the ringing sound upon starting up Dark Souls w/o Durante's fix applied, and it will not make a ringing sound when you start Dark Souls with Durante's fix.
 

x3sphere

Member
I'm pretty sure you're going to want it even lower. My monitor is a native 2560x1600 and I found 800 to be a good DoF setting. It's noticeable enough in the right areas yet 684737288575631426476 times better than the vanilla setting.

I chose 800 because the suggested examples tend to cut the vertical resolution in half.

Thanks man, I tried 800 and that does seem to be the sweet spot for this res. Solved the few FPS drops I was getting, too -- even when at the bonfire it's a solid 30 now.
 

TheExodu5

Banned
D3DOverrider makes a ringing sound upon starting a game to indicate to the user that it is functioning properly with the game being started. So if you play Rage for example it does not ring due to the fact the game is OpenGL. So you will notice D3DOverrider will make the ringing sound upon starting up Dark Souls w/o Durante's fix applied, and it will not make a ringing sound when you start Dark Souls with Durante's fix.

Good to know.

Also, note that while it may ring without Durante's fix, there's no guarantee that it is actually doing anything. Like I said, the game clearly has some form of internal frame limiting. It may very well be operating within a double-buffered wrapper, but there's no guarantee that allowing for triple buffering will do anything to override the internal frame limiting. The same internal frame limiting within a triple buffered wrapper would probably result in the same experience.

Again, just a guess, but I don't think I'm far off on this one. Like I said, if this game was not limiting its framerate internally, you would see drops from 30fps - 20fps. Instead, all we see is drops from 30fps -> 15fps. I believe this is because they can easily time-scale animations by a factor of two in this case.
 

BloodyBonzai

Neo Member
Good to know.

Also, note that while it may ring without Durante's fix, there's no guarantee that it is actually doing anything. Like I said, the game clearly has some form of internal frame limiting. It may very well be operating within a double-buffered wrapper, but there's no guarantee that allowing for triple buffering will do anything to override the internal frame limiting. The same internal frame limiting within a triple buffered wrapper would probably result in the same experience.

Again, just a guess, but I don't think I'm far off on this one. Like I said, if this game was not limiting its framerate internally, you would see drops from 30fps - 20fps. Instead, all we see is drops from 30fps -> 15fps. I believe this is because they can easily time-scale animations by a factor of two in this case.

Right, the purpose of D3DOverrider is to give the user their actual fps rather than having their fps drop by half when their hardware cannot putout the max fps. The NVIDIA Inspector should work with D3DOverrider so I will add some AA and SSAO and see if D3DOverrider is functional when I start the game with those settings active. Then I will use a bonfire and see if my fps drop to 15 or if my actual fps is used. That will eliminate the possibility of D3DOverrider making a ringing sound yet not doing anything, which I have never witnessed before in all the games I have tested.
 

TheExodu5

Banned
Right, the purpose of D3DOverrider is to give the user their actual fps rather than having their fps drop by half when their hardware cannot putout the max fps. The NVIDIA Inspector should work with D3DOverrider so I will add some AA and SSAO and see if D3DOverrider is functional when I start the game with those settings active. Then I will use a bonfire and see if my fps drop to 15 or if my actual fps is used. That will eliminate the possibility of D3DOverrider making a ringing sound yet not doing anything, which I have never witnessed before in all the games I have tested.

Well, I've never witness a 3D game that skips right over 20fps besides Dark Souls.

We know the animations are time-keyed and tied to the framerate. Some people have succeeded in getting the game running at 60fps, but everything was going twice as fast. What this means is that the opposite should be happening at 15fps: everything should be going at half the speed. Since things don't go at half the speed, I'm going to guess it's because the developers directly scale the time-keyed events by a factor of two to make up for the frame loss. You couldn't properly scale animations at any framerate that isn't a direct multiple, as the time-keyed events wouldn't line up properly. That being said...do we know if the console versions could drop even lower than 15fps? And if so, what the actual framerate was?

I would guess the game should be able to run at 30, 15, 10, 6, 5fps. This would mean 1, 2, 3, 5, or 6 time-keys per frame respectively.
 

FtHTiny

Member
The latest version is amazing. Borderless window is really what it needs when you want to queue for arena or wait for an invasion.
Another job well done. Thanks again.
 

BloodyBonzai

Neo Member
Well, I've never witness a 3D game that skips right over 20fps besides Dark Souls.

We know the animations are time-keyed and tied to the framerate. Some people have succeeded in getting the game running at 60fps, but everything was going twice as fast. What this means is that the opposite should be happening at 15fps: everything should be going at half the speed. Since things don't go at half the speed, I'm going to guess it's because the developers directly scale the time-keyed events by a factor of two to make up for the frame loss. You couldn't properly scale animations at any framerate that isn't a direct multiple, as the time-keyed events wouldn't line up properly.

Again...just a guess. Also, if this guess is right, I think the logic can be reversed so that time-keyed events can be scaled in the opposite direction if we want to get the game running at 60fps.

Ya, I have stated in prior posts that I believe running the game at 60fps will break the game due to it running in a fast forward type mode. Just Cause 2 is the first game that I ever had an fps issue where if you did not get 60fps it would drop to 30fps. Ever since then I have kept D3DOverrider active so I do not know if there are any other games with that same issue besides Dark Souls.
 

epmode

Member
I've played it with both. I don't mind the 360 controller, personally. I'm sticking with the 360 controller for 1 reason: it's much harder to accidentally press RT than it is R2. I made the blacksmith hostile on the PS3 as I put the controller down on my lap to answer the phone. Cost me 150,000 souls to atone.
YES. I did something similar in Demons' Souls. I don't like the 360 pad quite as much otherwise but the peace of mine is worth it.
 

goodfella

Member
Sounds like conditioning from the console version, 360 controller fits perfectly to me.

That is entirely possible.


I've played it with both. I don't mind the 360 controller, personally. I'm sticking with the 360 controller for 1 reason: it's much harder to accidentally press RT than it is R2. I made the blacksmith hostile on the PS3 as I put the controller down on my lap to answer the phone. Cost me 150,000 souls to atone.

Everyone makes that mistake once. That is a really good reason.
 

Durante

Member
Your DoF resolution should not be higher than your internal resolution; this is needlessly graphics intensive and removes the intended effect. I believe the current recommendation is not to exceed your actual monitor resolution for DoF.
If you really want the exact intended effect, you shouldn't exceed half of your rendering resolution. When downsampling, even that removes some of the intended effect.

The problem is that it's currently a tradeoff between aliasing/flickering of the distant stuff and less DoF.
 

TheExodu5

Banned
Ya, I have stated in prior posts that I believe running the game at 60fps will break the game due to it running in a fast forward type mode. Just Cause 2 is the first game that I ever had an fps issue where if you did not get 60fps it would drop to 30fps. Ever since then I have kept D3DOverrider active so I do not know if there are any other games with that same issue besides Dark Souls.

Different reasons, though.

A double buffered game should make the following fps drops in sequence, if you're running a 60Hz monitor: 60 -> 30 -> 20 -> 15 -> 12 -> 10 -> etc...

Since this skips right over 20, there's something else at work here than double buffering limiting the framerate.
 

BloodyBonzai

Neo Member
Ugh, having trouble testing this out. In NVIDIA Inspector I have Antialiasing mode set to override, antialiasing setting: supersample 16x, Antialiasing - Transparency: SGSSAA8x, Ambient Occlusion: High, NVIDIA Predefined Ambient Occlusion Usage: Enabled, Ambient Occlusion Flags: Fallout 3, and it is all set to the data.exe in the dark souls directory. On top of that I reduced my GPU clock and memory clock to the minimum possible in EVGA Precision. When I go to a bonfire my fps is a solid 30fps. Dunno what else I can do to verify D3DOverrider is effective other than the ringing sound it makes which has never been faulty in my past experiences.
 

BloodyBonzai

Neo Member
Different reasons, though.

A double buffered game should make the following fps drops in sequence, if you're running a 60Hz monitor: 60 -> 30 -> 20 -> 15 -> 12 -> 10 -> etc...

Since this skips right over 20, there's something else at work here than double buffering limiting the framerate.

In Just Cause 2 once you dropped to 30fps, you would receive your actual fps if you go lower. So for a 60Hz monitor it is just 60 -> 30 for that game. Just how in Dark Souls once you drop to 15fps, you get your actual fps if you go any lower.
 

subversus

I've done nothing with my life except eat and fap
Total Biscuit took down the video because it was not up to his standards. He'll make another one after he returns.
 

Perkel

Banned
Different reasons, though.

A double buffered game should make the following fps drops in sequence, if you're running a 60Hz monitor: 60 -> 30 -> 20 -> 15 -> 12 -> 10 -> etc...

Since this skips right over 20, there's something else at work here than double buffering limiting the framerate.

I have fraps always on and drop is precise. 15FPS not 20, 10, 25, or any other. It's clean 15 FPS for few seconds. I think too those drops are artificial.
I have also PS3 version and those drops from PC version are around same spots.

If it is a direct port they probably those artificial drops are from console heritage. So when you hit certain places engine drops to 15 for few seconds as it would in console version but it don't know that PC have power to do stable 30.

Also as you suggested about animation. If game plays normal speed when it hits 15fps there should be no reason it can't do 60 as it is 2x30. Animation should be scalable.
 

BloodyBonzai

Neo Member
I have fraps always on and drop is precise. 15FPS not 20, 10, 25, or any other. It's clean 15 FPS for few seconds. I think too those drops are artificial.
I have also PS3 version and those drops from PC version are around same spots.

If it is a direct port they probably those artificial drops are from console heritage. So when you hit certain places engine drops to 15 for few seconds as it would in console version but it don't know that PC have power to do stable 30.

Also as you suggested about animation. If game plays normal speed when it hits 15fps there should be no reason it can't do 60 as it is 2x30. Animation should be scalable.

You're misunderstanding what he said. Read his last sentence.

Also TheExodu5, I could record Just Cause 2 footage demonstrating what I am talking about, as well as Dark Souls providing actual fps after taking the dip to 15fps if you dont believe me.
 

Andrea23

Member
It's the classic problematic related to the double buffering. Nothing less, nothing more : ).

Of course with downsampling its weaknesses are amplified ...
 

TheExodu5

Banned
You're misunderstanding what he said. Read his last sentence.

Also TheExodu5, I could record Just Cause 2 footage demonstrating what I am talking about, as well as Dark Souls providing actual fps after taking the dip to 15fps if you dont believe me.

Yes, I know what you're talking about in Just Cause 2. Like I said, this is normal for a double buffered game. 60 -> 30fps is normal. 30 -> 15fps is not. That's what's pointing to a custom solution to frame limiting in this case. Double buffering is likely not the issue, and triple buffering the game will likely not fix it.

In Just Cause 2 once you dropped to 30fps, you would receive your actual fps if you go lower. So for a 60Hz monitor it is just 60 -> 30 for that game. Just how in Dark Souls once you drop to 15fps, you get your actual fps if you go any lower.

edit: Oh, didn't catch that part. That's...interesting. Never heard of that happening before.
 

BloodyBonzai

Neo Member
It's the classic problematic related to the double buffering. Nothing less, nothing more : ).

Of course with downsampling its weaknesses are amplified ...

Anything that causes your hardware not to stay above the 30fps limit at every moment of the game, not just downsampling.
 

BloodyBonzai

Neo Member
Yes, I know what you're talking about in Just Cause 2. Like I said, this is normal for a double buffered game. 60 -> 30fps is normal. 30 -> 15fps is not. That's what's pointing to a custom solution to frame limiting in this case. Double buffering is likely not the issue, and triple buffering the game will likely not fix it.



edit: Oh, didn't catch that part. That's...interesting. Never heard of that happening before.

This Sunday I will test it on a duo core 2 with a GT240. See if I can get my fps to drop below 30.
 
Anor Londo really benefits from SSAO.

ssaok4e8w.jpg

ssao2xrd9b.jpg
 

BloodyBonzai

Neo Member
Aright, I managed to get my fps to drop below 30 w/o the MOD. D3DOverrider failed to fix the problem. Very lame. But in the testing process I was able to get the fps to hang in the mid 20s for a few seconds by not moving the camera. But D3DOverrider had nothing to do with that, it was just the natural flow of the game when you are that close to 30fps but constantly dropping below. Guess I just gotta wait for that flagship NVIDIA 700 series card to make sure I can run insane settings w/o ever dropping below 30fps.
 
People were setitng DOF somewhere between 540 and 1080, right? I'm considering lowering my setting below 1080 but I don't know if I want to drop all he way to 540.
 

TheExodu5

Banned
Not sure what's up. I think the last patch broke things for me. The game boots at 15fps and then slows to like 0.2fps after 2 seconds, and never seems to recover. Gonna try reverting to 0.4 and see if it fixes it.

edit: woops, had the wrong vertical res. Maybe that's the culprit.

edit2: nope. Reverting to 0.4 to check.

edit3: 0.4 doesn't work either. Something broken on my end then. Will report back when I figure out what it is.

edit4: how strange. 1080p works fine. 2160p does not...never gave me any issues prior to today.
 

TheExodu5

Banned
===== Thu Aug 30 00:26:32 2012 =====
===== start DSfix 0.6 = fn: C:\Games\Steam\steamapps\common\Dark Souls Prepare to Die Edition\DATA\DATA.exe
===== Thu Aug 30 00:28:33 2012 =====
===== start DSfix 0.4
===== Thu Aug 30 00:30:01 2012 =====
===== start DSfix 0.4
===== Thu Aug 30 00:32:32 2012 =====
===== start DSfix 0.4
===== Thu Aug 30 00:35:16 2012 =====
===== start DSfix 0.4
===== Thu Aug 30 00:38:18 2012 =====
===== start DSfix 0.4
===== Thu Aug 30 00:40:43 2012 =====
===== start DSfix 0.4
===== Thu Aug 30 00:42:26 2012 =====
===== start DSfix 0.4

It's logging those messages even though logging is set to 0. Is that normal?

# Log level - 0 to 11, higher numbers mean more logging
# only enable for debugging
logLevel 0
 

Durante

Member
Yes, logging 0 just means that only the startup message will be printed. (It's printed since that happens before reading in the settings file)
 

Durante

Member
That should be impossible. The start message is always logged, and if it fails to write the log file the whole thing crashes.
 

TheExodu5

Banned
I have absolutely no idea what was the cause of my poor performance. Only thing that fixed it was a clean re-install of NVidia's latest beta drivers. Curious, as I haven't changed any profile settings since I last played.
 

Zzoram

Member
Ah, that's what you mean. Versions <= 0.4 append to the log, while versions >= 0.5 create a new one at each launch. That's why you don't see earlier messages.

Where are these logs stored? Do they keep building up new files and slow down the game?
 

d0c_zaius

Member
I have absolutely no idea what was the cause of my poor performance. Only thing that fixed it was a clean re-install of NVidia's latest beta drivers. Curious, as I haven't changed any profile settings since I last played.

Hopefully that works for me as I am having similar issues.

Seems like it did so far! Thanks Exodu5!
 

TheExodu5

Banned
Well, since it's worked for two of us so far: I'll suggest to anyone with an NVidia card that is getting lower performance than they should, install the latest 306.02 drivers. You may or may not to do a clean install (beware, a clean install will erase your custom game profiles, if you have any).

is there any way to use "interpolation" to emulate a 60 fps effect? remember that star wars video...

If you have a TV capable of doing so...sure. Not really worth it though...plenty of artifacts, and more importantly, lots of input lag. No game has done it as that Star Wars video has described, as far as I know.
 

Alo81

Low Poly Gynecologist
This would make it like a hack/cheat, and no fun, would seriously do a disservice to his work so far. (IMO)

but while we're on the subject, how would this effect PVP...? would one person just move double speed or something?

By everything would run at x2, he means literally everything. The game would be incredibly difficult to play. You wouldn't really be at much of an advantage. All the enemies move at twice the speed, and you have to be able to respond, block, whatever twice as quickly.
 

Perkel

Banned
By everything would run at x2, he means literally everything. The game would be incredibly difficult to play. You wouldn't really be at much of an advantage. All the enemies move at twice the speed, and you have to be able to respond, block, whatever twice as quickly.

Actual small bump to 36-40 would be menegable and fun.
 

Durante

Member
By everything would run at x2, he means literally everything. The game would be incredibly difficult to play. You wouldn't really be at much of an advantage. All the enemies move at twice the speed, and you have to be able to respond, block, whatever twice as quickly.
Exactly. I certainly won't release this.

but while we're on the subject, how would this effect PVP...? would one person just move double speed or something?
This is a good question. Out of morbid curiousity I'm thinking of including a toggle in my personal version and activating it the next time a cheater invades me :p
 
Top Bottom