# Denoiser ## Documentation - [Introduction](/getting-started/introduction): WebGPU denoising for the web: OIDN for path-traced frames on interchangeable runtimes, FidelityFX real-time shadow and reflection denoisers, and three.js TSL nodes. - [Quick start](/getting-started/quick-start): Install denoiser and denoise your first image in a few lines. - [Models & weights](/getting-started/models-and-weights): Quality tiers, LDR vs HDR, aux-guided models, precision, and self-hosting. - [How it works](/concepts/how-it-works): OIDN U-Net on WebGPU via WGSL or WebNN (ORT optional) — and why the pre/post pipeline is WGSL, not JS. - [The GPUDevice](/concepts/the-gpudevice): Who owns the device, how to share it with your renderer, and the lifetime rules that follow. - [Performance](/concepts/performance): Measured numbers, what actually moves the needle, and an honest ceiling. - [three.js render targets in/out](/guides/three-js-render-targets): Zero-copy denoising of three.js WebGPURenderer render targets — get a GPUTexture in, get a GPUTexture out, no CPU pixels anywhere. - [Generating aux inputs](/guides/generating-aux-inputs): G-buffer recipes and OIDN's exact conventions for albedo/normal aux planes — including the three real bugs we shipped and fixed. - [Custom engines & raw WebGPU](/guides/custom-engines): Integrate the denoiser with any WebGPU engine (or none) — the device contract, texture requirements, and the CPU fallback for engines that can't share a device. - [Large images & tiling](/guides/large-images-and-tiling): maxRunPixels, the whole-frame vs tiled decision, the memory math behind it, and when to tune it down. - [Migrating from v1](/guides/migrating-from-v1): Mapping 0.x (TensorFlow.js) to the 2.x stateless, WebGPU-only API — construction, execution, properties, and error handling. - [Troubleshooting / FAQ](/guides/troubleshooting): Fixes for the failure modes people actually hit — WebGPU availability, black/upside-down output, speckled aux, device-lost, CORS, and fp16 fallback. - [Choosing a runtime](/guides/choosing-a-runtime): AutoRuntime (the default), hand-written WGSL, WebNN, Hugging Face kernels and ORT all run the same OIDN weights. What each one is, how fast and how correct it is on a quiet GPU, which flags it needs, and how to select it. - [Real-time (temporal) denoising](/guides/realtime-temporal-denoising): The per-frame TemporalDenoiser API, its frame contract and camera conventions, and the FidelityFX shadow and reflection denoisers ported to WGSL, with measured quality and cost. - [three.js & TSL](/guides/three-and-tsl): TSL nodes for the single-image Denoiser (denoise) and the temporal FidelityFX denoisers (ffxShadows, ffxReflections) on three.js WebGPURenderer, plus the device flow and the helpers underneath. - [Benchmarking on your machine](/guides/benchmarking): Run the full pipeline (three-gpu-pathtracer → denoiser → @pmndrs/upscaler) in the Pipeline Lab, compare runtimes, turn on WebNN, and share your numbers. - [API reference](/reference/api): The complete public API — Denoiser.create options, denoise/denoiseToFloat/denoiseTextures, properties, events, error classes, and the lower-level exports. - [Examples](/examples/index): Every live demo, deployed and runnable in your own browser. ## MCP Server This documentation is available via Model Context Protocol (MCP) server at https://docs.pmnd.rs/api/mcp Configure in your MCP client: ```json { "mcpServers": { "pmndrs": { "type": "http", "url": "https://docs.pmnd.rs/api/mcp" } } } ``` --- For full documentation content, see llms-full.txt