Work on the demo continues. This post does not have any new screenshots but there is a movie. You can click on the high resolution link below the movie to download a higher resolution version. Much of the work was in optimizations, music and sound – hard to show screenshots of that stuff. 🙂
Music & Sound
Midi music and sound effects have been implemented, though some of the midi loops a little roughly, which will be fixed later. Note that at night you can hear the crickets (though it’s harder to hear in the video then while playing the game for some reason), the cries for vengeance as well as the appropriate night time music. It also switches music tracks based on the interior type as well, you’ll see this when the player goes inside a tavern in the movie. In the next post I’ll put a movie showing more of the wilderness (during the day) and more building interiors.
Mesh & Flat Rendering
(Much of this has been discussed on the forums already) Everything is rendered using a deferred “render queue” system, basically each mesh material or flat is submitted as a “entry” and then all the entries are rendered for a given frame. There are multiple lists: opaque materials with base lighting (character light, directional light outside, fog), opaque materials + points light passes (2 lights per pass right now) and translucent/transparent materials (flats). [Note: only those materials that are not culled get submitted. There is a hierarchical culling system not mentioned here as well as other systems such as contribution culling]. I will probably add the z-prepass and light stenciling soon, these are pretty easy with this system.
I’ve added sorting to this as well. So opaque materials are now sorted by shader (right now each list only uses 1 shader), then by texture, vertex buffer then index buffer. This reduces the state switching as much as possible.
Transparent materials are now sorted based on distance to the camera plane, which means that they are composited in the correct order – so no more weird edges around sprites (unless they are built into the texture itself). The only exception to this, is emissive flats such as streetlights. There is still an error, due to the way the emissive setting is handled, that causes dark edges around the flat. This will be fixed.
I also fixed various other issues as well, such as regenerating plant distributions more often than necessary.
There are still some improvements to be had here, but with the sorting it all looks right at least.
In the video below, you can see me walking around Daggerfall city at night. You’ll notice the sound effects, music, sky transition from day to night, bloom, interiors with lighting and interior NPCs. Note that there are some errors that need to be fixed:
* Dark edges around emissive flats (discussed above).
* Fringing around the edges of the screen from the bloom.
* Flickering/strobing of the bloom effect, this will be fixed before the demo.