Tonight, Jac accidentally left your voodoo shader running when he started a NWN2 game as host. No one in the game could right click on anything, not traps and not each other, until Jac closed NWN2, turned off the shader, and restarted the game. I wouldn't have expected a shader to affect gameplay interface, especially when it wasn't actually working yet. Just thought I'd let you know.
That seems very unlikely, especially if it was preventing multiplayer clients from clicking. I will keep a note of it, in case it comes up again, but there isn't even any input code in VSF yet, much less over-the-wire input. I haven't fully tracked down the paths deal, but there are a few reports of odd behavior with path matching; a lot of them are people who don't understand how it should work, so I'm not sure if there's actually a problem.Now for this week's news, mostly good:
The previously-untested deferred rendering system turns out to work just fine. Where most graphics extenders only draw to a single preset texture, Voodoo Shader allows effects to create textures and specify which they want to draw to. This allows for a lot of effects that were previously impossible and improvements to some simple effects, such as bloom and the rest of the blur family.
For those partial to diagrams and charts:
http://i.imgur.com/fc5Zw.png
http://i.imgur.com/ARVdB.jpg
With multiple passes, techniques, and effects all accounted for and NLPP done, we're quickly coming up on the point where this stops being an experiment and turns into a usable project.
At the request of a few folks, I will be doing what I can to make Voodoo Shader compatible with Wine and Crossover, and if possible will use the framework to help patch graphics and make games run better on those platforms. That's going to take a bit of setup work, but initial checks suggest things aren't entirely broken on Wine as is.
I declared yesterday muffin and benchmarking day. The muffins were delicious and the benchmarks promising. Running a small scattering of games with some reasonably high settings intended to make Voodoo Shader choke up turned out to make it look pretty good.
Frames per second: avg (% difference), min-max. https://docs.google.com/spreadsheet/oimg?key=0AtluffkFk8FedEFHeF9FR2RUa24za2kyYUdVUnJzM1E&oid=5&zx=vmhdjbz344pa, https://docs.google.com/spreadsheet/ccc?key=0AtluffkFk8FedEFHeF9FR2RUa24za2kyYUdVUnJzM1E
- Skyrim, none: 48.48, 38-61
- Skyrim, VS copy: 47.42 (-2.2%), 37-60
- Skyrim, VS bloom: 45.55 (-2.37%), 37-61
- Oblivion, none: 90.77, 82-95
- Oblivion, VS copy: 88.10 (-2.94%), 80-93
- Oblivion, VS bloom: 88.62 (-2.37%), 86-90
- Morrowind, none: 70.12, 48-109
- Morrowind, VS copy: 98.37 (40.29%), 69-144
- Morrowind, VS bloom: 95.68 (36.46%), 76-133
- Fallout 3, none: 59.55, 55-61
- Fallout 3, VS copy: 59.37 (-0.31%), 57-61
- Fallout 3, VS bloom: 58.95 (-1.01%), 57-60
- NWN2, none: 40.08, 40-41
- NWN2, VS copy: 38.10 (-4.95%), 38-39
- NWN2, VS bloom: 35.80 (-10.69%), 35-36
Results are about what you'd expect, more works is less speed. NWN2 by far takes the biggest hit, with Fallout 3 hardly flinching. The Morrowind results are by far the most interesting. I ran them twice, using a 120-second interval the second go, to verify the numbers and they checked out. I suspect the upgrade from D3D8 to 9 is involved in part, but I did not expect the findings. Whether this is good science or I screwed up somewhere, I'm not sure.
In all cases the games were running the highest default settings but no AA or AF (no INI tweaks, ultra or ultra high in the launcher, or maximum from the options menu); all but Morrowind ran in 1920x1080 fullscreen, Morrowind was 1280x768 windowed. Each benchmark ran for 60 seconds, recording FPS for each second using Fraps, and the resulting samples were run through some statistical anolysis in Excel. For Skyrim, the 60 seconds started when the word "presents" appeared in the intro of a new game, and no user input was given. Oblivion was recorded outside of the sewer exit. Fallout 3 was recorded looking out over the wasteland outside of the vault. NWN2 was recorded in the town of Ember, with the camera zoomed as far out as possible and at a low angle. Morrowind was recorded standing on the wall of Balmora, across the river from the silt strider and looking into the city. Each benchmark was run once without Voodoo Shader, once with a basic copy effect (using a shader to show the screen, no special effects), and once with a bloom effect using 6 passes (1 filter, 4 blur, 1 combine). I'll be adding MGE/OBGE and ENB benchmarks when I have time.
Unfortunately, after not a little time and code put into it, I've had to remove Cg from Voodoo Shader. Testing brought to light the sad fact that when it doesn't like something, it crashes, and this behavior is intentional. In this case, that means the whole game crashes, which is simply unacceptable. The final nail in the coffin was when Cg prevented me from even starting OpenGL games with Voodoo Shader, the exact thing it was supposed to make easier. About half of this past week has been me stripping it out, and that effort is now complete and the framework is working again and has a few more features. It would have been nice to use Cg, but I'm not going to even consider something designed to crash your computers.
In place, I'm using DirectX's own compiler and the current plan is to use MojoShader for OpenGL support. This has the side benefit of allowing MGE (XE) and OBGE shaders to be used with almost no modifications at all. For end users, there will be little or no difference.
There will be a new version with some added features within the next few days, probably, so check for updates if you feel like playing with things, and that's about all for now.