Graphic System using OpenGL

Hi guys, It's been a while since I last updated this project report.

Since the last update, I have started learning interactive graphics and GPU programming in a full swing. I am learning OpenGL this time because I thought it would be nice to get a grasp of graphics programming from high-level graphics API since I couldn't understand Vulkan API at all. 

And I end up learning a lot about graphics programming. Here are some of the things I have learned regarding OpenGL and Graphics!!!


3D Math and Matrix Transformation in Rasterization

Of course, the first thing I learned is basic matrix transformations such as how to do mvp transformation as well as usage of basic OpenGL API. The pictures below are my trials of failing to fill the VBO with the correct vertices format.  


Shading and Blinn Phong Model

I have already learned Blinn-Phong shading when I make a ray-tracing renderer so it wasn't that hassle from a theory perspective.  But the idea of uniforms buffer was pretty new to me and had a bit trouble to put those data into the shaders. 

Texturing and Texture Unit

The texturing process in rasterization is so nice. Unlike the time when I made off-line ray-tracing, everything regarding sampling is handled by OpenGL API in rasterization. I love the fact we don't have to care for something  like anisotropic filtering . Also from here, I start learning how to debug GPU programming using render doc :)


Environment Mapping, Frame Buffer and Sky Box

The code starts getting messy around here as opposed to the realism of the graphic. I still don't know what is the good practice for structuring graphics code, especially for frame buffers. 


Shadow Map

The shadow map I made only make one shadow map for one side, I will change it to 6 face cube in the future. 


Geometry Shader, Tessellation Shader, and Normal mapping,  Displace Mapping

This is what I'm working on recently. Learned geometry shader and tessellation shader makes me feel I can do anything with graphics API!


What's Next ...?

I will start working on PBR (physics-based rendering) next! Especially Disney's model which all the famous game engines using. The links below are the main resource I will dig into to try to implement the model!