-
Notifications
You must be signed in to change notification settings - Fork 44
Commit
Update three.js r156 to r157
- Loading branch information
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
import { | ||
CubeTexture, | ||
DataTexture, | ||
FileLoader, | ||
FloatType, | ||
HalfFloatType, | ||
LinearFilter, | ||
LinearSRGBColorSpace, | ||
Loader | ||
} from 'three'; | ||
import { RGBELoader } from '../loaders/RGBELoader.js'; | ||
|
||
class HDRCubeTextureLoader extends Loader { | ||
|
||
constructor( manager ) { | ||
|
||
super( manager ); | ||
|
||
this.hdrLoader = new RGBELoader(); | ||
this.type = HalfFloatType; | ||
|
||
} | ||
|
||
load( urls, onLoad, onProgress, onError ) { | ||
|
||
const texture = new CubeTexture(); | ||
|
||
texture.type = this.type; | ||
|
||
switch ( texture.type ) { | ||
|
||
case FloatType: | ||
|
||
texture.colorSpace = LinearSRGBColorSpace; | ||
texture.minFilter = LinearFilter; | ||
texture.magFilter = LinearFilter; | ||
texture.generateMipmaps = false; | ||
break; | ||
|
||
case HalfFloatType: | ||
|
||
texture.colorSpace = LinearSRGBColorSpace; | ||
texture.minFilter = LinearFilter; | ||
texture.magFilter = LinearFilter; | ||
texture.generateMipmaps = false; | ||
break; | ||
|
||
} | ||
|
||
const scope = this; | ||
|
||
let loaded = 0; | ||
|
||
function loadHDRData( i, onLoad, onProgress, onError ) { | ||
|
||
new FileLoader( scope.manager ) | ||
.setPath( scope.path ) | ||
.setResponseType( 'arraybuffer' ) | ||
.setWithCredentials( scope.withCredentials ) | ||
.load( urls[ i ], function ( buffer ) { | ||
|
||
loaded ++; | ||
|
||
const texData = scope.hdrLoader.parse( buffer ); | ||
|
||
if ( ! texData ) return; | ||
|
||
if ( texData.data !== undefined ) { | ||
|
||
const dataTexture = new DataTexture( texData.data, texData.width, texData.height ); | ||
|
||
dataTexture.type = texture.type; | ||
dataTexture.colorSpace = texture.colorSpace; | ||
dataTexture.format = texture.format; | ||
dataTexture.minFilter = texture.minFilter; | ||
dataTexture.magFilter = texture.magFilter; | ||
dataTexture.generateMipmaps = texture.generateMipmaps; | ||
|
||
texture.images[ i ] = dataTexture; | ||
|
||
} | ||
|
||
if ( loaded === 6 ) { | ||
|
||
texture.needsUpdate = true; | ||
if ( onLoad ) onLoad( texture ); | ||
|
||
} | ||
|
||
}, onProgress, onError ); | ||
|
||
} | ||
|
||
for ( let i = 0; i < urls.length; i ++ ) { | ||
|
||
loadHDRData( i, onLoad, onProgress, onError ); | ||
|
||
} | ||
|
||
return texture; | ||
|
||
} | ||
|
||
setDataType( value ) { | ||
|
||
this.type = value; | ||
this.hdrLoader.setDataType( value ); | ||
|
||
return this; | ||
|
||
} | ||
|
||
} | ||
|
||
export { HDRCubeTextureLoader }; |