未验证 提交 acdaf6fb 编写于 作者: M Mr.doob 提交者: GitHub

Merge pull request #21043 from Oletus/envmap-switch-example

Add envmap options to webgl_materials_standard example
......@@ -19,6 +19,7 @@
import Stats from './jsm/libs/stats.module.js';
import { GUI } from './jsm/libs/dat.gui.module.js';
import { TrackballControls } from './jsm/controls/TrackballControls.js';
import { OBJLoader } from './jsm/loaders/OBJLoader.js';
import { RGBELoader } from './jsm/loaders/RGBELoader.js';
......@@ -101,20 +102,55 @@
} );
new RGBELoader()
const environments = {
'Venice Sunset': { filename: 'venice_sunset_1k.hdr' },
'Overpass': { filename: 'pedestrian_overpass_1k.hdr' }
};
function loadEnvironment(name) {
if ( environments[ name ].texture !== undefined ) {
scene.background = environments[ name ].texture;
scene.environment = environments[ name ].texture;
return;
}
const filename = environments[ name ].filename;
new RGBELoader()
.setDataType( THREE.UnsignedByteType )
.setPath( 'textures/equirectangular/' )
.load( 'venice_sunset_1k.hdr', function ( hdrEquirect ) {
.load( filename, function ( hdrEquirect ) {
const hdrCubeRenderTarget = pmremGenerator.fromEquirectangular( hdrEquirect );
hdrEquirect.dispose();
pmremGenerator.dispose();
scene.background = hdrCubeRenderTarget.texture;
scene.environment = hdrCubeRenderTarget.texture;
environments[ name ].texture = hdrCubeRenderTarget.texture;
} );
}
const params = {
environment: Object.keys( environments )[ 0 ]
};
loadEnvironment( params.environment );
const gui = new GUI();
gui.add( params, 'environment', Object.keys( environments ) ).onChange( function( value ) {
loadEnvironment(value);
} );
gui.open();
const pmremGenerator = new THREE.PMREMGenerator( renderer );
pmremGenerator.compileEquirectangularShader();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册