@@ -2,13 +2,13 @@ import * as THREE from 'three';
22import { FullScreenQuad } from 'three/examples/jsm/postprocessing/Pass.js' ;
33import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js' ;
44import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js' ;
5- import { PathTracingRenderer , PhysicalPathTracingMaterial , PhysicalCamera , BlurredEnvMapGenerator , EquirectCamera } from '../src/index.js' ;
5+ import { PathTracingRenderer , PhysicalPathTracingMaterial , PhysicalCamera , BlurredEnvMapGenerator , EquirectCamera , DenoiseMaterial } from '../src/index.js' ;
66import { PathTracingSceneWorker } from '../src/workers/PathTracingSceneWorker.js' ;
77import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js' ;
88import { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js' ;
99import { GUI } from 'three/examples/jsm/libs/lil-gui.module.min.js' ;
1010
11- let renderer , controls , sceneInfo , ptRenderer , activeCamera , blitQuad , materials ;
11+ let renderer , controls , sceneInfo , ptRenderer , activeCamera , blitQuad , denoiseQuad , materials ;
1212let perspectiveCamera , orthoCamera , equirectCamera ;
1313let envMap , envMapGenerator , scene ;
1414let samplesEl ;
@@ -153,6 +153,8 @@ async function init() {
153153 blending : THREE . CustomBlending ,
154154 } ) ) ;
155155
156+ denoiseQuad = new FullScreenQuad ( new DenoiseMaterial ( ) ) ;
157+
156158 controls = new OrbitControls ( perspectiveCamera , renderer . domElement ) ;
157159 controls . addEventListener ( 'change' , ( ) => {
158160
@@ -320,24 +322,20 @@ async function init() {
320322 } ) ;
321323
322324 const denoiseFolder = gui . addFolder ( 'Denoising' ) ;
323- denoiseFolder . add ( params , 'denoiseEnabled' ) . onChange ( value => {
324-
325- ptRenderer . denoise = value ;
326-
327- } ) ;
325+ denoiseFolder . add ( params , 'denoiseEnabled' ) ;
328326 denoiseFolder . add ( params , 'denoiseSigma' , 0.01 , 12.0 ) . onChange ( value => {
329327
330- ptRenderer . denoiser . sigma = value ;
328+ denoiseQuad . material . sigma = value ;
331329
332330 } ) ;
333331 denoiseFolder . add ( params , 'denoiseThreshold' , 0.01 , 1.0 ) . onChange ( value => {
334332
335- ptRenderer . denoiser . threshold = value ;
333+ denoiseQuad . material . threshold = value ;
336334
337335 } ) ;
338336 denoiseFolder . add ( params , 'denoiseKSigma' , 0.0 , 12.0 ) . onChange ( value => {
339337
340- ptRenderer . denoiser . kSigma = value ;
338+ denoiseQuad . material . kSigma = value ;
341339
342340 } ) ;
343341
@@ -650,9 +648,11 @@ function animate() {
650648
651649 }
652650
651+ const quad = params . denoiseEnabled ? denoiseQuad : blitQuad ;
652+
653653 renderer . autoClear = false ;
654- blitQuad . material . map = ptRenderer . target . texture ;
655- blitQuad . render ( renderer ) ;
654+ quad . material . map = ptRenderer . target . texture ;
655+ quad . render ( renderer ) ;
656656 renderer . autoClear = true ;
657657
658658 samplesEl . innerText = `Samples: ${ Math . floor ( ptRenderer . samples ) } ` ;
0 commit comments