Archive for June 2012
So I’ve been finishing up the software renderer so I can get the exteriors refactored in and get this release done.
For the renderer, I’ve been using it to make sure my rendering and values are matching up with vanilla Daggerfall. To this end I’ve implemented 8-bit mode will colormap support, flats/sprites are back and the player light. I’ve also tuned the FOV, fogging and light falloff. Here are a couple of screenshots of all this in action:
These screenshots are taken from the XL Engine, running the software renderer in 8-bit 320×200 mode. Of course 8-bit supports all the resolutions that 32-bit mode supports as well.
In the last blog post someone asked about why I’ve been working on adding a software renderer to the XL Engine. Instead of answering in place, I thought it would be a better idea to make a post to explain my reasons and talk a bit about the upcoming Tiered Releases.
Firstly I’ll give a list of some of my reasons, in no particular order:
* Support for systems with poor video card drivers or with a stronger CPU then GPU.
* Much closer emulation of the original rendering style – such as 8 bit color depth, true colormap support and so forth. To emulate these features in hardware require higher-end GPUs. By using CPU rendering, low-end systems can properly emulate the original rendering style.
* The 8-bit renderer will be used as a “reference renderer.” By emulating the original renderers in software (except for buggy issues), it will be easier to make sure everything matches up and will ultimately help make sure the OpenGL renderer is more authentic. Of course extended features will still be supported, but they will be layered on top of a more authentic working base.
The next release will support both software and OpenGL rendering. The 8-bit software renderer will be used to tune all the rendering (to fix the areas that weren’t quite right in DaggerXL version 0.199), which will be used to guide the emulation under fixed function OpenGL and of course the shader pipeline.
This post is a small DaggerXL update.
So the work on the DaggerXL geometry refactor is almost finished. The software renderer is also now fully integrated and selectable.
Here is a screenshot from Privateer’s Hold using the software renderer (32-bit) – no HUD (click to see full size):
And another random dungeon:
Next up is rendering the flats/sprites again and putting the lighting back in. Then I can finally finish up the exteriors and interiors too.
The release will include the 32-bit software renderer (shown above) and the 8-bit software renderer as well as the option to play in 320×200 (stretched to the full window size with proper letter/pillar boxing to maintain aspect ratio). 320×200 will only be supported in software, no point in supporting that resolution with the OpenGL renderer now.
I’ve been able to set aside time a bit each day for the XL Engine again, finally, so the tiered release is getting closer again. I’m currently working on merging in and refactoring the geometry rendering for DaggerXL. Once that is complete I should be able to get the first release out.
I’ve spent a fair amount of time making sure the core engine is architecture is solid and supports things like cross platform support, networking support, core scripting, plugin support and so forth so that we have a solid foundation on which to support all these games.
One of the important core architectural decisions is to support multiple low-level rendering backends. This will allow the engine to be porting to things like mobile devices eventually or other odd platforms. In order to make sure that this works well, I’ve implemented not only the core OpenGL backend but also the software renderer as well. While it won’t be complete or as fast as it will be later, the initial release will have software rendering support. Currently it supports table based fog, directional lighting, high quality perspective correct texture mapping, clipping and culling, zbuffering, 2D blitting with arbitrary scaling and so forth.
Here are a couple of screenshots from a test room (note the Window will say XL Engine, not DagSoft in the release).
Note: in these screenshots the renderer is in 32-bit mode, 8-bit will also be supported. Click to see the full size image.