Been a while since I updated this, but development certainly hasn't stopped. More like I've been too busy with it to run around hitting all the forum threads
.
Been putting in a ton of code, reworking and optimizing things, and adding features like crazy throughout the last month, and now coming to the testing-before-release bit. I hope to have another test out very shortly (Valve-time), with all the previous bugs squished and a some new features.
As I go along, the system has been continually worked and reworked and improved, to be fast, sturdy and unified. I started on the NWN support the other day and it took about 3 days to get the basics set up and running for a totally different game.
In my latest tests, there's still no FPS hit from running a test shader, everything seems very stable. When something does go wrong, the error log (kind of a new concept in these parts, I know
) tracks down what info it can and takes note. A pretty viewer is included to load the logs and highlight any warnings or errors.
I've also started implementing the config system. Voodoo, in this, follows a
very different style from MGE or previous apps of the sort. There's one config file (xml, pretty small and readable if you want) and a tiny (15kb) hook DLL in the Morrowind directory, and that's it. The hook finds the rest of the files from the registry and loads them up dynamically, then core reads the config and sets things up.
Everything can be tweaked and changed, and most of the stuff is set in the config. To be able to cope with many games, I had to set up a system of handling DLLs that can be swapped out, which I poked at a bit and extended into a full-blown plugin system (no more hacky plugins for MWSE, just write up a DLL and add it to the config).
The hook and core are game-independent and so allow Voodoo to load into most programs, it's the config and adapter that specialize things. The setup for an adapter is fully documented and explained http://docs.voodooshader.com/core/adapterspec.html and http://docs.voodooshader.com/core/class_voodoo_shader_1_1_i_adapter.html, so they'll all behave the same and features will work as expected. I've also been testing the core every time I test any adapter, so it gets quite a bit of work and is passing with great results so far.
The resource handling system has been implemented and works perfectly (first try, too!
). A set of paths are given in the config and searched in order, so you can store per-install resources in the install folder, per-user in my documents, or keep everything neat and clean in the main voodoo folder. As usual, shaders work between games, so you rarely need game-specific stuff. A working example of the config setup https://github.com/peachykeen/VoodooShader/blob/master/Resources/VoodooConfig_Gem.xmlconfig.
Texture loading has also been added. The details will probably only interest artists, but I'm using DevIL to handle loading textures, so pretty much any format you want can be handled. Everything from BMP and JPEG (which I really don't recommend) to 48-bit PNG, or full 128-bit DDS or HDR textures. Voodoo fully supports true HDR (where hardware allows it). Full info on that here: http://docs.voodooshader.com/core/_textures.html
The material system is mostly set up, just need to add the final touches on that and get it working nicely. Need to set up a config app, but that'll come a bit later. The next test release won't have everything complete, but it will have a few more fun things.
The code is available on Github and I've resumed almost nightly pushes there, so anyone curious or wanting to help out can play with it. As usual,
everything is documented. I absolutely refuse to let this go the way of MGE's code or wiki, despite a much larger scope, so I've taken care to note everything as I go along. The documentation is in the code and I use doxygen to generate it each time I upload the codebase, so it will stay pretty up-to-date and comprehensive. The full documentation for the core and current modules is hosted at http://docs.voodooshader.com/core and adapters will be added as I finish up the docs for them.
Edit: Oh yeah, and I figured out and fixed the 64-bit bug. It ended up being pretty simple, and instructions on what causes it and how to avoid it (it's a windows deal, how it handles the registry) will be included in the readme.
And finally, a few screenshots. All in 3D:
http://i4.photobucket.com/albums/y145/peachykeen000/a_desert_storm/MGEScreenshot058.png
http://i4.photobucket.com/albums/y145/peachykeen000/a_desert_storm/MGEScreenshot059.png
http://i4.photobucket.com/albums/y145/peachykeen000/a_desert_storm/MGEScreenshot057.png
(april fools )