[RELz]Oblivion Stutter Remover

Post » Fri May 13, 2011 4:10 am

That implies that your vsync is working strangely. How are you enabling vsync? What is iPresentInterval in your Oblivion.ini?

Changing MaximumFPS to 0 will, as the setting name implies, disable the upper limit on your FPS that OSR applies. The lower limit on frames-per-in-game-second will still apply, as will the other settings in the FPS management section of OSRs configuration file.

If VSync is enabled and your drivers are sane and Oblivion isn't going crazy then MaximumFPS should have no impact on whether or not you get screen tearing.


Forcing Vsync and triple buffering via ATI Tray Tools in Win 7 x64. The iPresentInterval is 0, I have never messed with this setting, what is it?

Drivers may not be sane, as i'm using an HD5970 which is new and hasn't really had an official driver for it yet, add on top of that ATI's rep for not so great drivers. Could be anything.

I am also confused as to why that would fix screen tearing. It may be because my card is getting 200+ fps indoors, and maxing that to 30 is making something go haywire. I tried setting it to 60 fps which is my screen refresh rate but still experienced tearing.

Fortunately, whatever FPS Management is doing with MaxFPS at 0 is still reducing the stuttering/micro-freezing issues that Vsync/triple buffering on its own (forced via ATI Tray Tools) seemed to bring on in outdoor areas especially. It still seems to be keeping everything smoother and more graceful, without the hiccups. I don't understand what is doing now with the MaxFPS at 0, but I like it, lol!
User avatar
Ashley Hill
 
Posts: 3516
Joined: Tue Jul 04, 2006 5:27 am

Post » Fri May 13, 2011 11:29 am

Try changing iPresentInterval to 1. I believe it is Oblivions VSync setting - 0 means no vsync, 1 means vsync in fullscreen only.
User avatar
John Moore
 
Posts: 3294
Joined: Sun Jun 10, 2007 8:18 am

Post » Thu May 12, 2011 11:22 pm

Try changing iPresentInterval to 1. I believe it is Oblivions VSync setting - 0 means no vsync, 1 means vsync in fullscreen only.


Tried that with and without Vsync enabled in ATITrayTools and it produced quite a bit of mouse lag in-game and at the menu screen. Does OSR not work with Vsync?
User avatar
Zach Hunter
 
Posts: 3444
Joined: Wed Aug 08, 2007 3:26 pm

Post » Fri May 13, 2011 1:55 am

Tried that with and without Vsync enabled in ATITrayTools and it produced quite a bit of mouse lag in-game and at the menu screen. Does OSR not work with Vsync?
I've never heard of any trouble with OSR and vsync before. I personally run Oblivion w/ vsync (when fullscreen) without trouble. Or I used to, these days all my testing is in a window.

I'd say just do whatever works for you. Which sounds like ATI VSync w/ MaximumFPS=0.
User avatar
Eilidh Brian
 
Posts: 3504
Joined: Mon Jun 19, 2006 10:45 am

Post » Fri May 13, 2011 11:17 am

I'll say it again...

I really Like this Program.

And Just to Be sure i am using it to its best abilities this is the INI im using,

