Project Introduction
This project expands on the topics covered by our CPU Rasterizer project. It is also part of our Graphics Programming self-taught master program where we learn all the basics on computer graphics.
In this project we move to our first Graphics API library to use the GPU for rendering. We use OpenGL for this project because it is easier for beginners and there are many resources to get started with it. The engine that we’re building can render different types of primitives and more complex 3d models. We 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.