From d3f7ab09dee14a2a8ab74df3cd270c25af15b06a Mon Sep 17 00:00:00 2001 From: Emmett Lalish Date: Mon, 2 Dec 2019 12:48:10 -0800 Subject: [PATCH] added generated environment example --- examples/js/pmrem/PMREMGenerator.js | 3 ++ examples/jsm/pmrem/PMREMGenerator.js | 3 ++ examples/webgl_materials_envmaps_hdr.html | 43 +++++++++++++++++++++-- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/examples/js/pmrem/PMREMGenerator.js b/examples/js/pmrem/PMREMGenerator.js index 3b25335b4c..03541b1876 100644 --- a/examples/js/pmrem/PMREMGenerator.js +++ b/examples/js/pmrem/PMREMGenerator.js @@ -90,6 +90,7 @@ THREE.PMREMGenerator = ( function () { } _applyPMREM( cubeUVRenderTarget ); _cleanup(); + cubeUVRenderTarget.scissorTest = false; return cubeUVRenderTarget; @@ -121,6 +122,7 @@ THREE.PMREMGenerator = ( function () { _textureToCubeUV( cubemap, cubeUVRenderTarget ); _applyPMREM( cubeUVRenderTarget ); _cleanup(); + cubeUVRenderTarget.scissorTest = false; return cubeUVRenderTarget; @@ -363,6 +365,7 @@ THREE.PMREMGenerator = ( function () { new THREE.WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params ); cubeUVRenderTarget.texture.mapping = THREE.CubeUVReflectionMapping; cubeUVRenderTarget.texture.name = 'PMREM.cubeUv'; + cubeUVRenderTarget.scissorTest = true; return cubeUVRenderTarget; } diff --git a/examples/jsm/pmrem/PMREMGenerator.js b/examples/jsm/pmrem/PMREMGenerator.js index 38eb04cfcc..d5cc2b3223 100644 --- a/examples/jsm/pmrem/PMREMGenerator.js +++ b/examples/jsm/pmrem/PMREMGenerator.js @@ -116,6 +116,7 @@ var PMREMGenerator = ( function () { } _applyPMREM( cubeUVRenderTarget ); _cleanup(); + cubeUVRenderTarget.scissorTest = false; return cubeUVRenderTarget; @@ -147,6 +148,7 @@ var PMREMGenerator = ( function () { _textureToCubeUV( cubemap, cubeUVRenderTarget ); _applyPMREM( cubeUVRenderTarget ); _cleanup(); + cubeUVRenderTarget.scissorTest = false; return cubeUVRenderTarget; @@ -389,6 +391,7 @@ var PMREMGenerator = ( function () { new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params ); cubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping; cubeUVRenderTarget.texture.name = 'PMREM.cubeUv'; + cubeUVRenderTarget.scissorTest = true; return cubeUVRenderTarget; } diff --git a/examples/webgl_materials_envmaps_hdr.html b/examples/webgl_materials_envmaps_hdr.html index 059c44b1df..25813bce99 100644 --- a/examples/webgl_materials_envmaps_hdr.html +++ b/examples/webgl_materials_envmaps_hdr.html @@ -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; -- GitLab