Skip to content

Commit 1ecb2d0

Browse files
committed
Improved visual quality of webgl_loader_gltf examples.
1 parent 44ee182 commit 1ecb2d0

File tree

4 files changed

+46
-31
lines changed

4 files changed

+46
-31
lines changed
5.87 MB
Binary file not shown.
5.33 MB
Binary file not shown.

examples/webgl_loader_gltf.html

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,20 @@
3333
<a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> - GLTFLoader<br />
3434
Battle Damaged Sci-fi Helmet by
3535
<a href="https://sketchfab.com/theblueturtle_" target="_blank" rel="noopener">theblueturtle_</a><br />
36+
<a href="https://hdrihaven.com/hdri/?h=pedestrian_overpass" target="_blank" rel="noopener">Pedestrian Overpass</a> by <a href="https://hdrihaven.com/" target="_blank" rel="noopener">HDRI Haven</a>
3637
</div>
3738

3839
<script src="../build/three.js"></script>
3940

4041
<script src="js/controls/OrbitControls.js"></script>
4142
<script src="js/loaders/GLTFLoader.js"></script>
4243

44+
<script src="js/loaders/EquirectangularToCubeGenerator.js"></script>
45+
<script src="js/loaders/RGBELoader.js"></script>
46+
47+
<script src="js/pmrem/PMREMGenerator.js"></script>
48+
<script src="js/pmrem/PMREMCubeUVPacker.js"></script>
49+
4350
<script src="js/WebGL.js"></script>
4451
<script src="js/libs/stats.min.js"></script>
4552

@@ -71,30 +78,24 @@
7178

7279
scene = new THREE.Scene();
7380

74-
var urls = [ 'posx.jpg', 'negx.jpg', 'posy.jpg', 'negy.jpg', 'posz.jpg', 'negz.jpg' ];
75-
var loader = new THREE.CubeTextureLoader().setPath( 'textures/cube/Bridge2/' );
76-
loader.load( urls, function ( texture ) {
77-
78-
texture.encoding = THREE.sRGBEncoding;
79-
80-
// light probe
81-
82-
var sh = new THREE.SphericalHarmonics3();
83-
// Coefficients computed with LightProbeGenerator.fromCubeTexture() and sh.toArray()
84-
sh.fromArray(
85-
[ 0.30350402186576847, 0.4695020609740584, 0.6617666153025029,
86-
0.08320329629560637, 0.17400245533281114, 0.3453152275957874,
87-
0.12158824672933624, 0.10353622444396401, 0.06530153583524678,
88-
0.013607857556048842, 0.019188302420841814, 0.01874813525865349,
89-
0.010822144860690035, 0.01574198289465548, 0.01742654587405097,
90-
0.06310934215371257, 0.061061933521237545, 0.044428745834389806,
91-
0.19958014705624538, 0.22020936865062024, 0.19468224569437417,
92-
0.019647224115989702, 0.032414009820739324, 0.043555315974879015,
93-
0.13316051440231733, 0.1964793374921572, 0.2189213184804167
94-
]
95-
);
96-
var lightProbe = new THREE.LightProbe( sh );
97-
scene.add( lightProbe );
81+
var loader = new THREE.RGBELoader().setPath( 'textures/equirectangular/' );
82+
loader.load( 'pedestrian_overpass_2k.hdr', function ( texture ) {
83+
84+
texture.encoding = THREE.RGBEEncoding;
85+
texture.minFilter = THREE.NearestFilter;
86+
texture.magFilter = THREE.NearestFilter;
87+
texture.flipY = true;
88+
89+
var cubeGenerator = new THREE.EquirectangularToCubeGenerator( texture, { resolution: 1024 } );
90+
cubeGenerator.update( renderer );
91+
92+
var pmremGenerator = new THREE.PMREMGenerator( cubeGenerator.renderTarget.texture );
93+
pmremGenerator.update( renderer );
94+
95+
var pmremCubeUVPacker = new THREE.PMREMCubeUVPacker( pmremGenerator.cubeLods );
96+
pmremCubeUVPacker.update( renderer );
97+
98+
var envMap = pmremCubeUVPacker.CubeUVRenderTarget.texture;
9899

99100
// model
100101

@@ -105,7 +106,7 @@
105106

106107
if ( child.isMesh ) {
107108

108-
child.material.envMap = texture;
109+
child.material.envMap = envMap;
109110

110111
}
111112

@@ -115,15 +116,17 @@
115116

116117
} );
117118

118-
scene.background = texture;
119+
pmremGenerator.dispose();
120+
pmremCubeUVPacker.dispose();
121+
122+
scene.background = cubeGenerator.renderTarget;
119123

120124
} );
121125

122126
renderer = new THREE.WebGLRenderer( { antialias: true } );
123127
renderer.setPixelRatio( window.devicePixelRatio );
124128
renderer.setSize( window.innerWidth, window.innerHeight );
125129
renderer.gammaOutput = true;
126-
renderer.gammaFactor = 2.2; // approximate sRGB
127130
container.appendChild( renderer.domElement );
128131

129132
window.addEventListener( 'resize', onWindowResize, false );

examples/webgl_loader_gltf_extensions.html

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@
5656
<script src="js/loaders/DDSLoader.js"></script>
5757
<script src="js/loaders/GLTFLoader.js"></script>
5858

59+
<script src="js/loaders/EquirectangularToCubeGenerator.js"></script>
60+
<script src="js/loaders/RGBELoader.js"></script>
61+
5962
<script src="js/pmrem/PMREMGenerator.js"></script>
6063
<script src="js/pmrem/PMREMCubeUVPacker.js"></script>
6164

@@ -184,11 +187,20 @@
184187

185188
// Load background and generate envMap
186189

187-
var urls = [ 'posx.jpg', 'negx.jpg', 'posy.jpg', 'negy.jpg', 'posz.jpg', 'negz.jpg' ];
188-
var loader = new THREE.CubeTextureLoader().setPath( 'textures/cube/Park2/' );
189-
background = loader.load( urls, function ( texture ) {
190+
var loader = new THREE.RGBELoader().setPath( 'textures/equirectangular/' );
191+
loader.load( 'venice_sunset_2k.hdr', function ( texture ) {
192+
193+
texture.encoding = THREE.RGBEEncoding;
194+
texture.minFilter = THREE.NearestFilter;
195+
texture.magFilter = THREE.NearestFilter;
196+
texture.flipY = true;
197+
198+
var cubeGenerator = new THREE.EquirectangularToCubeGenerator( texture, { resolution: 1024 } );
199+
cubeGenerator.update( renderer );
200+
201+
background = cubeGenerator.renderTarget;
190202

191-
var pmremGenerator = new THREE.PMREMGenerator( texture );
203+
var pmremGenerator = new THREE.PMREMGenerator( cubeGenerator.renderTarget.texture );
192204
pmremGenerator.update( renderer );
193205

194206
var pmremCubeUVPacker = new THREE.PMREMCubeUVPacker( pmremGenerator.cubeLods );

0 commit comments

Comments
 (0)