1
0
Fork 0
An OpenGL renderer written in C++
  • C++ 88.8%
  • GLSL 8.1%
  • CMake 3.1%
Find a file
2024-03-11 22:29:33 +00:00
.vscode Implement basic asset management 2024-01-28 13:43:05 +00:00
assets Implement skybox 2024-03-09 12:05:08 +00:00
content Rename the project and update README.md 2024-03-11 22:29:48 +00:00
external Add albedo texture support 2024-01-18 22:22:48 +00:00
src Rename the project and update README.md 2024-03-11 22:29:48 +00:00
.editorconfig Initial commit 2024-01-09 21:08:12 +00:00
.gitignore Try to get shadow mapping for directional lights working 2024-02-18 22:29:27 +00:00
CMakeLists.txt Rename the project and update README.md 2024-03-11 22:29:48 +00:00
conanfile.txt Add rudimentary model importing and rework asset init/loading 2024-02-01 22:48:09 +00:00
LICENSE Create LICENSE 2024-03-11 22:29:33 +00:00
README.md Rename the project and update README.md 2024-03-11 22:29:48 +00:00

Glint Renderer

This is my second attempt at an OpenGL-based renderer written in C++. I followed the Udemy course Computer Graphics with Modern OpenGL and C++ to get the basics down, including phong lighting, shadowmapping (directional and omnidirectional), models and textures.

I intend to continue working on it from time to time until I feel confident enough with graphics programming principles to move onto a newer API like Vulkan.

Screenshot

Project structure

  • assets: Binary files ingested during runtime
  • external: External libraries that aren't fetched by CMake
  • src/App: Application-layer stuff
  • src/Renderer: The bulk of the source - OpenGL abstractions, shader code, etc
  • src/Util: Utility functions

Setup

Requires Conan 2.0 or higher.

Run conan install . --output-folder=build --build=missing --settings=build_type=Debug to install dependencies.

Conan will generate CMakeUserPresets.json, which should inform CMake of the available presets for building the project.

Stretch goals

  • Encapsulate renderer passes
  • Improve shadow rendering
  • Implement a post-processing pass with at least one effect (e.g. bloom)
  • Improve the asset manager
  • Improve asset loaders
  • Implement particle system
  • Implement debug UI
  • Expose performance stats through debug UI
  • Implement water rendering