HDRCubeMapLoader.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /**
  2. * @author Prashant Sharma / spidersharma03
  3. */
  4. THREE.HDRCubeMapLoader = function (manager) {
  5. this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
  6. // override in sub classes
  7. this.hdrLoader = new THREE.RGBELoader();
  8. }
  9. THREE.HDRCubeMapLoader.prototype.load = function(urls, onLoad, onProgress, onError) {
  10. var texture = new THREE.CubeTexture( [] );
  11. texture.encoding = THREE.RGBE;
  12. var scope = this.hdrLoader;
  13. var loaded = 0;
  14. function loadHDRData(i, onLoad, onProgress, onError) {
  15. var loader = new THREE.XHRLoader( this.manager );
  16. loader.setResponseType( 'arraybuffer' );
  17. loader.load( urls[i], function ( buffer ) {
  18. loaded++;
  19. var texData = scope._parser( buffer );
  20. if ( ! texData ) return;
  21. if ( undefined !== texData.image ) {
  22. texture[i].images = texData.image;
  23. }
  24. else if ( undefined !== texData.data ) {
  25. var dataTexture = new THREE.DataTexture(texData.data, texData.width, texData.height);
  26. dataTexture.format = texData.format;
  27. dataTexture.type = texData.type;
  28. dataTexture.minFilter = THREE.LinearFilter;
  29. dataTexture.magFilter = THREE.LinearFilter;
  30. dataTexture.generateMipmaps = false;
  31. texture.images[i] = dataTexture;
  32. }
  33. if(loaded === 6) {
  34. texture.needsUpdate = true;
  35. if ( undefined !== texData.format ) {
  36. texture.format = texData.format;
  37. }
  38. if ( undefined !== texData.type ) {
  39. texture.type = texData.type;
  40. }
  41. texture.minFilter = THREE.LinearFilter;
  42. texture.magFilter = THREE.LinearFilter;
  43. texture.generateMipmaps = false;
  44. if ( onLoad ) onLoad( texture );
  45. }
  46. }, onProgress, onError );
  47. }
  48. for(var i=0; i<urls.length; i++) {
  49. loadHDRData(i, onLoad, onProgress, onError);
  50. }
  51. return texture;
  52. };