Skip to content

Commit acdaf6f

Browse files
authored
Merge pull request #21043 from Oletus/envmap-switch-example
Add envmap options to webgl_materials_standard example
2 parents e435694 + 5dc65cc commit acdaf6f

File tree

1 file changed

+39
-3
lines changed

1 file changed

+39
-3
lines changed

examples/webgl_materials_standard.html

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import Stats from './jsm/libs/stats.module.js';
2121

22+
import { GUI } from './jsm/libs/dat.gui.module.js';
2223
import { TrackballControls } from './jsm/controls/TrackballControls.js';
2324
import { OBJLoader } from './jsm/loaders/OBJLoader.js';
2425
import { RGBELoader } from './jsm/loaders/RGBELoader.js';
@@ -101,20 +102,55 @@
101102

102103
} );
103104

104-
new RGBELoader()
105+
const environments = {
106+
107+
'Venice Sunset': { filename: 'venice_sunset_1k.hdr' },
108+
'Overpass': { filename: 'pedestrian_overpass_1k.hdr' }
109+
110+
};
111+
112+
function loadEnvironment(name) {
113+
114+
if ( environments[ name ].texture !== undefined ) {
115+
116+
scene.background = environments[ name ].texture;
117+
scene.environment = environments[ name ].texture;
118+
return;
119+
120+
}
121+
122+
const filename = environments[ name ].filename;
123+
new RGBELoader()
105124
.setDataType( THREE.UnsignedByteType )
106125
.setPath( 'textures/equirectangular/' )
107-
.load( 'venice_sunset_1k.hdr', function ( hdrEquirect ) {
126+
.load( filename, function ( hdrEquirect ) {
108127

109128
const hdrCubeRenderTarget = pmremGenerator.fromEquirectangular( hdrEquirect );
110129
hdrEquirect.dispose();
111-
pmremGenerator.dispose();
112130

113131
scene.background = hdrCubeRenderTarget.texture;
114132
scene.environment = hdrCubeRenderTarget.texture;
133+
environments[ name ].texture = hdrCubeRenderTarget.texture;
115134

116135
} );
117136

137+
}
138+
139+
const params = {
140+
141+
environment: Object.keys( environments )[ 0 ]
142+
143+
};
144+
loadEnvironment( params.environment );
145+
146+
const gui = new GUI();
147+
gui.add( params, 'environment', Object.keys( environments ) ).onChange( function( value ) {
148+
149+
loadEnvironment(value);
150+
151+
} );
152+
gui.open();
153+
118154
const pmremGenerator = new THREE.PMREMGenerator( renderer );
119155
pmremGenerator.compileEquirectangularShader();
120156

0 commit comments

Comments
 (0)