|
51 | 51 |
|
52 | 52 | <script src="js/controls/TrackballControls.js"></script>
|
53 | 53 | <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> |
54 | 60 |
|
55 | 61 | <script src="js/Detector.js"></script>
|
56 | 62 | <script src="js/libs/stats.min.js"></script>
|
|
87 | 93 |
|
88 | 94 | controls = new THREE.TrackballControls( camera );
|
89 | 95 |
|
| 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 | + |
90 | 111 | scene = new THREE.Scene();
|
91 | 112 |
|
92 | 113 | sceneCube = new THREE.Scene();
|
|
111 | 132 | var shader = THREE.ShaderLib[ "cube" ];
|
112 | 133 | shader.uniforms[ "tCube" ].value = textureCube;
|
113 | 134 |
|
114 |
| - var material = new THREE.ShaderMaterial( { |
| 135 | + var materialBG = new THREE.ShaderMaterial( { |
115 | 136 |
|
116 | 137 | fragmentShader: shader.fragmentShader,
|
117 | 138 | vertexShader: shader.vertexShader,
|
|
121 | 142 |
|
122 | 143 | } ),
|
123 | 144 |
|
124 |
| - mesh = new THREE.Mesh( new THREE.BoxGeometry( 100, 100, 100 ), material ); |
| 145 | + mesh = new THREE.Mesh( new THREE.BoxGeometry( 100, 100, 100 ), materialBG ); |
125 | 146 | sceneCube.add( mesh );
|
126 | 147 |
|
127 | 148 | //
|
128 | 149 |
|
129 | 150 | var path = 'models/obj/cerberus/';
|
130 | 151 |
|
131 | 152 | var loader = new THREE.OBJLoader();
|
| 153 | + var material = new THREE.MeshStandardMaterial(); |
132 | 154 | loader.load( path + 'Cerberus.obj', function ( group ) {
|
133 | 155 |
|
134 | 156 | // var material = new THREE.MeshBasicMaterial( { wireframe: true } );
|
135 |
| - var material = new THREE.MeshStandardMaterial(); |
136 | 157 |
|
137 | 158 | var loader = new THREE.TextureLoader();
|
138 | 159 |
|
|
143 | 164 | material.roughnessMap = loader.load( path + 'Cerberus_R.jpg' );
|
144 | 165 | material.metalnessMap = loader.load( path + 'Cerberus_M.jpg' );
|
145 | 166 | material.normalMap = loader.load( path + 'Cerberus_N.jpg' );
|
146 |
| - material.envMap = textureCube; |
147 | 167 |
|
148 | 168 | material.map.wrapS = THREE.RepeatWrapping;
|
149 | 169 | material.roughnessMap.wrapS = THREE.RepeatWrapping;
|
|
166 | 186 |
|
167 | 187 | } );
|
168 | 188 |
|
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 | + }; |
170 | 196 |
|
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 ) { |
176 | 199 |
|
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 | + } ); |
180 | 211 |
|
181 | 212 | //
|
182 | 213 |
|
|
0 commit comments