Master = {	_comment = You can turn on or off each distinct feature from here.	bManageFPS = 1	bHookCriticalSections = 1	bHookHashtables = 1	bReplaceHeap = 1	bLogToConsole = 0	bFix64Hertz = 1	bFlushLog = 1	iSchedulingResolution = 1	iMainHookPoint = 1}FPS_Management = {	_comment = Basic FPS stuff, switches to slow-motion on low FPS; in the past this has occaisonally produced bugs like the NPCs-dropping-dead issue; the issues are believed to be fixed but if you suspect you are having related problems you can try disabling bAllowSlowMotion which is the main suspect for any problems relating to FPS management	bAllowSlowMotion = 1	MaximumFPS = 85	MinimumFPS = 10	iSmoothFrames = 0	iSmoothMode = 0	iSleepExtra = 2	bFPSConsoleSPAM = 0	iSchedulingParanoia = 1	iHardMaxFrametime = 200}CriticalSections = {	_comment = CS stuff helps both Oblivion and Fallout significantly	_comment = most of the benefit comes from the Renderer+0x180 suppression (see overrides below)	_comment = modes: 1=vanilla, 2=fair, 3=stuttering, 5=suppressed, 6=prioritize-main-thread, 7=deprioritize-main-thread	bEnableProfiling = 0	bEnableMessages = 1	bUseOverrides = 1	iDefaultMode = 2	iDefaultSpin = 1000	iStutterLevel = 4}Heap = {	_comment = Heap replacement can produce MAJOR improvements in performance on Oblivion, only moderate improvements on Fallout	_comment = It crashes instantly on Fallout, is moderately buggy on Oblivion	_comment = Algorithms: 1=FastMM4 (requires external dll), 2=Microsoft (slow on XP), 3=SimpleHeap1, 5=ThreadHeap2	iHeapAlgorithm = 5	bEnableProfiling = 0	iHeapSize = 800	bEnableMessages = 0}Hashtables = {	_comment = This stuff is still new.	_comment = The dynamic resizing option may still be buggy.  	bAllowDynamicResizing = 1	bUseOverrides = 0	bEnableProfiling = 0	bEnableMessages = 1	iHashtableResizeScale1 = 2	iHashtableResizeScale2 = 4	iHashtableResizeDelay = 20}OverrideList = {	CriticalSection = {		CallerAddress = 0x701748		comment = Renderer+0x180, recommendation=suppress (mode 5)		Mode = 5	}	CriticalSection = {		ObjectAddress = 0xB32B80		comment = MemoryHeap CS, recommendation=stutter (mode 3)		Mode = 3		Spin = 1500	}	CriticalSection = {		CallerAddress = 0x70172A		comment = Renderer+0x80, recommendation=???	}	CriticalSection = {		ObjectAddress = 0xB3FA00		comment = Unknown4, recommendation=???	}}


Let me know if i have something wrong or a setting should be differant.


Another thing.. i have tried setting "Frames to render ahead" Default for Nvidia is 3 up to 8 and it really seams to like it (Oblivion that is ). This is the setting in the control panel for Nvidia card. Felt Smother Any thoughts on that setting?? I know some games don't like that setting at all but Oblivion don't seam to mind?
User avatar
brenden casey
 
Posts: 3400
Joined: Mon Sep 17, 2007 9:58 pm

Post » Fri May 13, 2011 5:57 am

Pretty wide codebox you've got there...

gtm
User avatar
Ice Fire
 
Posts: 3394
Joined: Fri Nov 16, 2007 3:27 am

Post » Fri May 13, 2011 5:52 am

