Skip to content

Commit ec76b02

Browse files
committed
Finish separating denoiser
1 parent 630d7bc commit ec76b02

File tree

2 files changed

+13
-24
lines changed

2 files changed

+13
-24
lines changed

example/materialBall.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import * as THREE from 'three';
22
import { FullScreenQuad } from 'three/examples/jsm/postprocessing/Pass.js';
33
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
44
import { 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';
66
import { PathTracingSceneWorker } from '../src/workers/PathTracingSceneWorker.js';
77
import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';
88
import { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js';
99
import { 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;
1212
let perspectiveCamera, orthoCamera, equirectCamera;
1313
let envMap, envMapGenerator, scene;
1414
let 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 ) }`;

src/core/PathTracingRenderer.js

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,16 @@ function* renderTask() {
88
_renderer,
99
_fsQuad,
1010
_blendQuad,
11-
_denoiseQuad,
1211
_primaryTarget,
1312
_blendTargets,
14-
_denoiseTarget,
1513
alpha,
16-
denoise,
1714
camera,
1815
material,
1916
} = this;
2017

2118
const blendMaterial = _blendQuad.material;
2219
let [ blendTarget1, blendTarget2 ] = _blendTargets;
2320

24-
const denoiseMaterial = _denoiseQuad.material;
25-
2621
while ( true ) {
2722

2823
if ( alpha ) {
@@ -196,7 +191,6 @@ export class PathTracingRenderer {
196191
this._primaryTarget.setSize( w, h );
197192
this._blendTargets[ 0 ].setSize( w, h );
198193
this._blendTargets[ 1 ].setSize( w, h );
199-
this._denoiseTarget.setSize( w, h );
200194
this.reset();
201195

202196
}
@@ -206,7 +200,6 @@ export class PathTracingRenderer {
206200
this._primaryTarget.dispose();
207201
this._blendTargets[ 0 ].dispose();
208202
this._blendTargets[ 1 ].dispose();
209-
this._denoiseTarget.dispose();
210203

211204
this._fsQuad.dispose();
212205
this._blendQuad.dispose();
@@ -216,7 +209,7 @@ export class PathTracingRenderer {
216209

217210
reset() {
218211

219-
const { _renderer, _primaryTarget, _blendTargets, _denoiseTarget } = this;
212+
const { _renderer, _primaryTarget, _blendTargets } = this;
220213
const ogRenderTarget = _renderer.getRenderTarget();
221214
const ogClearAlpha = _renderer.getClearAlpha();
222215
_renderer.getClearColor( ogClearColor );
@@ -233,10 +226,6 @@ export class PathTracingRenderer {
233226
_renderer.setClearColor( 0, 0 );
234227
_renderer.clearColor();
235228

236-
_renderer.setRenderTarget( _denoiseTarget );
237-
_renderer.setClearColor( 0, 0 );
238-
_renderer.clearColor();
239-
240229
_renderer.setClearColor( ogClearColor, ogClearAlpha );
241230
_renderer.setRenderTarget( ogRenderTarget );
242231

0 commit comments

Comments
 (0)