top of page

Level Renderer | 2022

Following my intermediate computer graphics class, I took an advanced class called Project & Portfolio IV. In this class, I was given the opportunity to create several graphics projects in C++ using a graphics API of my choice. Since I was familiar with DirectX 11, I chose to use DirectX 12 for this course. I also used a student-developed API called Gateware concurrently with DirectX 12, and a software called RenderDoc to help debug my code. I also used GitHub extensively during this class.

 

This particular project was a deep dive into the render pipeline. My goal was to create a software that would render a pre-made scene to the console window. I created the scene using free assets in Blender, and then I used a Python script created by the professor to read the data from the Blender scene and create a text file which contained the world matrix positions of each object in the scene, as well as the names of the objects associated with them. I then used file I/O to read that text file in my renderer, and I stored each of those in an array of matrices. Looking back, I could have used a hash table to store the names and world matrices of these objects more efficiently as key-value pairs.

In any case, once I had access to the world matrix locations of each object, I needed to get the data for those objects. The professor's Python script exported each object from the Blender scene as a file with a custom .h2b extension. So, he also provided an h2b parser script for us students to use, which parsed these .h2b files to .obj files. I was then able to grab the vertex data from each object, pass it to the GPU, and render it to the scene. I created custom vertex and pixel shaders for lighting as well. Unfortunately, I was unable to render the entire scene properly, but I am quite proud of what I was able to accomplish in one week for this project. I plan to continue development of this project so that I might render the entire scene as intended.

bottom of page