Skip to main content

Three.js Post-Processing: 192 Desktop Trials Analyzed

Exploring 192 Three.js post-processing desktop trials on an RTX 5070 Ti to measure real rendering costs beyond FPS.

AI-written
Inewgen
28 Oct 2026Source: Dev.to3 min read (0 views)
Share
Three.js Post-Processing: 192 Desktop Trials Analyzed

Stock photo for illustration only, not from the actual event

Font size
  • Executed 192 fresh-page trials across 3 scenes and 64 desktop conditions
  • Tested using an RTX 5070 Ti, Ryzen 9 9950X, and Chromium 156
  • Found that zero-intensity bloom still produces 16 extra draw calls
  • Provided transparent timing ranges instead of universal millisecond tables

Enabling post-processing effects often leaves a browser running at roughly 60 frames per second, but it does not leave the underlying rendering workload unchanged. Developer Alicia conducted a fresh test running 192 page trials across three distinct scenes, covering N8AO, bloom, tone mapping, volumetric beams, reflections, and render-buffer resolution to evaluate performance impacts beyond the standard FPS counter.

One of the most useful findings was a negative control: setting bloom intensity to exactly zero produced the exact same Reliquary image output as removing bloom entirely, yet it retained 16 extra draw calls. Furthermore, timing results carried an important warning that repeated desktop runs sometimes varied more than the small effect being measured, keeping those data ranges fully visible rather than offering a universal table of milliseconds.

Three.js graphics rendering code display workspace screen

Stock photo for illustration only, not from the actual event

The starting point for the experiments was pinned to commit 868539f of the Dioramas project. Its Reliquary and Kōen pages were adapted to freeze the initial hero camera and scene state. Reliquary provides reflective flooring and volumetric light, while Kōen features a textured bonsai and a contrasting bright background. A third owned fixture places 1,600 instances of a Houdini tree inside a separate WebGL scene while keeping diagnostic vertex colors.

Never miss the latest news?

Subscribe to get news summaries by email - not often enough to be annoying.

โฆษณา

192Fresh-Page Trials
64Test Conditions
11,520Accepted GPU Samples

The test hardware configuration featured an RTX 5070 Ti reporting 16,303 MiB of memory, a Ryzen 9 9950X processor, NVIDIA driver 617.42, and Windows build 26300.9711. Chromium 156 ran via ANGLE's D3D11 WebGL2 backend, with dependencies locked to three 0.186.1, postprocessing 6.39.5, and n8ao 2.0.1 in the lockfile.

Additional Context: Empirical testing of this caliber is crucial for modern web graphics developers. As libraries like Three.js introduce increasingly complex post-processing stacks, understanding the precise overheads—such as hidden draw calls persisting even when effects are zeroed out—allows engineers to make informed performance optimizations rather than relying solely on high-level frame rates.

The three test suites totaled 92,160 measured RAF frames and 11,520 accepted GPU samples across 64 conditions with three reloads each. The second repeat reversed the condition order, and the third rotated it, ensuring rigorous data validation with no hidden-tab measurements or captured rendering errors.

Source: Dev.to

Comments

Leave a Comment
0/2000

Found something wrong in this article? Report an issue with this article