Project Introduction
This project expands on the topics covered by my CPU Rasterizer project. It is also part of my Graphics Programming self-taught master program where I learn all the basics on computer graphics.
In this project I move to my first Graphics API library to use the GPU for rendering. I use OpenGL for this project because is easier for beginners and there are many resources to get started with it. The engine that I’m building can render different types of primitives and more complex 3d models. I also cover basic shading and texture loading.
Objective
Build a 3D Engine using OpenGL.
The project covers a variety of topics but mainly focuses on the following:
- Camera controls (fly/orbit)
- Multiple textured objects
- Phong lighting with multiple light sources
- Normal mapping on at least one surface
- Model loader
It also covers some more advanced topics like:
- Depth testing: Discard fragments that are behind others in the clipspace
- Stencil testing: Discard fragments based on a stencil buffer. Use the stencil buffer to add other effects
- Blending
- Face culling
- Framebuffers
- Cubemaps
- Instancing
Deliverable: Render multiple 3d objects with different materials and lights affecting the scene.