A custom rendering engine based on OpenGL. This engine was used as a base for some of my projects where a lower level API was more convenient. It is meant to be a thin layer of abstraction over OpenGL and comes with a profiler and some tools for handling 3D model/scene loading, shader preprocessing and compilation, uniform buffer bindings, etc...
OPProfiler
Rendering commands can be called inside a task block created by the profiler class:
After registering the task, a timer query is created and the total time for the rendering command will be displayed in the profiler UI:
Scene Loading
Scene files are formatted in JSON as seen below:
Using the Assimp library, multiple file formats can be used. Multiple models can be imported from the same files. Diffuse, normal and specular maps are supported but the material can be overriten on the scene file by choosing between "default" (the color overridden by the "albedoColor" field), "unlit" and "textured"
Other Features
Registering and setting uniform buffers can be done in a very convenient way by using the ShaderMemoryPool Class:
The shader class also supports adding extra shader stages (like geometry and tesselation shaders), preprocessor defines set on the c++ side and an aditional preprocessing step takes care of #include directives for glsl shaders.