This is the assignments for the Computer Graphics course, through which you'll learn how to:
- construct the simplest framework for a Computer Graphics program;
- display geometry and pixel data on the screen;
- use modern OpenGL API (3.3+);
- use GLSL, a Shading Language compatible with OpenGL;
This will help you understanding:
- the basic concepts in Computer Graphics:
- geometry
- lighting
- texture
- graphics pipleine etc;
- how GPU works to display a frame on the screen;
Basically, I follow the Learning OpenGL tutorials and refactor the old version assignments in an object oriented way. The students should have some knowledge of modern C++. Don't be panic if you haven't learnt C++ yet. You'll write no more than 20 lines of code for most of the assignments.
You can find more materials on Bilibili
You can also find the reference demos on Github
git clone --depth=1 https://github.com/syby119/CG-projects.git
cd CG-projects
git submodule init
git submodule update- CMake >= 3.20
- C++ Compiler supports at least C++14
cmake -Bbuild .
cmake --build build --config Release --parallel 8cd build/bin/Release
./pbr_viewer.exe- CMake >= 3.20
- Python >= 3.6
- Emscripten
- emcmake compatible CMake generator
git remote set-branches origin web
git fetch --depth=1 origin web
git checkout webpython build_webassembly.py -Dbuild_webcd build_web/bin/browser
python run_webassembly.py pbr_viewer.htmlThe experimental branch contains the projects that are not cross-platform and require specfic hardware support. Windows + Nvidia GPU is tested only.
| Windows 10 | WSL 2 | Ubuntu 20.04 | MacOS | Chrome 107 Windows10 | |
|---|---|---|---|---|---|
| get_start | β | β | β | β | β |
| project1 | β | β | β | β | β |
| project2 | β | β | β | β | β |
| project3 | β | β | β | β | β |
| project4 | β | β | β | β | β |
| project5 | β | β | β | β | β |
| project6 | β | β | β | β | β |
| bonus1 | β | β | β | β | β |
| bonus2 | β | β | β | β | β |
| bonus3 | β | β | β | β | β |
| bonus4 | β | β | β | β | β |
| bonus5 | β | β | β | β | β |
| pbr_viewer | β | β | β | β | β |
| mesh_shading_pipeline | β | β | β | β | β |
| spirv_dynamic_compilation | β | β | β | β | β |
| direct_state_access | β | β | β | β | β |

















