Skip to content

Commit f7e8be0

Browse files
committed
Improved reflection roughness example.
1 parent 30dc259 commit f7e8be0

File tree

2 files changed

+28
-29
lines changed

2 files changed

+28
-29
lines changed
11.7 KB
Loading

examples/webgpu_reflection_roughness.html

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@
2828
import * as THREE from 'three';
2929
import { Fn, vec2, vec4, texture, uv, textureBicubic, rangeFogFactor, reflector, time } from 'three/tsl';
3030

31-
import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
32-
3331
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
32+
import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js';
3433

3534
import Stats from 'three/addons/libs/stats.module.js';
3635

@@ -43,23 +42,21 @@
4342
async function init() {
4443

4544
camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 0.25, 30 );
46-
camera.position.set( - 4, 2, 4 );
47-
camera.lookAt( 0, .4, 0 );
45+
camera.position.set( - 4, 1, 4 );
4846

4947
scene = new THREE.Scene();
5048

51-
//
52-
53-
new RGBELoader()
54-
.setPath( 'textures/equirectangular/' )
55-
.load( 'moonless_golf_1k.hdr', function ( texture ) {
49+
const loader = new UltraHDRLoader();
50+
loader.setDataType( THREE.HalfFloatType );
51+
loader.load( `textures/equirectangular/spruit_sunrise_2k.hdr.jpg`, function ( texture ) {
5652

57-
texture.mapping = THREE.EquirectangularReflectionMapping;
53+
texture.mapping = THREE.EquirectangularReflectionMapping;
54+
texture.needsUpdate = true;
5855

59-
scene.background = texture;
60-
scene.environment = texture;
56+
scene.background = texture;
57+
scene.environment = texture;
6158

62-
} );
59+
} );
6360

6461
// textures
6562

@@ -73,18 +70,20 @@
7370
perlinMap.wrapT = THREE.RepeatWrapping;
7471
perlinMap.colorSpace = THREE.SRGBColorSpace;
7572

76-
// uv map for debugging
77-
78-
const uvMaterial = new THREE.MeshStandardNodeMaterial( {
79-
map: uvMap,
80-
emissiveMap: uvMap,
81-
emissive: 0xffffff,
82-
side: THREE.DoubleSide
83-
} );
84-
85-
const uvMesh = new THREE.Mesh( new THREE.PlaneGeometry( 2, 2 ), uvMaterial );
86-
uvMesh.position.set( 0, 1, 0 );
87-
scene.add( uvMesh );
73+
// uv box for debugging
74+
75+
const mesh = new THREE.Mesh(
76+
new THREE.BoxGeometry( 1, 1, 1 ),
77+
new THREE.MeshStandardNodeMaterial( {
78+
map: uvMap,
79+
roughnessMap: uvMap,
80+
emissiveMap: uvMap,
81+
emissive: 0xffffff
82+
} )
83+
);
84+
mesh.position.set( 0, 1.25, 0 );
85+
mesh.scale.setScalar( 2 );
86+
scene.add( mesh );
8887

8988
// reflection
9089

@@ -117,12 +116,12 @@
117116

118117
// renderer
119118

120-
renderer = new THREE.WebGPURenderer();
119+
renderer = new THREE.WebGPURenderer( { antialias: true } );
121120
renderer.setPixelRatio( window.devicePixelRatio );
122121
renderer.setSize( window.innerWidth, window.innerHeight );
123122
renderer.setAnimationLoop( animate );
124123
renderer.toneMapping = THREE.NeutralToneMapping;
125-
renderer.toneMappingExposure = 2;
124+
renderer.toneMappingExposure = 1.5;
126125
document.body.appendChild( renderer.domElement );
127126

128127
stats = new Stats();
@@ -134,7 +133,7 @@
134133
controls.maxPolarAngle = Math.PI / 2;
135134
controls.autoRotate = true;
136135
controls.autoRotateSpeed = - .1;
137-
controls.target.set( 0, .5, 0 );
136+
controls.target.set( 0, .75, 0 );
138137
controls.update();
139138

140139
// events
@@ -152,7 +151,7 @@
152151

153152
}
154153

155-
function animate() {
154+
function animate( time ) {
156155

157156
stats.update();
158157

0 commit comments

Comments
 (0)