mirror of
https://github.com/timmypidashev/web.git
synced 2026-04-14 11:03:50 +00:00
migrate to vercel; bump version
This commit is contained in:
58
src/content/projects/iridescent.mdx
Normal file
58
src/content/projects/iridescent.mdx
Normal file
@@ -0,0 +1,58 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user