The Project
This project is an ongoing C++ Open GL project that I will be using as a foundation for a number of other projects.
These will mainly to be used to visualise concepts and other smaller code ventures.
What Can My Renderer Do Currently?
This project started as a university assignment to create a graphical application capable of rendering an object with a Blinn/Phong shader with multiple lights.
Since the end of that assignment this project has been worked on to include a Physically Based Rendering shaders with point lights and directional lights. The renderer supports both Mask maps and individual Metallic, Roughness and Ambient Occlusion maps as well as emission maps. The renderer also supports being able to tile and offset texture maps individually.
I have also added a game object class that is fairly common in game engine structure which has values that are tweakable with ImGui such as: position, rotation, scale and materials.
All Models Shown Here Are Made By Lloyd Tuck, for Gunsect.
These have been what I have been using to test PBR.
Skinned Mesh Rendering
I have also added the capability for the renderer to take in an FBX file and process and display animations.
The process of doing so takes a number of steps to do so, going through the FBX and finding all the bones an adding it to a model, then mapping bones and weights to each vertex, currently the engine only supports influences from only 4 bones and has a maximum of 100 bones in a model.
Object Hierarchy
My objects are part of a transform hierarchy, these objects can be parented to one another which effects the transforms of their children. This is how you would expect objects to behave inside of a game engine.
What Am I Working On?
Right now I am working on making my engine a bit more useable, to do so I am going to be working on implementing gizmos, easier access to selectable objects and creating an easier time editing things in run time. From there I plan on taking a small break by programming a concept inside of the engine, something like Poisson disc sampling.
What Is Planned For The Future?
I would like this program to be a place for me to practice game programming concepts in C++ therefore I will be moving on to making some helper tools to assist that.
After I finish working on skinned mesh rendering, I will likely be moving onto developing tools for reading and writing materials and game objects with JSON files. These will be incredibly helpful when wanting quickly create game objects to visualise code concepts in future projects.
From there I would like to move onto programming concepts inside of the renderer. I will likely look into a few concepts like loot tables, interpolation tools, and turn based AI.