Skip to content

hpcnt-chase/Toy-PBR-Engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

138 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Toy Renderer(practice rendering using OpenGL 3.3)

  • Desktop App

  • Language: C++17

  • Graphics API: OpenGL 3.3

  • Limitations

    • There are some shortcomings in the architecture (e.g., Frame Graph, Resource Alias, Multi-Mesh, Multi-Threading, etc.).
    • The reason is that I decided there would be more to gain by implementing these features later with modern APIs such as Vulkan, Metal, and DX12.
    • So I focused on rendering effects and did not allocate additional time to the architecture before concluding the project.
  • Implementing Effects

    • 1 Rasterization Rendering (IBL, Deferred Lighting, Ambient Occlusion, ETC)

      • Render Dependency Graph Render Graph

      • [Metalic: 0.9 / Roughness: 0.1] image

      • [Metalic: 0.6 / Roughness: 0.4] image

    • 2 Ray Tracing Rendering (Extensions related to trace and acceleration are not being used.) image

      BVH - It is uploaded to GPU via TexelBufferObject (SSBO is currently unavailable.) image

  • Camera Control UX

    • Mouse: Rotate view-space basis
    • Keybord
      • W: Move to Z of view-space
      • S: Move to -Z of view-space
      • A: Move to -X of view-space
      • D: Move to X of view-space

Build Tools

  • CMake 3.2
  • vcpkg

Install Dependencies

./vcpkg install glad
./vcpkg install glfw
./vcpkg install ASSIMP
./vcpkg install stb

Build

mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE="{your_vcpkg_path}/scripts/buildsystems/vcpkg.cmake"
make

Run Sample App

Rasterization Rendering

./app_pbr

Ray Tracing Rendering

./app_ray_trace

Reference

Thanks to https://learnopengl.com/

About

3D PBR Engine (Backend: OpenGL)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published