Hello
I've come across a certain... discovery, should I say? It's just an observation actually. Here's what happened:
I had Oblivion open in the debugger (OllyDbg). I was messing around working on an attempt to see where Oblivion has its water reflection-related code for... aesthetic reasons. And y'know... I was trying to mess around with the reflections, so I turned em off by doing "setNumericINISetting "bUseWaterReflections:Water" 0" in the console. I was in a pretty heavy load area (Overlooking IC with full RAEVWD install, QTP3, etc.) so naturally, my FPS were low (25ish). Now, the moment I turned off the water reflections by doing that, my FPS jumped all the way to 44ish!! I was just sitting there for like 5 muinutes staring or waiting for someone to wake me up. So I chalked it up to the debugger being weird or slowing things down and I tried it during normal play and the same thing happened...
So I tested this further, and I found out the following:
-The reflections FPS hit is directly proportional to the geometric workload. More geometry around, more FPS hit.
-The hit becomes much worse when you do any of the water tweaks "bUseWaterReflectionsActors/Statics/Trees/Misc" but its still there without them. Especially in complex scenes (like outdoors overlooking large bits of Tamriel, as I mentioned above).
-The ginormous FPS hit happens no matter where I'm looking. I specifically checked for this and sometimes there is absolutely NO water on my screen, I'm inside a CITY, and the hit is still there (IC Market District worst FPS from 24ish to 34ish!!). Except when I'm looking towards the ground, cause my FPS are already pretty high (maxed at VSync) so I don't see any drop.
-The GPU Utilization counters move UP a little (e.g. from 45%ish to 48%ish) when I turn OFF the reflections. This immediately turned my suspicions to a bottleneck in the CPU... It seems whatever code is generating these reflections, its extremely slow.
-I checked the CPU Utilization counters. On my quad core i5-750, the CPU Utilization refuses to go above 40%ish no matter what, but if it isn't at that limit already, it hits it immediately the moment I turn on the reflections (like going up from 20%ish to 40%ish).
The problem (I think) is that this reflection stuff is being done on the same thread as w/e else, and it's extremely expensive since its going through all the geometry in the scene for some reason or another, so if the thread is already fully utilizing its CPU core, the reflections take even more time.
So my question to SR is: Do you think it's even remotely possible to force/coerce/persuade/beg the reflection-generation code to run in a separate thread?
Do you think it is even parallel or is it strictly serial code?
Right now, I'm running the game with water reflections turned off. Sure, the water looks like crap but the game feels so damned smooth even in places that I previously accepted as completely stuttery. It's irresistible.
I would appreciate if someone with a heavy game (Big VWD Mods, QTP3, Bomret's, etc.) can verify any of these results.