photon_tracer · C++17 compiled to WebAssembly, traced in WebGPU
The C++ renderer builds each scene and its BVH, compiled to WebAssembly. Where your browser has WebGPU, a compute shader then traces it on the graphics card; otherwise each pixel comes from render_row_linear() in include/renderer.hpp, the function the native renderer calls, running in one Web Worker per thread. Both trace the same matte, metal, glass and light bounces, and are checked against the same reference images.
Try 1920 × 1080 at 100 samples with fixed bands, then switch back to claiming rows. On a 32-thread desktop that is 1.7 s against 1.15 s. The top of the frame is sky, one miss per sample; the bottom is ground with several bounces. Fixed bands leave the sky workers idle while the ground workers finish, which is why the native renderer moved to claiming rows from a shared counter.