Skip to content

Latest commit

 

History

History
140 lines (117 loc) · 3.31 KB

File metadata and controls

140 lines (117 loc) · 3.31 KB

WebGPU Physically-Based Renderer

sneakersDemo.mov

This is a personal project to build a rendering engine in WebGPU from scratch. After taking a few computer graphics courses in OpenGL, I wanted to learn a more modern graphics API and implement graphics techniques I was interested in.

So far I have implemented physically based lighting with point lights, and I plan to add:

  • Environment maps/image based lighting
  • Glass / transparent PBR material

Implementation Log

BSDF / Physically Based Rendering with Point Lights
Sneakers Dino
Cook Torrance Roughness / Metallicness Comparison
r=0.1 m=0.1 r=0.1 m=0.9
r=0.9 m=0.1 r=0.9 m=0.9
Tiny Obj Loading + Texturing
Lidded Ewer

Basic Shading
Normals Basic Lighting

2D to 3D
2D to 3D Animation

Rendering Pipeline/Buffers Setup
Buffers and Uniforms Render Pipeline Example

Other Features

  • Camera control with Mouse
  • Window Resizing

Environment Setup

  • Conigure with CMake, Visual Studio, and C++, Dawn.
  • Set up adapter, device, command queue.
  • Create a window with GLFW.
  • Refactor with C++ Wrapper Configuration: https://github.com/eliemichel/WebGPU-Cpp

Dependencies

  • wgpu
  • glfw
  • glm
  • tiny_obj_loader
  • stb

References

Models and textures