Iridescent

Iridescent

Cmake Glad Imgui

Overview

A open-source graphics engine concept created for my highschool senior project. Built to expand my understanding of the low level programming world, and further my reach of graphics and c++ programming.

Key Features

  • Dockable Windows: A quality of life feature utilizing imgui which allows to efficiently use monitor space, moving logging and certain tools into their own windows outside of the engines viewspace.

  • Layer Stack: Deterministic and fast stack which determines the order in which all layers of the application are drawn, from the ui all the way to the polygons making up the scene.

  • Input Polling: A realtime implementation polling all input events on the keyboard and mouse for an extremely low latency between input events and scene events.

  • Detailed Logging: A detailed logging system which logs events from the scene all the way down to the system.

  • Shading: The crème de la crème of the renderer, adding shading to the entire scene.

Development Highlights

Some of the best highlights for me during this project was quite literally every time I managed to fix a compilation issue. The exhileration after each successful step forward was just mesmerizing, and I knew the moment I began my obsession wouldn’t end until the engine was in a complete state. Since I was going into this blind during my senior year at highschool, I knew almost nothing about c++ or the build systems that accompany it, so learning all of that at once was both a breath of fresh air and a frustration. However, after several days of work, I became very comfortable with cmake, my build system of choice, and most basic concepts of c++, allowing me to begin working on the engine itself. It was at this point where I started hitting some real knowledge barriers and ended up going to multiple resources to learn and understand the inner workings of a graphics renderer. Resources such as the Hazel Engine Series, Learn C++ Website, and OpenGL Tutorials helped me tremendously here.

Challenges & Roadblocks

Some of the biggest challenges I faced was overcoming the knowledge barrier I had on the inner workings of graphics rendering and low level programming overall. Thankfuly, being stubborn and obsessed can sometimes help, and in this case after numerous attempts, I began meticoulouly learning every aspect of the engine as I developed it, and over time it began paying off, snowballing into a very fun experience. Some food for thought, after you overcome the biggest barrier in your journey, the rest seems laughably easy.

Summary

Looking back, working on Iridescent was some of the most fun I have ever had programming as of yet, and I am still craving for the next project to top this one. It was only by working on this engine that I realized just how much I love working on the little details, obsessing over each little system in the engine. Definitely something I will have to do again, maybe write a little game, but thats for future me to decide :D