Skip to content

Commit 4dc35c0

Browse files
authored
Add reflector resolutionScale factor to webgl mirror example (#31692)
* Add reflector resolution factor * Add resolutionScale factor * Add GUI
1 parent 955946e commit 4dc35c0

File tree

1 file changed

+38
-12
lines changed

1 file changed

+38
-12
lines changed

examples/webgl_mirror.html

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333

3434
import * as THREE from 'three';
3535

36+
import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
37+
3638
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
3739
import { Reflector } from 'three/addons/objects/Reflector.js';
3840

@@ -44,6 +46,10 @@
4446

4547
let groundMirror, verticalMirror;
4648

49+
let resolutionScale = 1; // render target scale factor in [ 0, 1 ]
50+
51+
const size = new THREE.Vector2();
52+
4753
init();
4854

4955
function init() {
@@ -78,11 +84,14 @@
7884

7985
let geometry, material;
8086

87+
renderer.getDrawingBufferSize( size );
88+
size.multiplyScalar( resolutionScale ).round();
89+
8190
geometry = new THREE.CircleGeometry( 40, 64 );
8291
groundMirror = new Reflector( geometry, {
8392
clipBias: 0.003,
84-
textureWidth: window.innerWidth * window.devicePixelRatio,
85-
textureHeight: window.innerHeight * window.devicePixelRatio,
93+
textureWidth: size.width,
94+
textureHeight: size.heignt,
8695
color: 0xb5b5b5
8796
} );
8897
groundMirror.position.y = 0.5;
@@ -92,8 +101,8 @@
92101
geometry = new THREE.PlaneGeometry( 100, 100 );
93102
verticalMirror = new Reflector( geometry, {
94103
clipBias: 0.003,
95-
textureWidth: window.innerWidth * window.devicePixelRatio,
96-
textureHeight: window.innerHeight * window.devicePixelRatio,
104+
textureWidth: size.width,
105+
textureHeight: size.heignt,
97106
color: 0xc1cbcb
98107
} );
99108
verticalMirror.position.y = 50;
@@ -169,6 +178,26 @@
169178
blueLight.position.set( 0, 50, 550 );
170179
scene.add( blueLight );
171180

181+
// GUI
182+
183+
const params = {
184+
resolution: resolutionScale,
185+
};
186+
187+
const gui = new GUI();
188+
189+
const folder = gui.addFolder( 'Mirrors' );
190+
191+
folder.add( params, 'resolution', 0.2, 1, 0.1 )
192+
.onChange( function ( val ) {
193+
194+
resolutionScale = val;
195+
onWindowResize();
196+
197+
} );
198+
199+
folder.open();
200+
172201
window.addEventListener( 'resize', onWindowResize );
173202

174203
}
@@ -180,14 +209,11 @@
180209

181210
renderer.setSize( window.innerWidth, window.innerHeight );
182211

183-
groundMirror.getRenderTarget().setSize(
184-
window.innerWidth * window.devicePixelRatio,
185-
window.innerHeight * window.devicePixelRatio
186-
);
187-
verticalMirror.getRenderTarget().setSize(
188-
window.innerWidth * window.devicePixelRatio,
189-
window.innerHeight * window.devicePixelRatio
190-
);
212+
renderer.getDrawingBufferSize( size );
213+
size.multiplyScalar( resolutionScale ).round();
214+
215+
groundMirror.getRenderTarget().setSize( size.width, size.height );
216+
verticalMirror.getRenderTarget().setSize( size.width, size.height );
191217

192218
}
193219

0 commit comments

Comments
 (0)