Skip to content

Commit 48566c2

Browse files
committed
add PMREM to materials_standard.
1 parent 2f4660a commit 48566c2

File tree

1 file changed

+44
-13
lines changed

1 file changed

+44
-13
lines changed

examples/webgl_materials_standard.html

Lines changed: 44 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@
5151

5252
<script src="js/controls/TrackballControls.js"></script>
5353
<script src="js/loaders/OBJLoader.js"></script>
54+
<script src="js/loaders/RGBELoader.js"></script>
55+
<script src="js/loaders/HDRCubeTextureLoader.js"></script>
56+
<script src="js/Half.js"></script>
57+
<script src="js/Encodings.js"></script>
58+
<script src="js/pmrem/PMREMGenerator.js"></script>
59+
<script src="js/pmrem/PMREMCubeUVPacker.js"></script>
5460

5561
<script src="js/Detector.js"></script>
5662
<script src="js/libs/stats.min.js"></script>
@@ -87,6 +93,21 @@
8793

8894
controls = new THREE.TrackballControls( camera );
8995

96+
//
97+
98+
renderer = new THREE.WebGLRenderer( { antialias: true } );
99+
renderer.setClearColor( 0x202020 );
100+
renderer.setPixelRatio( window.devicePixelRatio );
101+
renderer.setSize( window.innerWidth, window.innerHeight );
102+
container.appendChild( renderer.domElement );
103+
104+
renderer.autoClear = false;
105+
renderer.gammaInput = true;
106+
renderer.gammaOutput = true;
107+
renderer.toneMapping = THREE.ReinhardToneMapping;
108+
renderer.toneMappingExposure = 3;
109+
110+
90111
scene = new THREE.Scene();
91112

92113
sceneCube = new THREE.Scene();
@@ -111,7 +132,7 @@
111132
var shader = THREE.ShaderLib[ "cube" ];
112133
shader.uniforms[ "tCube" ].value = textureCube;
113134

114-
var material = new THREE.ShaderMaterial( {
135+
var materialBG = new THREE.ShaderMaterial( {
115136

116137
fragmentShader: shader.fragmentShader,
117138
vertexShader: shader.vertexShader,
@@ -121,18 +142,18 @@
121142

122143
} ),
123144

124-
mesh = new THREE.Mesh( new THREE.BoxGeometry( 100, 100, 100 ), material );
145+
mesh = new THREE.Mesh( new THREE.BoxGeometry( 100, 100, 100 ), materialBG );
125146
sceneCube.add( mesh );
126147

127148
//
128149

129150
var path = 'models/obj/cerberus/';
130151

131152
var loader = new THREE.OBJLoader();
153+
var material = new THREE.MeshStandardMaterial();
132154
loader.load( path + 'Cerberus.obj', function ( group ) {
133155

134156
// var material = new THREE.MeshBasicMaterial( { wireframe: true } );
135-
var material = new THREE.MeshStandardMaterial();
136157

137158
var loader = new THREE.TextureLoader();
138159

@@ -143,7 +164,6 @@
143164
material.roughnessMap = loader.load( path + 'Cerberus_R.jpg' );
144165
material.metalnessMap = loader.load( path + 'Cerberus_M.jpg' );
145166
material.normalMap = loader.load( path + 'Cerberus_N.jpg' );
146-
material.envMap = textureCube;
147167

148168
material.map.wrapS = THREE.RepeatWrapping;
149169
material.roughnessMap.wrapS = THREE.RepeatWrapping;
@@ -166,17 +186,28 @@
166186

167187
} );
168188

169-
//
189+
var genCubeUrls = function( prefix, postfix ) {
190+
return [
191+
prefix + 'px' + postfix, prefix + 'nx' + postfix,
192+
prefix + 'py' + postfix, prefix + 'ny' + postfix,
193+
prefix + 'pz' + postfix, prefix + 'nz' + postfix
194+
];
195+
};
170196

171-
renderer = new THREE.WebGLRenderer( { antialias: true } );
172-
renderer.setClearColor( 0x202020 );
173-
renderer.setPixelRatio( window.devicePixelRatio );
174-
renderer.setSize( window.innerWidth, window.innerHeight );
175-
container.appendChild( renderer.domElement );
197+
var hdrUrls = genCubeUrls( "./textures/cube/pisaHDR/", ".hdr" );
198+
new THREE.HDRCubeTextureLoader().load( THREE.UnsignedByteType, hdrUrls, function ( hdrCubeMap ) {
176199

177-
renderer.autoClear = false;
178-
renderer.gammaInput = true;
179-
renderer.gammaOutput = true;
200+
var pmremGenerator = new THREE.PMREMGenerator( hdrCubeMap );
201+
pmremGenerator.update( renderer );
202+
203+
var pmremCubeUVPacker = new THREE.PMREMCubeUVPacker( pmremGenerator.cubeLods );
204+
pmremCubeUVPacker.update( renderer );
205+
206+
hdrCubeRenderTarget = pmremCubeUVPacker.CubeUVRenderTarget;
207+
208+
material.envMap = hdrCubeRenderTarget;
209+
material.needsUpdate = true;
210+
} );
180211

181212
//
182213

0 commit comments

Comments
 (0)