This is the latest version of my hobby game engine where all the fun stuff happens. I started working on this from scratch last year. I work on it on weekends or as I get some free time from my office work or other paid freelance projects. Initially, the focus will be on graphics and once it reaches a certain level of quality I will start focusing on other stuff too.
Unlike last version focus of this engine would be to make it ready for building game or making it sort of production ready as soon as possible. So I will be using some open source libraries this time to help me with things like importing models, textures, physics SDK etc. I would code as many components as I can, but I won’t let it be a bottleneck this time. As I mentioned earlier Major focus will be on rendering and I will keep third party libraries in separate components (no tight coupling this time), so I can replace them with my own code as I get time to work on other things than rendering.
For now the main goal of the engine is to make it ready for Demo2. Demo2 is kind of very ambitious thing which will include things like Photorealistic rendering, NPR rendering, some cool physics stuff, some cool animation, particles and gameplay stuff, everything in real-time. It would take few more months before the engine is ready for all the requirements for Demo2 and then it shouldn’t take more than 1 month to actually create & record the demo.
Items in black have been completed.
Items in red are work in progress.
Items in blue are planned for immediate future as soon as items in red are complete. (This list doesn’t contain every feature planned for the engine, but the features I planned to work on as soon as red items are done.)
- Based on Direct3D 11.
- Support for Dynamic and Static lights.
- Physically Based Rendering
- Isotropic and Anisotropic BRDFs.
- Static & Dynamic shadows for all light types.
- Cascaded Shadow Mapping
- HDR Rendering, Tone-Mapping & Bloom
- Histogram based high-quality tone mapping.
- Forward rendering path.
- Forward Plus rendering path.
- Deferred Rendering path.
- Transparent objects.
- Integrated Assimp library for loading models, scenes etc.
- Texture loader using DirectxTK
- Host project in Git.
- File loader
- Integrate AntTweakBar for GUI (to be used for debugging)
- Shader loader / compiler.
- Semi-auto shader generation according to vertex format and quality level.
- Cube maps
- Dynamic Cube maps
- Integrate shadow with common shader for all rendering modes.
- Pre convolution of cube maps (for both diffuse and ggx based specular)
- Improve shadow quality for dynamic point lights.
- Image Based Lighting
- Real-time Global Illumination
- Integrate / implement animation library
- Implement skinning.
- Finalize & Create common render queue logic for all sub-systems
- Saving / Loading materials, scenes etc. Using text format using YAML for now.
- Integrate PhysX (required for editor)
- Create a separate project for Editor and integrate QT
- Basic Editor