Repository navigation
examples: denoiser vs oidn-web (split view + benchmark) - #20
Merged
Merged
Conversation
…t view, difference view, benchmark) A new example comparing this library with pissang/oidn-web, the denoiser three-gpu-pathtracer's OIDNDenoiser runs: oidn-web 0.5 (hand-written WGSL with default tiles or the whole image, and its WebNN engine) and 0.3.5, its last TensorFlow.js build (installed as oidn-web-tfjs). Every contender gets the same .tza weights, one frozen frame and one rasterized albedo/normal G-buffer (normals written in both encodings: ours maps [-1, 1], oidn-web expects OIDN's [0, 1]), the same GPUDevice and fp16, and runs alone. Times are wall clock from the call until the output texture is written and the queue is idle. The page shows the measured numbers (Apple M-series, Chrome, Eiffel scene, two runs saved as src/measured/*.json): warm median at 1920x1080 is 89.5 ms for our WGSL runtime and 50.5 ms on Auto (WebNN), against 251-316 ms for oidn-web 0.5 WGSL with its default tiles, 115-134 ms whole-image, 220-231 ms WebNN, and 1185-1241 ms for the TF.js build. Quality is equal (33.5-33.9 dB vs a 2048 spp reference; outputs agree to 52-57 dB). Not deployed yet. Added to the CI typecheck list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
examples/oidn-web-compare. It runs one path-traced frame through this library and through oidn-web, the denoiser three-gpu-pathtracer'sOIDNDenoiserruns. It shows the result as a draggable split view or a|left − right|difference view, and includes a benchmark with timings and PSNR.What it compares
?runtime=).OIDNDenoiseruses;wholeImage;oidn-web-tfjs, with default tiles and as a single tile.oidn-web dropped TensorFlow.js in 0.4.
OIDNDenoisertakesinitUNetFromURLfrom the app, so the app chooses the oidn-web version. The tracer's own demo pins^0.4.0.Keeping the comparison fair
rt_hdr_calb_cnrm{_small,,_large}.tza.?precision=fp32switches both). The TF.js build always runs fp32.Measured
The numbers are shown on the page from
src/measured/*.json. Setup: Apple M-series (metal-3), Chrome 155, Eiffel scene, 8 spp,rt_hdr_calb_cnrm, fp16. Times are warm medians in ms over 7 runs; a range means the two runs differed.Quality is the same across contenders: 33.5–33.9 dB against a 2048-spp reference, and oidn-web's output matches ours to 52–57 dB.
Notes
../pipeline-lab/src/scenes.ts).examples.jsonwith a shot butdeployed: false. The production build passes (vite build), but I haven't verified it on Pages.Verification
tsc --noEmit,biome lintandvite buildpass for the example.🤖 Generated with Claude Code