It follows all the recommendations from the readme. It's a fine ini, assuming that you have LAA enabled (otherwise iHeapSize is a bit high).
User avatar
Baby K(:
 
Posts: 3395
Joined: Thu Nov 09, 2006 9:07 pm

Post » Fri May 13, 2011 1:51 pm

@SkyRanger-1
On my system iHeapAlgorithm = 1 is perfectly stable. Do I understand correctly that algorithm "1" takes care of iHeapSize dynamically itself? I need not set any particular size, do I? I just left size at the default OSR installed with.

@camaro-69_327
By setting the render ahead to 8, do you get a smoother game or better FPS?

I have set it in my Nvidia drivers to "1" - for no particular reason. I could try a higher setting. Then again, the game is smooth with OSR, but I do get very low FPS occasionally. However I believe these moments are mod and CPU related rather than GPU.
User avatar
Ann Church
 
Posts: 3450
Joined: Sat Jul 29, 2006 7:41 pm

Post » Fri May 13, 2011 6:20 am

That is correct. It won't hurt to adjust it, and it won't help either. Unless you change iHeapAlgorithm.
User avatar
Matthew Barrows
 
Posts: 3388
Joined: Thu Jun 28, 2007 11:24 pm

Post » Fri May 13, 2011 12:38 pm

Setting Frames Render Ahead to 8 is a bad idea unless you a really fast CPU, settings higher then 3 will most likely result in mouse lag, when in game mode, while settings it low ie: can reduce frame rate, since the CPU is only preparing data for the GPU one frame ahead of what the GPU is already working on.

Although since OSR does hook the mouse now, maybe you can get away with a higher value then '3' and not get input lag, sound like some testing is need.
User avatar
Music Show
 
Posts: 3512
Joined: Sun Sep 09, 2007 10:53 am

Post » Fri May 13, 2011 2:48 pm

Thanks SoSway for the comments. Well I have a E8400 dual core running at stock 3 GHz. I guess that's pretty fast. In any case, I'll be gaming a bit now, and out of interest I will increase the render ahead to 8 just to see what happens. I will report. Unfortunately the guy camaro who brought it up has not come back yet. See you later!
User avatar
Elizabeth Davis
 
Posts: 3406
Joined: Sat Aug 18, 2007 10:30 am

Post » Fri May 13, 2011 7:47 am

I've never heard of any trouble with OSR and vsync before. I personally run Oblivion w/ vsync (when fullscreen) without trouble. Or I used to, these days all my testing is in a window.

I'd say just do whatever works for you. Which sounds like ATI VSync w/ MaximumFPS=0.


Seems I was under the purported placebo effect. All the settings related to Vsync in ATI Tray Tools were not doing anything, w/ or w/o OSR. I set v sync on in the Oblivion Launcher and it is now working, but I am experiencing quite a bit of mouse lag. I have gotten mouse lag in games such as UT3 w/ vysnc enabled as well, but I thought it only specific to that game. It may have something to do with my HD5970, anyone else get mouse lag with vsync enabled?

That setting of Frames to render ahead, I know it helps for certain games but I can't tell you which setting is the best. I think a setting of 1 is rather low, I think it should be at least 3 but I no longer have an Nvidia card so don't 100% me on that.

I believe that is an Nvidia specific setting as well, anyone know of anything like this for ATI cards? I would be interested to know whether that helped your fps/smoothness.

-J
User avatar
Cayal
 
Posts: 3398
Joined: Tue Jan 30, 2007 6:24 pm

Post » Fri May 13, 2011 4:28 pm

If you do use vsync, make sure you have triple buffering on, I haven't used ATi tray tools in a long time so I couldn't tell you if its triple buffering options is for OpenGL or DirectX only. Personally I'd use D3Doverride from rivatunner and its always work for all DirectX based games, since the nvidia option is only for OpenGL.

Secondly try setting bUse Joystick=0 in your oblivion.ini, some have said that having it scan for joystick input can cause input lag.
User avatar
Lucky Girl
 
Posts: 3486
Joined: Wed Jun 06, 2007 4:14 pm

Post » Fri May 13, 2011 10:52 am

As far as forcing triple buffering goes, I have found the option for D3D in ATI Tray, but you have to launch the game AFAIK by clicking on the game profile in ATI Tray which is linked to an .exe . In this case, the only valid .exe to link the forcing of Vsync and triple buffering to is of course, Oblivion.exe . The game needs to be launched from obse_loader.exe so i'm not sure how that is going to play out.

Anyway, this is what TweakGuides has to say about Max Frames to Render Ahead and Flip Queue Size (the ATI equivalent):

"This setting is similar to the 'Max Frames to Render Ahead' Nvidia setting which has been made famous by Oblivion - see this page (http://www.tweakguides.com/Oblivion_13.html) of my Oblivion Tweak Guide. It works in much the same way, controlling the number of frames which are calculated in advance of being displayed. The default is 3, or Undefined, however by lowering this setting you may be able to resolve mouse lag problems, and even prevent graphics freezes in certain games. Experiment by setting this value to 2 first, and then if necessary try an extreme value like 0. For most people however I recommend either 3, 2 or 1 at the lowest as setting a value of 0 can disable the performance benefits of dual core CPUs for example, and in general lowering this setting will reduce overall FPS the lower the setting. You can try raising it if you want to see if you can gain performance, however again you may experience mouse lag or input lag."

The tweakguide is rather outdated now I would bet, but the Max Frames to Render Ahead settings probably still apply. May be why I am experiencing mouse lag. I would like to see whether changing these settings improves fps.

EDIT: So, it looks like there is no way to force triple buffering on if your using obse, since you have to launch oblivion from obse_loader.exe and applying triple buffering to obse_loader.exe does nothing and it does not apply in-game. I can report that using vsync/triple buffering gets rid of the mouse lag and improves the fps quite substantially launched from oblivion.exe without obse. OBSE is pretty necessary though, anyone know a way around this?

EDIT2: Got it working with D3D Overrider! Not tied to an .exe so it works fine.
User avatar
Baby K(:
 
Posts: 3395
Joined: Thu Nov 09, 2006 9:07 pm

Post » Fri May 13, 2011 4:33 pm

Folks, I had a rather long gaming session now, some total 3 hours or so.

As I stated earlier, I played with render ahead of 8 (eight). And I must say I did not notice any great difference to previously when I set it on 1 (one). The good: In particular I got no mouse lag with 8, but I'm not convinced the FPS or smoothness were any better than with 1. However, I was out in the wild and later entered the Oblivion gate in Kvatch, so not many NPC scripts running. Therefore FPS were always good. I will keep it at 8 for the next few sessions, also will try it out in crowded cities where lots of NPC run around.

As it stands now, I would say not much gained and not much lost with render ahead of 8 vs. 1.

The session ended in a crash actually. Suddenly the screen went black and I had to kill it via the Task Manager. But until that point it was a great pleasure playing, no stuttering or anything for the whole time. The crash actually really surprised me, I got so used to how well it all ran until that point. I think though, my crashes are related to the graphics card. I'm somewhat weary of that Nvidia 8800GT I have. Can't say for sure though, just a suspicion.
User avatar
Terry
 
Posts: 3368
Joined: Mon Jul 09, 2007 1:21 am

Post » Fri May 13, 2011 9:33 am

Folks, I had a rather long gaming session now, some total 3 hours or so.

As I stated earlier, I played with render ahead of 8 (eight). And I must say I did not notice any great difference to previously when I set it on 1 (one). The good: In particular I got no mouse lag with 8, but I'm not convinced the FPS or smoothness were any better than with 1. However, I was out in the wild and later entered the Oblivion gate in Kvatch, so not many NPC scripts running. Therefore FPS were always good. I will keep it at 8 for the next few sessions, also will try it out in crowded cities where lots of NPC run around.

As it stands now, I would say not much gained and not much lost with render ahead of 8 vs. 1.

The session ended in a crash actually. Suddenly the screen went black and I had to kill it via the Task Manager. But until that point it was a great pleasure playing, no stuttering or anything for the whole time. The crash actually really surprised me, I got so used to how well it all ran until that point. I think though, my crashes are related to the graphics card. I'm somewhat weary of that Nvidia 8800GT I have. Can't say for sure though, just a suspicion.



lol...

Got home from work ..fired up Oblivion and I must also report a SOLID 3 hour gaming session Before the crash. Stranded one ....going thru a door . (all auto saves are off )

This is Great !!!!!!!

Played with it at the 8 frames to render ahead. Jury is out on this as i am still trying differant things.

When i Look at the Log file Oblivion doesn't get over 40% of the Processor usage. I usually see Over 3 gigs used for OB. Thats Phy Mem.
Running Great with my NOW Static , Core Clock of 3373.9 I do think this is Due to your new Memory thingy....dont laugh .


Sorry about the codebox , good thing it was last post on the page and you have a new page now...lol

SkyRanger-1 Posted Today, 02:27 AM
It follows all the recommendations from the readme. It's a fine ini, assuming that you have LAA enabled (otherwise iHeapSize is a bit high).


Yes it is Patched . Works great too!!



think that upping the heap from 400 to that 800 gave me the longer running time . what the heck gonna lower it back and see. no other changes.
User avatar
A Boy called Marilyn
 
Posts: 3391
Joined: Sat May 26, 2007 7:17 am

Post » Fri May 13, 2011 11:15 am

There's a new beta up on my ftp server ( ftp://71.115.222.171/sr_Oblivion_Stutter_Remover.dll ). More experimental features.

I am relocating. My ftp server will be down for part of this time. The new beta is available from tesnexus as an optional OSR download named WIP, in case my ftp server is unavailable for longer than expected.

In the latest WIP:

FPS_Management\iCullingTimeLimit no longer exists.

Master\bExperimentalStuff now exists. Setting it to 0 should disable all new "features".

Experimental\bMonitorBSShaderAccumulator will print out the number of milliseconds taken by each call to BSShaderAccumulator::vtable_entry_0x14, each time a call to that function finishes. The number may be rounded wierdly. That function consumes a very large fraction of the CPU time used by Oblivion.

Experimental\iPrintSceneGraphDepth will print out the scene graph each and every frame, to the specified depth. If the depth requested is greater then 3 then the resulting log files will get very large very quickly.

Experimental\bReplaceRawRandom will replace the libc random number generator used internally by Oblivion with a higher quality one. This should be safe to use, with aproximately zero performance benefit or cost. It may or may not produce a noticable difference in the distribution of random events in game... probably the difference will be too subtle to notice most of the time, but occasionally blatant.

Experimental\bReplaceExtraRandom will replace Bethesdas wrappers of libc rand/srand with higher quality ones (which don't actually wrap libc rand/srand) that are also faster. However the speed difference is likely to be much too small to notice.

Experimental\bSuppressRandomSeeding will suppress calls to libc srand(). Why is this option present? Because Oblivion does weird things with srand(), and I've been meaning to check what happens if I interfere sometime.

Experimental\iRandomQuality determines the quality of RNG used by the above settings. Actually this setting currently has no effect.
User avatar
Elizabeth Lysons
 
Posts: 3474
Joined: Fri Feb 02, 2007 7:16 am

Post » Fri May 13, 2011 5:36 am

The intentions there are:

1. More performance monitoring code. Not really ready for prime time, but eventually could be useful for figuring out performance bottlenecks.

2. Replacement random number generator. Originally looked on the off chance they had stupid locking there, but they didn't. Still, it was easy to replace with a better one, so I did.

I am thinking of benchmarking or replacing the pick-a-random-entry-in-a-leveled-list code, but haven't reverse engineered it well enough yet. The reason being because it's something that I know is inefficient that happens about when some lag is reported to happen for some people. Unfortunately, I think that while it is inefficient, it's not inefficient enough to be responsible for the stutter or pauses that people see sometimes when going near spawn points, not unless there are thousands of objects per leveled list and Oblivion decides to evaluate a bunch of different leveled lists at once.
User avatar
Brandon Bernardi
 
Posts: 3481
Joined: Tue Sep 25, 2007 9:06 am

Post » Fri May 13, 2011 9:16 am

I've gotta say, it's actually really interesting to see this project advance. I'm looking forward to all of these new features as they mature. Keep up the great work!
User avatar
Lalla Vu
 
Posts: 3411
Joined: Wed Jul 19, 2006 9:40 am

Post » Fri May 13, 2011 7:29 pm

bSuppressRandomSeeding = 1 is interesting. It gives me a performance boost of several FPS - but it creates a strange graphic glitch with torches, where every few seconds, there's a bright orange flash - probably when the torch flame animation restarts.

Changing that setting to 0 returns the torchlight to normal, but it also restores the slower framerate.
User avatar
Red Bevinz
 
Posts: 3318
Joined: Thu Sep 20, 2007 7:25 am

Post » Fri May 13, 2011 6:19 pm

bSuppressRandomSeeding = 1 is interesting. It gives me a performance boost of several FPS - but it creates a strange graphic glitch with torches, where every few seconds, there's a bright orange flash - probably when the torch flame animation restarts.

Changing that setting to 0 returns the torchlight to normal, but it also restores the slower framerate.
That is very interesting. The code itself seemed to imply that Bethesda might be using srand/rand as a hash function from some code that ran in threads that never ran normal tasks, or that Bethesda might be very confused, or both. Your graphical anomalies seem to imply that some function either depends upon that being reproducable or depends upon very specific mathematical properties of it. And even that might not be sufficient to explain the FPS increase... may have to investigate it further.
User avatar
Erika Ellsworth
 
Posts: 3333
Joined: Sat Jan 06, 2007 5:52 am

Post » Fri May 13, 2011 9:53 am

You're my hero, SkyRanger. OSR has simply made the game enjoyable for me, whereas it was literally a slideshow before stumbling upon your outstanding work.
User avatar
Flutterby
 
Posts: 3379
Joined: Mon Sep 25, 2006 11:28 am

Post » Fri May 13, 2011 4:37 pm

It turns out the orange torch flashes were the least of it. Outdoors, bSuppressRandomSeeding = 1 turns the sky bright orange and has tree branches (I think) criscrossing the entire sky. Visually very striking, but probably not desireable.
User avatar
Lou
 
Posts: 3518
Joined: Wed Aug 23, 2006 6:56 pm

Post » Fri May 13, 2011 12:58 pm

Heh. I guess code that uses that particularly path tends to be randomly varying graphics.
User avatar
luke trodden
 
Posts: 3445
Joined: Sun Jun 24, 2007 12:48 am

Post » Fri May 13, 2011 6:47 am

Hi SkyRanger=1

Can you suggest a mod that increases FPS during combat that is compatible with OSR? Say for those instances when you fight a hord of creatures using FCOM etc...
User avatar
jason worrell
 
Posts: 3345
Joined: Sat May 19, 2007 12:26 am

PreviousNext

Return to IV - Oblivion