The main focus on this update batch has been to add some more functionality in the graphics department. The entire transparent rendering code has been patched up and brought into a usable state. Still some speed optimizations are possible but the first milestone ( initial release ) focuses on getting all the features done without getting too much lost in optimizations ( up for the next milestone ). In short fully transparent rendering is supported by the default Graphic module now.
In addition with transparent rendering also a new effect made it's appearance: refraction distortion. As the name suggests this works similar to the post processing distortion image effect. An image with the red channel containing the deviation in the texture U direction and the green channel containing the deviation in the texture V direction is used ( normal maps directly usable ) to filter the rendered image behind the transparent material. Two new texture properties have been added to support this effect: refraction.distort and refraction.distort.strength. See the post processing distort effect for how they work ( Wiki will be updated soon ).
Also back on track are transparent shadows. The code has been improved and allows now 1-layer transparent shadows without eating too much speed ( full depth peeling transparency is brutal in terms of speed ). Spot/Projector as well as Point lights can now cast pseudo-soft shadows ( PCF ) also through transparent objects. To help optimize rendering some new texture properties have been added: shadow.none and shadow.importance. shadow.none prevents a material from casting any kind of shadow ( useful for nearly transparent materials like windows ) while shadow.importance renders shadows for this material only if the user quality setting is high enough.
Another new texture property is shadeless. This property is designed for editors requiring objects to be visible full bright even if the surrounding is dark. It's not intended for game usage only for editors.
Another new texture property is hint.nocompression. As the name implies it's a hint telling the graphic module that the texture in question is sensible to compression artifacts and should not be compressed for better visual quality. The default graphic module honors this hint.
Finally what goes for graphics indirect rendering and renderables have been overhauled and put into a final shape. Indirect rendering covers special effects like the new mirror effect which is triggered by using the mirror texture property. Currently 1-indirection mirrors are supported. More will be added later on. Most notable change are the renderables. These allow dynamic textures during run-time. Renderables are special compared to other engines in that they are geared for large scale worlds minimizing memory consumption and rendering time as they are created on-the-fly if required. The game designer does not have to worry about this. Just use a renderable and update the texture when asked by the graphic module and you are all set and done. Renderables support various texture sources: value, color, image, render target, camera, video frame. Render target provides an empty texture for you to fill at your hearts content at run-time while camera simply renders a view of the world where the faces covered with this material are. This system allows you to do anything you need even if there is no direct support for it from the graphic system.
Another little addition is a change in the lighting system. Lights have now an additional ambient intensity and cut-off distance parameter. Using the ambient intensity parameter the intensity of light in shadow areas can be set. Useful to make point lights in rooms to not cast totally black shadows. The cut-off distance parameter causes the light to not affect anything beyond the given distance. Useful for beams or special lights and speed improvement. Furthermore lights use now visibility meshes from terrain meshes to improve speed. Another reason to take a couple of minutes to build those vis-meshes ( it pays off ).
The last update in this batch concerns the localization system. Using language packs and translators the Drag[en]gine provides easy localization support which can range beyond texts ( if the text for example is used as directory name ). Changing language can be pulled off during run-time of the game without any changes to the game content except assigning a new language pack to the game translator. Of course supports Unicode for all the strings.
A little note about the system specifications. All these effects are not coming free of cost. As many deferred shading engines the default OpenGL Graphic Module is heavily fill-rate limited and requires a good graphic card to run. A weaker Graphic Module will be implemented after the first release to support low-end systems so don't panic if you do not have a strong card in your system.
A last note about the schedule. Code freezing has commenced in some parts of the engine to ready up for release. Until all code entered code freeze it still takes some time. We still aim for end 2008 for the first release but due to real life work load this can possibly be pushed back a bit. Good things take time :D .