M.I.C.R.O, short for My Input Controlled Real-Time Output, is a real-time rendering
engine supporting physically based materials, image-based lighting, shadow mapping,
and an HDR post-processing pipeline, built entirely from scratch in C++ and OpenGL.
I first wrote it in 2024, purely as a technical exercise: could I understand and
build the systems that power the engines I'd spent years using? That first version
worked, but using it was rough. Models loaded at the wrong scale, textures broke,
and the program gave no indication when something had gone wrong.
I came back to the project in 2025, once I'd started moving into product and
interaction design, and treated it as a second problem. The engine already proved I
could build the hard technical parts. What it needed was an interface, a flow, and a
level of polish that could stand next to a shipped product.
- Language
- C++
- Graphics API
- OpenGL 4.6, core profile
- Shading
- Cook-Torrance PBR (GGX, Smith, Schlick)
- Lighting
- Image-based, baked HDR skybox
- Shadows
- Shadow mapping with PCF
- Post-processing
- HDR RGBA16F, bloom, ACES tonemapping
- Windowing / input
- SDL2
- Model import
- Assimp, plus a hand-written .obj parser
- Editor UI
- Dear ImGui (docking) with ImGuizmo
- Libraries
- GLAD, GLM, stb_image
- Platform
- Windows x64 and x86, Inno Setup installer