Mithra is a physically-based graphics renderer featuring many new and modern rendering techniques such as image-based lighting, shadow-mapping with tight projection, and more. I have also proposed and defended this renderer as my B.Sc. project at Amirkabir University of Technology (Tehran Polytechnic).
This is a showcase of some of its main features. Hopefully, in the near future, I will share more about the development process in this blog.
Features
- Physically-based pipeline
- Cook-Torrance BRDF
- HDR
- Directional Lights
- Point lights
- Shadow mapping
- Diffuse irradiance
- Specular IBL (image-based lighting)
- Editor
- Mesh importer, supporting: glTF, fbx, obj
- Basic world editor and component property viewer
- Volumetric Fog
- Temporal Anti-Aliasing (TAA)
Editor Features
- Live performance profiler
- Debug modes to see normals, ambient, metalness, roughness, etc.
- Shaders hot reloading
- Scene graph
- Property viewer to move around the object, manipulate lighting or environment settings
- Live texture viewer in memory (VRAM) to debug each rendering pass
- Buffers list viewer
Roadmap
- Bindless texture
- Batching and instancing draw calls
- Texture atlas
- SSAO
- HDR Bloom
- More advanced shadow techniques, such as moment shadow maps
- Global illumination with spherical harmonics
- Displacement maps
- Clear coats
- Blending different BRDFs
- Screen space reflection
- Clustered forward rendering
Technologies
- C++ 14
- OpenGL 4.5
- GLSL
- GLFW
- GLEW
- Assimp
- stb_image
- Premake build system
Note: All assets used are from Skecthfab free plan.