Skip to content

Commit 1142c1b

Browse files
committed
Turn on GroundReflector by default & some clean up.
1 parent 98f9aaa commit 1142c1b

File tree

3 files changed

+20
-19
lines changed

3 files changed

+20
-19
lines changed

examples/jsm/objects/ReflectorForSSRPass.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ var Reflector = function ( geometry, options ) {
3636

3737
//
3838

39+
scope.needsUpdate = false;
40+
3941
var reflectorPlane = new Plane();
4042
var normal = new Vector3();
4143
var reflectorWorldPosition = new Vector3();
@@ -91,8 +93,8 @@ var Reflector = function ( geometry, options ) {
9193
this.material = material;
9294

9395
this.onBeforeRender = function ( renderer, scene, camera ) {
94-
if (!window.needReflector) return;
95-
window.needReflector=false
96+
if ( !scope.needsUpdate ) return;
97+
scope.needsUpdate = false;
9698
// console.log('onBeforeRender')
9799

98100
reflectorWorldPosition.setFromMatrixPosition( scope.matrixWorld );

examples/jsm/postprocessing/SSRPass.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ var SSRPass = function({ scene, camera, width, height, selects, encoding, isPers
3939
this.output = 0;
4040

4141
this.maxDistance = SSRShader.uniforms.maxDistance.value;
42-
this.surfDist = SSRShader.uniforms.maxDistance.value;
42+
this.surfDist = SSRShader.uniforms.surfDist.value;
4343

4444
this.encoding = encoding
4545

@@ -349,7 +349,6 @@ SSRPass.prototype = Object.assign(Object.create(Pass.prototype), {
349349
if (this.encoding) this.beautyRenderTarget.texture.encoding = this.encoding
350350
renderer.setRenderTarget(this.beautyRenderTarget);
351351
renderer.clear();
352-
window.needReflector=true
353352
renderer.render(this.scene, this.camera);
354353

355354
// render normals

examples/webgl_postprocessing_ssr.html

+15-15
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
enableSSR: true,
3636
autoRotate: true,
3737
isOtherMeshes: true,
38-
isReflector: false,
38+
isGroundReflector: true,
3939
}
4040
let composer
4141
let ssrPass
@@ -46,8 +46,7 @@
4646
let controls;
4747
let camera, scene, renderer;
4848
let otherMeshes = []
49-
let reflector
50-
let reflectorRenderTarget
49+
let groundReflector
5150
let selects=[]
5251

5352
const container = document.querySelector('#container');
@@ -135,18 +134,17 @@
135134
}
136135
{
137136
const geometry = new THREE.PlaneBufferGeometry(8, 8);
138-
reflector = new Reflector(geometry, {
137+
groundReflector = new Reflector(geometry, {
139138
clipBias: 0.003,
140139
textureWidth: window.innerWidth,
141140
textureHeight: window.innerHeight,
142141
color: 0x888888,
143142
useDepthTexture: true,
144143
});
145-
reflectorRenderTarget = reflector.getRenderTarget()
146-
reflector.position.y = plane.position.y + .0001;
147-
reflector.rotation.x = -Math.PI / 2
148-
reflector.visible = params.isReflector
149-
scene.add(reflector);
144+
groundReflector.position.y = plane.position.y + .0001;
145+
groundReflector.rotation.x = -Math.PI / 2
146+
groundReflector.visible = params.isGroundReflector
147+
scene.add(groundReflector);
150148
}
151149

152150
// renderer
@@ -182,7 +180,7 @@
182180
height: innerHeight,
183181
encoding: THREE.sRGBEncoding,
184182
isPerspectiveCamera: isPerspectiveCamera,
185-
selects: params.isReflector ? selects : null,
183+
selects: params.isGroundReflector ? selects : null,
186184
// morphTargets: true,
187185
});
188186
// window.ssrPass = ssrPass
@@ -198,12 +196,12 @@
198196
gui.add(ssrPass, 'isDistanceAttenuation');
199197
ssrPass.maxDistance = .1
200198
gui.add(ssrPass, 'maxDistance').min(0).max(1).step(.01);
201-
gui.add(params, 'isReflector').onChange(() => {
202-
if (params.isReflector) {
203-
reflector.visible = true
199+
gui.add(params, 'isGroundReflector').onChange(() => {
200+
if (params.isGroundReflector) {
201+
groundReflector.visible = true
204202
ssrPass.selects = selects
205203
} else {
206-
reflector.visible = false
204+
groundReflector.visible = false
207205
ssrPass.selects = null
208206
}
209207
})
@@ -251,7 +249,7 @@
251249

252250
renderer.setSize(window.innerWidth, window.innerHeight);
253251
composer.setSize(window.innerWidth, window.innerHeight);
254-
reflectorRenderTarget.setSize(window.innerWidth, window.innerHeight);
252+
groundReflector.getRenderTarget().setSize(window.innerWidth, window.innerHeight);
255253

256254
}
257255

@@ -279,8 +277,10 @@
279277
}
280278

281279
if (params.enableSSR) {
280+
groundReflector.needsUpdate = true; // Just SSRPass's beautyRenderTarget (which rendered fisrt internally) need Reflector.
282281
composer.render();
283282
} else {
283+
groundReflector.needsUpdate = true;
284284
renderer.render(scene, camera)
285285
}
286286

0 commit comments

Comments
 (0)