- Introduction
- Introduction to OpenGL
- Matrix Transformation and Textures
- Stencil and Phong, Gouraud, Flat Illumination
- Tessellation and Feedback
- Development
- Contributors
This repository contains all the files related to the INF2705 Computer Graphics assignments. Each assignment has its own section in the repository. The purpose of this readme is to provide a detailed overview of each assignment and the development process.
This assignment focuses on the basics of OpenGL.
This part focuses on creating a basic 3D scene. It involves drawing various shapes such as triangles and squares using OpenGL. The goal is to understand the basics of drawing 3D objects in a scene.
In this part, transformations are applied to the 3D objects in the scene. It involves implementing a transformation shader and applying different transformations to a 3D cube.
The 7 shapes to be implemented in order
3D Cube
This assignment focuses on matrix transformations and textures.
Similar to the previous assignment, the first part involves creating 3D scenes with different shapes and applying transformations to a 3D cube.
This part involves loading and using textures to add detail to the 3D objects in the scene. It also includes the implementation of a first-person camera and a heads-up display (HUD).
The scene after being textured
Scene viewed in FPS and TPS
This assignment focuses on stencil testing and different lighting models.
This part involves implementing a colored halo effect to distinguish between different objects in the scene using stencil testing.
Similar to the previous assignment, this part involves applying transformations and system coordinates to 3D objects in the scene.
Halo Effect
Blending
Phong, Gouraud, and Flat Illumination
Phong, Gouraud, and Flat Illumination
Phong, Gouraud, and Flat Spotlight with the classic OpenGL algorithm
Phong, Gouraud, and Flat Spotlight with the classic Direct3D algorithm
Comparison with and without lightmaps applied to the sphere with Phong illumination
This assignment focuses on tessellation and feedback.
This part involves implementing tessellation to define more details on certain elements in the scene and to update a large amount of data on the graphics card. It also includes particle system implementation for a special fire effect.
This part includes configuration of feedback and drawing of particles to achieve special effects for the particle system. It also requires the use of blending and manipulation of particle properties over time.
Tessellaction
Particle effect through TEX Retroaction
Each assignment was developed using OpenGL 4 and written in C. Various libraries were utilized for specific functionalities:
- OpenGL: Graphics rendering library for creating 3D scenes and applying transformations.
- GLFW: Library for creating windows, contexts, and handling input.
- GLM: Mathematics library for OpenGL, used for matrix transformations.
- SOIL: Library for loading image files as textures.
- ImGui: GUI library used for creating heads-up displays (HUD).
- Assimp: Library for importing 3D model files.
The development process for each assignment involved understanding the assignment requirements, implementing the necessary functionality using OpenGL and relevant libraries, testing the implementation, and optimizing performance where necessary. Challenges were often encountered during the implementation of advanced features such as tessellation and feedback, but these challenges were overcome through research, experimentation, and collaboration with peers.
- Omar Benzekri
- Thomas Rouleau