This is a project that I started about a year ago and actively working on for the past couple of months redesigning, refactoring and implementing new features. The whole project is basically a “learning playground” for me with its sole purpose being to research and implement things that I just find really cool, such as game engine architecture, graphics, rendering and techniques related to the procedural generation of content. The purpose of this editor/engine is not to write an engine so I can make a game, rather to allow me to create procedural content more easily. I want to be able to place some simple shapes and a noise layers to create complex terrain structures, or maybe write a simple script in lua that creates a city…
Things I’m currently working on and planning to publish a few post in the next months:
- Asset importing/exporting and resource management both in run-time and in editor.
- Getting rid of all the singletons in my code and replacing them with services using a simple implementation of the service locator pattern.
- Unit test framework and writing unit tests for the core subsystems of the engine.
- Graphics library which abstracts the core functionality of resource creation, drawing, shader compilation & reflection etc. The rest of the engine is using this to implement rendering techniques and doesn’t have to worry about the underlying API. This also provides utilities such as a shader compilation and reflection (only D3D at the moment) and a shader cache which keeps entries of shader binary blobs. I find the shader cache quite useful when having to deal with geometry data validation using the input signature of a relevant shader when creating the input layout under Dx11. I’m writing an article focused only on that.
- Researching and implementing a few shadow techniques to see the pros and cons. I’ll probably be focusing on shadow mapping techniques, as from my understanding these are what most modern engines use today.
- Forward plus rendering implementation and comparison to my current simple forward rendering.
- Adding an extra layer to the graphics library to handle render command sorting which should reduce the strain on the CPU. More research is needed into data-oriented rendering.
- Exposing some parts of the engine to the editor using a C++/CLI library. I’m writing an article on how I’ve implemented a simple user control that allows me to render in WPF.
- Physical Based Rendering! I should be able to start working on that soon as I almost got what I need (simple material system, exposing the material related shader parameters to the editor for easy tweaking).
C++, C++/Cli, C#, OpenCL, WPF, DirectX 11.0 & HLSL, Lua