three-stdlib
Version:
stand-alone library of threejs examples
82 lines (81 loc) • 2.79 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const THREE = require("three");
const RGBELoader = require("./RGBELoader.cjs");
class HDRCubeTextureLoader extends THREE.Loader {
constructor(manager) {
super(manager);
this.hdrLoader = new RGBELoader.RGBELoader();
this.type = THREE.HalfFloatType;
}
load(urls, onLoad, onProgress, onError) {
if (typeof urls === "string") {
urls = [urls];
} else 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 THREE.CubeTexture();
texture.type = this.type;
switch (texture.type) {
case THREE.FloatType:
case THREE.HalfFloatType:
if ("colorSpace" in texture)
texture.colorSpace = "srgb-linear";
else
texture.encoding = 3e3;
texture.minFilter = THREE.LinearFilter;
texture.magFilter = THREE.LinearFilter;
texture.generateMipmaps = false;
break;
}
const scope = this;
let loaded = 0;
function loadHDRData(i, onLoad2, onProgress2, onError2) {
new THREE.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 !== void 0) {
const dataTexture = new THREE.DataTexture(texData.data, texData.width, texData.height);
dataTexture.type = texture.type;
if ("colorSpace" in dataTexture)
dataTexture.colorSpace = texture.SRGBColorSpace;
else
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 (onLoad2)
onLoad2(texture);
}
},
onProgress2,
onError2
);
}
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;
}
}
exports.HDRCubeTextureLoader = HDRCubeTextureLoader;
//# sourceMappingURL=HDRCubeTextureLoader.cjs.map
;