Your browser seems not to support HTML 5 Canvas!
Samples Per Pixel2
Averaging Layers Count2
Maximum Layers Count256
Denoisingon
FPS0
WebGPU Status😰 ...

Path Tracing

This is my first attempt at doing real-time path tracing. There is still plenty of room for improvements. I was inspired by the work of Reinder Nijhoff, specially his demo Wolfenstein: Ray Tracing On using WebGL1, which I find stunning it was implemented with WebGL 1! I am trying to do something similar as an exercise to learn WebGPU and miscellaneous rendering techniques.

Noise

In order to experiment with different ways for pseudo-random number generation, I used this toy. I eventually settled on using the XorShift128 algorithm seeded by the coordinates of each fragment and a counter that is incremented with each frame.

The Controls / Key Mappings

🖱 (drag)to look around
[  /  ]to change the number of samples per pixel
Alt + [  /  ]to change the minimum number of layers
W  /  Sto move forward/backward
D  /  Ato move right/left
E  /  Cto move up/down
Lto toggle maximum layering
Nto toggle denoising
Rto start/stop recording