Recently, I have been experimenting with 2D rendering for a side project. I built the renderer based off the 3D renderer I wrote a bit back using OpenGL and C++. Most of the code was reusable, so it was not a hassle to set up basic functionality. The difficult part was figuring out how to light the scene.
For handling lighting, I took a lot of inspiration from an article on 2D visibility over at Red Blob Games. In function, my algorithm is fairly similar. I apply it to mask light sources to areas they affect. In the future, I intend on repurposing this work to affect sound propagation in the scene and in an AI system.
It's been a long journey, but I have just finished graduate school. I now have a Master of Science degree in Computer Science. At this time, I am unsure what I want to achieve next. I do plan on taking some time off finishing studying some materials I have been working on.
Summer's over and it's time for school again. This semester will be my first semester of graduate school and I'll be working as graduate assistant this year. Not much more to say there.
Over the summer, I have been allocating a large portion of my time into learning about game engine design and graphics programming. To do this, I designed a basic game engine using OpenGL and C++. The engine uses deferred shading, but I only got around to implementing basic point lights. While this project is entirely for educational purposes, I believe that I now have a fair grasp of the basic functionality behind rendering for games.
From there, I decided to drop my own rendering engine and drop in an existing one. My intent is to study the fundamental aspects of as much as I can before I devote time into deeper knowledge of any single part. Since I have worked with Ogre3D in the past, I decided to revisit my previous work with it. It sure was an eye-opener seeing my old code and how I have improved since then. Introspection aside, swapping rendering engines was fairly simple and I managed to retain most of the other work I put into the original project.