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 8
cd 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 web
python build_webassembly.py -Dbuild_web
cd build_web/bin/browser
python run_webassembly.py pbr_viewer.html
The 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 | ☑ | ☑ | ☑ | ☒ | ☒ |