| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | 
							- import {
 
- 	CubeTexture,
 
- 	DataTexture,
 
- 	FileLoader,
 
- 	FloatType,
 
- 	HalfFloatType,
 
- 	LinearEncoding,
 
- 	LinearFilter,
 
- 	Loader,
 
- 	NearestFilter,
 
- 	RGBAFormat,
 
- 	RGBEEncoding,
 
- 	RGBFormat,
 
- 	UnsignedByteType
 
- } from '../../../build/three.module.js';
 
- 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 ) {
 
- 		if ( ! Array.isArray( urls ) ) {
 
- 			console.warn( 'THREE.HDRCubeTextureLoader signature has changed. Use .setDataType() instead.' );
 
- 			this.setDataType( urls );
 
- 			urls = onLoad;
 
- 			onLoad = onProgress;
 
- 			onProgress = onError;
 
- 			onError = arguments[ 4 ];
 
- 		}
 
- 		const texture = new CubeTexture();
 
- 		texture.type = this.type;
 
- 		switch ( texture.type ) {
 
- 			case UnsignedByteType:
 
- 				texture.encoding = RGBEEncoding;
 
- 				texture.format = RGBAFormat;
 
- 				texture.minFilter = NearestFilter;
 
- 				texture.magFilter = NearestFilter;
 
- 				texture.generateMipmaps = false;
 
- 				break;
 
- 			case FloatType:
 
- 				texture.encoding = LinearEncoding;
 
- 				texture.format = RGBFormat;
 
- 				texture.minFilter = LinearFilter;
 
- 				texture.magFilter = LinearFilter;
 
- 				texture.generateMipmaps = false;
 
- 				break;
 
- 			case HalfFloatType:
 
- 				texture.encoding = LinearEncoding;
 
- 				texture.format = RGBFormat;
 
- 				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.encoding = texture.encoding;
 
- 						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 };
 
 
  |