|
@@ -36,12 +36,44 @@
|
|
|
var container, stats;
|
|
|
var camera, scene, renderer, controls;
|
|
|
var torusMesh, planeMesh;
|
|
|
- var ldrCubeRenderTarget, hdrCubeRenderTarget, rgbmCubeRenderTarget;
|
|
|
+ var generatedCubeRenderTarget, ldrCubeRenderTarget, hdrCubeRenderTarget, rgbmCubeRenderTarget;
|
|
|
var ldrCubeMap, hdrCubeMap, rgbmCubeMap;
|
|
|
|
|
|
init();
|
|
|
animate();
|
|
|
|
|
|
+ function getEnvScene() {
|
|
|
+
|
|
|
+ var envScene = new THREE.Scene();
|
|
|
+
|
|
|
+ var geometry = new THREE.BoxBufferGeometry();
|
|
|
+ geometry.deleteAttribute('uv');
|
|
|
+ var roomMaterial = new THREE.MeshStandardMaterial({metalness: 0, side: THREE.BackSide});
|
|
|
+ var room = new THREE.Mesh(geometry, roomMaterial);
|
|
|
+ room.scale.setScalar(10);
|
|
|
+ envScene.add(room);
|
|
|
+
|
|
|
+ var mainLight = new THREE.PointLight(0xffffff, 1.0, 0, 2);
|
|
|
+ mainLight.position.set(0, 4.5, 0);
|
|
|
+ envScene.add(mainLight);
|
|
|
+
|
|
|
+ var lightMaterial = new THREE.MeshBasicMaterial();
|
|
|
+ lightMaterial.color.setScalar(20);
|
|
|
+
|
|
|
+ var light1 = new THREE.Mesh(geometry, lightMaterial);
|
|
|
+ light1.position.set(-5, 2, 0);
|
|
|
+ light1.scale.set(0.1, 1, 1);
|
|
|
+ envScene.add(light1);
|
|
|
+
|
|
|
+ var light2 = new THREE.Mesh(geometry, lightMaterial);
|
|
|
+ light2.position.set(0, 5, 0);
|
|
|
+ light2.scale.set(1, 0.1, 1);
|
|
|
+ envScene.add(light2);
|
|
|
+
|
|
|
+ return envScene;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
function init() {
|
|
|
|
|
|
container = document.createElement( 'div' );
|
|
@@ -84,6 +116,9 @@
|
|
|
|
|
|
}
|
|
|
|
|
|
+ var envScene = getEnvScene();
|
|
|
+ generatedCubeRenderTarget = pmremGenerator.fromScene( envScene );
|
|
|
+
|
|
|
var hdrUrls = [ 'px.hdr', 'nx.hdr', 'py.hdr', 'ny.hdr', 'pz.hdr', 'nz.hdr' ];
|
|
|
hdrCubeMap = new HDRCubeTextureLoader()
|
|
|
.setPath( './textures/cube/pisaHDR/' )
|
|
@@ -142,7 +177,7 @@
|
|
|
|
|
|
var gui = new GUI();
|
|
|
|
|
|
- gui.add( params, 'envMap', [ 'LDR', 'HDR', 'RGBM16' ] );
|
|
|
+ gui.add( params, 'envMap', [ 'Generated', 'LDR', 'HDR', 'RGBM16' ] );
|
|
|
gui.add( params, 'roughness', 0, 1, 0.01 );
|
|
|
gui.add( params, 'metalness', 0, 1, 0.01 );
|
|
|
gui.add( params, 'exposure', 0, 2, 0.01 );
|
|
@@ -182,6 +217,10 @@
|
|
|
|
|
|
switch ( params.envMap ) {
|
|
|
|
|
|
+ case 'Generated':
|
|
|
+ renderTarget = generatedCubeRenderTarget;
|
|
|
+ cubeMap = generatedCubeRenderTarget;
|
|
|
+ break;
|
|
|
case 'LDR':
|
|
|
renderTarget = ldrCubeRenderTarget;
|
|
|
cubeMap = ldrCubeMap;
|