FlExtEngine
Forewords
FlExtEngine is my new engine, meant to replace OctoPort, my previous, height times (re)written engine.
I decided to write a new one from scratch because I wasn't satisfied with my previous coding standards, and wanted to have a complete and minimal interface for each class.
This new engine, build up on the knowledge I acquired on OctoPort, embraces the K.I.S.S. (Keep It Simple, Stupid) principle, and tries to be Simple, Fast, Efficient and Elegant.
The name of the engine comes from the contraction of Flexible Extendable (3D) Engine.
This new engine is subject to a series of articles published at Beyond3D, the first in the series being available here, and the second there.
Current Status
FlExtEngine is work in progress and currently numbered as v0.1d.
As soon as I get something worth showing, I'll add screenshots. However it's likely to take a while since I'm writing it from scratch...
Brief Version History
Version 0.1d : Integrating Scene Tree, Spatial Graph, Instancing Tree and "Rendering Queue". Finishing RenderingProcess design, modifying the Effects interfaces, and considering alternative designs for the (Index and Vertex) Buffer Manager.
Features
- A DataManager, which includes a Virtual File System, capable of reading compressed packages, having a PlugIn architecture allowing it to be easily extended to support additional file formats, and having streaming and multi-threaded I/O capabilities.
- A RenderingProcess 'PlugIn', so that the engine can be used for any kind of rendering such as (but not limited to) : standard rendering, deferred shading, deferred shadowing...
- Effect PlugIns, allowing easy addition of rendering effects available to the engine, with a fallback mechanism to select the best Effect PlugIn given hardware capabilities.
- API Independant Renderer PlugIn, allowing to choose the Renderer and add Renderers for new platforms.
- A Scene Tree for hierarchical representation of the scene. (Hierarchical animation...)
- A Spatial Graph for spatial clustering and fast visibility culling.
- An Instancing Tree for batching and instancing of geometries. (Although I have an alternative design w/o it)
- A Rendering Process using Rendering Queues & Passes, to control rendering easily.