mirror of
https://github.com/timmypidashev/web.git
synced 2026-04-14 02:53:51 +00:00
59 lines
3.4 KiB
Plaintext
59 lines
3.4 KiB
Plaintext
---
|
|
title: "Iridescent"
|
|
description: "An open-source graphics engine"
|
|
githubUrl: "https://github.com/timmypidashev/iridescent"
|
|
techStack: ["Cmake", "Glad", "Imgui"]
|
|
date: "2024-05-03"
|
|
image: "/projects/iridescent/thumbnail.jpeg"
|
|
---
|
|
|
|
## 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](https://www.youtube.com/watch?v=JxIZbV_XjAs&list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT),
|
|
[Learn C++ Website](https://www.learncpp.com/learn-cpp-site-index/), and [OpenGL Tutorials](https://www.opengl.org/sdk/docs/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
|