Rendering Engine
Description
Rendering-oriented engine for Advanced Graphics Programming (AGP) subject of the Bachelor's Degree in Game Development at CITM, UPC.
This project consists in implementing a deferrend shading pipeline in order to have several intermediate render targets as Diffuse, Normal or Depth into a Geometry pass (G-Buffer). It has been made with my colleague Sebi and lasts 1 month.
The final Application is a 3D model viewer that implements some of the computer graphics techniques learned in this subject. That implies the extensive use of mathematical operations and OpenGL objects that handle data in the GPU (such as vertex buffers with geometry information, shader programs, textures, and framebuffer objects) and its proper management and coordination through a rendering pipeline that connects the several algorithms developed.
It is developed with a framebuffer object and several render targets (textures) attached to it in order to render the materials properties: Albedo, Normals, Position, Depth.
There are a considerable amount of light entities to put the technique to the test. A couple of directional lights and several point lights distributed over the whole scene were implemented in order to test the technique and see the results. It contains a combo box using ImGui that allows choosing to visualize among the different textures of the G-buffer of the final lit scene. Besides that, the user can switch between forward and deferred shading.
Some of advanced visual effect techniques as Bloom and Relief mapping were developed in the final stage of the project.
Gameplay Captures
Contributions
- Setup OpenGL context & retrieve GL information
- Implement Uniform blocks and uniform buffers
- Entity system with uniform blocks
- Geometry shading calculations for render targets
- Camera movement & rotations
- Deferred shading
- Relief Mapping effect technique & customization