|
53 | 53 | var camera, scene, renderer, |
54 | 54 | bulbLight, bulbMat, ambientLight, |
55 | 55 | object, loader, stats; |
| 56 | + var ballMat, cubeMat, floorMat; |
| 57 | + |
56 | 58 |
|
57 | 59 | // ref for lumens: http://www.power-sure.com/lumens.htm |
58 | 60 | var bulbLuminousPowers = { |
|
82 | 84 | }; |
83 | 85 |
|
84 | 86 | var params = { |
| 87 | + shadows: true, |
85 | 88 | exposure: 0.68, |
86 | 89 | bulbPower: Object.keys( bulbLuminousPowers )[2], |
87 | 90 | hemiIrradiance: Object.keys( hemiLuminousIrradiances )[0] |
|
127 | 130 | hemiLight = new THREE.HemisphereLight( 0xddeeff, 0x0f0e0d, 0.02 ); |
128 | 131 | scene.add( hemiLight ); |
129 | 132 |
|
130 | | - var floorMat = new THREE.MeshStandardMaterial( { |
| 133 | + floorMat = new THREE.MeshStandardMaterial( { |
131 | 134 | roughness: 0.8, |
132 | 135 | color: 0xffffff, |
133 | 136 | metalness: 0.2, |
|
159 | 162 | floorMat.needsUpdate = true; |
160 | 163 | } ); |
161 | 164 |
|
162 | | - |
163 | | - var cubeMat = new THREE.MeshStandardMaterial( { |
| 165 | + cubeMat = new THREE.MeshStandardMaterial( { |
164 | 166 | roughness: 0.7, |
165 | 167 | color: 0xffffff, |
166 | 168 | bumpScale: 0.002, |
|
183 | 185 | cubeMat.needsUpdate = true; |
184 | 186 | } ); |
185 | 187 |
|
186 | | - var ballMat = new THREE.MeshStandardMaterial( { |
| 188 | + ballMat = new THREE.MeshStandardMaterial( { |
187 | 189 | roughness: 0, |
188 | 190 | metalness: 0.0, |
189 | 191 | color: 0xffffff |
|
257 | 259 | gui.add( params, 'hemiIrradiance', Object.keys( hemiLuminousIrradiances ) ); |
258 | 260 | gui.add( params, 'bulbPower', Object.keys( bulbLuminousPowers ) ); |
259 | 261 | gui.add( params, 'exposure', 0, 1 ); |
| 262 | + gui.add( params, 'shadows' ); |
260 | 263 | gui.open(); |
261 | 264 | } |
262 | 265 |
|
|
279 | 282 |
|
280 | 283 | } |
281 | 284 |
|
| 285 | + var previousShadowMap = false; |
| 286 | + |
282 | 287 | function render() { |
283 | 288 |
|
284 | 289 | renderer.toneMappingExposure = Math.pow( params.exposure, 5.0 ); // to allow for very bright scenes. |
285 | | - |
| 290 | + renderer.shadowMap.enabled = params.shadows; |
| 291 | + bulbLight.castShadow = params.shadows; |
| 292 | + if( params.shadows !== previousShadowMap ) { |
| 293 | + ballMat.needsUpdate = true; |
| 294 | + cubeMat.needsUpdate = true; |
| 295 | + floorMat.needsUpdate = true; |
| 296 | + previousShadowMap = params.shadows; |
| 297 | + } |
286 | 298 | bulbLight.power = bulbLuminousPowers[ params.bulbPower ]; |
287 | 299 | bulbMat.emissiveIntensity = bulbLight.intensity / Math.pow( 0.02, 2.0 ); // convert from intensity to irradiance at bulb surface |
288 | 300 |
|
|
0 commit comments