Skip to content

Commit c26896d

Browse files
committed
Examples: Added webgl_loader_gltf_iridescence.
1 parent b5ec276 commit c26896d

File tree

4 files changed

+113
-0
lines changed

4 files changed

+113
-0
lines changed

examples/files.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
"webgl_loader_gcode",
8686
"webgl_loader_gltf",
8787
"webgl_loader_gltf_compressed",
88+
"webgl_loader_gltf_iridescence",
8889
"webgl_loader_gltf_sheen",
8990
"webgl_loader_gltf_transmission",
9091
"webgl_loader_gltf_variants",
5.05 MB
Binary file not shown.
33.9 KB
Loading
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<title>three.js webgl - GLTFloader + Iridescence</title>
5+
<meta charset="utf-8">
6+
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
7+
<link type="text/css" rel="stylesheet" href="main.css">
8+
</head>
9+
10+
<body>
11+
<div id="info">
12+
<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> - GLTFLoader + <a href="https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence" target="_blank" rel="noopener">KHR_materials_iridescence</a><br />
13+
Iridescence Lamp from <a href="ttps://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/IridescenceLamp" target="_blank" rel="noopener">glTF-Sample-Models</a><br />
14+
<a href="https://hdrihaven.com/hdri/?h=venice_sunset" target="_blank" rel="noopener">Venice Sunset</a> by <a href="https://hdrihaven.com/" target="_blank" rel="noopener">HDRI Haven</a>
15+
</div>
16+
17+
<!-- Import maps polyfill -->
18+
<!-- Remove this when import maps will be widely supported -->
19+
<script async src="https://unpkg.com/[email protected]/dist/es-module-shims.js"></script>
20+
21+
<script type="importmap">
22+
{
23+
"imports": {
24+
"three": "../build/three.module.js"
25+
}
26+
}
27+
</script>
28+
29+
<script type="module">
30+
31+
import * as THREE from 'three';
32+
33+
import { OrbitControls } from './jsm/controls/OrbitControls.js';
34+
import { GLTFLoader } from './jsm/loaders/GLTFLoader.js';
35+
import { RGBELoader } from './jsm/loaders/RGBELoader.js';
36+
37+
let renderer, scene, camera, controls;
38+
39+
init().catch( function ( err ) {
40+
41+
console.error( err );
42+
43+
} );
44+
45+
async function init() {
46+
47+
renderer = new THREE.WebGLRenderer( { antialias: true } );
48+
renderer.setPixelRatio( window.devicePixelRatio );
49+
renderer.setSize( window.innerWidth, window.innerHeight );
50+
renderer.outputEncoding = THREE.sRGBEncoding;
51+
renderer.toneMapping = THREE.ACESFilmicToneMapping;
52+
document.body.appendChild( renderer.domElement );
53+
54+
scene = new THREE.Scene();
55+
56+
camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 0.25, 20 );
57+
camera.position.set( 0.35, 0.05, 0.35 );
58+
59+
controls = new OrbitControls( camera, renderer.domElement );
60+
controls.addEventListener( 'change', render );
61+
controls.target.set( 0, 0.2, 0 );
62+
controls.update();
63+
64+
const rgbeLoader = new RGBELoader()
65+
.setPath( 'textures/equirectangular/' );
66+
67+
const gltfLoader = new GLTFLoader().setPath( 'models/gltf/' );
68+
69+
const [ texture, gltf ] = await Promise.all( [
70+
rgbeLoader.loadAsync( 'venice_sunset_1k.hdr' ),
71+
gltfLoader.loadAsync( 'IridescenceLamp.glb' ),
72+
] );
73+
74+
// environment
75+
76+
texture.mapping = THREE.EquirectangularReflectionMapping;
77+
78+
scene.background = texture;
79+
scene.environment = texture;
80+
81+
// model
82+
83+
scene.add( gltf.scene );
84+
85+
render();
86+
87+
window.addEventListener( 'resize', onWindowResize );
88+
89+
}
90+
91+
function onWindowResize() {
92+
93+
camera.aspect = window.innerWidth / window.innerHeight;
94+
95+
camera.updateProjectionMatrix();
96+
97+
renderer.setSize( window.innerWidth, window.innerHeight );
98+
99+
render();
100+
101+
}
102+
103+
function render() {
104+
105+
renderer.render( scene, camera );
106+
107+
}
108+
109+
</script>
110+
111+
</body>
112+
</html>

0 commit comments

Comments
 (0)