(function (l, fa) {
|
"object" === typeof exports && "undefined" !== typeof module ? fa(exports) : "function" === typeof define && define.amd ? define(["exports"], fa) : (l = l || self, fa(l.THREE = {}))
|
})(this, function (l) {
|
function fa() {}
|
|
function fb(e, h) {
|
if (!(e instanceof h)) throw new TypeError("Cannot call a class as a function");
|
}
|
|
function Oh(e, h) {
|
for (var a = 0; a < h.length; a++) {
|
var b = h[a];
|
b.enumerable = b.enumerable || !1;
|
b.configurable = !0;
|
"value" in b && (b.writable = !0);
|
Object.defineProperty(e, b.key, b)
|
}
|
}
|
|
function Ve(e, h, a) {
|
h && Oh(e.prototype,
|
h);
|
a && Oh(e, a);
|
return e
|
}
|
|
function Wb(e, h) {
|
if ("function" !== typeof h && null !== h) throw new TypeError("Super expression must either be null or a function");
|
e.prototype = Object.create(h && h.prototype, {
|
constructor: {
|
value: e,
|
writable: !0,
|
configurable: !0
|
}
|
});
|
h && mg(e, h)
|
}
|
|
function sb(e) {
|
sb = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
|
return e.__proto__ || Object.getPrototypeOf(e)
|
};
|
return sb(e)
|
}
|
|
function mg(e, h) {
|
mg = Object.setPrototypeOf || function (a, b) {
|
a.__proto__ = b;
|
return a
|
};
|
return mg(e, h)
|
}
|
|
function tb(e) {
|
if (void 0 ===
|
e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
return e
|
}
|
|
function Xb(e, h) {
|
return !h || "object" !== typeof h && "function" !== typeof h ? tb(e) : h
|
}
|
|
function ng(e) {
|
if (Array.isArray(e)) {
|
var h = 0;
|
for (var a = Array(e.length); h < e.length; h++) a[h] = e[h];
|
h = a
|
} else h = void 0;
|
h || (h = Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e) ? Array.from(e) : void 0);
|
if (!(e = h)) throw new TypeError("Invalid attempt to spread non-iterable instance");
|
return e
|
}
|
|
function Ph(e,
|
h) {
|
"parentNode" in e || Object.defineProperty(e, "parentNode", {
|
enumerable: !0,
|
get: 0 === h ? function () {
|
return null
|
} : 1 === h ? function () {
|
return V.documentElement
|
} : function () {
|
return V.body
|
}
|
});
|
"parentElement" in e || Object.defineProperty(e, "parentElement", {
|
enumerable: !0,
|
get: 0 === h ? function () {
|
return null
|
} : 1 === h ? function () {
|
return V.documentElement
|
} : function () {
|
return V.body
|
}
|
})
|
}
|
|
function Nj(e) {
|
"clientLeft" in e || (e.clientLeft = 0, e.clientTop = 0);
|
"clientWidth" in e || (e.clientWidth = Kc, e.clientHeight = Lc);
|
"getBoundingClientRect" in
|
e || (e.getBoundingClientRect = function () {
|
var e = {
|
x: 0,
|
y: 0,
|
top: 0,
|
left: 0,
|
width: this.clientWidth,
|
height: this.clientHeight
|
};
|
e.right = e.width;
|
e.bottom = e.height;
|
return e
|
})
|
}
|
|
function Qh(e) {
|
var h = function () {};
|
e.classList = [];
|
e.classList.add = h;
|
e.classList.remove = h;
|
e.classList.contains = h;
|
e.classList.toggle = h
|
}
|
|
function og(e, h) {
|
var a = !0,
|
b = !1,
|
c = void 0;
|
try {
|
for (var d = Object.getOwnPropertyNames(h)[Symbol.iterator](), f; !(a = (f = d.next()).done); a = !0) {
|
var g = f.value;
|
if ("constructor" !== g && "prototype" !== g && "name" !== g) {
|
var k = Object.getOwnPropertyDescriptor(h,
|
g);
|
Object.defineProperty(e, g, k)
|
}
|
}
|
} catch (m) {
|
b = !0, c = m
|
} finally {
|
try {
|
if (!a && null != d["return"]) d["return"]()
|
} finally {
|
if (b) throw c;
|
}
|
}
|
}
|
|
function Rh() {
|
var e = ra;
|
if (!e) throw Error("please register a canvas");
|
e = e.createImage();
|
"tagName" in e || (e.tagName = "IMG");
|
Ph(e);
|
Qh(e);
|
return e
|
}
|
|
function Sh(e) {
|
return function () {
|
V.visibilityState = e ? "visible" : "hidden";
|
var h = !e;
|
V.hidden !== h && (V.hidden = h, h = new pg("visibilitychange"), h.target = V, h.timeStamp = Date.now(), V.dispatchEvent(h))
|
}
|
}
|
|
function Yb(e) {
|
var h = 1 < arguments.length && void 0 !==
|
arguments[1] ? arguments[1] : {};
|
h.target = h.target || this;
|
"function" === typeof this["on".concat(e)] && this["on".concat(e)].call(this, h)
|
}
|
|
function We(e) {
|
var h = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
|
this.readyState = e;
|
h.readyState = e;
|
Yb.call(this, "readystatechange", h)
|
}
|
|
function Th(e, h) {
|
V.addEventListener(e, h)
|
}
|
|
function Uh(e, h) {
|
V.removeEventListener(e, h)
|
}
|
|
function Ra() {}
|
|
function z(e, h) {
|
this.x = e || 0;
|
this.y = h || 0
|
}
|
|
function ya(e, h, a, b) {
|
this._x = e || 0;
|
this._y = h || 0;
|
this._z = a || 0;
|
this._w = void 0 !== b ? b : 1
|
}
|
|
function q(e,
|
h, a) {
|
this.x = e || 0;
|
this.y = h || 0;
|
this.z = a || 0
|
}
|
|
function ka() {
|
this.elements = [1, 0, 0, 0, 1, 0, 0, 0, 1];
|
0 < arguments.length && console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")
|
}
|
|
function S(e, h, a, b, c, d, f, g, k, m) {
|
Object.defineProperty(this, "id", {
|
value: Oj++
|
});
|
this.uuid = N.generateUUID();
|
this.name = "";
|
this.image = void 0 !== e ? e : S.DEFAULT_IMAGE;
|
this.mipmaps = [];
|
this.mapping = void 0 !== h ? h : S.DEFAULT_MAPPING;
|
this.wrapS = void 0 !== a ? a : 1001;
|
this.wrapT = void 0 !== b ? b : 1001;
|
this.magFilter = void 0 !==
|
c ? c : 1006;
|
this.minFilter = void 0 !== d ? d : 1008;
|
this.anisotropy = void 0 !== k ? k : 1;
|
this.format = void 0 !== f ? f : 1023;
|
this.type = void 0 !== g ? g : 1009;
|
this.offset = new z(0, 0);
|
this.repeat = new z(1, 1);
|
this.center = new z(0, 0);
|
this.rotation = 0;
|
this.matrixAutoUpdate = !0;
|
this.matrix = new ka;
|
this.generateMipmaps = !0;
|
this.premultiplyAlpha = !1;
|
this.flipY = !0;
|
this.unpackAlignment = 4;
|
this.encoding = void 0 !== m ? m : 3E3;
|
this.version = 0;
|
this.onUpdate = null
|
}
|
|
function ca(e, h, a, b) {
|
this.x = e || 0;
|
this.y = h || 0;
|
this.z = a || 0;
|
this.w = void 0 !== b ? b : 1
|
}
|
|
function sa(e,
|
h, a) {
|
this.width = e;
|
this.height = h;
|
this.scissor = new ca(0, 0, e, h);
|
this.scissorTest = !1;
|
this.viewport = new ca(0, 0, e, h);
|
a = a || {};
|
this.texture = new S(void 0, void 0, a.wrapS, a.wrapT, a.magFilter, a.minFilter, a.format, a.type, a.anisotropy, a.encoding);
|
this.texture.image = {};
|
this.texture.image.width = e;
|
this.texture.image.height = h;
|
this.texture.generateMipmaps = void 0 !== a.generateMipmaps ? a.generateMipmaps : !1;
|
this.texture.minFilter = void 0 !== a.minFilter ? a.minFilter : 1006;
|
this.depthBuffer = void 0 !== a.depthBuffer ? a.depthBuffer :
|
!0;
|
this.stencilBuffer = void 0 !== a.stencilBuffer ? a.stencilBuffer : !0;
|
this.depthTexture = void 0 !== a.depthTexture ? a.depthTexture : null
|
}
|
|
function qg(e, h, a) {
|
sa.call(this, e, h, a);
|
this.samples = 4
|
}
|
|
function I() {
|
this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
0 < arguments.length && console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")
|
}
|
|
function Zb(e, h, a, b) {
|
this._x = e || 0;
|
this._y = h || 0;
|
this._z = a || 0;
|
this._order = b || Zb.DefaultOrder
|
}
|
|
function rg() {
|
this.mask = 1
|
}
|
|
function E() {
|
Object.defineProperty(this,
|
"id", {
|
value: Pj++
|
});
|
this.uuid = N.generateUUID();
|
this.name = "";
|
this.type = "Object3D";
|
this.parent = null;
|
this.children = [];
|
this.up = E.DefaultUp.clone();
|
var e = new q,
|
h = new Zb,
|
a = new ya,
|
b = new q(1, 1, 1);
|
h._onChange(function () {
|
a.setFromEuler(h, !1)
|
});
|
a._onChange(function () {
|
h.setFromQuaternion(a, void 0, !1)
|
});
|
Object.defineProperties(this, {
|
position: {
|
configurable: !0,
|
enumerable: !0,
|
value: e
|
},
|
rotation: {
|
configurable: !0,
|
enumerable: !0,
|
value: h
|
},
|
quaternion: {
|
configurable: !0,
|
enumerable: !0,
|
value: a
|
},
|
scale: {
|
configurable: !0,
|
enumerable: !0,
|
value: b
|
},
|
modelViewMatrix: {
|
value: new I
|
},
|
normalMatrix: {
|
value: new ka
|
}
|
});
|
this.matrix = new I;
|
this.matrixWorld = new I;
|
this.matrixAutoUpdate = E.DefaultMatrixAutoUpdate;
|
this.matrixWorldNeedsUpdate = !1;
|
this.layers = new rg;
|
this.visible = !0;
|
this.receiveShadow = this.castShadow = !1;
|
this.frustumCulled = !0;
|
this.renderOrder = 0;
|
this.userData = {}
|
}
|
|
function Kd() {
|
E.call(this);
|
this.type = "Scene";
|
this.overrideMaterial = this.fog = this.background = null;
|
this.autoUpdate = !0;
|
"undefined" !== typeof __THREE_DEVTOOLS__ && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe", {
|
detail: this
|
}))
|
}
|
|
function gb(e, h) {
|
this.min = void 0 !== e ? e : new q(Infinity, Infinity, Infinity);
|
this.max = void 0 !== h ? h : new q(-Infinity, -Infinity, -Infinity)
|
}
|
|
function sg(e, h, a, b, c) {
|
var d;
|
var f = 0;
|
for (d = e.length - 3; f <= d; f += 3) {
|
$b.fromArray(e, f);
|
var g = c.x * Math.abs($b.x) + c.y * Math.abs($b.y) + c.z * Math.abs($b.z),
|
k = h.dot($b),
|
m = a.dot($b),
|
n = b.dot($b);
|
if (Math.max(-Math.max(k, m, n), Math.min(k, m, n)) > g) return !1
|
}
|
return !0
|
}
|
|
function ub(e, h) {
|
this.center = void 0 !== e ? e : new q;
|
this.radius = void 0 !== h ? h : 0
|
}
|
|
function ac(e, h) {
|
this.origin = void 0 !==
|
e ? e : new q;
|
this.direction = void 0 !== h ? h : new q
|
}
|
|
function Sa(e, h) {
|
this.normal = void 0 !== e ? e : new q(1, 0, 0);
|
this.constant = void 0 !== h ? h : 0
|
}
|
|
function va(e, h, a) {
|
this.a = void 0 !== e ? e : new q;
|
this.b = void 0 !== h ? h : new q;
|
this.c = void 0 !== a ? a : new q
|
}
|
|
function D(e, h, a) {
|
return void 0 === h && void 0 === a ? this.set(e) : this.setRGB(e, h, a)
|
}
|
|
function tg(e, h, a) {
|
0 > a && (a += 1);
|
1 < a && --a;
|
return a < 1 / 6 ? e + 6 * (h - e) * a : .5 > a ? h : a < 2 / 3 ? e + 6 * (h - e) * (2 / 3 - a) : e
|
}
|
|
function ug(e) {
|
return .04045 > e ? .0773993808 * e : Math.pow(.9478672986 * e + .0521327014, 2.4)
|
}
|
|
function vg(e) {
|
return .0031308 >
|
e ? 12.92 * e : 1.055 * Math.pow(e, .41666) - .055
|
}
|
|
function Mc(e, h, a, b, c, d) {
|
this.a = e;
|
this.b = h;
|
this.c = a;
|
this.normal = b && b.isVector3 ? b : new q;
|
this.vertexNormals = Array.isArray(b) ? b : [];
|
this.color = c && c.isColor ? c : new D;
|
this.vertexColors = Array.isArray(c) ? c : [];
|
this.materialIndex = void 0 !== d ? d : 0
|
}
|
|
function R() {
|
Object.defineProperty(this, "id", {
|
value: Qj++
|
});
|
this.uuid = N.generateUUID();
|
this.name = "";
|
this.type = "Material";
|
this.fog = !0;
|
this.blending = 1;
|
this.side = 0;
|
this.vertexTangents = this.flatShading = !1;
|
this.vertexColors = 0;
|
this.opacity =
|
1;
|
this.transparent = !1;
|
this.blendSrc = 204;
|
this.blendDst = 205;
|
this.blendEquation = 100;
|
this.blendEquationAlpha = this.blendDstAlpha = this.blendSrcAlpha = null;
|
this.depthFunc = 3;
|
this.depthWrite = this.depthTest = !0;
|
this.stencilWriteMask = 255;
|
this.stencilFunc = 519;
|
this.stencilRef = 0;
|
this.stencilFuncMask = 255;
|
this.stencilZPass = this.stencilZFail = this.stencilFail = 7680;
|
this.stencilWrite = !1;
|
this.clippingPlanes = null;
|
this.clipShadows = this.clipIntersection = !1;
|
this.shadowSide = null;
|
this.colorWrite = !0;
|
this.precision = null;
|
this.polygonOffset = !1;
|
this.polygonOffsetUnits = this.polygonOffsetFactor = 0;
|
this.dithering = !1;
|
this.alphaTest = 0;
|
this.premultipliedAlpha = !1;
|
this.toneMapped = this.visible = !0;
|
this.userData = {};
|
this.needsUpdate = !0
|
}
|
|
function Ia(e) {
|
R.call(this);
|
this.type = "MeshBasicMaterial";
|
this.color = new D(16777215);
|
this.lightMap = this.map = null;
|
this.lightMapIntensity = 1;
|
this.aoMap = null;
|
this.aoMapIntensity = 1;
|
this.envMap = this.alphaMap = this.specularMap = null;
|
this.combine = 0;
|
this.reflectivity = 1;
|
this.refractionRatio = .98;
|
this.wireframe = !1;
|
this.wireframeLinewidth =
|
1;
|
this.wireframeLinejoin = this.wireframeLinecap = "round";
|
this.morphTargets = this.skinning = !1;
|
this.setValues(e)
|
}
|
|
function O(e, h, a) {
|
if (Array.isArray(e)) throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");
|
this.name = "";
|
this.array = e;
|
this.itemSize = h;
|
this.count = void 0 !== e ? e.length / h : 0;
|
this.normalized = !0 === a;
|
this.usage = 35044;
|
this.updateRange = {
|
offset: 0,
|
count: -1
|
};
|
this.version = 0
|
}
|
|
function Ld(e, h, a) {
|
O.call(this, new Int8Array(e), h, a)
|
}
|
|
function Md(e, h, a) {
|
O.call(this, new Uint8Array(e), h, a)
|
}
|
|
function Nd(e,
|
h, a) {
|
O.call(this, new Uint8ClampedArray(e), h, a)
|
}
|
|
function Od(e, h, a) {
|
O.call(this, new Int16Array(e), h, a)
|
}
|
|
function bc(e, h, a) {
|
O.call(this, new Uint16Array(e), h, a)
|
}
|
|
function Pd(e, h, a) {
|
O.call(this, new Int32Array(e), h, a)
|
}
|
|
function cc(e, h, a) {
|
O.call(this, new Uint32Array(e), h, a)
|
}
|
|
function F(e, h, a) {
|
O.call(this, new Float32Array(e), h, a)
|
}
|
|
function Qd(e, h, a) {
|
O.call(this, new Float64Array(e), h, a)
|
}
|
|
function Vh() {
|
this.vertices = [];
|
this.normals = [];
|
this.colors = [];
|
this.uvs = [];
|
this.uvs2 = [];
|
this.groups = [];
|
this.morphTargets = {};
|
this.skinWeights = [];
|
this.skinIndices = [];
|
this.boundingSphere = this.boundingBox = null;
|
this.groupsNeedUpdate = this.uvsNeedUpdate = this.colorsNeedUpdate = this.normalsNeedUpdate = this.verticesNeedUpdate = !1
|
}
|
|
function Wh(e) {
|
if (0 === e.length) return -Infinity;
|
for (var h = e[0], a = 1, b = e.length; a < b; ++a) e[a] > h && (h = e[a]);
|
return h
|
}
|
|
function G() {
|
Object.defineProperty(this, "id", {
|
value: Rj += 2
|
});
|
this.uuid = N.generateUUID();
|
this.name = "";
|
this.type = "BufferGeometry";
|
this.index = null;
|
this.attributes = {};
|
this.morphAttributes = {};
|
this.groups = [];
|
this.boundingSphere =
|
this.boundingBox = null;
|
this.drawRange = {
|
start: 0,
|
count: Infinity
|
};
|
this.userData = {}
|
}
|
|
function ia(e, h) {
|
E.call(this);
|
this.type = "Mesh";
|
this.geometry = void 0 !== e ? e : new G;
|
this.material = void 0 !== h ? h : new Ia({
|
color: 16777215 * Math.random()
|
});
|
this.drawMode = 0;
|
this.updateMorphTargets()
|
}
|
|
function Xh(e, h, a, b, c, d, f, g) {
|
if (null === (1 === h.side ? b.intersectTriangle(f, d, c, !0, g) : b.intersectTriangle(c, d, f, 2 !== h.side, g))) return null;
|
Xe.copy(g);
|
Xe.applyMatrix4(e.matrixWorld);
|
h = a.ray.origin.distanceTo(Xe);
|
return h < a.near || h > a.far ? null : {
|
distance: h,
|
point: Xe.clone(),
|
object: e
|
}
|
}
|
|
function Ye(e, h, a, b, c, d, f, g, k, m, n) {
|
dc.fromBufferAttribute(c, k);
|
ec.fromBufferAttribute(c, m);
|
fc.fromBufferAttribute(c, n);
|
c = e.morphTargetInfluences;
|
if (h.morphTargets && d && c) {
|
wg.set(0, 0, 0);
|
xg.set(0, 0, 0);
|
yg.set(0, 0, 0);
|
for (var p = 0, y = d.length; p < y; p++) {
|
var t = c[p],
|
r = d[p];
|
0 !== t && (Yh.fromBufferAttribute(r, k), Zh.fromBufferAttribute(r, m), $h.fromBufferAttribute(r, n), wg.addScaledVector(Yh.sub(dc), t), xg.addScaledVector(Zh.sub(ec), t), yg.addScaledVector($h.sub(fc), t))
|
}
|
dc.add(wg);
|
ec.add(xg);
|
fc.add(yg)
|
}
|
if (e = Xh(e, h, a, b, dc, ec, fc, Rd)) f && (Nc.fromBufferAttribute(f, k), Oc.fromBufferAttribute(f, m), Pc.fromBufferAttribute(f, n), e.uv = va.getUV(Rd, dc, ec, fc, Nc, Oc, Pc, new z)), g && (Nc.fromBufferAttribute(g, k), Oc.fromBufferAttribute(g, m), Pc.fromBufferAttribute(g, n), e.uv2 = va.getUV(Rd, dc, ec, fc, Nc, Oc, Pc, new z)), f = new Mc(k, m, n), va.getNormal(dc, ec, fc, f.normal), e.face = f;
|
return e
|
}
|
|
function P() {
|
Object.defineProperty(this, "id", {
|
value: Sj += 2
|
});
|
this.uuid = N.generateUUID();
|
this.name = "";
|
this.type = "Geometry";
|
this.vertices = [];
|
this.colors = [];
|
this.faces = [];
|
this.faceVertexUvs = [
|
[]
|
];
|
this.morphTargets = [];
|
this.morphNormals = [];
|
this.skinWeights = [];
|
this.skinIndices = [];
|
this.lineDistances = [];
|
this.boundingSphere = this.boundingBox = null;
|
this.groupsNeedUpdate = this.lineDistancesNeedUpdate = this.colorsNeedUpdate = this.normalsNeedUpdate = this.uvsNeedUpdate = this.verticesNeedUpdate = this.elementsNeedUpdate = !1
|
}
|
|
function gc(e) {
|
var h = {},
|
a;
|
for (a in e) {
|
h[a] = {};
|
for (var b in e[a]) {
|
var c = e[a][b];
|
c && (c.isColor || c.isMatrix3 || c.isMatrix4 ||
|
c.isVector2 || c.isVector3 || c.isVector4 || c.isTexture) ? h[a][b] = c.clone() : Array.isArray(c) ? h[a][b] = c.slice() : h[a][b] = c
|
}
|
}
|
return h
|
}
|
|
function za(e) {
|
for (var h = {}, a = 0; a < e.length; a++) {
|
var b = gc(e[a]),
|
c;
|
for (c in b) h[c] = b[c]
|
}
|
return h
|
}
|
|
function Aa(e) {
|
R.call(this);
|
this.type = "ShaderMaterial";
|
this.defines = {};
|
this.uniforms = {};
|
this.vertexShader = "void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}";
|
this.fragmentShader = "void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}";
|
this.linewidth = 1;
|
this.wireframe = !1;
|
this.wireframeLinewidth = 1;
|
this.morphNormals = this.morphTargets = this.skinning = this.clipping = this.lights = this.fog = !1;
|
this.extensions = {
|
derivatives: !1,
|
fragDepth: !1,
|
drawBuffers: !1,
|
shaderTextureLOD: !1
|
};
|
this.defaultAttributeValues = {
|
color: [1, 1, 1],
|
uv: [0, 0],
|
uv2: [0, 0]
|
};
|
this.index0AttributeName = void 0;
|
this.uniformsNeedUpdate = !1;
|
void 0 !== e && (void 0 !== e.attributes && console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."), this.setValues(e))
|
}
|
|
function hb() {
|
E.call(this);
|
this.type = "Camera";
|
this.matrixWorldInverse = new I;
|
this.projectionMatrix = new I;
|
this.projectionMatrixInverse = new I
|
}
|
|
function na(e, h, a, b) {
|
hb.call(this);
|
this.type = "PerspectiveCamera";
|
this.fov = void 0 !== e ? e : 50;
|
this.zoom = 1;
|
this.near = void 0 !== a ? a : .1;
|
this.far = void 0 !== b ? b : 2E3;
|
this.focus = 10;
|
this.aspect = void 0 !== h ? h : 1;
|
this.view = null;
|
this.filmGauge = 35;
|
this.filmOffset = 0;
|
this.updateProjectionMatrix()
|
}
|
|
function Qc(e, h, a, b) {
|
E.call(this);
|
this.type = "CubeCamera";
|
var c = new na(90, 1, e, h);
|
c.up.set(0,
|
-1, 0);
|
c.lookAt(new q(1, 0, 0));
|
this.add(c);
|
var d = new na(90, 1, e, h);
|
d.up.set(0, -1, 0);
|
d.lookAt(new q(-1, 0, 0));
|
this.add(d);
|
var f = new na(90, 1, e, h);
|
f.up.set(0, 0, 1);
|
f.lookAt(new q(0, 1, 0));
|
this.add(f);
|
var g = new na(90, 1, e, h);
|
g.up.set(0, 0, -1);
|
g.lookAt(new q(0, -1, 0));
|
this.add(g);
|
var k = new na(90, 1, e, h);
|
k.up.set(0, -1, 0);
|
k.lookAt(new q(0, 0, 1));
|
this.add(k);
|
var m = new na(90, 1, e, h);
|
m.up.set(0, -1, 0);
|
m.lookAt(new q(0, 0, -1));
|
this.add(m);
|
b = b || {
|
format: 1022,
|
magFilter: 1006,
|
minFilter: 1006
|
};
|
this.renderTarget = new Ib(a, a, b);
|
this.renderTarget.texture.name =
|
"CubeCamera";
|
this.update = function (a, b) {
|
null === this.parent && this.updateMatrixWorld();
|
var e = a.getRenderTarget(),
|
h = this.renderTarget,
|
n = h.texture.generateMipmaps;
|
h.texture.generateMipmaps = !1;
|
a.setRenderTarget(h, 0);
|
a.render(b, c);
|
a.setRenderTarget(h, 1);
|
a.render(b, d);
|
a.setRenderTarget(h, 2);
|
a.render(b, f);
|
a.setRenderTarget(h, 3);
|
a.render(b, g);
|
a.setRenderTarget(h, 4);
|
a.render(b, k);
|
h.texture.generateMipmaps = n;
|
a.setRenderTarget(h, 5);
|
a.render(b, m);
|
a.setRenderTarget(e)
|
};
|
this.clear = function (a, b, c, d) {
|
for (var e = a.getRenderTarget(),
|
f = this.renderTarget, g = 0; 6 > g; g++) a.setRenderTarget(f, g), a.clear(b, c, d);
|
a.setRenderTarget(e)
|
}
|
}
|
|
function Ib(e, h, a) {
|
sa.call(this, e, h, a)
|
}
|
|
function hc(e, h, a, b, c, d, f, g, k, m, n, p) {
|
S.call(this, null, d, f, g, k, m, b, c, n, p);
|
this.image = {
|
data: e || null,
|
width: h || 1,
|
height: a || 1
|
};
|
this.magFilter = void 0 !== k ? k : 1003;
|
this.minFilter = void 0 !== m ? m : 1003;
|
this.flipY = this.generateMipmaps = !1;
|
this.unpackAlignment = 1;
|
this.needsUpdate = !0
|
}
|
|
function Sd(e, h, a, b, c, d) {
|
this.planes = [void 0 !== e ? e : new Sa, void 0 !== h ? h : new Sa, void 0 !== a ? a : new Sa, void 0 !==
|
b ? b : new Sa, void 0 !== c ? c : new Sa, void 0 !== d ? d : new Sa
|
]
|
}
|
|
function zg() {
|
function e(c, d) {
|
!1 !== a && (b(c, d), h.requestAnimationFrame(e))
|
}
|
var h = null,
|
a = !1,
|
b = null;
|
return {
|
start: function () {
|
!0 !== a && null !== b && (h.requestAnimationFrame(e), a = !0)
|
},
|
stop: function () {
|
a = !1
|
},
|
setAnimationLoop: function (a) {
|
b = a
|
},
|
setContext: function (a) {
|
h = a
|
}
|
}
|
}
|
|
function Tj(e) {
|
function h(a, c) {
|
var b = a.array,
|
f = a.usage,
|
g = e.createBuffer();
|
e.bindBuffer(c, g);
|
e.bufferData(c, b, f);
|
a.onUploadCallback();
|
c = 5126;
|
b instanceof Float32Array ? c = 5126 : b instanceof Float64Array ?
|
console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.") : b instanceof Uint16Array ? c = 5123 : b instanceof Int16Array ? c = 5122 : b instanceof Uint32Array ? c = 5125 : b instanceof Int32Array ? c = 5124 : b instanceof Int8Array ? c = 5120 : b instanceof Uint8Array && (c = 5121);
|
return {
|
buffer: g,
|
type: c,
|
bytesPerElement: b.BYTES_PER_ELEMENT,
|
version: a.version
|
}
|
}
|
var a = new WeakMap;
|
return {
|
get: function (b) {
|
b.isInterleavedBufferAttribute && (b = b.data);
|
return a.get(b)
|
},
|
remove: function (b) {
|
b.isInterleavedBufferAttribute &&
|
(b = b.data);
|
var c = a.get(b);
|
c && (e.deleteBuffer(c.buffer), a.delete(b))
|
},
|
update: function (b, c) {
|
b.isInterleavedBufferAttribute && (b = b.data);
|
var d = a.get(b);
|
if (void 0 === d) a.set(b, h(b, c));
|
else if (d.version < b.version) {
|
var f = b.array,
|
g = b.updateRange;
|
e.bindBuffer(c, d.buffer); - 1 === g.count ? e.bufferSubData(c, 0, f) : (e.bufferSubData(c, g.offset * f.BYTES_PER_ELEMENT, f.subarray(g.offset, g.offset + g.count)), g.count = -1);
|
d.version = b.version
|
}
|
}
|
}
|
}
|
|
function Td(e, h, a, b) {
|
P.call(this);
|
this.type = "PlaneGeometry";
|
this.parameters = {
|
width: e,
|
height: h,
|
widthSegments: a,
|
heightSegments: b
|
};
|
this.fromBufferGeometry(new ic(e, h, a, b));
|
this.mergeVertices()
|
}
|
|
function ic(e, h, a, b) {
|
G.call(this);
|
this.type = "PlaneBufferGeometry";
|
this.parameters = {
|
width: e,
|
height: h,
|
widthSegments: a,
|
heightSegments: b
|
};
|
e = e || 1;
|
h = h || 1;
|
var c = e / 2,
|
d = h / 2;
|
a = Math.floor(a) || 1;
|
b = Math.floor(b) || 1;
|
var f = a + 1,
|
g = b + 1,
|
k = e / a,
|
m = h / b,
|
n = [],
|
p = [],
|
y = [],
|
t = [];
|
for (e = 0; e < g; e++) {
|
var r = e * m - d;
|
for (h = 0; h < f; h++) p.push(h * k - c, -r, 0), y.push(0, 0, 1), t.push(h / a), t.push(1 - e / b)
|
}
|
for (e = 0; e < b; e++)
|
for (h = 0; h < a; h++) c = h + f * (e + 1),
|
d = h + 1 + f * (e + 1), g = h + 1 + f * e, n.push(h + f * e, c, g), n.push(c, d, g);
|
this.setIndex(n);
|
this.setAttribute("position", new F(p, 3));
|
this.setAttribute("normal", new F(y, 3));
|
this.setAttribute("uv", new F(t, 2))
|
}
|
|
function Uj(e, h, a, b) {
|
function c(a, c) {
|
h.buffers.color.setClear(a.r, a.g, a.b, c, b)
|
}
|
var d = new D(0),
|
f = 0,
|
g, k, m = null,
|
n = 0;
|
return {
|
getClearColor: function () {
|
return d
|
},
|
setClearColor: function (a, b) {
|
d.set(a);
|
f = void 0 !== b ? b : 1;
|
c(d, f)
|
},
|
getClearAlpha: function () {
|
return f
|
},
|
setClearAlpha: function (a) {
|
f = a;
|
c(d, f)
|
},
|
render: function (b, h, t, r) {
|
h =
|
h.background;
|
t = e.vr;
|
(t = t.getSession && t.getSession()) && "additive" === t.environmentBlendMode && (h = null);
|
null === h ? (c(d, f), m = null, n = 0) : h && h.isColor && (c(h, 1), r = !0, m = null, n = 0);
|
(e.autoClear || r) && e.clear(e.autoClearColor, e.autoClearDepth, e.autoClearStencil);
|
if (h && (h.isCubeTexture || h.isWebGLRenderTargetCube)) {
|
void 0 === k && (k = new ia(new Ud(1, 1, 1), new Aa({
|
type: "BackgroundCubeMaterial",
|
uniforms: gc(ib.cube.uniforms),
|
vertexShader: ib.cube.vertexShader,
|
fragmentShader: ib.cube.fragmentShader,
|
side: 1,
|
depthTest: !1,
|
depthWrite: !1,
|
fog: !1
|
})), k.geometry.deleteAttribute("normal"), k.geometry.deleteAttribute("uv"), k.onBeforeRender = function (a, b, c) {
|
this.matrixWorld.copyPosition(c.matrixWorld)
|
}, Object.defineProperty(k.material, "map", {
|
get: function () {
|
return this.uniforms.tCube.value
|
}
|
}), a.update(k));
|
r = h.isWebGLRenderTargetCube ? h.texture : h;
|
k.material.uniforms.tCube.value = r;
|
k.material.uniforms.tFlip.value = h.isWebGLRenderTargetCube ? 1 : -1;
|
if (m !== h || n !== r.version) k.material.needsUpdate = !0, m = h, n = r.version;
|
b.unshift(k, k.geometry, k.material, 0,
|
0, null)
|
} else if (h && h.isTexture) {
|
void 0 === g && (g = new ia(new ic(2, 2), new Aa({
|
type: "BackgroundMaterial",
|
uniforms: gc(ib.background.uniforms),
|
vertexShader: ib.background.vertexShader,
|
fragmentShader: ib.background.fragmentShader,
|
side: 0,
|
depthTest: !1,
|
depthWrite: !1,
|
fog: !1
|
})), g.geometry.deleteAttribute("normal"), Object.defineProperty(g.material, "map", {
|
get: function () {
|
return this.uniforms.t2D.value
|
}
|
}), a.update(g));
|
g.material.uniforms.t2D.value = h;
|
!0 === h.matrixAutoUpdate && h.updateMatrix();
|
g.material.uniforms.uvTransform.value.copy(h.matrix);
|
if (m !== h || n !== h.version) g.material.needsUpdate = !0, m = h, n = h.version;
|
b.unshift(g, g.geometry, g.material, 0, 0, null)
|
}
|
}
|
}
|
}
|
|
function Vj(e, h, a, b) {
|
var c = b.isWebGL2,
|
d;
|
this.setMode = function (a) {
|
d = a
|
};
|
this.render = function (b, c) {
|
e.drawArrays(d, b, c);
|
a.update(c, d)
|
};
|
this.renderInstances = function (b, g, k, m) {
|
if (0 !== m) {
|
if (c) {
|
b = e;
|
var f = "drawArraysInstanced"
|
} else if (b = h.get("ANGLE_instanced_arrays"), f = "drawArraysInstancedANGLE", null === b) {
|
console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
|
return
|
}
|
b[f](d, g, k, m);
|
a.update(k, d, m)
|
}
|
}
|
}
|
|
function Wj(e, h, a) {
|
function b(a) {
|
if ("highp" === a) {
|
if (0 < e.getShaderPrecisionFormat(35633, 36338).precision && 0 < e.getShaderPrecisionFormat(35632, 36338).precision) return "highp";
|
a = "mediump"
|
}
|
return "mediump" === a && 0 < e.getShaderPrecisionFormat(35633, 36337).precision && 0 < e.getShaderPrecisionFormat(35632, 36337).precision ? "mediump" : "lowp"
|
}
|
var c, d = "undefined" !== typeof WebGL2RenderingContext && e instanceof WebGL2RenderingContext || "undefined" !== typeof WebGL2ComputeRenderingContext &&
|
e instanceof WebGL2ComputeRenderingContext,
|
f = void 0 !== a.precision ? a.precision : "highp",
|
g = b(f);
|
g !== f && (console.warn("THREE.WebGLRenderer:", f, "not supported, using", g, "instead."), f = g);
|
a = !0 === a.logarithmicDepthBuffer;
|
g = e.getParameter(34930);
|
var k = e.getParameter(35660),
|
m = e.getParameter(3379),
|
n = e.getParameter(34076),
|
p = e.getParameter(34921),
|
y = e.getParameter(36347),
|
t = e.getParameter(36348),
|
r = e.getParameter(36349),
|
l = 0 < k,
|
v = d || !!h.get("OES_texture_float"),
|
q = l && v,
|
x = d ? e.getParameter(36183) : 0;
|
return {
|
isWebGL2: d,
|
getMaxAnisotropy: function () {
|
if (void 0 !== c) return c;
|
var a = h.get("EXT_texture_filter_anisotropic");
|
return c = null !== a ? e.getParameter(a.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 0
|
},
|
getMaxPrecision: b,
|
precision: f,
|
logarithmicDepthBuffer: a,
|
maxTextures: g,
|
maxVertexTextures: k,
|
maxTextureSize: m,
|
maxCubemapSize: n,
|
maxAttributes: p,
|
maxVertexUniforms: y,
|
maxVaryings: t,
|
maxFragmentUniforms: r,
|
vertexTextures: l,
|
floatFragmentTextures: v,
|
floatVertexTextures: q,
|
maxSamples: x
|
}
|
}
|
|
function Xj() {
|
function e() {
|
m.value !== b && (m.value = b, m.needsUpdate =
|
0 < c);
|
a.numPlanes = c;
|
a.numIntersection = 0
|
}
|
|
function h(b, c, d, e) {
|
var f = null !== b ? b.length : 0,
|
h = null;
|
if (0 !== f) {
|
h = m.value;
|
if (!0 !== e || null === h) {
|
e = d + 4 * f;
|
c = c.matrixWorldInverse;
|
k.getNormalMatrix(c);
|
if (null === h || h.length < e) h = new Float32Array(e);
|
for (e = 0; e !== f; ++e, d += 4) g.copy(b[e]).applyMatrix4(c, k), g.normal.toArray(h, d), h[d + 3] = g.constant
|
}
|
m.value = h;
|
m.needsUpdate = !0
|
}
|
a.numPlanes = f;
|
return h
|
}
|
var a = this,
|
b = null,
|
c = 0,
|
d = !1,
|
f = !1,
|
g = new Sa,
|
k = new ka,
|
m = {
|
value: null,
|
needsUpdate: !1
|
};
|
this.uniform = m;
|
this.numIntersection = this.numPlanes =
|
0;
|
this.init = function (a, e, f) {
|
var g = 0 !== a.length || e || 0 !== c || d;
|
d = e;
|
b = h(a, f, 0);
|
c = a.length;
|
return g
|
};
|
this.beginShadows = function () {
|
f = !0;
|
h(null)
|
};
|
this.endShadows = function () {
|
f = !1;
|
e()
|
};
|
this.setState = function (a, g, k, t, r, l) {
|
if (!d || null === a || 0 === a.length || f && !k) f ? h(null) : e();
|
else {
|
k = f ? 0 : c;
|
var n = 4 * k,
|
p = r.clippingState || null;
|
m.value = p;
|
p = h(a, t, n, l);
|
for (a = 0; a !== n; ++a) p[a] = b[a];
|
r.clippingState = p;
|
this.numIntersection = g ? this.numPlanes : 0;
|
this.numPlanes += k
|
}
|
}
|
}
|
|
function Yj(e) {
|
var h = {};
|
return {
|
get: function (a) {
|
if (void 0 !== h[a]) return h[a];
|
switch (a) {
|
case "WEBGL_depth_texture":
|
var b = e.getExtension("WEBGL_depth_texture") || e.getExtension("MOZ_WEBGL_depth_texture") || e.getExtension("WEBKIT_WEBGL_depth_texture");
|
break;
|
case "EXT_texture_filter_anisotropic":
|
b = e.getExtension("EXT_texture_filter_anisotropic") || e.getExtension("MOZ_EXT_texture_filter_anisotropic") || e.getExtension("WEBKIT_EXT_texture_filter_anisotropic");
|
break;
|
case "WEBGL_compressed_texture_s3tc":
|
b = e.getExtension("WEBGL_compressed_texture_s3tc") || e.getExtension("MOZ_WEBGL_compressed_texture_s3tc") ||
|
e.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");
|
break;
|
case "WEBGL_compressed_texture_pvrtc":
|
b = e.getExtension("WEBGL_compressed_texture_pvrtc") || e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");
|
break;
|
default:
|
b = e.getExtension(a)
|
}
|
null === b && console.warn("THREE.WebGLRenderer: " + a + " extension not supported.");
|
return h[a] = b
|
}
|
}
|
}
|
|
function Zj(e, h, a) {
|
function b(c) {
|
var e = c.target;
|
c = d.get(e);
|
null !== c.index && h.remove(c.index);
|
for (var g in c.attributes) h.remove(c.attributes[g]);
|
e.removeEventListener("dispose",
|
b);
|
d.delete(e);
|
if (g = f.get(c)) h.remove(g), f.delete(c);
|
a.memory.geometries--
|
}
|
|
function c(a) {
|
var b = [],
|
c = a.index,
|
d = a.attributes.position;
|
if (null !== c) {
|
var e = c.array;
|
c = c.version;
|
d = 0;
|
for (var g = e.length; d < g; d += 3) {
|
var t = e[d + 0],
|
r = e[d + 1],
|
l = e[d + 2];
|
b.push(t, r, r, l, l, t)
|
}
|
} else
|
for (e = d.array, c = d.version, d = 0, g = e.length / 3 - 1; d < g; d += 3) t = d + 0, r = d + 1, l = d + 2, b.push(t, r, r, l, l, t);
|
b = new(65535 < Wh(b) ? cc : bc)(b, 1);
|
b.version = c;
|
h.update(b, 34963);
|
(e = f.get(a)) && h.remove(e);
|
f.set(a, b)
|
}
|
var d = new WeakMap,
|
f = new WeakMap;
|
return {
|
get: function (c,
|
e) {
|
var f = d.get(e);
|
if (f) return f;
|
e.addEventListener("dispose", b);
|
e.isBufferGeometry ? f = e : e.isGeometry && (void 0 === e._bufferGeometry && (e._bufferGeometry = (new G).setFromObject(c)), f = e._bufferGeometry);
|
d.set(e, f);
|
a.memory.geometries++;
|
return f
|
},
|
update: function (a) {
|
var b = a.index,
|
c = a.attributes;
|
null !== b && h.update(b, 34963);
|
for (var d in c) h.update(c[d], 34962);
|
a = a.morphAttributes;
|
for (d in a) {
|
b = a[d];
|
c = 0;
|
for (var e = b.length; c < e; c++) h.update(b[c], 34962)
|
}
|
},
|
getWireframeAttribute: function (a) {
|
var b = f.get(a);
|
if (b) {
|
var d =
|
a.index;
|
null !== d && b.version < d.version && c(a)
|
} else c(a);
|
return f.get(a)
|
}
|
}
|
}
|
|
function ak(e, h, a, b) {
|
var c = b.isWebGL2,
|
d, f, g;
|
this.setMode = function (a) {
|
d = a
|
};
|
this.setIndex = function (a) {
|
f = a.type;
|
g = a.bytesPerElement
|
};
|
this.render = function (b, c) {
|
e.drawElements(d, c, f, b * g);
|
a.update(c, d)
|
};
|
this.renderInstances = function (b, m, n, p) {
|
if (0 !== p) {
|
if (c) {
|
b = e;
|
var k = "drawElementsInstanced"
|
} else if (b = h.get("ANGLE_instanced_arrays"), k = "drawElementsInstancedANGLE", null === b) {
|
console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
|
return
|
}
|
b[k](d, n, f, m * g, p);
|
a.update(n, d, p)
|
}
|
}
|
}
|
|
function bk(e) {
|
var h = {
|
frame: 0,
|
calls: 0,
|
triangles: 0,
|
points: 0,
|
lines: 0
|
};
|
return {
|
memory: {
|
geometries: 0,
|
textures: 0
|
},
|
render: h,
|
programs: null,
|
autoReset: !0,
|
reset: function () {
|
h.frame++;
|
h.calls = 0;
|
h.triangles = 0;
|
h.points = 0;
|
h.lines = 0
|
},
|
update: function (a, b, c) {
|
c = c || 1;
|
h.calls++;
|
switch (b) {
|
case 4:
|
h.triangles += a / 3 * c;
|
break;
|
case 5:
|
case 6:
|
h.triangles += c * (a - 2);
|
break;
|
case 1:
|
h.lines += a / 2 * c;
|
break;
|
case 3:
|
h.lines += c * (a - 1);
|
break;
|
case 2:
|
h.lines += c * a;
|
break;
|
case 0:
|
h.points += c * a;
|
break;
|
default:
|
console.error("THREE.WebGLInfo: Unknown draw mode:",
|
b)
|
}
|
}
|
}
|
}
|
|
function ck(e, h) {
|
return Math.abs(h[1]) - Math.abs(e[1])
|
}
|
|
function dk(e) {
|
var h = {},
|
a = new Float32Array(8);
|
return {
|
update: function (b, c, d, f) {
|
var g = b.morphTargetInfluences,
|
k = g.length;
|
b = h[c.id];
|
if (void 0 === b) {
|
b = [];
|
for (var m = 0; m < k; m++) b[m] = [m, 0];
|
h[c.id] = b
|
}
|
var n = d.morphTargets && c.morphAttributes.position;
|
d = d.morphNormals && c.morphAttributes.normal;
|
for (m = 0; m < k; m++) {
|
var p = b[m];
|
0 !== p[1] && (n && c.deleteAttribute("morphTarget" + m), d && c.deleteAttribute("morphNormal" + m))
|
}
|
for (m = 0; m < k; m++) p = b[m], p[0] = m, p[1] = g[m];
|
b.sort(ck);
|
for (m = 0; 8 > m; m++) {
|
if (p = b[m])
|
if (g = p[0], k = p[1]) {
|
n && c.setAttribute("morphTarget" + m, n[g]);
|
d && c.setAttribute("morphNormal" + m, d[g]);
|
a[m] = k;
|
continue
|
} a[m] = 0
|
}
|
f.getUniforms().setValue(e, "morphTargetInfluences", a)
|
}
|
}
|
}
|
|
function ek(e, h, a, b) {
|
var c = {};
|
return {
|
update: function (d) {
|
var e = b.render.frame,
|
g = d.geometry,
|
k = h.get(d, g);
|
c[k.id] !== e && (g.isGeometry && k.updateFromObject(d), h.update(k), c[k.id] = e);
|
d.isInstancedMesh && a.update(d.instanceMatrix, 34962);
|
return k
|
},
|
dispose: function () {
|
c = {}
|
}
|
}
|
}
|
|
function vb(e, h, a, b, c, d, f, g, k, m) {
|
e =
|
void 0 !== e ? e : [];
|
S.call(this, e, void 0 !== h ? h : 301, a, b, c, d, void 0 !== f ? f : 1022, g, k, m);
|
this.flipY = !1
|
}
|
|
function Rc(e, h, a, b) {
|
S.call(this, null);
|
this.image = {
|
data: e || null,
|
width: h || 1,
|
height: a || 1,
|
depth: b || 1
|
};
|
this.minFilter = this.magFilter = 1003;
|
this.wrapR = 1001;
|
this.flipY = this.generateMipmaps = !1;
|
this.needsUpdate = !0
|
}
|
|
function Sc(e, h, a, b) {
|
S.call(this, null);
|
this.image = {
|
data: e || null,
|
width: h || 1,
|
height: a || 1,
|
depth: b || 1
|
};
|
this.minFilter = this.magFilter = 1003;
|
this.wrapR = 1001;
|
this.flipY = this.generateMipmaps = !1;
|
this.needsUpdate = !0
|
}
|
|
function Tc(e, h, a) {
|
var b = e[0];
|
if (0 >= b || 0 < b) return e;
|
var c = h * a,
|
d = ai[c];
|
void 0 === d && (d = new Float32Array(c), ai[c] = d);
|
if (0 !== h)
|
for (b.toArray(d, 0), b = 1, c = 0; b !== h; ++b) c += a, e[b].toArray(d, c);
|
return d
|
}
|
|
function Oa(e, h) {
|
if (e.length !== h.length) return !1;
|
for (var a = 0, b = e.length; a < b; a++)
|
if (e[a] !== h[a]) return !1;
|
return !0
|
}
|
|
function Ja(e, h) {
|
for (var a = 0, b = h.length; a < b; a++) e[a] = h[a]
|
}
|
|
function bi(e, h) {
|
var a = ci[h];
|
void 0 === a && (a = new Int32Array(h), ci[h] = a);
|
for (var b = 0; b !== h; ++b) a[b] = e.allocateTextureUnit();
|
return a
|
}
|
|
function fk(e,
|
h) {
|
var a = this.cache;
|
a[0] !== h && (e.uniform1f(this.addr, h), a[0] = h)
|
}
|
|
function gk(e, h) {
|
var a = this.cache;
|
if (void 0 !== h.x) {
|
if (a[0] !== h.x || a[1] !== h.y) e.uniform2f(this.addr, h.x, h.y), a[0] = h.x, a[1] = h.y
|
} else Oa(a, h) || (e.uniform2fv(this.addr, h), Ja(a, h))
|
}
|
|
function hk(e, h) {
|
var a = this.cache;
|
if (void 0 !== h.x) {
|
if (a[0] !== h.x || a[1] !== h.y || a[2] !== h.z) e.uniform3f(this.addr, h.x, h.y, h.z), a[0] = h.x, a[1] = h.y, a[2] = h.z
|
} else if (void 0 !== h.r) {
|
if (a[0] !== h.r || a[1] !== h.g || a[2] !== h.b) e.uniform3f(this.addr, h.r, h.g, h.b), a[0] = h.r, a[1] = h.g,
|
a[2] = h.b
|
} else Oa(a, h) || (e.uniform3fv(this.addr, h), Ja(a, h))
|
}
|
|
function ik(e, h) {
|
var a = this.cache;
|
if (void 0 !== h.x) {
|
if (a[0] !== h.x || a[1] !== h.y || a[2] !== h.z || a[3] !== h.w) e.uniform4f(this.addr, h.x, h.y, h.z, h.w), a[0] = h.x, a[1] = h.y, a[2] = h.z, a[3] = h.w
|
} else Oa(a, h) || (e.uniform4fv(this.addr, h), Ja(a, h))
|
}
|
|
function jk(e, h) {
|
var a = this.cache,
|
b = h.elements;
|
void 0 === b ? Oa(a, h) || (e.uniformMatrix2fv(this.addr, !1, h), Ja(a, h)) : Oa(a, b) || (di.set(b), e.uniformMatrix2fv(this.addr, !1, di), Ja(a, b))
|
}
|
|
function kk(e, h) {
|
var a = this.cache,
|
b = h.elements;
|
void 0 === b ? Oa(a, h) || (e.uniformMatrix3fv(this.addr, !1, h), Ja(a, h)) : Oa(a, b) || (ei.set(b), e.uniformMatrix3fv(this.addr, !1, ei), Ja(a, b))
|
}
|
|
function lk(e, h) {
|
var a = this.cache,
|
b = h.elements;
|
void 0 === b ? Oa(a, h) || (e.uniformMatrix4fv(this.addr, !1, h), Ja(a, h)) : Oa(a, b) || (fi.set(b), e.uniformMatrix4fv(this.addr, !1, fi), Ja(a, b))
|
}
|
|
function mk(e, h, a) {
|
var b = this.cache,
|
c = a.allocateTextureUnit();
|
b[0] !== c && (e.uniform1i(this.addr, c), b[0] = c);
|
a.safeSetTexture2D(h || gi, c)
|
}
|
|
function nk(e, h, a) {
|
var b = this.cache,
|
c = a.allocateTextureUnit();
|
b[0] !== c && (e.uniform1i(this.addr, c), b[0] = c);
|
a.setTexture2DArray(h || ok, c)
|
}
|
|
function pk(e, h, a) {
|
var b = this.cache,
|
c = a.allocateTextureUnit();
|
b[0] !== c && (e.uniform1i(this.addr, c), b[0] = c);
|
a.setTexture3D(h || qk, c)
|
}
|
|
function rk(e, h, a) {
|
var b = this.cache,
|
c = a.allocateTextureUnit();
|
b[0] !== c && (e.uniform1i(this.addr, c), b[0] = c);
|
a.safeSetTextureCube(h || hi, c)
|
}
|
|
function sk(e, h) {
|
var a = this.cache;
|
a[0] !== h && (e.uniform1i(this.addr, h), a[0] = h)
|
}
|
|
function tk(e, h) {
|
var a = this.cache;
|
Oa(a, h) || (e.uniform2iv(this.addr, h), Ja(a, h))
|
}
|
|
function uk(e,
|
h) {
|
var a = this.cache;
|
Oa(a, h) || (e.uniform3iv(this.addr, h), Ja(a, h))
|
}
|
|
function vk(e, h) {
|
var a = this.cache;
|
Oa(a, h) || (e.uniform4iv(this.addr, h), Ja(a, h))
|
}
|
|
function wk(e) {
|
switch (e) {
|
case 5126:
|
return fk;
|
case 35664:
|
return gk;
|
case 35665:
|
return hk;
|
case 35666:
|
return ik;
|
case 35674:
|
return jk;
|
case 35675:
|
return kk;
|
case 35676:
|
return lk;
|
case 35678:
|
case 36198:
|
return mk;
|
case 35679:
|
return pk;
|
case 35680:
|
return rk;
|
case 36289:
|
return nk;
|
case 5124:
|
case 35670:
|
return sk;
|
case 35667:
|
case 35671:
|
return tk;
|
case 35668:
|
case 35672:
|
return uk;
|
case 35669:
|
case 35673:
|
return vk
|
}
|
}
|
|
function xk(e, h) {
|
e.uniform1fv(this.addr, h)
|
}
|
|
function yk(e, h) {
|
e.uniform1iv(this.addr, h)
|
}
|
|
function zk(e, h) {
|
e.uniform2iv(this.addr, h)
|
}
|
|
function Ak(e, h) {
|
e.uniform3iv(this.addr, h)
|
}
|
|
function Bk(e, h) {
|
e.uniform4iv(this.addr, h)
|
}
|
|
function Ck(e, h) {
|
h = Tc(h, this.size, 2);
|
e.uniform2fv(this.addr, h)
|
}
|
|
function Dk(e, h) {
|
h = Tc(h, this.size, 3);
|
e.uniform3fv(this.addr, h)
|
}
|
|
function Ek(e, h) {
|
h = Tc(h, this.size, 4);
|
e.uniform4fv(this.addr, h)
|
}
|
|
function Fk(e, h) {
|
h = Tc(h, this.size, 4);
|
e.uniformMatrix2fv(this.addr,
|
!1, h)
|
}
|
|
function Gk(e, h) {
|
h = Tc(h, this.size, 9);
|
e.uniformMatrix3fv(this.addr, !1, h)
|
}
|
|
function Hk(e, h) {
|
h = Tc(h, this.size, 16);
|
e.uniformMatrix4fv(this.addr, !1, h)
|
}
|
|
function Ik(e, h, a) {
|
var b = h.length,
|
c = bi(a, b);
|
e.uniform1iv(this.addr, c);
|
for (e = 0; e !== b; ++e) a.safeSetTexture2D(h[e] || gi, c[e])
|
}
|
|
function Jk(e, h, a) {
|
var b = h.length,
|
c = bi(a, b);
|
e.uniform1iv(this.addr, c);
|
for (e = 0; e !== b; ++e) a.safeSetTextureCube(h[e] || hi, c[e])
|
}
|
|
function Kk(e) {
|
switch (e) {
|
case 5126:
|
return xk;
|
case 35664:
|
return Ck;
|
case 35665:
|
return Dk;
|
case 35666:
|
return Ek;
|
case 35674:
|
return Fk;
|
case 35675:
|
return Gk;
|
case 35676:
|
return Hk;
|
case 35678:
|
return Ik;
|
case 35680:
|
return Jk;
|
case 5124:
|
case 35670:
|
return yk;
|
case 35667:
|
case 35671:
|
return zk;
|
case 35668:
|
case 35672:
|
return Ak;
|
case 35669:
|
case 35673:
|
return Bk
|
}
|
}
|
|
function Lk(e, h, a) {
|
this.id = e;
|
this.addr = a;
|
this.cache = [];
|
this.setValue = wk(h.type)
|
}
|
|
function ii(e, h, a) {
|
this.id = e;
|
this.addr = a;
|
this.cache = [];
|
this.size = h.size;
|
this.setValue = Kk(h.type)
|
}
|
|
function ji(e) {
|
this.id = e;
|
this.seq = [];
|
this.map = {}
|
}
|
|
function Jb(e, h) {
|
this.seq = [];
|
this.map = {};
|
for (var a =
|
e.getProgramParameter(h, 35718), b = 0; b < a; ++b) {
|
var c = e.getActiveUniform(h, b),
|
d = e.getUniformLocation(h, c.name),
|
f = this,
|
g = c.name,
|
k = g.length;
|
for (Ag.lastIndex = 0;;) {
|
var m = Ag.exec(g),
|
n = Ag.lastIndex,
|
p = m[1],
|
y = m[3];
|
"]" === m[2] && (p |= 0);
|
if (void 0 === y || "[" === y && n + 2 === k) {
|
g = f;
|
c = void 0 === y ? new Lk(p, c, d) : new ii(p, c, d);
|
g.seq.push(c);
|
g.map[c.id] = c;
|
break
|
} else y = f.map[p], void 0 === y && (y = new ji(p), p = f, f = y, p.seq.push(f), p.map[f.id] = f), f = y
|
}
|
}
|
}
|
|
function ki(e, h, a) {
|
h = e.createShader(h);
|
e.shaderSource(h, a);
|
e.compileShader(h);
|
return h
|
}
|
|
function li(e) {
|
switch (e) {
|
case 3E3:
|
return ["Linear", "( value )"];
|
case 3001:
|
return ["sRGB", "( value )"];
|
case 3002:
|
return ["RGBE", "( value )"];
|
case 3004:
|
return ["RGBM", "( value, 7.0 )"];
|
case 3005:
|
return ["RGBM", "( value, 16.0 )"];
|
case 3006:
|
return ["RGBD", "( value, 256.0 )"];
|
case 3007:
|
return ["Gamma", "( value, float( GAMMA_FACTOR ) )"];
|
case 3003:
|
return ["LogLuv", "( value )"];
|
default:
|
throw Error("unsupported encoding: " + e);
|
}
|
}
|
|
function mi(e, h, a) {
|
var b = e.getShaderParameter(h, 35713),
|
c = e.getShaderInfoLog(h).trim();
|
if (b && "" === c) return "";
|
e = e.getShaderSource(h).split("\n");
|
for (h = 0; h < e.length; h++) e[h] = h + 1 + ": " + e[h];
|
e = e.join("\n");
|
return "THREE.WebGLShader: gl.getShaderInfoLog() " + a + "\n" + c + e
|
}
|
|
function Ze(e, h) {
|
h = li(h);
|
return "vec4 " + e + "( vec4 value ) { return " + h[0] + "ToLinear" + h[1] + "; }"
|
}
|
|
function Mk(e, h) {
|
h = li(h);
|
return "vec4 " + e + "( vec4 value ) { return LinearTo" + h[0] + h[1] + "; }"
|
}
|
|
function Nk(e, h) {
|
switch (h) {
|
case 1:
|
h = "Linear";
|
break;
|
case 2:
|
h = "Reinhard";
|
break;
|
case 3:
|
h = "Uncharted2";
|
break;
|
case 4:
|
h = "OptimizedCineon";
|
break;
|
case 5:
|
h =
|
"ACESFilmic";
|
break;
|
default:
|
throw Error("unsupported toneMapping: " + h);
|
}
|
return "vec3 " + e + "( vec3 color ) { return " + h + "ToneMapping( color ); }"
|
}
|
|
function Ok(e, h, a) {
|
e = e || {};
|
return [e.derivatives || h.envMapCubeUV || h.bumpMap || h.tangentSpaceNormalMap || h.clearcoatNormalMap || h.flatShading ? "#extension GL_OES_standard_derivatives : enable" : "", (e.fragDepth || h.logarithmicDepthBuffer) && a.get("EXT_frag_depth") ? "#extension GL_EXT_frag_depth : enable" : "", e.drawBuffers && a.get("WEBGL_draw_buffers") ? "#extension GL_EXT_draw_buffers : require" :
|
"", (e.shaderTextureLOD || h.envMap) && a.get("EXT_shader_texture_lod") ? "#extension GL_EXT_shader_texture_lod : enable" : ""
|
].filter(Vd).join("\n")
|
}
|
|
function Pk(e) {
|
var h = [],
|
a;
|
for (a in e) {
|
var b = e[a];
|
!1 !== b && h.push("#define " + a + " " + b)
|
}
|
return h.join("\n")
|
}
|
|
function Vd(e) {
|
return "" !== e
|
}
|
|
function ni(e, h) {
|
return e.replace(/NUM_DIR_LIGHTS/g, h.numDirLights).replace(/NUM_SPOT_LIGHTS/g, h.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g, h.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, h.numPointLights).replace(/NUM_HEMI_LIGHTS/g,
|
h.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, h.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g, h.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, h.numPointLightShadows)
|
}
|
|
function oi(e, h) {
|
return e.replace(/NUM_CLIPPING_PLANES/g, h.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, h.numClippingPlanes - h.numClipIntersection)
|
}
|
|
function Bg(e, h) {
|
e = Q[h];
|
if (void 0 === e) throw Error("Can not resolve #include <" + h + ">");
|
return e.replace(Cg, Bg)
|
}
|
|
function pi(e, h, a, b) {
|
e = "";
|
for (h = parseInt(h); h < parseInt(a); h++) e +=
|
b.replace(/\[ i \]/g, "[ " + h + " ]").replace(/UNROLLED_LOOP_INDEX/g, h);
|
return e
|
}
|
|
function qi(e) {
|
var h = "precision " + e.precision + " float;\nprecision " + e.precision + " int;";
|
"highp" === e.precision ? h += "\n#define HIGH_PRECISION" : "mediump" === e.precision ? h += "\n#define MEDIUM_PRECISION" : "lowp" === e.precision && (h += "\n#define LOW_PRECISION");
|
return h
|
}
|
|
function Qk(e) {
|
var h = "SHADOWMAP_TYPE_BASIC";
|
1 === e.shadowMapType ? h = "SHADOWMAP_TYPE_PCF" : 2 === e.shadowMapType ? h = "SHADOWMAP_TYPE_PCF_SOFT" : 3 === e.shadowMapType && (h = "SHADOWMAP_TYPE_VSM");
|
return h
|
}
|
|
function Rk(e) {
|
var h = "ENVMAP_TYPE_CUBE";
|
if (e.envMap) switch (e.envMapMode) {
|
case 301:
|
case 302:
|
h = "ENVMAP_TYPE_CUBE";
|
break;
|
case 306:
|
case 307:
|
h = "ENVMAP_TYPE_CUBE_UV";
|
break;
|
case 303:
|
case 304:
|
h = "ENVMAP_TYPE_EQUIREC";
|
break;
|
case 305:
|
h = "ENVMAP_TYPE_SPHERE"
|
}
|
return h
|
}
|
|
function Sk(e) {
|
var h = "ENVMAP_MODE_REFLECTION";
|
if (e.envMap) switch (e.envMapMode) {
|
case 302:
|
case 304:
|
h = "ENVMAP_MODE_REFRACTION"
|
}
|
return h
|
}
|
|
function Tk(e) {
|
var h = "ENVMAP_BLENDING_MULTIPLY";
|
if (e.envMap) switch (e.combine) {
|
case 0:
|
h = "ENVMAP_BLENDING_MULTIPLY";
|
break;
|
case 1:
|
h = "ENVMAP_BLENDING_MIX";
|
break;
|
case 2:
|
h = "ENVMAP_BLENDING_ADD"
|
}
|
return h
|
}
|
|
function Uk(e, h, a, b, c, d) {
|
var f = e.getContext(),
|
g = b.defines,
|
k = c.vertexShader,
|
m = c.fragmentShader,
|
n = Qk(d),
|
p = Rk(d),
|
y = Sk(d),
|
t = Tk(d),
|
r = 0 < e.gammaFactor ? e.gammaFactor : 1,
|
l = d.isWebGL2 ? "" : Ok(b.extensions, d, h),
|
v = Pk(g),
|
q = f.createProgram(),
|
x = d.numMultiviewViews;
|
b.isRawShaderMaterial ? (g = [v].filter(Vd).join("\n"), 0 < g.length && (g += "\n"), h = [l, v].filter(Vd).join("\n"), 0 < h.length && (h += "\n")) : (g = [qi(d), "#define SHADER_NAME " + c.name, v, d.instancing ?
|
"#define USE_INSTANCING" : "", d.supportsVertexTextures ? "#define VERTEX_TEXTURES" : "", "#define GAMMA_FACTOR " + r, "#define MAX_BONES " + d.maxBones, d.useFog && d.fog ? "#define USE_FOG" : "", d.useFog && d.fogExp2 ? "#define FOG_EXP2" : "", d.map ? "#define USE_MAP" : "", d.envMap ? "#define USE_ENVMAP" : "", d.envMap ? "#define " + y : "", d.lightMap ? "#define USE_LIGHTMAP" : "", d.aoMap ? "#define USE_AOMAP" : "", d.emissiveMap ? "#define USE_EMISSIVEMAP" : "", d.bumpMap ? "#define USE_BUMPMAP" : "", d.normalMap ? "#define USE_NORMALMAP" : "", d.normalMap &&
|
d.objectSpaceNormalMap ? "#define OBJECTSPACE_NORMALMAP" : "", d.normalMap && d.tangentSpaceNormalMap ? "#define TANGENTSPACE_NORMALMAP" : "", d.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "", d.displacementMap && d.supportsVertexTextures ? "#define USE_DISPLACEMENTMAP" : "", d.specularMap ? "#define USE_SPECULARMAP" : "", d.roughnessMap ? "#define USE_ROUGHNESSMAP" : "", d.metalnessMap ? "#define USE_METALNESSMAP" : "", d.alphaMap ? "#define USE_ALPHAMAP" : "", d.vertexTangents ? "#define USE_TANGENT" : "", d.vertexColors ? "#define USE_COLOR" :
|
"", d.vertexUvs ? "#define USE_UV" : "", d.uvsVertexOnly ? "#define UVS_VERTEX_ONLY" : "", d.flatShading ? "#define FLAT_SHADED" : "", d.skinning ? "#define USE_SKINNING" : "", d.useVertexTexture ? "#define BONE_TEXTURE" : "", d.morphTargets ? "#define USE_MORPHTARGETS" : "", d.morphNormals && !1 === d.flatShading ? "#define USE_MORPHNORMALS" : "", d.doubleSided ? "#define DOUBLE_SIDED" : "", d.flipSided ? "#define FLIP_SIDED" : "", d.shadowMapEnabled ? "#define USE_SHADOWMAP" : "", d.shadowMapEnabled ? "#define " + n : "", d.sizeAttenuation ? "#define USE_SIZEATTENUATION" :
|
"", d.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "", d.logarithmicDepthBuffer && (d.isWebGL2 || h.get("EXT_frag_depth")) ? "#define USE_LOGDEPTHBUF_EXT" : "", "uniform mat4 modelMatrix;", "uniform mat4 modelViewMatrix;", "uniform mat4 projectionMatrix;", "uniform mat4 viewMatrix;", "uniform mat3 normalMatrix;", "uniform vec3 cameraPosition;", "uniform bool isOrthographic;", "#ifdef USE_INSTANCING", " attribute mat4 instanceMatrix;", "#endif", "attribute vec3 position;", "attribute vec3 normal;", "attribute vec2 uv;",
|
"#ifdef USE_TANGENT", "\tattribute vec4 tangent;", "#endif", "#ifdef USE_COLOR", "\tattribute vec3 color;", "#endif", "#ifdef USE_MORPHTARGETS", "\tattribute vec3 morphTarget0;", "\tattribute vec3 morphTarget1;", "\tattribute vec3 morphTarget2;", "\tattribute vec3 morphTarget3;", "\t#ifdef USE_MORPHNORMALS", "\t\tattribute vec3 morphNormal0;", "\t\tattribute vec3 morphNormal1;", "\t\tattribute vec3 morphNormal2;", "\t\tattribute vec3 morphNormal3;", "\t#else", "\t\tattribute vec3 morphTarget4;", "\t\tattribute vec3 morphTarget5;",
|
"\t\tattribute vec3 morphTarget6;", "\t\tattribute vec3 morphTarget7;", "\t#endif", "#endif", "#ifdef USE_SKINNING", "\tattribute vec4 skinIndex;", "\tattribute vec4 skinWeight;", "#endif", "\n"
|
].filter(Vd).join("\n"), h = [l, qi(d), "#define SHADER_NAME " + c.name, v, d.alphaTest ? "#define ALPHATEST " + d.alphaTest + (d.alphaTest % 1 ? "" : ".0") : "", "#define GAMMA_FACTOR " + r, d.useFog && d.fog ? "#define USE_FOG" : "", d.useFog && d.fogExp2 ? "#define FOG_EXP2" : "", d.map ? "#define USE_MAP" : "", d.matcap ? "#define USE_MATCAP" : "", d.envMap ? "#define USE_ENVMAP" :
|
"", d.envMap ? "#define " + p : "", d.envMap ? "#define " + y : "", d.envMap ? "#define " + t : "", d.lightMap ? "#define USE_LIGHTMAP" : "", d.aoMap ? "#define USE_AOMAP" : "", d.emissiveMap ? "#define USE_EMISSIVEMAP" : "", d.bumpMap ? "#define USE_BUMPMAP" : "", d.normalMap ? "#define USE_NORMALMAP" : "", d.normalMap && d.objectSpaceNormalMap ? "#define OBJECTSPACE_NORMALMAP" : "", d.normalMap && d.tangentSpaceNormalMap ? "#define TANGENTSPACE_NORMALMAP" : "", d.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "", d.specularMap ? "#define USE_SPECULARMAP" :
|
"", d.roughnessMap ? "#define USE_ROUGHNESSMAP" : "", d.metalnessMap ? "#define USE_METALNESSMAP" : "", d.alphaMap ? "#define USE_ALPHAMAP" : "", d.sheen ? "#define USE_SHEEN" : "", d.vertexTangents ? "#define USE_TANGENT" : "", d.vertexColors ? "#define USE_COLOR" : "", d.vertexUvs ? "#define USE_UV" : "", d.uvsVertexOnly ? "#define UVS_VERTEX_ONLY" : "", d.gradientMap ? "#define USE_GRADIENTMAP" : "", d.flatShading ? "#define FLAT_SHADED" : "", d.doubleSided ? "#define DOUBLE_SIDED" : "", d.flipSided ? "#define FLIP_SIDED" : "", d.shadowMapEnabled ? "#define USE_SHADOWMAP" :
|
"", d.shadowMapEnabled ? "#define " + n : "", d.premultipliedAlpha ? "#define PREMULTIPLIED_ALPHA" : "", d.physicallyCorrectLights ? "#define PHYSICALLY_CORRECT_LIGHTS" : "", d.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "", d.logarithmicDepthBuffer && (d.isWebGL2 || h.get("EXT_frag_depth")) ? "#define USE_LOGDEPTHBUF_EXT" : "", (b.extensions && b.extensions.shaderTextureLOD || d.envMap) && (d.isWebGL2 || h.get("EXT_shader_texture_lod")) ? "#define TEXTURE_LOD_EXT" : "", "uniform mat4 viewMatrix;", "uniform vec3 cameraPosition;", "uniform bool isOrthographic;",
|
0 !== d.toneMapping ? "#define TONE_MAPPING" : "", 0 !== d.toneMapping ? Q.tonemapping_pars_fragment : "", 0 !== d.toneMapping ? Nk("toneMapping", d.toneMapping) : "", d.dithering ? "#define DITHERING" : "", d.outputEncoding || d.mapEncoding || d.matcapEncoding || d.envMapEncoding || d.emissiveMapEncoding ? Q.encodings_pars_fragment : "", d.mapEncoding ? Ze("mapTexelToLinear", d.mapEncoding) : "", d.matcapEncoding ? Ze("matcapTexelToLinear", d.matcapEncoding) : "", d.envMapEncoding ? Ze("envMapTexelToLinear", d.envMapEncoding) : "", d.emissiveMapEncoding ?
|
Ze("emissiveMapTexelToLinear", d.emissiveMapEncoding) : "", d.outputEncoding ? Mk("linearToOutputTexel", d.outputEncoding) : "", d.depthPacking ? "#define DEPTH_PACKING " + b.depthPacking : "", "\n"
|
].filter(Vd).join("\n"));
|
k = k.replace(Cg, Bg);
|
k = ni(k, d);
|
k = oi(k, d);
|
m = m.replace(Cg, Bg);
|
m = ni(m, d);
|
m = oi(m, d);
|
k = k.replace(ri, pi);
|
m = m.replace(ri, pi);
|
d.isWebGL2 && !b.isRawShaderMaterial && (n = !1, p = /^\s*#version\s+300\s+es\s*\n/, b.isShaderMaterial && null !== k.match(p) && null !== m.match(p) && (n = !0, k = k.replace(p, ""), m = m.replace(p, "")), g = "#version 300 es\n\n#define attribute in\n#define varying out\n#define texture2D texture\n" +
|
g, h = ["#version 300 es\n\n#define varying in", n ? "" : "out highp vec4 pc_fragColor;", n ? "" : "#define gl_FragColor pc_fragColor", "#define gl_FragDepthEXT gl_FragDepth\n#define texture2D texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLodEXT textureLod\n#define texture2DProjLodEXT textureProjLod\n#define textureCubeLodEXT textureLod\n#define texture2DGradEXT textureGrad\n#define texture2DProjGradEXT textureProjGrad\n#define textureCubeGradEXT textureGrad"].join("\n") +
|
"\n" + h, 0 < x && (g = g.replace("#version 300 es\n", ["#version 300 es\n\n#extension GL_OVR_multiview2 : require", "layout(num_views = " + x + ") in;", "#define VIEW_ID gl_ViewID_OVR"].join("\n")), g = g.replace("uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;", ["uniform mat4 modelViewMatrices[" + x + "];", "uniform mat4 projectionMatrices[" + x + "];", "uniform mat4 viewMatrices[" + x + "];", "uniform mat3 normalMatrices[" + x + "];", "#define modelViewMatrix modelViewMatrices[VIEW_ID]\n#define projectionMatrix projectionMatrices[VIEW_ID]\n#define viewMatrix viewMatrices[VIEW_ID]\n#define normalMatrix normalMatrices[VIEW_ID]"].join("\n")),
|
h = h.replace("#version 300 es\n", "#version 300 es\n\n#extension GL_OVR_multiview2 : require\n#define VIEW_ID gl_ViewID_OVR"), h = h.replace("uniform mat4 viewMatrix;", ["uniform mat4 viewMatrices[" + x + "];", "#define viewMatrix viewMatrices[VIEW_ID]"].join("\n"))));
|
m = h + m;
|
k = ki(f, 35633, g + k);
|
m = ki(f, 35632, m);
|
f.attachShader(q, k);
|
f.attachShader(q, m);
|
void 0 !== b.index0AttributeName ? f.bindAttribLocation(q, 0, b.index0AttributeName) : !0 === d.morphTargets && f.bindAttribLocation(q, 0, "position");
|
f.linkProgram(q);
|
if (e.debug.checkShaderErrors) {
|
e =
|
f.getProgramInfoLog(q).trim();
|
d = f.getShaderInfoLog(k).trim();
|
n = f.getShaderInfoLog(m).trim();
|
y = p = !0;
|
if (!1 === f.getProgramParameter(q, 35714)) p = !1, t = mi(f, k, "vertex"), r = mi(f, m, "fragment"), console.error("THREE.WebGLProgram: shader error: ", f.getError(), "35715", f.getProgramParameter(q, 35715), "gl.getProgramInfoLog", e, t, r);
|
else if ("" !== e) console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()", e);
|
else if ("" === d || "" === n) y = !1;
|
y && (this.diagnostics = {
|
runnable: p,
|
material: b,
|
programLog: e,
|
vertexShader: {
|
log: d,
|
prefix: g
|
},
|
fragmentShader: {
|
log: n,
|
prefix: h
|
}
|
})
|
}
|
f.deleteShader(k);
|
f.deleteShader(m);
|
var B;
|
this.getUniforms = function () {
|
void 0 === B && (B = new Jb(f, q));
|
return B
|
};
|
var C;
|
this.getAttributes = function () {
|
if (void 0 === C) {
|
for (var a = {}, b = f.getProgramParameter(q, 35721), c = 0; c < b; c++) {
|
var d = f.getActiveAttrib(q, c).name;
|
a[d] = f.getAttribLocation(q, d)
|
}
|
C = a
|
}
|
return C
|
};
|
this.destroy = function () {
|
f.deleteProgram(q);
|
this.program = void 0
|
};
|
this.name = c.name;
|
this.id = Vk++;
|
this.cacheKey = a;
|
this.usedTimes = 1;
|
this.program = q;
|
this.vertexShader = k;
|
this.fragmentShader =
|
m;
|
this.numMultiviewViews = x;
|
return this
|
}
|
|
function Wk(e, h, a) {
|
function b(a, b) {
|
if (a) a.isTexture ? c = a.encoding : a.isWebGLRenderTarget && (console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead."), c = a.texture.encoding);
|
else var c = 3E3;
|
3E3 === c && b && (c = 3007);
|
return c
|
}
|
var c = [],
|
d = a.isWebGL2,
|
f = a.logarithmicDepthBuffer,
|
g = a.floatVertexTextures,
|
k = a.precision,
|
m = a.maxVertexUniforms,
|
n = a.vertexTextures,
|
p = {
|
MeshDepthMaterial: "depth",
|
MeshDistanceMaterial: "distanceRGBA",
|
MeshNormalMaterial: "normal",
|
MeshBasicMaterial: "basic",
|
MeshLambertMaterial: "lambert",
|
MeshPhongMaterial: "phong",
|
MeshToonMaterial: "phong",
|
MeshStandardMaterial: "physical",
|
MeshPhysicalMaterial: "physical",
|
MeshMatcapMaterial: "matcap",
|
LineBasicMaterial: "basic",
|
LineDashedMaterial: "dashed",
|
PointsMaterial: "points",
|
ShadowMaterial: "shadow",
|
SpriteMaterial: "sprite"
|
},
|
y = "precision isWebGL2 supportsVertexTextures outputEncoding instancing numMultiviewViews map mapEncoding matcap matcapEncoding envMap envMapMode envMapEncoding envMapCubeUV lightMap aoMap emissiveMap emissiveMapEncoding bumpMap normalMap objectSpaceNormalMap tangentSpaceNormalMap clearcoatNormalMap displacementMap specularMap roughnessMap metalnessMap gradientMap alphaMap combine vertexColors vertexTangents vertexUvs uvsVertexOnly fog useFog fogExp2 flatShading sizeAttenuation logarithmicDepthBuffer skinning maxBones useVertexTexture morphTargets morphNormals maxMorphTargets maxMorphNormals premultipliedAlpha numDirLights numPointLights numSpotLights numHemiLights numRectAreaLights numDirLightShadows numPointLightShadows numSpotLightShadows shadowMapEnabled shadowMapType toneMapping physicallyCorrectLights alphaTest doubleSided flipSided numClippingPlanes numClipIntersection depthPacking dithering sheen".split(" ");
|
this.getParameters = function (c, h, y, l, q, x, B) {
|
var r = p[c.type];
|
if (B.isSkinnedMesh) {
|
var t = B.skeleton.bones;
|
if (g) t = 1024;
|
else {
|
var u = Math.min(Math.floor((m - 20) / 4), t.length);
|
u < t.length ? (console.warn("THREE.WebGLRenderer: Skeleton has " + t.length + " bones. This GPU supports " + u + "."), t = 0) : t = u
|
}
|
} else t = 0;
|
null !== c.precision && (k = a.getMaxPrecision(c.precision), k !== c.precision && console.warn("THREE.WebGLProgram.getParameters:", c.precision, "not supported, using", k, "instead."));
|
u = e.getRenderTarget();
|
return {
|
isWebGL2: d,
|
shaderID: r,
|
precision: k,
|
instancing: !0 === B.isInstancedMesh,
|
supportsVertexTextures: n,
|
numMultiviewViews: u && u.isWebGLMultiviewRenderTarget ? u.numViews : 0,
|
outputEncoding: b(u ? u.texture : null, e.gammaOutput),
|
map: !!c.map,
|
mapEncoding: b(c.map, e.gammaInput),
|
matcap: !!c.matcap,
|
matcapEncoding: b(c.matcap, e.gammaInput),
|
envMap: !!c.envMap,
|
envMapMode: c.envMap && c.envMap.mapping,
|
envMapEncoding: b(c.envMap, e.gammaInput),
|
envMapCubeUV: !!c.envMap && (306 === c.envMap.mapping || 307 === c.envMap.mapping),
|
lightMap: !!c.lightMap,
|
aoMap: !!c.aoMap,
|
emissiveMap: !!c.emissiveMap,
|
emissiveMapEncoding: b(c.emissiveMap, e.gammaInput),
|
bumpMap: !!c.bumpMap,
|
normalMap: !!c.normalMap,
|
objectSpaceNormalMap: 1 === c.normalMapType,
|
tangentSpaceNormalMap: 0 === c.normalMapType,
|
clearcoatNormalMap: !!c.clearcoatNormalMap,
|
displacementMap: !!c.displacementMap,
|
roughnessMap: !!c.roughnessMap,
|
metalnessMap: !!c.metalnessMap,
|
specularMap: !!c.specularMap,
|
alphaMap: !!c.alphaMap,
|
gradientMap: !!c.gradientMap,
|
sheen: !!c.sheen,
|
combine: c.combine,
|
vertexTangents: c.normalMap && c.vertexTangents,
|
vertexColors: c.vertexColors,
|
vertexUvs: !!c.map || !!c.bumpMap || !!c.normalMap || !!c.specularMap || !!c.alphaMap || !!c.emissiveMap || !!c.roughnessMap || !!c.metalnessMap || !!c.clearcoatNormalMap || !!c.displacementMap,
|
uvsVertexOnly: !(c.map || c.bumpMap || c.normalMap || c.specularMap || c.alphaMap || c.emissiveMap || c.roughnessMap || c.metalnessMap || c.clearcoatNormalMap) && !!c.displacementMap,
|
fog: !!l,
|
useFog: c.fog,
|
fogExp2: l && l.isFogExp2,
|
flatShading: c.flatShading,
|
sizeAttenuation: c.sizeAttenuation,
|
logarithmicDepthBuffer: f,
|
skinning: c.skinning && 0 < t,
|
maxBones: t,
|
useVertexTexture: g,
|
morphTargets: c.morphTargets,
|
morphNormals: c.morphNormals,
|
maxMorphTargets: e.maxMorphTargets,
|
maxMorphNormals: e.maxMorphNormals,
|
numDirLights: h.directional.length,
|
numPointLights: h.point.length,
|
numSpotLights: h.spot.length,
|
numRectAreaLights: h.rectArea.length,
|
numHemiLights: h.hemi.length,
|
numDirLightShadows: h.directionalShadowMap.length,
|
numPointLightShadows: h.pointShadowMap.length,
|
numSpotLightShadows: h.spotShadowMap.length,
|
numClippingPlanes: q,
|
numClipIntersection: x,
|
dithering: c.dithering,
|
shadowMapEnabled: e.shadowMap.enabled &&
|
0 < y.length,
|
shadowMapType: e.shadowMap.type,
|
toneMapping: c.toneMapped ? e.toneMapping : 0,
|
physicallyCorrectLights: e.physicallyCorrectLights,
|
premultipliedAlpha: c.premultipliedAlpha,
|
alphaTest: c.alphaTest,
|
doubleSided: 2 === c.side,
|
flipSided: 1 === c.side,
|
depthPacking: void 0 !== c.depthPacking ? c.depthPacking : !1
|
}
|
};
|
this.getProgramCacheKey = function (a, b) {
|
var c = [];
|
b.shaderID ? c.push(b.shaderID) : (c.push(a.fragmentShader), c.push(a.vertexShader));
|
if (void 0 !== a.defines)
|
for (var d in a.defines) c.push(d), c.push(a.defines[d]);
|
for (d =
|
0; d < y.length; d++) c.push(b[y[d]]);
|
c.push(a.onBeforeCompile.toString());
|
c.push(e.gammaOutput);
|
c.push(e.gammaFactor);
|
return c.join()
|
};
|
this.acquireProgram = function (a, b, d, f) {
|
for (var g, k = 0, m = c.length; k < m; k++) {
|
var n = c[k];
|
if (n.cacheKey === f) {
|
g = n;
|
++g.usedTimes;
|
break
|
}
|
}
|
void 0 === g && (g = new Uk(e, h, f, a, b, d), c.push(g));
|
return g
|
};
|
this.releaseProgram = function (a) {
|
if (0 === --a.usedTimes) {
|
var b = c.indexOf(a);
|
c[b] = c[c.length - 1];
|
c.pop();
|
a.destroy()
|
}
|
};
|
this.programs = c
|
}
|
|
function Xk() {
|
var e = new WeakMap;
|
return {
|
get: function (h) {
|
var a =
|
e.get(h);
|
void 0 === a && (a = {}, e.set(h, a));
|
return a
|
},
|
remove: function (h) {
|
e.delete(h)
|
},
|
update: function (h, a, b) {
|
e.get(h)[a] = b
|
},
|
dispose: function () {
|
e = new WeakMap
|
}
|
}
|
}
|
|
function Yk(e, h) {
|
return e.groupOrder !== h.groupOrder ? e.groupOrder - h.groupOrder : e.renderOrder !== h.renderOrder ? e.renderOrder - h.renderOrder : e.program !== h.program ? e.program.id - h.program.id : e.material.id !== h.material.id ? e.material.id - h.material.id : e.z !== h.z ? e.z - h.z : e.id - h.id
|
}
|
|
function Zk(e, h) {
|
return e.groupOrder !== h.groupOrder ? e.groupOrder - h.groupOrder :
|
e.renderOrder !== h.renderOrder ? e.renderOrder - h.renderOrder : e.z !== h.z ? h.z - e.z : e.id - h.id
|
}
|
|
function si() {
|
function e(b, c, e, m, n, p) {
|
var f = h[a];
|
void 0 === f ? (f = {
|
id: b.id,
|
object: b,
|
geometry: c,
|
material: e,
|
program: e.program || d,
|
groupOrder: m,
|
renderOrder: b.renderOrder,
|
z: n,
|
group: p
|
}, h[a] = f) : (f.id = b.id, f.object = b, f.geometry = c, f.material = e, f.program = e.program || d, f.groupOrder = m, f.renderOrder = b.renderOrder, f.z = n, f.group = p);
|
a++;
|
return f
|
}
|
var h = [],
|
a = 0,
|
b = [],
|
c = [],
|
d = {
|
id: -1
|
};
|
return {
|
opaque: b,
|
transparent: c,
|
init: function () {
|
a = 0;
|
b.length =
|
0;
|
c.length = 0
|
},
|
push: function (a, d, h, m, n, p) {
|
a = e(a, d, h, m, n, p);
|
(!0 === h.transparent ? c : b).push(a)
|
},
|
unshift: function (a, d, h, m, n, p) {
|
a = e(a, d, h, m, n, p);
|
(!0 === h.transparent ? c : b).unshift(a)
|
},
|
sort: function () {
|
1 < b.length && b.sort(Yk);
|
1 < c.length && c.sort(Zk)
|
}
|
}
|
}
|
|
function $k() {
|
function e(a) {
|
a = a.target;
|
a.removeEventListener("dispose", e);
|
h.delete(a)
|
}
|
var h = new WeakMap;
|
return {
|
get: function (a, b) {
|
var c = h.get(a);
|
if (void 0 === c) {
|
var d = new si;
|
h.set(a, new WeakMap);
|
h.get(a).set(b, d);
|
a.addEventListener("dispose", e)
|
} else d = c.get(b), void 0 ===
|
d && (d = new si, c.set(b, d));
|
return d
|
},
|
dispose: function () {
|
h = new WeakMap
|
}
|
}
|
}
|
|
function al() {
|
var e = {};
|
return {
|
get: function (h) {
|
if (void 0 !== e[h.id]) return e[h.id];
|
switch (h.type) {
|
case "DirectionalLight":
|
var a = {
|
direction: new q,
|
color: new D,
|
shadow: !1,
|
shadowBias: 0,
|
shadowRadius: 1,
|
shadowMapSize: new z
|
};
|
break;
|
case "SpotLight":
|
a = {
|
position: new q,
|
direction: new q,
|
color: new D,
|
distance: 0,
|
coneCos: 0,
|
penumbraCos: 0,
|
decay: 0,
|
shadow: !1,
|
shadowBias: 0,
|
shadowRadius: 1,
|
shadowMapSize: new z
|
};
|
break;
|
case "PointLight":
|
a = {
|
position: new q,
|
color: new D,
|
distance: 0,
|
decay: 0,
|
shadow: !1,
|
shadowBias: 0,
|
shadowRadius: 1,
|
shadowMapSize: new z,
|
shadowCameraNear: 1,
|
shadowCameraFar: 1E3
|
};
|
break;
|
case "HemisphereLight":
|
a = {
|
direction: new q,
|
skyColor: new D,
|
groundColor: new D
|
};
|
break;
|
case "RectAreaLight":
|
a = {
|
color: new D,
|
position: new q,
|
halfWidth: new q,
|
halfHeight: new q
|
}
|
}
|
return e[h.id] = a
|
}
|
}
|
}
|
|
function bl(e, h) {
|
return (h.castShadow ? 1 : 0) - (e.castShadow ? 1 : 0)
|
}
|
|
function cl() {
|
for (var e = new al, h = {
|
version: 0,
|
hash: {
|
directionalLength: -1,
|
pointLength: -1,
|
spotLength: -1,
|
rectAreaLength: -1,
|
hemiLength: -1,
|
numDirectionalShadows: -1,
|
numPointShadows: -1,
|
numSpotShadows: -1
|
},
|
ambient: [0, 0, 0],
|
probe: [],
|
directional: [],
|
directionalShadowMap: [],
|
directionalShadowMatrix: [],
|
spot: [],
|
spotShadowMap: [],
|
spotShadowMatrix: [],
|
rectArea: [],
|
point: [],
|
pointShadowMap: [],
|
pointShadowMatrix: [],
|
hemi: [],
|
numDirectionalShadows: -1,
|
numPointShadows: -1,
|
numSpotShadows: -1
|
}, a = 0; 9 > a; a++) h.probe.push(new q);
|
var b = new q,
|
c = new I,
|
d = new I;
|
return {
|
setup: function (a, g, k) {
|
for (var f = 0, n = 0, p = 0, y = 0; 9 > y; y++) h.probe[y].set(0, 0, 0);
|
var l = g = 0,
|
r = 0,
|
u = 0,
|
v = 0,
|
q = 0,
|
x =
|
0,
|
B = 0;
|
k = k.matrixWorldInverse;
|
a.sort(bl);
|
y = 0;
|
for (var C = a.length; y < C; y++) {
|
var A = a[y],
|
Ka = A.color,
|
W = A.intensity,
|
Ca = A.distance,
|
oa = A.shadow && A.shadow.map ? A.shadow.map.texture : null;
|
if (A.isAmbientLight) f += Ka.r * W, n += Ka.g * W, p += Ka.b * W;
|
else if (A.isLightProbe)
|
for (oa = 0; 9 > oa; oa++) h.probe[oa].addScaledVector(A.sh.coefficients[oa], W);
|
else if (A.isDirectionalLight) {
|
var H = e.get(A);
|
H.color.copy(A.color).multiplyScalar(A.intensity);
|
H.direction.setFromMatrixPosition(A.matrixWorld);
|
b.setFromMatrixPosition(A.target.matrixWorld);
|
H.direction.sub(b);
|
H.direction.transformDirection(k);
|
if (H.shadow = A.castShadow) W = A.shadow, H.shadowBias = W.bias, H.shadowRadius = W.radius, H.shadowMapSize = W.mapSize, h.directionalShadowMap[g] = oa, h.directionalShadowMatrix[g] = A.shadow.matrix, q++;
|
h.directional[g] = H;
|
g++
|
} else if (A.isSpotLight) {
|
H = e.get(A);
|
H.position.setFromMatrixPosition(A.matrixWorld);
|
H.position.applyMatrix4(k);
|
H.color.copy(Ka).multiplyScalar(W);
|
H.distance = Ca;
|
H.direction.setFromMatrixPosition(A.matrixWorld);
|
b.setFromMatrixPosition(A.target.matrixWorld);
|
H.direction.sub(b);
|
H.direction.transformDirection(k);
|
H.coneCos = Math.cos(A.angle);
|
H.penumbraCos = Math.cos(A.angle * (1 - A.penumbra));
|
H.decay = A.decay;
|
if (H.shadow = A.castShadow) W = A.shadow, H.shadowBias = W.bias, H.shadowRadius = W.radius, H.shadowMapSize = W.mapSize, h.spotShadowMap[r] = oa, h.spotShadowMatrix[r] = A.shadow.matrix, B++;
|
h.spot[r] = H;
|
r++
|
} else if (A.isRectAreaLight) H = e.get(A), H.color.copy(Ka).multiplyScalar(W), H.position.setFromMatrixPosition(A.matrixWorld), H.position.applyMatrix4(k), d.identity(), c.copy(A.matrixWorld),
|
c.premultiply(k), d.extractRotation(c), H.halfWidth.set(.5 * A.width, 0, 0), H.halfHeight.set(0, .5 * A.height, 0), H.halfWidth.applyMatrix4(d), H.halfHeight.applyMatrix4(d), h.rectArea[u] = H, u++;
|
else if (A.isPointLight) {
|
H = e.get(A);
|
H.position.setFromMatrixPosition(A.matrixWorld);
|
H.position.applyMatrix4(k);
|
H.color.copy(A.color).multiplyScalar(A.intensity);
|
H.distance = A.distance;
|
H.decay = A.decay;
|
if (H.shadow = A.castShadow) W = A.shadow, H.shadowBias = W.bias, H.shadowRadius = W.radius, H.shadowMapSize = W.mapSize, H.shadowCameraNear =
|
W.camera.near, H.shadowCameraFar = W.camera.far, h.pointShadowMap[l] = oa, h.pointShadowMatrix[l] = A.shadow.matrix, x++;
|
h.point[l] = H;
|
l++
|
} else A.isHemisphereLight && (H = e.get(A), H.direction.setFromMatrixPosition(A.matrixWorld), H.direction.transformDirection(k), H.direction.normalize(), H.skyColor.copy(A.color).multiplyScalar(W), H.groundColor.copy(A.groundColor).multiplyScalar(W), h.hemi[v] = H, v++)
|
}
|
h.ambient[0] = f;
|
h.ambient[1] = n;
|
h.ambient[2] = p;
|
a = h.hash;
|
if (a.directionalLength !== g || a.pointLength !== l || a.spotLength !==
|
r || a.rectAreaLength !== u || a.hemiLength !== v || a.numDirectionalShadows !== q || a.numPointShadows !== x || a.numSpotShadows !== B) h.directional.length = g, h.spot.length = r, h.rectArea.length = u, h.point.length = l, h.hemi.length = v, h.directionalShadowMap.length = q, h.pointShadowMap.length = x, h.spotShadowMap.length = B, h.directionalShadowMatrix.length = q, h.pointShadowMatrix.length = x, h.spotShadowMatrix.length = B, a.directionalLength = g, a.pointLength = l, a.spotLength = r, a.rectAreaLength = u, a.hemiLength = v, a.numDirectionalShadows = q, a.numPointShadows =
|
x, a.numSpotShadows = B, h.version = dl++
|
},
|
state: h
|
}
|
}
|
|
function ti() {
|
var e = new cl,
|
h = [],
|
a = [];
|
return {
|
init: function () {
|
h.length = 0;
|
a.length = 0
|
},
|
state: {
|
lightsArray: h,
|
shadowsArray: a,
|
lights: e
|
},
|
setupLights: function (b) {
|
e.setup(h, a, b)
|
},
|
pushLight: function (a) {
|
h.push(a)
|
},
|
pushShadow: function (b) {
|
a.push(b)
|
}
|
}
|
}
|
|
function el() {
|
function e(a) {
|
a = a.target;
|
a.removeEventListener("dispose", e);
|
h.delete(a)
|
}
|
var h = new WeakMap;
|
return {
|
get: function (a, b) {
|
if (!1 === h.has(a)) {
|
var c = new ti;
|
h.set(a, new WeakMap);
|
h.get(a).set(b, c);
|
a.addEventListener("dispose",
|
e)
|
} else !1 === h.get(a).has(b) ? (c = new ti, h.get(a).set(b, c)) : c = h.get(a).get(b);
|
return c
|
},
|
dispose: function () {
|
h = new WeakMap
|
}
|
}
|
}
|
|
function Kb(e) {
|
R.call(this);
|
this.type = "MeshDepthMaterial";
|
this.depthPacking = 3200;
|
this.morphTargets = this.skinning = !1;
|
this.displacementMap = this.alphaMap = this.map = null;
|
this.displacementScale = 1;
|
this.displacementBias = 0;
|
this.wireframe = !1;
|
this.wireframeLinewidth = 1;
|
this.fog = !1;
|
this.setValues(e)
|
}
|
|
function Lb(e) {
|
R.call(this);
|
this.type = "MeshDistanceMaterial";
|
this.referencePosition = new q;
|
this.nearDistance =
|
1;
|
this.farDistance = 1E3;
|
this.morphTargets = this.skinning = !1;
|
this.displacementMap = this.alphaMap = this.map = null;
|
this.displacementScale = 1;
|
this.displacementBias = 0;
|
this.fog = !1;
|
this.setValues(e)
|
}
|
|
function ui(e, h, a) {
|
function b(a, b, c) {
|
c = a << 0 | b << 1 | c << 2;
|
var d = p[c];
|
void 0 === d && (d = new Kb({
|
depthPacking: 3201,
|
morphTargets: a,
|
skinning: b
|
}), p[c] = d);
|
return d
|
}
|
|
function c(a, b, c) {
|
c = a << 0 | b << 1 | c << 2;
|
var d = l[c];
|
void 0 === d && (d = new Lb({
|
morphTargets: a,
|
skinning: b
|
}), l[c] = d);
|
return d
|
}
|
|
function d(a, d, f, h, g, k) {
|
var m = a.geometry,
|
n = b,
|
p = a.customDepthMaterial;
|
!0 === f.isPointLight && (n = c, p = a.customDistanceMaterial);
|
void 0 === p ? (p = !1, !0 === d.morphTargets && (!0 === m.isBufferGeometry ? p = m.morphAttributes && m.morphAttributes.position && 0 < m.morphAttributes.position.length : !0 === m.isGeometry && (p = m.morphTargets && 0 < m.morphTargets.length)), m = !1, !0 === a.isSkinnedMesh && (!0 === d.skinning ? m = !0 : console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:", a)), a = n(p, m, !0 === a.isInstancedMesh)) : a = p;
|
e.localClippingEnabled && !0 === d.clipShadows && 0 !== d.clippingPlanes.length &&
|
(p = a.uuid, n = d.uuid, m = t[p], void 0 === m && (m = {}, t[p] = m), p = m[n], void 0 === p && (p = a.clone(), m[n] = p), a = p);
|
a.visible = d.visible;
|
a.wireframe = d.wireframe;
|
a.side = 3 === k ? null !== d.shadowSide ? d.shadowSide : d.side : null !== d.shadowSide ? d.shadowSide : r[d.side];
|
a.clipShadows = d.clipShadows;
|
a.clippingPlanes = d.clippingPlanes;
|
a.clipIntersection = d.clipIntersection;
|
a.wireframeLinewidth = d.wireframeLinewidth;
|
a.linewidth = d.linewidth;
|
!0 === f.isPointLight && !0 === a.isMeshDistanceMaterial && (a.referencePosition.setFromMatrixPosition(f.matrixWorld),
|
a.nearDistance = h, a.farDistance = g);
|
return a
|
}
|
|
function f(a, b, c, k, m) {
|
if (!1 !== a.visible) {
|
if (a.layers.test(b.layers) && (a.isMesh || a.isLine || a.isPoints) && (a.castShadow || a.receiveShadow && 3 === m) && (!a.frustumCulled || g.intersectsObject(a))) {
|
a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse, a.matrixWorld);
|
var n = h.update(a),
|
p = a.material;
|
if (Array.isArray(p))
|
for (var r = n.groups, l = 0, y = r.length; l < y; l++) {
|
var t = r[l],
|
u = p[t.materialIndex];
|
u && u.visible && (u = d(a, u, k, c.near, c.far, m), e.renderBufferDirect(c, null, n, u, a,
|
t))
|
} else p.visible && (u = d(a, p, k, c.near, c.far, m), e.renderBufferDirect(c, null, n, u, a, null))
|
}
|
a = a.children;
|
n = 0;
|
for (p = a.length; n < p; n++) f(a[n], b, c, k, m)
|
}
|
}
|
var g = new Sd,
|
k = new z,
|
m = new z,
|
n = new ca,
|
p = [],
|
l = [],
|
t = {},
|
r = {
|
0: 1,
|
1: 0,
|
2: 2
|
},
|
u = new Aa({
|
defines: {
|
SAMPLE_RATE: .25,
|
HALF_SAMPLE_RATE: .125
|
},
|
uniforms: {
|
shadow_pass: {
|
value: null
|
},
|
resolution: {
|
value: new z
|
},
|
radius: {
|
value: 4
|
}
|
},
|
vertexShader: "void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",
|
fragmentShader: "uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include <packing>\nvoid main() {\n float mean = 0.0;\n float squared_mean = 0.0;\n \n\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\n #ifdef HORIZONAL_PASS\n vec2 distribution = decodeHalfRGBA ( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\n mean += distribution.x;\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n #else\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\n mean += depth;\n squared_mean += depth * depth;\n #endif\n }\n mean = mean * HALF_SAMPLE_RATE;\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\n float std_dev = pow( squared_mean - mean * mean, 0.5 );\n gl_FragColor = encodeHalfRGBA( vec2( mean, std_dev ) );\n}"
|
}),
|
v = u.clone();
|
v.defines.HORIZONAL_PASS = 1;
|
var q = new G;
|
q.setAttribute("position", new O(new Float32Array([-1, -1, .5, 3, -1, .5, -1, 3, .5]), 3));
|
var x = new ia(q, u),
|
B = this;
|
this.enabled = !1;
|
this.autoUpdate = !0;
|
this.needsUpdate = !1;
|
this.type = 1;
|
this.render = function (b, c, d) {
|
if (!1 !== B.enabled && (!1 !== B.autoUpdate || !1 !== B.needsUpdate) && 0 !== b.length) {
|
var p = e.getRenderTarget(),
|
r = e.getActiveCubeFace(),
|
l = e.getActiveMipmapLevel(),
|
y = e.state;
|
y.setBlending(0);
|
y.buffers.color.setClear(1, 1, 1, 1);
|
y.buffers.depth.setTest(!0);
|
y.setScissorTest(!1);
|
for (var t = 0, q = b.length; t < q; t++) {
|
var w = b[t],
|
C = w.shadow;
|
if (void 0 === C) console.warn("THREE.WebGLShadowMap:", w, "has no shadow.");
|
else {
|
k.copy(C.mapSize);
|
var A = C.getFrameExtents();
|
k.multiply(A);
|
m.copy(C.mapSize);
|
if (k.x > a || k.y > a) console.warn("THREE.WebGLShadowMap:", w, "has shadow exceeding max texture size, reducing"), k.x > a && (m.x = Math.floor(a / A.x), k.x = m.x * A.x, C.mapSize.x = m.x), k.y > a && (m.y = Math.floor(a / A.y), k.y = m.y * A.y, C.mapSize.y = m.y);
|
null !== C.map || C.isPointLightShadow || 3 !== this.type || (A = {
|
minFilter: 1006,
|
magFilter: 1006,
|
format: 1023
|
}, C.map = new sa(k.x, k.y, A), C.map.texture.name = w.name + ".shadowMap", C.mapPass = new sa(k.x, k.y, A), C.camera.updateProjectionMatrix());
|
null === C.map && (A = {
|
minFilter: 1003,
|
magFilter: 1003,
|
format: 1023
|
}, C.map = new sa(k.x, k.y, A), C.map.texture.name = w.name + ".shadowMap", C.camera.updateProjectionMatrix());
|
e.setRenderTarget(C.map);
|
e.clear();
|
A = C.getViewportCount();
|
for (var z = 0; z < A; z++) {
|
var Ka = C.getViewport(z);
|
n.set(m.x * Ka.x, m.y * Ka.y, m.x * Ka.z, m.y * Ka.w);
|
y.viewport(n);
|
C.updateMatrices(w, z);
|
g = C.getFrustum();
|
f(c,
|
d, C.camera, w, this.type)
|
}
|
C.isPointLightShadow || 3 !== this.type || (w = C, C = d, A = h.update(x), u.uniforms.shadow_pass.value = w.map.texture, u.uniforms.resolution.value = w.mapSize, u.uniforms.radius.value = w.radius, e.setRenderTarget(w.mapPass), e.clear(), e.renderBufferDirect(C, null, A, u, x, null), v.uniforms.shadow_pass.value = w.mapPass.texture, v.uniforms.resolution.value = w.mapSize, v.uniforms.radius.value = w.radius, e.setRenderTarget(w.map), e.clear(), e.renderBufferDirect(C, null, A, v, x, null))
|
}
|
}
|
B.needsUpdate = !1;
|
e.setRenderTarget(p,
|
r, l)
|
}
|
}
|
}
|
|
function fl(e, h, a) {
|
function b(a, b, c) {
|
var d = new Uint8Array(4),
|
f = e.createTexture();
|
e.bindTexture(a, f);
|
e.texParameteri(a, 10241, 9728);
|
e.texParameteri(a, 10240, 9728);
|
for (a = 0; a < c; a++) e.texImage2D(b + a, 0, 6408, 1, 1, 0, 6408, 5121, d);
|
return f
|
}
|
|
function c(a, b) {
|
q[a] = 1;
|
0 === w[a] && (e.enableVertexAttribArray(a), w[a] = 1);
|
x[a] !== b && ((l ? e : h.get("ANGLE_instanced_arrays"))[l ? "vertexAttribDivisor" : "vertexAttribDivisorANGLE"](a, b), x[a] = b)
|
}
|
|
function d(a) {
|
!0 !== B[a] && (e.enable(a), B[a] = !0)
|
}
|
|
function f(a) {
|
!1 !== B[a] && (e.disable(a),
|
B[a] = !1)
|
}
|
|
function g(a, b, c, h, g, k, m, n) {
|
if (0 === a) A && (f(3042), A = !1);
|
else if (A || (d(3042), A = !0), 5 !== a) {
|
if (a !== z || n !== E) {
|
if (100 !== W || 100 !== H) e.blendEquation(32774), H = W = 100;
|
if (n) switch (a) {
|
case 1:
|
e.blendFuncSeparate(1, 771, 1, 771);
|
break;
|
case 2:
|
e.blendFunc(1, 1);
|
break;
|
case 3:
|
e.blendFuncSeparate(0, 0, 769, 771);
|
break;
|
case 4:
|
e.blendFuncSeparate(0, 768, 0, 770);
|
break;
|
default:
|
console.error("THREE.WebGLState: Invalid blending: ", a)
|
} else switch (a) {
|
case 1:
|
e.blendFuncSeparate(770, 771, 1, 771);
|
break;
|
case 2:
|
e.blendFunc(770, 1);
|
break;
|
case 3:
|
e.blendFunc(0, 769);
|
break;
|
case 4:
|
e.blendFunc(0, 768);
|
break;
|
default:
|
console.error("THREE.WebGLState: Invalid blending: ", a)
|
}
|
F = Wd = oa = Ca = null;
|
z = a;
|
E = n
|
}
|
} else {
|
g = g || b;
|
k = k || c;
|
m = m || h;
|
if (b !== W || g !== H) e.blendEquationSeparate(Uc[b], Uc[g]), W = b, H = g;
|
if (c !== Ca || h !== oa || k !== Wd || m !== F) e.blendFuncSeparate(L[c], L[h], L[k], L[m]), Ca = c, oa = h, Wd = k, F = m;
|
z = a;
|
E = null
|
}
|
}
|
|
function k(a) {
|
G !== a && (a ? e.frontFace(2304) : e.frontFace(2305), G = a)
|
}
|
|
function m(a) {
|
0 !== a ? (d(2884), a !== D && (1 === a ? e.cullFace(1029) : 2 === a ? e.cullFace(1028) : e.cullFace(1032))) :
|
f(2884);
|
D = a
|
}
|
|
function n(a, b, c) {
|
if (a) {
|
if (d(32823), M !== b || P !== c) e.polygonOffset(b, c), M = b, P = c
|
} else f(32823)
|
}
|
|
function p(a) {
|
void 0 === a && (a = 33984 + O - 1);
|
N !== a && (e.activeTexture(a), N = a)
|
}
|
var l = a.isWebGL2,
|
t = new function () {
|
var a = !1,
|
b = new ca,
|
c = null,
|
d = new ca(0, 0, 0, 0);
|
return {
|
setMask: function (b) {
|
c === b || a || (e.colorMask(b, b, b, b), c = b)
|
},
|
setLocked: function (b) {
|
a = b
|
},
|
setClear: function (a, c, f, h, g) {
|
!0 === g && (a *= h, c *= h, f *= h);
|
b.set(a, c, f, h);
|
!1 === d.equals(b) && (e.clearColor(a, c, f, h), d.copy(b))
|
},
|
reset: function () {
|
a = !1;
|
c = null;
|
d.set(-1,
|
0, 0, 0)
|
}
|
}
|
},
|
r = new function () {
|
var a = !1,
|
b = null,
|
c = null,
|
h = null;
|
return {
|
setTest: function (a) {
|
a ? d(2929) : f(2929)
|
},
|
setMask: function (c) {
|
b === c || a || (e.depthMask(c), b = c)
|
},
|
setFunc: function (a) {
|
if (c !== a) {
|
if (a) switch (a) {
|
case 0:
|
e.depthFunc(512);
|
break;
|
case 1:
|
e.depthFunc(519);
|
break;
|
case 2:
|
e.depthFunc(513);
|
break;
|
case 3:
|
e.depthFunc(515);
|
break;
|
case 4:
|
e.depthFunc(514);
|
break;
|
case 5:
|
e.depthFunc(518);
|
break;
|
case 6:
|
e.depthFunc(516);
|
break;
|
case 7:
|
e.depthFunc(517);
|
break;
|
default:
|
e.depthFunc(515)
|
} else e.depthFunc(515);
|
c = a
|
}
|
},
|
setLocked: function (b) {
|
a =
|
b
|
},
|
setClear: function (a) {
|
h !== a && (e.clearDepth(a), h = a)
|
},
|
reset: function () {
|
a = !1;
|
h = c = b = null
|
}
|
}
|
},
|
u = new function () {
|
var a = !1,
|
b = null,
|
c = null,
|
h = null,
|
g = null,
|
k = null,
|
m = null,
|
n = null,
|
p = null;
|
return {
|
setTest: function (b) {
|
a || (b ? d(2960) : f(2960))
|
},
|
setMask: function (c) {
|
b === c || a || (e.stencilMask(c), b = c)
|
},
|
setFunc: function (a, b, d) {
|
if (c !== a || h !== b || g !== d) e.stencilFunc(a, b, d), c = a, h = b, g = d
|
},
|
setOp: function (a, b, c) {
|
if (k !== a || m !== b || n !== c) e.stencilOp(a, b, c), k = a, m = b, n = c
|
},
|
setLocked: function (b) {
|
a = b
|
},
|
setClear: function (a) {
|
p !== a && (e.clearStencil(a),
|
p = a)
|
},
|
reset: function () {
|
a = !1;
|
p = n = m = k = g = h = c = b = null
|
}
|
}
|
};
|
a = e.getParameter(34921);
|
var q = new Uint8Array(a),
|
w = new Uint8Array(a),
|
x = new Uint8Array(a),
|
B = {},
|
C = null,
|
A = null,
|
z = null,
|
W = null,
|
Ca = null,
|
oa = null,
|
H = null,
|
Wd = null,
|
F = null,
|
E = !1,
|
G = null,
|
D = null,
|
K = null,
|
M = null,
|
P = null,
|
O = e.getParameter(35661),
|
R = !1;
|
a = 0;
|
a = e.getParameter(7938); - 1 !== a.indexOf("WebGL") ? (a = parseFloat(/^WebGL ([0-9])/.exec(a)[1]), R = 1 <= a) : -1 !== a.indexOf("OpenGL ES") && (a = parseFloat(/^OpenGL ES ([0-9])/.exec(a)[1]), R = 2 <= a);
|
var N = null,
|
Ua = {},
|
jc = new ca,
|
vi = new ca,
|
Eg = {};
|
Eg[3553] = b(3553, 3553, 1);
|
Eg[34067] = b(34067, 34069, 6);
|
t.setClear(0, 0, 0, 1);
|
r.setClear(1);
|
u.setClear(0);
|
d(2929);
|
r.setFunc(3);
|
k(!1);
|
m(1);
|
d(2884);
|
g(0);
|
var Uc = {
|
100: 32774,
|
101: 32778,
|
102: 32779
|
};
|
l ? (Uc[103] = 32775, Uc[104] = 32776) : (a = h.get("EXT_blend_minmax"), null !== a && (Uc[103] = a.MIN_EXT, Uc[104] = a.MIN_EXT));
|
var L = {
|
200: 0,
|
201: 1,
|
202: 768,
|
204: 770,
|
210: 776,
|
208: 774,
|
206: 772,
|
203: 769,
|
205: 771,
|
209: 775,
|
207: 773
|
};
|
return {
|
buffers: {
|
color: t,
|
depth: r,
|
stencil: u
|
},
|
initAttributes: function () {
|
for (var a = 0, b = q.length; a < b; a++) q[a] = 0
|
},
|
enableAttribute: function (a) {
|
c(a,
|
0)
|
},
|
enableAttributeAndDivisor: c,
|
disableUnusedAttributes: function () {
|
for (var a = 0, b = w.length; a !== b; ++a) w[a] !== q[a] && (e.disableVertexAttribArray(a), w[a] = 0)
|
},
|
enable: d,
|
disable: f,
|
useProgram: function (a) {
|
return C !== a ? (e.useProgram(a), C = a, !0) : !1
|
},
|
setBlending: g,
|
setMaterial: function (a, b) {
|
2 === a.side ? f(2884) : d(2884);
|
var c = 1 === a.side;
|
b && (c = !c);
|
k(c);
|
1 === a.blending && !1 === a.transparent ? g(0) : g(a.blending, a.blendEquation, a.blendSrc, a.blendDst, a.blendEquationAlpha, a.blendSrcAlpha, a.blendDstAlpha, a.premultipliedAlpha);
|
r.setFunc(a.depthFunc);
|
r.setTest(a.depthTest);
|
r.setMask(a.depthWrite);
|
t.setMask(a.colorWrite);
|
b = a.stencilWrite;
|
u.setTest(b);
|
b && (u.setMask(a.stencilWriteMask), u.setFunc(a.stencilFunc, a.stencilRef, a.stencilFuncMask), u.setOp(a.stencilFail, a.stencilZFail, a.stencilZPass));
|
n(a.polygonOffset, a.polygonOffsetFactor, a.polygonOffsetUnits)
|
},
|
setFlipSided: k,
|
setCullFace: m,
|
setLineWidth: function (a) {
|
a !== K && (R && e.lineWidth(a), K = a)
|
},
|
setPolygonOffset: n,
|
setScissorTest: function (a) {
|
a ? d(3089) : f(3089)
|
},
|
activeTexture: p,
|
bindTexture: function (a,
|
b) {
|
null === N && p();
|
var c = Ua[N];
|
void 0 === c && (c = {
|
type: void 0,
|
texture: void 0
|
}, Ua[N] = c);
|
if (c.type !== a || c.texture !== b) e.bindTexture(a, b || Eg[a]), c.type = a, c.texture = b
|
},
|
unbindTexture: function () {
|
var a = Ua[N];
|
void 0 !== a && void 0 !== a.type && (e.bindTexture(a.type, null), a.type = void 0, a.texture = void 0)
|
},
|
compressedTexImage2D: function () {
|
try {
|
e.compressedTexImage2D.apply(e, arguments)
|
} catch (Y) {
|
console.error("THREE.WebGLState:", Y)
|
}
|
},
|
texImage2D: function () {
|
try {
|
e.texImage2D.apply(e, arguments)
|
} catch (Y) {
|
console.error("THREE.WebGLState:",
|
Y)
|
}
|
},
|
texImage3D: function () {
|
try {
|
e.texImage3D.apply(e, arguments)
|
} catch (Y) {
|
console.error("THREE.WebGLState:", Y)
|
}
|
},
|
scissor: function (a) {
|
!1 === jc.equals(a) && (e.scissor(a.x, a.y, a.z, a.w), jc.copy(a))
|
},
|
viewport: function (a) {
|
!1 === vi.equals(a) && (e.viewport(a.x, a.y, a.z, a.w), vi.copy(a))
|
},
|
reset: function () {
|
for (var a = 0; a < w.length; a++) 1 === w[a] && (e.disableVertexAttribArray(a), w[a] = 0);
|
B = {};
|
N = null;
|
Ua = {};
|
D = G = z = C = null;
|
t.reset();
|
r.reset();
|
u.reset()
|
}
|
}
|
}
|
|
function gl(e, h, a, b, c, d, f) {
|
function g(a, b) {
|
return K ? new OffscreenCanvas(a,
|
b) : V.createElementNS("http://www.w3.org/1999/xhtml", "canvas")
|
}
|
|
function k(a, b, c, d) {
|
var e = 1;
|
if (a.width > d || a.height > d) e = d / Math.max(a.width, a.height);
|
if (1 > e || !0 === b) {
|
if ("undefined" !== typeof HTMLImageElement && a instanceof HTMLImageElement || "undefined" !== typeof HTMLCanvasElement && a instanceof HTMLCanvasElement || "undefined" !== typeof ImageBitmap && a instanceof ImageBitmap) return d = b ? N.floorPowerOfTwo : Math.floor, b = d(e * a.width), e = d(e * a.height), void 0 === D && (D = g(b, e)), c = c ? g(b, e) : D, c.width = b, c.height = e, c.getContext("2d").drawImage(a,
|
0, 0, b, e), console.warn("THREE.WebGLRenderer: Texture has been resized from (" + a.width + "x" + a.height + ") to (" + b + "x" + e + ")."), c;
|
"data" in a && console.warn("THREE.WebGLRenderer: Image in DataTexture is too big (" + a.width + "x" + a.height + ").")
|
}
|
return a
|
}
|
|
function m(a) {
|
return N.isPowerOfTwo(a.width) && N.isPowerOfTwo(a.height)
|
}
|
|
function n(a, b) {
|
return a.generateMipmaps && b && 1003 !== a.minFilter && 1006 !== a.minFilter
|
}
|
|
function p(a, c, d, f) {
|
e.generateMipmap(a);
|
b.get(c).__maxMipLevel = Math.log(Math.max(d, f)) * Math.LOG2E
|
}
|
|
function l(a,
|
b) {
|
if (!1 === oa) return a;
|
var c = a;
|
6403 === a && (5126 === b && (c = 33326), 5131 === b && (c = 33325), 5121 === b && (c = 33321));
|
6407 === a && (5126 === b && (c = 34837), 5131 === b && (c = 34843), 5121 === b && (c = 32849));
|
6408 === a && (5126 === b && (c = 34836), 5131 === b && (c = 34842), 5121 === b && (c = 32856));
|
33325 === c || 33326 === c || 34842 === c || 34836 === c ? h.get("EXT_color_buffer_float") : (34843 === c || 34837 === c) && console.warn("THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.");
|
return c
|
}
|
|
function t(a) {
|
return 1003 === a ||
|
1004 === a || 1005 === a ? 9728 : 9729
|
}
|
|
function r(a) {
|
a = a.target;
|
a.removeEventListener("dispose", r);
|
var c = b.get(a);
|
void 0 !== c.__webglInit && (e.deleteTexture(c.__webglTexture), b.remove(a));
|
a.isVideoTexture && G.delete(a);
|
f.memory.textures--
|
}
|
|
function u(a) {
|
a = a.target;
|
a.removeEventListener("dispose", u);
|
var c = b.get(a),
|
d = b.get(a.texture);
|
if (a) {
|
void 0 !== d.__webglTexture && e.deleteTexture(d.__webglTexture);
|
a.depthTexture && a.depthTexture.dispose();
|
if (a.isWebGLRenderTargetCube)
|
for (d = 0; 6 > d; d++) e.deleteFramebuffer(c.__webglFramebuffer[d]),
|
c.__webglDepthbuffer && e.deleteRenderbuffer(c.__webglDepthbuffer[d]);
|
else e.deleteFramebuffer(c.__webglFramebuffer), c.__webglDepthbuffer && e.deleteRenderbuffer(c.__webglDepthbuffer);
|
if (a.isWebGLMultiviewRenderTarget) {
|
e.deleteTexture(c.__webglColorTexture);
|
e.deleteTexture(c.__webglDepthStencilTexture);
|
f.memory.textures -= 2;
|
d = 0;
|
for (var h = c.__webglViewFramebuffers.length; d < h; d++) e.deleteFramebuffer(c.__webglViewFramebuffers[d])
|
}
|
b.remove(a.texture);
|
b.remove(a)
|
}
|
f.memory.textures--
|
}
|
|
function q(c, d) {
|
var e = b.get(c);
|
if (c.isVideoTexture) {
|
var h = f.render.frame;
|
G.get(c) !== h && (G.set(c, h), c.update())
|
}
|
if (0 < c.version && e.__version !== c.version)
|
if (h = c.image, void 0 === h) console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");
|
else if (!1 === h.complete) console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");
|
else {
|
A(e, c, d);
|
return
|
}
|
a.activeTexture(33984 + d);
|
a.bindTexture(3553, e.__webglTexture)
|
}
|
|
function w(c, f) {
|
if (6 === c.image.length) {
|
var h = b.get(c);
|
if (0 < c.version && h.__version !==
|
c.version) {
|
C(h, c);
|
a.activeTexture(33984 + f);
|
a.bindTexture(34067, h.__webglTexture);
|
e.pixelStorei(37440, c.flipY);
|
var g = c && c.isCompressedTexture;
|
f = c.image[0] && c.image[0].isDataTexture;
|
for (var r = [], y = 0; 6 > y; y++) r[y] = g || f ? f ? c.image[y].image : c.image[y] : k(c.image[y], !1, !0, Wd);
|
var t = r[0],
|
u = m(t) || oa,
|
q = d.convert(c.format),
|
v = d.convert(c.type),
|
x = l(q, v);
|
B(34067, c, u);
|
if (g) {
|
for (y = 0; 6 > y; y++) {
|
var w = r[y].mipmaps;
|
for (g = 0; g < w.length; g++) {
|
var A = w[g];
|
1023 !== c.format && 1022 !== c.format ? null !== q ? a.compressedTexImage2D(34069 +
|
y, g, x, A.width, A.height, 0, A.data) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()") : a.texImage2D(34069 + y, g, x, A.width, A.height, 0, q, v, A.data)
|
}
|
}
|
h.__maxMipLevel = w.length - 1
|
} else {
|
w = c.mipmaps;
|
for (y = 0; 6 > y; y++)
|
if (f)
|
for (a.texImage2D(34069 + y, 0, x, r[y].width, r[y].height, 0, q, v, r[y].data), g = 0; g < w.length; g++) A = w[g], A = A.image[y].image, a.texImage2D(34069 + y, g + 1, x, A.width, A.height, 0, q, v, A.data);
|
else
|
for (a.texImage2D(34069 + y, 0, x, q, v, r[y]), g = 0; g < w.length; g++) A =
|
w[g], a.texImage2D(34069 + y, g + 1, x, q, v, A.image[y]);
|
h.__maxMipLevel = w.length
|
}
|
n(c, u) && p(34067, c, t.width, t.height);
|
h.__version = c.version;
|
if (c.onUpdate) c.onUpdate(c)
|
} else a.activeTexture(33984 + f), a.bindTexture(34067, h.__webglTexture)
|
}
|
}
|
|
function x(c, d) {
|
a.activeTexture(33984 + d);
|
a.bindTexture(34067, b.get(c).__webglTexture)
|
}
|
|
function B(a, d, f) {
|
f ? (e.texParameteri(a, 10242, P[d.wrapS]), e.texParameteri(a, 10243, P[d.wrapT]), 32879 !== a && 35866 !== a || e.texParameteri(a, 32882, P[d.wrapR]), e.texParameteri(a, 10240, R[d.magFilter]),
|
e.texParameteri(a, 10241, R[d.minFilter])) : (e.texParameteri(a, 10242, 33071), e.texParameteri(a, 10243, 33071), 32879 !== a && 35866 !== a || e.texParameteri(a, 32882, 33071), 1001 === d.wrapS && 1001 === d.wrapT || console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."), e.texParameteri(a, 10240, t(d.magFilter)), e.texParameteri(a, 10241, t(d.minFilter)), 1003 !== d.minFilter && 1006 !== d.minFilter && console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter."));
|
!(f = h.get("EXT_texture_filter_anisotropic")) || 1015 === d.type && null === h.get("OES_texture_float_linear") || 1016 === d.type && null === (oa || h.get("OES_texture_half_float_linear")) || !(1 < d.anisotropy || b.get(d).__currentAnisotropy) || (e.texParameterf(a, f.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(d.anisotropy, c.getMaxAnisotropy())), b.get(d).__currentAnisotropy = d.anisotropy)
|
}
|
|
function C(a, b) {
|
void 0 === a.__webglInit && (a.__webglInit = !0, b.addEventListener("dispose", r), a.__webglTexture = e.createTexture(), f.memory.textures++)
|
}
|
|
function A(b, c, f) {
|
var h = 3553;
|
c.isDataTexture2DArray && (h = 35866);
|
c.isDataTexture3D && (h = 32879);
|
C(b, c);
|
a.activeTexture(33984 + f);
|
a.bindTexture(h, b.__webglTexture);
|
e.pixelStorei(37440, c.flipY);
|
e.pixelStorei(37441, c.premultiplyAlpha);
|
e.pixelStorei(3317, c.unpackAlignment);
|
f = oa ? !1 : 1001 !== c.wrapS || 1001 !== c.wrapT || 1003 !== c.minFilter && 1006 !== c.minFilter;
|
f = f && !1 === m(c.image);
|
f = k(c.image, f, !1, F);
|
var g = m(f) || oa,
|
y = d.convert(c.format),
|
r = d.convert(c.type),
|
t = l(y, r);
|
B(h, c, g);
|
var u = c.mipmaps;
|
if (c.isDepthTexture) {
|
t = 6402;
|
if (1015 === c.type) {
|
if (!1 === oa) throw Error("Float Depth Texture only supported in WebGL2.0");
|
t = 36012
|
} else oa && (t = 33189);
|
1026 === c.format && 6402 === t && 1012 !== c.type && 1014 !== c.type && (console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."), c.type = 1012, r = d.convert(c.type));
|
1027 === c.format && (t = 34041, 1020 !== c.type && (console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."), c.type = 1020, r = d.convert(c.type)));
|
a.texImage2D(3553,
|
0, t, f.width, f.height, 0, y, r, null)
|
} else if (c.isDataTexture)
|
if (0 < u.length && g) {
|
for (var q = 0, v = u.length; q < v; q++) h = u[q], a.texImage2D(3553, q, t, h.width, h.height, 0, y, r, h.data);
|
c.generateMipmaps = !1;
|
b.__maxMipLevel = u.length - 1
|
} else a.texImage2D(3553, 0, t, f.width, f.height, 0, y, r, f.data), b.__maxMipLevel = 0;
|
else if (c.isCompressedTexture) {
|
q = 0;
|
for (v = u.length; q < v; q++) h = u[q], 1023 !== c.format && 1022 !== c.format ? null !== y ? a.compressedTexImage2D(3553, q, t, h.width, h.height, 0, h.data) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()") :
|
a.texImage2D(3553, q, t, h.width, h.height, 0, y, r, h.data);
|
b.__maxMipLevel = u.length - 1
|
} else if (c.isDataTexture2DArray) a.texImage3D(35866, 0, t, f.width, f.height, f.depth, 0, y, r, f.data), b.__maxMipLevel = 0;
|
else if (c.isDataTexture3D) a.texImage3D(32879, 0, t, f.width, f.height, f.depth, 0, y, r, f.data), b.__maxMipLevel = 0;
|
else if (0 < u.length && g) {
|
q = 0;
|
for (v = u.length; q < v; q++) h = u[q], a.texImage2D(3553, q, t, y, r, h);
|
c.generateMipmaps = !1;
|
b.__maxMipLevel = u.length - 1
|
} else a.texImage2D(3553, 0, t, y, r, f), b.__maxMipLevel = 0;
|
n(c, g) && p(3553, c, f.width,
|
f.height);
|
b.__version = c.version;
|
if (c.onUpdate) c.onUpdate(c)
|
}
|
|
function z(c, f, h, g) {
|
var k = d.convert(f.texture.format),
|
m = d.convert(f.texture.type),
|
n = l(k, m);
|
a.texImage2D(g, 0, n, f.width, f.height, 0, k, m, null);
|
e.bindFramebuffer(36160, c);
|
e.framebufferTexture2D(36160, h, g, b.get(f.texture).__webglTexture, 0);
|
e.bindFramebuffer(36160, null)
|
}
|
|
function W(a, b, c) {
|
e.bindRenderbuffer(36161, a);
|
if (b.depthBuffer && !b.stencilBuffer) c ? (c = Ca(b), e.renderbufferStorageMultisample(36161, c, 33189, b.width, b.height)) : e.renderbufferStorage(36161,
|
33189, b.width, b.height), e.framebufferRenderbuffer(36160, 36096, 36161, a);
|
else if (b.depthBuffer && b.stencilBuffer) c ? (c = Ca(b), e.renderbufferStorageMultisample(36161, c, 35056, b.width, b.height)) : e.renderbufferStorage(36161, 34041, b.width, b.height), e.framebufferRenderbuffer(36160, 33306, 36161, a);
|
else {
|
a = d.convert(b.texture.format);
|
var f = d.convert(b.texture.type);
|
a = l(a, f);
|
c ? (c = Ca(b), e.renderbufferStorageMultisample(36161, c, a, b.width, b.height)) : e.renderbufferStorage(36161, a, b.width, b.height)
|
}
|
e.bindRenderbuffer(36161,
|
null)
|
}
|
|
function Ca(a) {
|
return oa && a.isWebGLMultisampleRenderTarget ? Math.min(E, a.samples) : 0
|
}
|
var oa = c.isWebGL2,
|
H = c.maxTextures,
|
Wd = c.maxCubemapSize,
|
F = c.maxTextureSize,
|
E = c.maxSamples,
|
G = new WeakMap,
|
D, K = "undefined" !== typeof OffscreenCanvas && null !== (new OffscreenCanvas(1, 1)).getContext("2d"),
|
M = 0,
|
P = {
|
1E3: 10497,
|
1001: 33071,
|
1002: 33648
|
},
|
R = {
|
1003: 9728,
|
1004: 9984,
|
1005: 9986,
|
1006: 9729,
|
1007: 9985,
|
1008: 9987
|
},
|
O = !1,
|
I = !1;
|
this.allocateTextureUnit = function () {
|
var a = M;
|
a >= H && console.warn("THREE.WebGLTextures: Trying to use " + a +
|
" texture units while this GPU supports only " + H);
|
M += 1;
|
return a
|
};
|
this.resetTextureUnits = function () {
|
M = 0
|
};
|
this.setTexture2D = q;
|
this.setTexture2DArray = function (c, d) {
|
var e = b.get(c);
|
0 < c.version && e.__version !== c.version ? A(e, c, d) : (a.activeTexture(33984 + d), a.bindTexture(35866, e.__webglTexture))
|
};
|
this.setTexture3D = function (c, d) {
|
var e = b.get(c);
|
0 < c.version && e.__version !== c.version ? A(e, c, d) : (a.activeTexture(33984 + d), a.bindTexture(32879, e.__webglTexture))
|
};
|
this.setTextureCube = w;
|
this.setTextureCubeDynamic = x;
|
this.setupRenderTarget =
|
function (c) {
|
var g = b.get(c),
|
k = b.get(c.texture);
|
c.addEventListener("dispose", u);
|
k.__webglTexture = e.createTexture();
|
f.memory.textures++;
|
var y = !0 === c.isWebGLRenderTargetCube,
|
r = !0 === c.isWebGLMultisampleRenderTarget,
|
t = !0 === c.isWebGLMultiviewRenderTarget,
|
v = m(c) || oa;
|
if (y) {
|
g.__webglFramebuffer = [];
|
for (var x = 0; 6 > x; x++) g.__webglFramebuffer[x] = e.createFramebuffer()
|
} else if (g.__webglFramebuffer = e.createFramebuffer(), r)
|
if (oa) {
|
g.__webglMultisampledFramebuffer = e.createFramebuffer();
|
g.__webglColorRenderbuffer = e.createRenderbuffer();
|
e.bindRenderbuffer(36161, g.__webglColorRenderbuffer);
|
r = d.convert(c.texture.format);
|
var w = d.convert(c.texture.type);
|
r = l(r, w);
|
w = Ca(c);
|
e.renderbufferStorageMultisample(36161, w, r, c.width, c.height);
|
e.bindFramebuffer(36160, g.__webglMultisampledFramebuffer);
|
e.framebufferRenderbuffer(36160, 36064, 36161, g.__webglColorRenderbuffer);
|
e.bindRenderbuffer(36161, null);
|
c.depthBuffer && (g.__webglDepthRenderbuffer = e.createRenderbuffer(), W(g.__webglDepthRenderbuffer, c, !0));
|
e.bindFramebuffer(36160, null)
|
} else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.");
|
else if (t) {
|
x = c.width;
|
var C = c.height;
|
r = c.numViews;
|
e.bindFramebuffer(36160, g.__webglFramebuffer);
|
var A = h.get("OVR_multiview2");
|
f.memory.textures += 2;
|
w = e.createTexture();
|
e.bindTexture(35866, w);
|
e.texParameteri(35866, 10240, 9728);
|
e.texParameteri(35866, 10241, 9728);
|
e.texImage3D(35866, 0, 32856, x, C, r, 0, 6408, 5121, null);
|
A.framebufferTextureMultiviewOVR(36160, 36064, w, 0, 0, r);
|
var H = e.createTexture();
|
e.bindTexture(35866, H);
|
e.texParameteri(35866, 10240, 9728);
|
e.texParameteri(35866, 10241, 9728);
|
e.texImage3D(35866, 0, 35056,
|
x, C, r, 0, 34041, 34042, null);
|
A.framebufferTextureMultiviewOVR(36160, 33306, H, 0, 0, r);
|
C = Array(r);
|
for (x = 0; x < r; ++x) C[x] = e.createFramebuffer(), e.bindFramebuffer(36160, C[x]), e.framebufferTextureLayer(36160, 36064, w, 0, x);
|
g.__webglColorTexture = w;
|
g.__webglDepthStencilTexture = H;
|
g.__webglViewFramebuffers = C;
|
e.bindFramebuffer(36160, null);
|
e.bindTexture(35866, null)
|
}
|
if (y) {
|
a.bindTexture(34067, k.__webglTexture);
|
B(34067, c.texture, v);
|
for (x = 0; 6 > x; x++) z(g.__webglFramebuffer[x], c, 36064, 34069 + x);
|
n(c.texture, v) && p(34067, c.texture,
|
c.width, c.height);
|
a.bindTexture(34067, null)
|
} else t || (a.bindTexture(3553, k.__webglTexture), B(3553, c.texture, v), z(g.__webglFramebuffer, c, 36064, 3553), n(c.texture, v) && p(3553, c.texture, c.width, c.height), a.bindTexture(3553, null));
|
if (c.depthBuffer) {
|
g = b.get(c);
|
k = !0 === c.isWebGLRenderTargetCube;
|
if (c.depthTexture) {
|
if (k) throw Error("target.depthTexture not supported in Cube render targets");
|
if (c && c.isWebGLRenderTargetCube) throw Error("Depth Texture with cube render targets is not supported");
|
e.bindFramebuffer(36160,
|
g.__webglFramebuffer);
|
if (!c.depthTexture || !c.depthTexture.isDepthTexture) throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");
|
b.get(c.depthTexture).__webglTexture && c.depthTexture.image.width === c.width && c.depthTexture.image.height === c.height || (c.depthTexture.image.width = c.width, c.depthTexture.image.height = c.height, c.depthTexture.needsUpdate = !0);
|
q(c.depthTexture, 0);
|
g = b.get(c.depthTexture).__webglTexture;
|
if (1026 === c.depthTexture.format) e.framebufferTexture2D(36160, 36096,
|
3553, g, 0);
|
else if (1027 === c.depthTexture.format) e.framebufferTexture2D(36160, 33306, 3553, g, 0);
|
else throw Error("Unknown depthTexture format");
|
} else if (k)
|
for (g.__webglDepthbuffer = [], k = 0; 6 > k; k++) e.bindFramebuffer(36160, g.__webglFramebuffer[k]), g.__webglDepthbuffer[k] = e.createRenderbuffer(), W(g.__webglDepthbuffer[k], c);
|
else e.bindFramebuffer(36160, g.__webglFramebuffer), g.__webglDepthbuffer = e.createRenderbuffer(), W(g.__webglDepthbuffer, c);
|
e.bindFramebuffer(36160, null)
|
}
|
};
|
this.updateRenderTargetMipmap = function (c) {
|
var d =
|
c.texture,
|
e = m(c) || oa;
|
if (n(d, e)) {
|
e = c.isWebGLRenderTargetCube ? 34067 : 3553;
|
var f = b.get(d).__webglTexture;
|
a.bindTexture(e, f);
|
p(e, d, c.width, c.height);
|
a.bindTexture(e, null)
|
}
|
};
|
this.updateMultisampleRenderTarget = function (a) {
|
if (a.isWebGLMultisampleRenderTarget)
|
if (oa) {
|
var c = b.get(a);
|
e.bindFramebuffer(36008, c.__webglMultisampledFramebuffer);
|
e.bindFramebuffer(36009, c.__webglFramebuffer);
|
c = a.width;
|
var d = a.height,
|
f = 16384;
|
a.depthBuffer && (f |= 256);
|
a.stencilBuffer && (f |= 1024);
|
e.blitFramebuffer(0, 0, c, d, 0, 0, c, d, f, 9728)
|
} else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.")
|
};
|
this.safeSetTexture2D = function (a, b) {
|
a && a.isWebGLRenderTarget && (!1 === O && (console.warn("THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead."), O = !0), a = a.texture);
|
q(a, b)
|
};
|
this.safeSetTextureCube = function (a, b) {
|
a && a.isWebGLRenderTargetCube && (!1 === I && (console.warn("THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead."), I = !0), a = a.texture);
|
a && a.isCubeTexture || Array.isArray(a.image) &&
|
6 === a.image.length ? w(a, b) : x(a, b)
|
}
|
}
|
|
function wi(e, h, a) {
|
var b = a.isWebGL2;
|
return {
|
convert: function (a) {
|
if (1009 === a) return 5121;
|
if (1017 === a) return 32819;
|
if (1018 === a) return 32820;
|
if (1019 === a) return 33635;
|
if (1010 === a) return 5120;
|
if (1011 === a) return 5122;
|
if (1012 === a) return 5123;
|
if (1013 === a) return 5124;
|
if (1014 === a) return 5125;
|
if (1015 === a) return 5126;
|
if (1016 === a) {
|
if (b) return 5131;
|
var c = h.get("OES_texture_half_float");
|
return null !== c ? c.HALF_FLOAT_OES : null
|
}
|
if (1021 === a) return 6406;
|
if (1022 === a) return 6407;
|
if (1023 ===
|
a) return 6408;
|
if (1024 === a) return 6409;
|
if (1025 === a) return 6410;
|
if (1026 === a) return 6402;
|
if (1027 === a) return 34041;
|
if (1028 === a) return 6403;
|
if (33776 === a || 33777 === a || 33778 === a || 33779 === a)
|
if (c = h.get("WEBGL_compressed_texture_s3tc"), null !== c) {
|
if (33776 === a) return c.COMPRESSED_RGB_S3TC_DXT1_EXT;
|
if (33777 === a) return c.COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
if (33778 === a) return c.COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
if (33779 === a) return c.COMPRESSED_RGBA_S3TC_DXT5_EXT
|
} else return null;
|
if (35840 === a || 35841 === a || 35842 === a || 35843 ===
|
a)
|
if (c = h.get("WEBGL_compressed_texture_pvrtc"), null !== c) {
|
if (35840 === a) return c.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
|
if (35841 === a) return c.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
|
if (35842 === a) return c.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
|
if (35843 === a) return c.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
|
} else return null;
|
if (36196 === a) return c = h.get("WEBGL_compressed_texture_etc1"), null !== c ? c.COMPRESSED_RGB_ETC1_WEBGL : null;
|
if (37808 === a || 37809 === a || 37810 === a || 37811 === a || 37812 === a || 37813 === a || 37814 === a || 37815 === a || 37816 === a || 37817 ===
|
a || 37818 === a || 37819 === a || 37820 === a || 37821 === a) return c = h.get("WEBGL_compressed_texture_astc"), null !== c ? a : null;
|
if (1020 === a) {
|
if (b) return 34042;
|
c = h.get("WEBGL_depth_texture");
|
return null !== c ? c.UNSIGNED_INT_24_8_WEBGL : null
|
}
|
}
|
}
|
}
|
|
function Fg(e, h, a, b) {
|
sa.call(this, e, h, b);
|
this.stencilBuffer = this.depthBuffer = !1;
|
this.numViews = a
|
}
|
|
function hl(e, h) {
|
function a(a) {
|
if (a.isArrayCamera) return a.cameras;
|
n[0] = a;
|
return n
|
}
|
|
function b(a) {
|
if (void 0 === a.isArrayCamera) return !0;
|
a = a.cameras;
|
if (a.length > l) return !1;
|
for (var b = 1, c =
|
a.length; b < c; b++)
|
if (a[0].viewport.z !== a[b].viewport.z || a[0].viewport.w !== a[b].viewport.w) return !1;
|
return !0
|
}
|
var c = e.extensions,
|
d = e.properties,
|
f, g, k, m, n, p, y, l = 0;
|
this.isAvailable = function () {
|
if (void 0 === y) {
|
var a = c.get("OVR_multiview2");
|
if (y = null !== a && !1 === h.getContextAttributes().antialias)
|
for (l = h.getParameter(a.MAX_VIEWS_OVR), f = new Fg(0, 0, 2), p = new z, m = [], k = [], n = [], a = 0; a < l; a++) m[a] = new I, k[a] = new ka
|
}
|
return y
|
};
|
this.attachCamera = function (a) {
|
if (!1 !== b(a)) {
|
(g = e.getRenderTarget()) ? p.set(g.width, g.height):
|
e.getDrawingBufferSize(p);
|
if (a.isArrayCamera) {
|
var c = a.cameras[0].viewport;
|
f.setSize(c.z, c.w);
|
f.setNumViews(a.cameras.length)
|
} else f.setSize(p.x, p.y), f.setNumViews(2);
|
e.setRenderTarget(f)
|
}
|
};
|
this.detachCamera = function (a) {
|
if (f === e.getRenderTarget()) {
|
e.setRenderTarget(g);
|
var b = f,
|
c = b.numViews,
|
k = d.get(b).__webglViewFramebuffers,
|
m = b.width;
|
b = b.height;
|
if (a.isArrayCamera)
|
for (var n = 0; n < c; n++) {
|
var y = a.cameras[n].viewport,
|
l = y.x,
|
r = y.y,
|
t = l + y.z;
|
y = r + y.w;
|
h.bindFramebuffer(36008, k[n]);
|
h.blitFramebuffer(0, 0, m, b, l, r,
|
t, y, 16384, 9728)
|
} else h.bindFramebuffer(36008, k[0]), h.blitFramebuffer(0, 0, m, b, 0, 0, p.x, p.y, 16384, 9728)
|
}
|
};
|
this.updateCameraProjectionMatricesUniform = function (b, c) {
|
b = a(b);
|
for (var d = 0; d < b.length; d++) m[d].copy(b[d].projectionMatrix);
|
c.setValue(h, "projectionMatrices", m)
|
};
|
this.updateCameraViewMatricesUniform = function (b, c) {
|
b = a(b);
|
for (var d = 0; d < b.length; d++) m[d].copy(b[d].matrixWorldInverse);
|
c.setValue(h, "viewMatrices", m)
|
};
|
this.updateObjectMatricesUniforms = function (b, c, d) {
|
c = a(c);
|
for (var e = 0; e < c.length; e++) m[e].multiplyMatrices(c[e].matrixWorldInverse,
|
b.matrixWorld), k[e].getNormalMatrix(m[e]);
|
d.setValue(h, "modelViewMatrices", m);
|
d.setValue(h, "normalMatrices", k)
|
}
|
}
|
|
function Vc() {
|
E.call(this);
|
this.type = "Group"
|
}
|
|
function Yd(e) {
|
na.call(this);
|
this.cameras = e || []
|
}
|
|
function xi(e, h, a) {
|
yi.setFromMatrixPosition(h.matrixWorld);
|
zi.setFromMatrixPosition(a.matrixWorld);
|
var b = yi.distanceTo(zi),
|
c = h.projectionMatrix.elements,
|
d = a.projectionMatrix.elements,
|
f = c[14] / (c[10] - 1);
|
a = c[14] / (c[10] + 1);
|
var g = (c[9] + 1) / c[5],
|
k = (c[9] - 1) / c[5],
|
m = (c[8] - 1) / c[0],
|
n = (d[8] + 1) / d[0];
|
c = f * m;
|
d = f *
|
n;
|
n = b / (-m + n);
|
m = n * -m;
|
h.matrixWorld.decompose(e.position, e.quaternion, e.scale);
|
e.translateX(m);
|
e.translateZ(n);
|
e.matrixWorld.compose(e.position, e.quaternion, e.scale);
|
e.matrixWorldInverse.getInverse(e.matrixWorld);
|
h = f + n;
|
f = a + n;
|
e.projectionMatrix.makePerspective(c - m, d + (b - m), g * a / f * h, k * a / f * h, h, f)
|
}
|
|
function Gg(e) {
|
function h() {
|
return null !== g && !0 === g.isPresenting
|
}
|
|
function a() {
|
if (h()) {
|
var a = g.getEyeParameters("left");
|
c = 2 * a.renderWidth * l;
|
d = a.renderHeight * l;
|
Ka = e.getPixelRatio();
|
e.getSize(A);
|
e.setDrawingBufferSize(c,
|
d, 1);
|
x.viewport.set(0, 0, c / 2, d);
|
B.viewport.set(c / 2, 0, c / 2, d);
|
Ca.start();
|
f.dispatchEvent({
|
type: "sessionstart"
|
})
|
} else f.enabled && e.setDrawingBufferSize(A.width, A.height, Ka), Ca.stop(), f.dispatchEvent({
|
type: "sessionend"
|
})
|
}
|
|
function b(a, b) {
|
null !== b && 4 === b.length && a.set(b[0] * c, b[1] * d, b[2] * c, b[3] * d)
|
}
|
var c, d, f = this,
|
g = null,
|
k = null,
|
m = null,
|
n = [],
|
p = new I,
|
y = new I,
|
l = 1,
|
r = "local-floor";
|
"undefined" !== typeof kc && "VRFrameData" in kc && (k = new fa, Th("vrdisplaypresentchange", a));
|
var u = new I,
|
v = new ya,
|
w = new q,
|
x = new na;
|
x.viewport =
|
new ca;
|
x.layers.enable(1);
|
var B = new na;
|
B.viewport = new ca;
|
B.layers.enable(2);
|
var C = new Yd([x, B]);
|
C.layers.enable(1);
|
C.layers.enable(2);
|
var A = new z,
|
Ka, W = [];
|
this.enabled = !1;
|
this.getController = function (a) {
|
var b = n[a];
|
void 0 === b && (b = new Vc, b.matrixAutoUpdate = !1, b.visible = !1, n[a] = b);
|
return b
|
};
|
this.getDevice = function () {
|
return g
|
};
|
this.setDevice = function (a) {
|
void 0 !== a && (g = a);
|
Ca.setContext(a)
|
};
|
this.setFramebufferScaleFactor = function (a) {
|
l = a
|
};
|
this.setReferenceSpaceType = function (a) {
|
r = a
|
};
|
this.setPoseTarget = function (a) {
|
void 0 !==
|
a && (m = a)
|
};
|
this.getCamera = function (a) {
|
var c = "local-floor" === r ? 1.6 : 0;
|
if (!1 === h()) return a.position.set(0, c, 0), a.rotation.set(0, 0, 0), a;
|
g.depthNear = a.near;
|
g.depthFar = a.far;
|
g.getFrameData(k);
|
if ("local-floor" === r) {
|
var d = g.stageParameters;
|
d ? p.fromArray(d.sittingToStandingTransform) : p.makeTranslation(0, c, 0)
|
}
|
c = k.pose;
|
d = null !== m ? m : a;
|
d.matrix.copy(p);
|
d.matrix.decompose(d.position, d.quaternion, d.scale);
|
null !== c.orientation && (v.fromArray(c.orientation), d.quaternion.multiply(v));
|
null !== c.position && (v.setFromRotationMatrix(p),
|
w.fromArray(c.position), w.applyQuaternion(v), d.position.add(w));
|
d.updateMatrixWorld();
|
x.near = a.near;
|
B.near = a.near;
|
x.far = a.far;
|
B.far = a.far;
|
x.matrixWorldInverse.fromArray(k.leftViewMatrix);
|
B.matrixWorldInverse.fromArray(k.rightViewMatrix);
|
y.getInverse(p);
|
"local-floor" === r && (x.matrixWorldInverse.multiply(y), B.matrixWorldInverse.multiply(y));
|
a = d.parent;
|
null !== a && (u.getInverse(a.matrixWorld), x.matrixWorldInverse.multiply(u), B.matrixWorldInverse.multiply(u));
|
x.matrixWorld.getInverse(x.matrixWorldInverse);
|
B.matrixWorld.getInverse(B.matrixWorldInverse);
|
x.projectionMatrix.fromArray(k.leftProjectionMatrix);
|
B.projectionMatrix.fromArray(k.rightProjectionMatrix);
|
xi(C, x, B);
|
a = g.getLayers();
|
a.length && (a = a[0], b(x.viewport, a.leftBounds), b(B.viewport, a.rightBounds));
|
a: for (a = 0; a < n.length; a++) {
|
c = n[a];
|
b: {
|
d = a;
|
for (var e = navigator.getGamepads && navigator.getGamepads(), f = 0, l = e.length; f < l; f++) {
|
var t = e[f];
|
if (t && ("Daydream Controller" === t.id || "Gear VR Controller" === t.id || "Oculus Go Controller" === t.id || "OpenVR Gamepad" ===
|
t.id || t.id.startsWith("Oculus Touch") || t.id.startsWith("HTC Vive Focus") || t.id.startsWith("Spatial Controller"))) {
|
var q = t.hand;
|
if (0 === d && ("" === q || "right" === q) || 1 === d && "left" === q) {
|
d = t;
|
break b
|
}
|
}
|
}
|
d = void 0
|
}
|
if (void 0 !== d && void 0 !== d.pose) {
|
if (null === d.pose) break a;
|
e = d.pose;
|
!1 === e.hasPosition && c.position.set(.2, -.6, -.05);
|
null !== e.position && c.position.fromArray(e.position);
|
null !== e.orientation && c.quaternion.fromArray(e.orientation);
|
c.matrix.compose(c.position, c.quaternion, c.scale);
|
c.matrix.premultiply(p);
|
c.matrix.decompose(c.position, c.quaternion, c.scale);
|
c.matrixWorldNeedsUpdate = !0;
|
c.visible = !0;
|
e = "Daydream Controller" === d.id ? 0 : 1;
|
void 0 === W[a] && (W[a] = !1);
|
W[a] !== d.buttons[e].pressed && (W[a] = d.buttons[e].pressed, !0 === W[a] ? c.dispatchEvent({
|
type: "selectstart"
|
}) : (c.dispatchEvent({
|
type: "selectend"
|
}), c.dispatchEvent({
|
type: "select"
|
})))
|
} else c.visible = !1
|
}
|
return C
|
};
|
this.getStandingMatrix = function () {
|
return p
|
};
|
this.isPresenting = h;
|
var Ca = new zg;
|
this.setAnimationLoop = function (a) {
|
Ca.setAnimationLoop(a);
|
h() && Ca.start()
|
};
|
this.submitFrame = function () {
|
h() && g.submitFrame()
|
};
|
this.dispose = function () {
|
"undefined" !== typeof kc && Uh("vrdisplaypresentchange", a)
|
};
|
this.setFrameOfReferenceType = function () {
|
console.warn("THREE.WebVRManager: setFrameOfReferenceType() has been deprecated.")
|
}
|
}
|
|
function Ai(e, h) {
|
function a() {
|
return null !== m && null !== n
|
}
|
|
function b(a) {
|
for (var b = 0; b < l.length; b++) r[b] === a.inputSource && l[b].dispatchEvent({
|
type: a.type
|
})
|
}
|
|
function c() {
|
e.setFramebuffer(null);
|
e.setRenderTarget(e.getRenderTarget());
|
B.stop();
|
k.dispatchEvent({
|
type: "sessionend"
|
})
|
}
|
|
function d(a) {
|
n = a;
|
B.setContext(m);
|
B.start();
|
k.dispatchEvent({
|
type: "sessionstart"
|
})
|
}
|
|
function f() {
|
for (var a = 0; a < l.length; a++) {
|
var b = a;
|
a: {
|
var c = m.inputSources;
|
for (var d = 0; d < c.length; d++) {
|
var e = c[d],
|
f = e.handedness;
|
if (0 === a && ("none" === f || "right" === f)) {
|
c = e;
|
break a
|
}
|
if (1 === a && "left" === f) {
|
c = e;
|
break a
|
}
|
}
|
c = void 0
|
}
|
r[b] = c
|
}
|
}
|
|
function g(a, b) {
|
null === b ? a.matrixWorld.copy(a.matrix) : a.matrixWorld.multiplyMatrices(b.matrixWorld, a.matrix);
|
a.matrixWorldInverse.getInverse(a.matrixWorld)
|
}
|
var k = this,
|
m = null,
|
n = null,
|
p = "local-floor",
|
y = null,
|
l = [],
|
r = [],
|
u = new na;
|
u.layers.enable(1);
|
u.viewport = new ca;
|
var q = new na;
|
q.layers.enable(2);
|
q.viewport = new ca;
|
var w = new Yd([u, q]);
|
w.layers.enable(1);
|
w.layers.enable(2);
|
this.enabled = !1;
|
this.getController = function (a) {
|
var b = l[a];
|
void 0 === b && (b = new Vc, b.matrixAutoUpdate = !1, b.visible = !1, l[a] = b);
|
return b
|
};
|
this.setFramebufferScaleFactor = function () {};
|
this.setReferenceSpaceType = function (a) {
|
p = a
|
};
|
this.getSession = function () {
|
return m
|
};
|
this.setSession = function (a) {
|
m = a;
|
null !== m && (m.addEventListener("select", b),
|
m.addEventListener("selectstart", b), m.addEventListener("selectend", b), m.addEventListener("end", c), m.updateRenderState({
|
baseLayer: new XRWebGLLayer(m, h)
|
}), m.requestReferenceSpace(p).then(d), m.addEventListener("inputsourceschange", f), f())
|
};
|
this.getCamera = function (b) {
|
if (a()) {
|
var c = b.parent,
|
d = w.cameras;
|
g(w, c);
|
for (var e = 0; e < d.length; e++) g(d[e], c);
|
b.matrixWorld.copy(w.matrixWorld);
|
b = b.children;
|
e = 0;
|
for (c = b.length; e < c; e++) b[e].updateMatrixWorld(!0);
|
xi(w, u, q);
|
return w
|
}
|
return b
|
};
|
this.isPresenting = a;
|
var x = null,
|
B = new zg;
|
B.setAnimationLoop(function (a, b) {
|
y = b.getViewerPose(n);
|
if (null !== y) {
|
var c = y.views,
|
d = m.renderState.baseLayer;
|
e.setFramebuffer(d.framebuffer);
|
for (var f = 0; f < c.length; f++) {
|
var g = c[f],
|
h = d.getViewport(g),
|
k = w.cameras[f];
|
k.matrix.fromArray(g.transform.inverse.matrix).getInverse(k.matrix);
|
k.projectionMatrix.fromArray(g.projectionMatrix);
|
k.viewport.set(h.x, h.y, h.width, h.height);
|
0 === f && w.matrix.copy(k.matrix)
|
}
|
}
|
for (f = 0; f < l.length; f++) {
|
c = l[f];
|
if (d = r[f])
|
if (d = b.getPose(d.targetRaySpace, n), null !== d) {
|
c.matrix.fromArray(d.transform.matrix);
|
c.matrix.decompose(c.position, c.rotation, c.scale);
|
c.visible = !0;
|
continue
|
} c.visible = !1
|
}
|
x && x(a)
|
});
|
this.setAnimationLoop = function (a) {
|
x = a
|
};
|
this.dispose = function () {};
|
this.getStandingMatrix = function () {
|
console.warn("THREE.WebXRManager: getStandingMatrix() is no longer needed.");
|
return new I
|
};
|
this.getDevice = function () {
|
console.warn("THREE.WebXRManager: getDevice() has been deprecated.")
|
};
|
this.setDevice = function () {
|
console.warn("THREE.WebXRManager: setDevice() has been deprecated.")
|
};
|
this.setFrameOfReferenceType =
|
function () {
|
console.warn("THREE.WebXRManager: setFrameOfReferenceType() has been deprecated.")
|
};
|
this.submitFrame = function () {}
|
}
|
|
function Hg(e) {
|
var h;
|
|
function a() {
|
ta = new Yj(J);
|
Ea = new Wj(J, ta, e);
|
!1 === Ea.isWebGL2 && (ta.get("WEBGL_depth_texture"), ta.get("OES_texture_float"), ta.get("OES_texture_half_float"), ta.get("OES_texture_half_float_linear"), ta.get("OES_standard_derivatives"), ta.get("OES_element_index_uint"), ta.get("ANGLE_instanced_arrays"));
|
ta.get("OES_texture_float_linear");
|
la = new wi(J, ta, Ea);
|
ba = new fl(J,
|
ta, Ea);
|
ba.scissor(Z.copy(ia).multiplyScalar(ha).floor());
|
ba.viewport(S.copy(U).multiplyScalar(ha).floor());
|
fa = new bk(J);
|
aa = new Xk;
|
ea = new gl(J, ta, ba, aa, Ea, la, fa);
|
ka = new Tj(J);
|
va = new Zj(J, ka, fa);
|
ra = new ek(J, va, ka, fa);
|
xa = new dk(J);
|
pa = new Wk(D, ta, Ea);
|
wa = new $k;
|
ua = new el;
|
ma = new Uj(D, ba, ra, F);
|
ya = new Vj(J, ta, fa, Ea);
|
Aa = new ak(J, ta, fa, Ea);
|
fa.programs = pa.programs;
|
D.capabilities = Ea;
|
D.extensions = ta;
|
D.properties = aa;
|
D.renderLists = wa;
|
D.state = ba;
|
D.info = fa
|
}
|
|
function b(a) {
|
a.preventDefault();
|
console.log("THREE.WebGLRenderer: Context Lost.");
|
M = !0
|
}
|
|
function c() {
|
console.log("THREE.WebGLRenderer: Context Restored.");
|
M = !1;
|
a()
|
}
|
|
function d(a) {
|
a = a.target;
|
a.removeEventListener("dispose", d);
|
f(a);
|
aa.remove(a)
|
}
|
|
function f(a) {
|
var b = aa.get(a).program;
|
a.program = void 0;
|
void 0 !== b && pa.releaseProgram(b)
|
}
|
|
function g(a, b) {
|
a.render(function (a) {
|
D.renderBufferImmediate(a, b)
|
})
|
}
|
|
function k(a, b, c, d) {
|
if (!1 !== a.visible) {
|
if (a.layers.test(b.layers))
|
if (a.isGroup) c = a.renderOrder;
|
else if (a.isLOD) !0 === a.autoUpdate && a.update(b);
|
else if (a.isLight) E.pushLight(a), a.castShadow &&
|
E.pushShadow(a);
|
else if (a.isSprite) {
|
if (!a.frustumCulled || Dg.intersectsSprite(a)) {
|
d && Mb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(Xd);
|
var e = ra.update(a),
|
f = a.material;
|
f.visible && H.push(a, e, f, c, Mb.z, null)
|
}
|
} else if (a.isImmediateRenderObject) d && Mb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(Xd), H.push(a, null, a.material, c, Mb.z, null);
|
else if (a.isMesh || a.isLine || a.isPoints)
|
if (a.isSkinnedMesh && a.skeleton.frame !== fa.render.frame && (a.skeleton.update(), a.skeleton.frame = fa.render.frame), !a.frustumCulled ||
|
Dg.intersectsObject(a))
|
if (d && Mb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(Xd), e = ra.update(a), f = a.material, Array.isArray(f))
|
for (var g = e.groups, h = 0, m = g.length; h < m; h++) {
|
var n = g[h],
|
p = f[n.materialIndex];
|
p && p.visible && H.push(a, e, p, c, Mb.z, n)
|
} else f.visible && H.push(a, e, f, c, Mb.z, null);
|
a = a.children;
|
h = 0;
|
for (m = a.length; h < m; h++) k(a[h], b, c, d)
|
}
|
}
|
|
function m(a, b, c, d) {
|
for (var e = 0, f = a.length; e < f; e++) {
|
var g = a[e],
|
h = g.object,
|
k = g.geometry,
|
m = void 0 === d ? g.material : d;
|
g = g.group;
|
if (c.isArrayCamera)
|
if (jc = c, ja.enabled &&
|
sa.isAvailable()) n(h, b, c, k, m, g);
|
else
|
for (var p = c.cameras, l = 0, y = p.length; l < y; l++) {
|
var r = p[l];
|
h.layers.test(r.layers) && (ba.viewport(S.copy(r.viewport)), E.setupLights(r), n(h, b, r, k, m, g))
|
} else jc = null, n(h, b, c, k, m, g)
|
}
|
}
|
|
function n(a, b, c, d, e, f) {
|
a.onBeforeRender(D, b, c, d, e, f);
|
E = ua.get(b, jc || c);
|
a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse, a.matrixWorld);
|
a.normalMatrix.getNormalMatrix(a.modelViewMatrix);
|
if (a.isImmediateRenderObject) {
|
ba.setMaterial(e);
|
var k = y(c, b.fog, e, a);
|
bf = h = null;
|
T = !1;
|
g(a, k)
|
} else D.renderBufferDirect(c,
|
b.fog, d, e, a, f);
|
a.onAfterRender(D, b, c, d, e, f);
|
E = ua.get(b, jc || c)
|
}
|
|
function p(a, b, c) {
|
var e = aa.get(a),
|
g = E.state.lights,
|
h = g.state.version;
|
c = pa.getParameters(a, g.state, E.state.shadowsArray, b, Ta.numPlanes, Ta.numIntersection, c);
|
var k = pa.getProgramCacheKey(a, c),
|
m = e.program,
|
n = !0;
|
if (void 0 === m) a.addEventListener("dispose", d);
|
else if (m.cacheKey !== k) f(a);
|
else {
|
if (e.lightsStateVersion !== h) e.lightsStateVersion = h;
|
else if (void 0 !== c.shaderID) return;
|
n = !1
|
}
|
n && (c.shaderID ? (k = ib[c.shaderID], e.shader = {
|
name: a.type,
|
uniforms: gc(k.uniforms),
|
vertexShader: k.vertexShader,
|
fragmentShader: k.fragmentShader
|
}) : e.shader = {
|
name: a.type,
|
uniforms: a.uniforms,
|
vertexShader: a.vertexShader,
|
fragmentShader: a.fragmentShader
|
}, a.onBeforeCompile(e.shader, D), k = pa.getProgramCacheKey(a, c), m = pa.acquireProgram(a, e.shader, c, k), e.program = m, a.program = m);
|
c = m.getAttributes();
|
if (a.morphTargets)
|
for (k = a.numSupportedMorphTargets = 0; k < D.maxMorphTargets; k++) 0 <= c["morphTarget" + k] && a.numSupportedMorphTargets++;
|
if (a.morphNormals)
|
for (k = a.numSupportedMorphNormals = 0; k < D.maxMorphNormals; k++) 0 <=
|
c["morphNormal" + k] && a.numSupportedMorphNormals++;
|
c = e.shader.uniforms;
|
if (!a.isShaderMaterial && !a.isRawShaderMaterial || !0 === a.clipping) e.numClippingPlanes = Ta.numPlanes, e.numIntersection = Ta.numIntersection, c.clippingPlanes = Ta.uniform;
|
e.fog = b;
|
e.needsLights = a.isMeshLambertMaterial || a.isMeshPhongMaterial || a.isMeshStandardMaterial || a.isShadowMaterial || a.isShaderMaterial && !0 === a.lights;
|
e.lightsStateVersion = h;
|
e.needsLights && (c.ambientLightColor.value = g.state.ambient, c.lightProbe.value = g.state.probe, c.directionalLights.value =
|
g.state.directional, c.spotLights.value = g.state.spot, c.rectAreaLights.value = g.state.rectArea, c.pointLights.value = g.state.point, c.hemisphereLights.value = g.state.hemi, c.directionalShadowMap.value = g.state.directionalShadowMap, c.directionalShadowMatrix.value = g.state.directionalShadowMatrix, c.spotShadowMap.value = g.state.spotShadowMap, c.spotShadowMatrix.value = g.state.spotShadowMatrix, c.pointShadowMap.value = g.state.pointShadowMap, c.pointShadowMatrix.value = g.state.pointShadowMatrix);
|
a = e.program.getUniforms();
|
a = Jb.seqWithValue(a.seq, c);
|
e.uniformsList = a
|
}
|
|
function y(a, b, c, d) {
|
ea.resetTextureUnits();
|
var e = aa.get(c),
|
f = E.state.lights;
|
$e && (qa || a !== Ua) && Ta.setState(c.clippingPlanes, c.clipIntersection, c.clipShadows, a, e, a === Ua && c.id === af);
|
!1 === c.needsUpdate && (void 0 === e.program ? c.needsUpdate = !0 : c.fog && e.fog !== b ? c.needsUpdate = !0 : e.needsLights && e.lightsStateVersion !== f.state.version ? c.needsUpdate = !0 : void 0 === e.numClippingPlanes || e.numClippingPlanes === Ta.numPlanes && e.numIntersection === Ta.numIntersection || (c.needsUpdate = !0));
|
c.needsUpdate && (p(c, b, d), c.needsUpdate = !1);
|
var g = !1,
|
h = !1,
|
k = !1;
|
f = e.program;
|
var m = f.getUniforms(),
|
n = e.shader.uniforms;
|
ba.useProgram(f.program) && (k = h = g = !0);
|
c.id !== af && (af = c.id, h = !0);
|
if (g || Ua !== a) {
|
0 < f.numMultiviewViews ? sa.updateCameraProjectionMatricesUniform(a, m) : m.setValue(J, "projectionMatrix", a.projectionMatrix);
|
Ea.logarithmicDepthBuffer && m.setValue(J, "logDepthBufFC", 2 / (Math.log(a.far + 1) / Math.LN2));
|
Ua !== a && (Ua = a, k = h = !0);
|
if (c.isShaderMaterial || c.isMeshPhongMaterial || c.isMeshStandardMaterial || c.envMap) g =
|
m.map.cameraPosition, void 0 !== g && g.setValue(J, Mb.setFromMatrixPosition(a.matrixWorld));
|
(c.isMeshPhongMaterial || c.isMeshLambertMaterial || c.isMeshBasicMaterial || c.isMeshStandardMaterial || c.isShaderMaterial) && m.setValue(J, "isOrthographic", !0 === a.isOrthographicCamera);
|
if (c.isMeshPhongMaterial || c.isMeshLambertMaterial || c.isMeshBasicMaterial || c.isMeshStandardMaterial || c.isShaderMaterial || c.skinning) 0 < f.numMultiviewViews ? sa.updateCameraViewMatricesUniform(a, m) : m.setValue(J, "viewMatrix", a.matrixWorldInverse)
|
}
|
if (c.skinning &&
|
(m.setOptional(J, d, "bindMatrix"), m.setOptional(J, d, "bindMatrixInverse"), g = d.skeleton)) {
|
var y = g.bones;
|
if (Ea.floatVertexTextures) {
|
if (void 0 === g.boneTexture) {
|
y = Math.sqrt(4 * y.length);
|
y = N.ceilPowerOfTwo(y);
|
y = Math.max(y, 4);
|
var t = new Float32Array(y * y * 4);
|
t.set(g.boneMatrices);
|
var q = new hc(t, y, y, 1023, 1015);
|
g.boneMatrices = t;
|
g.boneTexture = q;
|
g.boneTextureSize = y
|
}
|
m.setValue(J, "boneTexture", g.boneTexture, ea);
|
m.setValue(J, "boneTextureSize", g.boneTextureSize)
|
} else m.setOptional(J, g, "boneMatrices")
|
}
|
if (h || e.receiveShadow !==
|
d.receiveShadow) e.receiveShadow = d.receiveShadow, m.setValue(J, "receiveShadow", d.receiveShadow);
|
if (h) {
|
m.setValue(J, "toneMappingExposure", D.toneMappingExposure);
|
m.setValue(J, "toneMappingWhitePoint", D.toneMappingWhitePoint);
|
e.needsLights && (h = k, n.ambientLightColor.needsUpdate = h, n.lightProbe.needsUpdate = h, n.directionalLights.needsUpdate = h, n.pointLights.needsUpdate = h, n.spotLights.needsUpdate = h, n.rectAreaLights.needsUpdate = h, n.hemisphereLights.needsUpdate = h);
|
b && c.fog && (n.fogColor.value.copy(b.color), b.isFog ?
|
(n.fogNear.value = b.near, n.fogFar.value = b.far) : b.isFogExp2 && (n.fogDensity.value = b.density));
|
if (c.isMeshBasicMaterial) l(n, c);
|
else if (c.isMeshLambertMaterial) l(n, c), c.emissiveMap && (n.emissiveMap.value = c.emissiveMap);
|
else if (c.isMeshPhongMaterial) l(n, c), c.isMeshToonMaterial ? (r(n, c), c.gradientMap && (n.gradientMap.value = c.gradientMap)) : r(n, c);
|
else if (c.isMeshStandardMaterial) l(n, c), c.isMeshPhysicalMaterial ? (u(n, c), n.reflectivity.value = c.reflectivity, n.clearcoat.value = c.clearcoat, n.clearcoatRoughness.value =
|
c.clearcoatRoughness, c.sheen && n.sheen.value.copy(c.sheen), c.clearcoatNormalMap && (n.clearcoatNormalScale.value.copy(c.clearcoatNormalScale), n.clearcoatNormalMap.value = c.clearcoatNormalMap, 1 === c.side && n.clearcoatNormalScale.value.negate()), n.transparency.value = c.transparency) : u(n, c);
|
else if (c.isMeshMatcapMaterial) l(n, c), c.matcap && (n.matcap.value = c.matcap), c.bumpMap && (n.bumpMap.value = c.bumpMap, n.bumpScale.value = c.bumpScale, 1 === c.side && (n.bumpScale.value *= -1)), c.normalMap && (n.normalMap.value = c.normalMap,
|
n.normalScale.value.copy(c.normalScale), 1 === c.side && n.normalScale.value.negate()), c.displacementMap && (n.displacementMap.value = c.displacementMap, n.displacementScale.value = c.displacementScale, n.displacementBias.value = c.displacementBias);
|
else if (c.isMeshDepthMaterial) l(n, c), c.displacementMap && (n.displacementMap.value = c.displacementMap, n.displacementScale.value = c.displacementScale, n.displacementBias.value = c.displacementBias);
|
else if (c.isMeshDistanceMaterial) l(n, c), c.displacementMap && (n.displacementMap.value =
|
c.displacementMap, n.displacementScale.value = c.displacementScale, n.displacementBias.value = c.displacementBias), n.referencePosition.value.copy(c.referencePosition), n.nearDistance.value = c.nearDistance, n.farDistance.value = c.farDistance;
|
else if (c.isMeshNormalMaterial) l(n, c), c.bumpMap && (n.bumpMap.value = c.bumpMap, n.bumpScale.value = c.bumpScale, 1 === c.side && (n.bumpScale.value *= -1)), c.normalMap && (n.normalMap.value = c.normalMap, n.normalScale.value.copy(c.normalScale), 1 === c.side && n.normalScale.value.negate()), c.displacementMap &&
|
(n.displacementMap.value = c.displacementMap, n.displacementScale.value = c.displacementScale, n.displacementBias.value = c.displacementBias);
|
else if (c.isLineBasicMaterial) n.diffuse.value.copy(c.color), n.opacity.value = c.opacity, c.isLineDashedMaterial && (n.dashSize.value = c.dashSize, n.totalSize.value = c.dashSize + c.gapSize, n.scale.value = c.scale);
|
else if (c.isPointsMaterial) {
|
n.diffuse.value.copy(c.color);
|
n.opacity.value = c.opacity;
|
n.size.value = c.size * ha;
|
n.scale.value = .5 * Y;
|
c.map && (n.map.value = c.map);
|
c.alphaMap && (n.alphaMap.value =
|
c.alphaMap);
|
if (c.map) var v = c.map;
|
else c.alphaMap && (v = c.alphaMap);
|
void 0 !== v && (!0 === v.matrixAutoUpdate && v.updateMatrix(), n.uvTransform.value.copy(v.matrix))
|
} else if (c.isSpriteMaterial) {
|
n.diffuse.value.copy(c.color);
|
n.opacity.value = c.opacity;
|
n.rotation.value = c.rotation;
|
c.map && (n.map.value = c.map);
|
c.alphaMap && (n.alphaMap.value = c.alphaMap);
|
if (c.map) var x = c.map;
|
else c.alphaMap && (x = c.alphaMap);
|
void 0 !== x && (!0 === x.matrixAutoUpdate && x.updateMatrix(), n.uvTransform.value.copy(x.matrix))
|
} else c.isShadowMaterial &&
|
(n.color.value.copy(c.color), n.opacity.value = c.opacity);
|
void 0 !== n.ltc_1 && (n.ltc_1.value = K.LTC_1);
|
void 0 !== n.ltc_2 && (n.ltc_2.value = K.LTC_2);
|
Jb.upload(J, e.uniformsList, n, ea);
|
c.isShaderMaterial && (c.uniformsNeedUpdate = !1)
|
}
|
c.isShaderMaterial && !0 === c.uniformsNeedUpdate && (Jb.upload(J, e.uniformsList, n, ea), c.uniformsNeedUpdate = !1);
|
c.isSpriteMaterial && m.setValue(J, "center", d.center);
|
0 < f.numMultiviewViews ? sa.updateObjectMatricesUniforms(d, a, m) : (m.setValue(J, "modelViewMatrix", d.modelViewMatrix), m.setValue(J,
|
"normalMatrix", d.normalMatrix));
|
m.setValue(J, "modelMatrix", d.matrixWorld);
|
return f
|
}
|
|
function l(a, b) {
|
a.opacity.value = b.opacity;
|
b.color && a.diffuse.value.copy(b.color);
|
b.emissive && a.emissive.value.copy(b.emissive).multiplyScalar(b.emissiveIntensity);
|
b.map && (a.map.value = b.map);
|
b.alphaMap && (a.alphaMap.value = b.alphaMap);
|
b.specularMap && (a.specularMap.value = b.specularMap);
|
b.envMap && (a.envMap.value = b.envMap, a.flipEnvMap.value = b.envMap.isCubeTexture ? -1 : 1, a.reflectivity.value = b.reflectivity, a.refractionRatio.value =
|
b.refractionRatio, a.maxMipLevel.value = aa.get(b.envMap).__maxMipLevel);
|
b.lightMap && (a.lightMap.value = b.lightMap, a.lightMapIntensity.value = b.lightMapIntensity);
|
b.aoMap && (a.aoMap.value = b.aoMap, a.aoMapIntensity.value = b.aoMapIntensity);
|
if (b.map) var c = b.map;
|
else b.specularMap ? c = b.specularMap : b.displacementMap ? c = b.displacementMap : b.normalMap ? c = b.normalMap : b.bumpMap ? c = b.bumpMap : b.roughnessMap ? c = b.roughnessMap : b.metalnessMap ? c = b.metalnessMap : b.alphaMap ? c = b.alphaMap : b.emissiveMap && (c = b.emissiveMap);
|
void 0 !==
|
c && (c.isWebGLRenderTarget && (c = c.texture), !0 === c.matrixAutoUpdate && c.updateMatrix(), a.uvTransform.value.copy(c.matrix))
|
}
|
|
function r(a, b) {
|
a.specular.value.copy(b.specular);
|
a.shininess.value = Math.max(b.shininess, 1E-4);
|
b.emissiveMap && (a.emissiveMap.value = b.emissiveMap);
|
b.bumpMap && (a.bumpMap.value = b.bumpMap, a.bumpScale.value = b.bumpScale, 1 === b.side && (a.bumpScale.value *= -1));
|
b.normalMap && (a.normalMap.value = b.normalMap, a.normalScale.value.copy(b.normalScale), 1 === b.side && a.normalScale.value.negate());
|
b.displacementMap &&
|
(a.displacementMap.value = b.displacementMap, a.displacementScale.value = b.displacementScale, a.displacementBias.value = b.displacementBias)
|
}
|
|
function u(a, b) {
|
a.roughness.value = b.roughness;
|
a.metalness.value = b.metalness;
|
b.roughnessMap && (a.roughnessMap.value = b.roughnessMap);
|
b.metalnessMap && (a.metalnessMap.value = b.metalnessMap);
|
b.emissiveMap && (a.emissiveMap.value = b.emissiveMap);
|
b.bumpMap && (a.bumpMap.value = b.bumpMap, a.bumpScale.value = b.bumpScale, 1 === b.side && (a.bumpScale.value *= -1));
|
b.normalMap && (a.normalMap.value =
|
b.normalMap, a.normalScale.value.copy(b.normalScale), 1 === b.side && a.normalScale.value.negate());
|
b.displacementMap && (a.displacementMap.value = b.displacementMap, a.displacementScale.value = b.displacementScale, a.displacementBias.value = b.displacementBias);
|
b.envMap && (a.envMapIntensity.value = b.envMapIntensity)
|
}
|
e = e || {};
|
var v = void 0 !== e.canvas ? e.canvas : V.createElementNS("http://www.w3.org/1999/xhtml", "canvas"),
|
w = void 0 !== e.context ? e.context : null,
|
x = void 0 !== e.alpha ? e.alpha : !1,
|
B = void 0 !== e.depth ? e.depth : !0,
|
C = void 0 !==
|
e.stencil ? e.stencil : !0,
|
A = void 0 !== e.antialias ? e.antialias : !1,
|
F = void 0 !== e.premultipliedAlpha ? e.premultipliedAlpha : !0,
|
W = void 0 !== e.preserveDrawingBuffer ? e.preserveDrawingBuffer : !1,
|
Ca = void 0 !== e.powerPreference ? e.powerPreference : "default",
|
G = void 0 !== e.failIfMajorPerformanceCaveat ? e.failIfMajorPerformanceCaveat : !1,
|
H = null,
|
E = null;
|
this.domElement = v;
|
this.debug = {
|
checkShaderErrors: !0
|
};
|
this.sortObjects = this.autoClearStencil = this.autoClearDepth = this.autoClearColor = this.autoClear = !0;
|
this.clippingPlanes = [];
|
this.localClippingEnabled = !1;
|
this.gammaFactor = 2;
|
this.physicallyCorrectLights = this.gammaOutput = this.gammaInput = !1;
|
this.toneMappingWhitePoint = this.toneMappingExposure = this.toneMapping = 1;
|
this.maxMorphTargets = 8;
|
this.maxMorphNormals = 4;
|
var D = this,
|
M = !1,
|
P = null,
|
R = 0,
|
O = 0,
|
Q = null,
|
X = null,
|
af = -1;
|
var bf = h = null;
|
var T = !1;
|
var Ua = null,
|
jc = null,
|
S = new ca,
|
Z = new ca,
|
da = null,
|
L = v.width,
|
Y = v.height,
|
ha = 1,
|
U = new ca(0, 0, L, Y),
|
ia = new ca(0, 0, L, Y),
|
na = !1,
|
Dg = new Sd,
|
Ta = new Xj,
|
$e = !1,
|
qa = !1,
|
Xd = new I,
|
Mb = new q;
|
try {
|
x = {
|
alpha: x,
|
depth: B,
|
stencil: C,
|
antialias: A,
|
premultipliedAlpha: F,
|
preserveDrawingBuffer: W,
|
powerPreference: Ca,
|
failIfMajorPerformanceCaveat: G,
|
xrCompatible: !0
|
};
|
v.addEventListener("webglcontextlost", b, !1);
|
v.addEventListener("webglcontextrestored", c, !1);
|
var J = w || v.getContext("webgl", x) || v.getContext("experimental-webgl", x);
|
if (null === J) {
|
if (null !== v.getContext("webgl")) throw Error("Error creating WebGL context with your selected attributes.");
|
throw Error("Error creating WebGL context.");
|
}
|
void 0 === J.getShaderPrecisionFormat && (J.getShaderPrecisionFormat = function () {
|
return {
|
rangeMin: 1,
|
rangeMax: 1,
|
precision: 1
|
}
|
})
|
} catch (Bi) {
|
throw console.error("THREE.WebGLRenderer: " + Bi.message), Bi;
|
}
|
var ta, Ea, ba, fa, aa, ea, ka, va, ra, pa, wa, ua, ma, xa, ya, Aa, la;
|
a();
|
var ja = "undefined" !== typeof navigator && "xr" in navigator && "isSessionSupported" in navigator.xr ? new Ai(D, J) : new Gg(D);
|
this.vr = ja;
|
var sa = new hl(D, J),
|
Da = new ui(D, ra, Ea.maxTextureSize);
|
this.shadowMap = Da;
|
this.getContext = function () {
|
return J
|
};
|
this.getContextAttributes = function () {
|
return J.getContextAttributes()
|
};
|
this.forceContextLoss = function () {
|
var a = ta.get("WEBGL_lose_context");
|
a && a.loseContext()
|
};
|
this.forceContextRestore = function () {
|
var a = ta.get("WEBGL_lose_context");
|
a && a.restoreContext()
|
};
|
this.getPixelRatio = function () {
|
return ha
|
};
|
this.setPixelRatio = function (a) {
|
void 0 !== a && (ha = a, this.setSize(L, Y, !1))
|
};
|
this.getSize = function (a) {
|
void 0 === a && (console.warn("WebGLRenderer: .getsize() now requires a Vector2 as an argument"), a = new z);
|
return a.set(L, Y)
|
};
|
this.setSize = function (a, b, c) {
|
ja.isPresenting() ? console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.") :
|
(L = a, Y = b, v.width = Math.floor(a * ha), v.height = Math.floor(b * ha), !1 !== c && (v.style.width = a + "px", v.style.height = b + "px"), this.setViewport(0, 0, a, b))
|
};
|
this.getDrawingBufferSize = function (a) {
|
void 0 === a && (console.warn("WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument"), a = new z);
|
return a.set(L * ha, Y * ha).floor()
|
};
|
this.setDrawingBufferSize = function (a, b, c) {
|
L = a;
|
Y = b;
|
ha = c;
|
v.width = Math.floor(a * c);
|
v.height = Math.floor(b * c);
|
this.setViewport(0, 0, a, b)
|
};
|
this.getCurrentViewport = function (a) {
|
void 0 ===
|
a && (console.warn("WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument"), a = new ca);
|
return a.copy(S)
|
};
|
this.getViewport = function (a) {
|
return a.copy(U)
|
};
|
this.setViewport = function (a, b, c, d) {
|
a.isVector4 ? U.set(a.x, a.y, a.z, a.w) : U.set(a, b, c, d);
|
ba.viewport(S.copy(U).multiplyScalar(ha).floor())
|
};
|
this.getScissor = function (a) {
|
return a.copy(ia)
|
};
|
this.setScissor = function (a, b, c, d) {
|
a.isVector4 ? ia.set(a.x, a.y, a.z, a.w) : ia.set(a, b, c, d);
|
ba.scissor(Z.copy(ia).multiplyScalar(ha).floor())
|
};
|
this.getScissorTest =
|
function () {
|
return na
|
};
|
this.setScissorTest = function (a) {
|
ba.setScissorTest(na = a)
|
};
|
this.getClearColor = function () {
|
return ma.getClearColor()
|
};
|
this.setClearColor = function () {
|
ma.setClearColor.apply(ma, arguments)
|
};
|
this.getClearAlpha = function () {
|
return ma.getClearAlpha()
|
};
|
this.setClearAlpha = function () {
|
ma.setClearAlpha.apply(ma, arguments)
|
};
|
this.clear = function (a, b, c) {
|
var d = 0;
|
if (void 0 === a || a) d |= 16384;
|
if (void 0 === b || b) d |= 256;
|
if (void 0 === c || c) d |= 1024;
|
J.clear(d)
|
};
|
this.clearColor = function () {
|
this.clear(!0, !1, !1)
|
};
|
this.clearDepth =
|
function () {
|
this.clear(!1, !0, !1)
|
};
|
this.clearStencil = function () {
|
this.clear(!1, !1, !0)
|
};
|
this.dispose = function () {
|
v.removeEventListener("webglcontextlost", b, !1);
|
v.removeEventListener("webglcontextrestored", c, !1);
|
wa.dispose();
|
ua.dispose();
|
aa.dispose();
|
ra.dispose();
|
ja.dispose();
|
za.stop()
|
};
|
this.renderBufferImmediate = function (a, b) {
|
ba.initAttributes();
|
var c = aa.get(a);
|
a.hasPositions && !c.position && (c.position = J.createBuffer());
|
a.hasNormals && !c.normal && (c.normal = J.createBuffer());
|
a.hasUvs && !c.uv && (c.uv = J.createBuffer());
|
a.hasColors && !c.color && (c.color = J.createBuffer());
|
b = b.getAttributes();
|
a.hasPositions && (J.bindBuffer(34962, c.position), J.bufferData(34962, a.positionArray, 35048), ba.enableAttribute(b.position), J.vertexAttribPointer(b.position, 3, 5126, !1, 0, 0));
|
a.hasNormals && (J.bindBuffer(34962, c.normal), J.bufferData(34962, a.normalArray, 35048), ba.enableAttribute(b.normal), J.vertexAttribPointer(b.normal, 3, 5126, !1, 0, 0));
|
a.hasUvs && (J.bindBuffer(34962, c.uv), J.bufferData(34962, a.uvArray, 35048), ba.enableAttribute(b.uv), J.vertexAttribPointer(b.uv,
|
2, 5126, !1, 0, 0));
|
a.hasColors && (J.bindBuffer(34962, c.color), J.bufferData(34962, a.colorArray, 35048), ba.enableAttribute(b.color), J.vertexAttribPointer(b.color, 3, 5126, !1, 0, 0));
|
ba.disableUnusedAttributes();
|
J.drawArrays(4, 0, a.count);
|
a.count = 0
|
};
|
this.renderBufferDirect = function (a, b, c, d, e, f) {
|
var g = e.isMesh && 0 > e.matrixWorld.determinant();
|
ba.setMaterial(d, g);
|
var k = y(a, b, d, e),
|
m = !1;
|
if (h !== c.id || bf !== k.id || T !== (!0 === d.wireframe)) h = c.id, bf = k.id, T = !0 === d.wireframe, m = !0;
|
e.morphTargetInfluences && (xa.update(e, c, d, k),
|
m = !0);
|
g = c.index;
|
var n = c.attributes.position;
|
b = 1;
|
!0 === d.wireframe && (g = va.getWireframeAttribute(c), b = 2);
|
a = ya;
|
if (null !== g) {
|
var p = ka.get(g);
|
a = Aa;
|
a.setIndex(p)
|
}
|
if (m) {
|
if (!1 !== Ea.isWebGL2 || !e.isInstancedMesh && !c.isInstancedBufferGeometry || null !== ta.get("ANGLE_instanced_arrays")) {
|
ba.initAttributes();
|
m = c.attributes;
|
k = k.getAttributes();
|
var l = d.defaultAttributeValues;
|
for (A in k) {
|
var r = k[A];
|
if (0 <= r) {
|
var t = m[A];
|
if (void 0 !== t) {
|
var u = t.normalized,
|
q = t.itemSize,
|
v = ka.get(t);
|
if (void 0 !== v) {
|
var x = v.buffer,
|
w = v.type;
|
v =
|
v.bytesPerElement;
|
if (t.isInterleavedBufferAttribute) {
|
var B = t.data,
|
C = B.stride;
|
t = t.offset;
|
B && B.isInstancedInterleavedBuffer ? (ba.enableAttributeAndDivisor(r, B.meshPerAttribute), void 0 === c.maxInstancedCount && (c.maxInstancedCount = B.meshPerAttribute * B.count)) : ba.enableAttribute(r);
|
J.bindBuffer(34962, x);
|
J.vertexAttribPointer(r, q, w, u, C * v, t * v)
|
} else t.isInstancedBufferAttribute ? (ba.enableAttributeAndDivisor(r, t.meshPerAttribute), void 0 === c.maxInstancedCount && (c.maxInstancedCount = t.meshPerAttribute * t.count)) :
|
ba.enableAttribute(r), J.bindBuffer(34962, x), J.vertexAttribPointer(r, q, w, u, 0, 0)
|
}
|
} else if ("instanceMatrix" === A) v = ka.get(e.instanceMatrix), void 0 !== v && (x = v.buffer, w = v.type, ba.enableAttributeAndDivisor(r + 0, 1), ba.enableAttributeAndDivisor(r + 1, 1), ba.enableAttributeAndDivisor(r + 2, 1), ba.enableAttributeAndDivisor(r + 3, 1), J.bindBuffer(34962, x), J.vertexAttribPointer(r + 0, 4, w, !1, 64, 0), J.vertexAttribPointer(r + 1, 4, w, !1, 64, 16), J.vertexAttribPointer(r + 2, 4, w, !1, 64, 32), J.vertexAttribPointer(r + 3, 4, w, !1, 64, 48));
|
else if (void 0 !==
|
l && (u = l[A], void 0 !== u)) switch (u.length) {
|
case 2:
|
J.vertexAttrib2fv(r, u);
|
break;
|
case 3:
|
J.vertexAttrib3fv(r, u);
|
break;
|
case 4:
|
J.vertexAttrib4fv(r, u);
|
break;
|
default:
|
J.vertexAttrib1fv(r, u)
|
}
|
}
|
}
|
ba.disableUnusedAttributes()
|
}
|
null !== g && J.bindBuffer(34963, p.buffer)
|
}
|
p = Infinity;
|
null !== g ? p = g.count : void 0 !== n && (p = n.count);
|
g = c.drawRange.start * b;
|
n = null !== f ? f.start * b : 0;
|
var A = Math.max(g, n);
|
f = Math.max(0, Math.min(p, g + c.drawRange.count * b, n + (null !== f ? f.count * b : Infinity)) - 1 - A + 1);
|
if (0 !== f) {
|
if (e.isMesh)
|
if (!0 === d.wireframe) ba.setLineWidth(d.wireframeLinewidth *
|
(null === Q ? ha : 1)), a.setMode(1);
|
else switch (e.drawMode) {
|
case 0:
|
a.setMode(4);
|
break;
|
case 1:
|
a.setMode(5);
|
break;
|
case 2:
|
a.setMode(6)
|
} else e.isLine ? (d = d.linewidth, void 0 === d && (d = 1), ba.setLineWidth(d * (null === Q ? ha : 1)), e.isLineSegments ? a.setMode(1) : e.isLineLoop ? a.setMode(2) : a.setMode(3)) : e.isPoints ? a.setMode(0) : e.isSprite && a.setMode(4);
|
e.isInstancedMesh ? a.renderInstances(c, A, f, e.count) : c.isInstancedBufferGeometry ? a.renderInstances(c, A, f, c.maxInstancedCount) : a.render(A, f)
|
}
|
};
|
this.compile = function (a, b) {
|
E = ua.get(a,
|
b);
|
E.init();
|
a.traverse(function (a) {
|
a.isLight && (E.pushLight(a), a.castShadow && E.pushShadow(a))
|
});
|
E.setupLights(b);
|
a.traverse(function (b) {
|
if (b.material)
|
if (Array.isArray(b.material))
|
for (var c = 0; c < b.material.length; c++) p(b.material[c], a.fog, b);
|
else p(b.material, a.fog, b)
|
})
|
};
|
var Ba = null,
|
za = new zg;
|
za.setAnimationLoop(function (a) {
|
ja.isPresenting() || Ba && Ba(a)
|
});
|
"undefined" !== typeof kc && za.setContext(kc);
|
this.setAnimationLoop = function (a) {
|
Ba = a;
|
ja.setAnimationLoop(a);
|
za.start()
|
};
|
this.render = function (a, b, c, d) {
|
if (void 0 !==
|
c) {
|
console.warn("THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.");
|
var e = c
|
}
|
if (void 0 !== d) {
|
console.warn("THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.");
|
var f = d
|
}
|
b && b.isCamera ? M || (bf = h = null, T = !1, af = -1, Ua = null, !0 === a.autoUpdate && a.updateMatrixWorld(), null === b.parent && b.updateMatrixWorld(), ja.enabled && (b = ja.getCamera(b)), E = ua.get(a, b), E.init(), a.onBeforeRender(D, a, b, e || Q), Xd.multiplyMatrices(b.projectionMatrix,
|
b.matrixWorldInverse), Dg.setFromMatrix(Xd), qa = this.localClippingEnabled, $e = Ta.init(this.clippingPlanes, qa, b), H = wa.get(a, b), H.init(), k(a, b, 0, D.sortObjects), !0 === D.sortObjects && H.sort(), $e && Ta.beginShadows(), Da.render(E.state.shadowsArray, a, b), E.setupLights(b), $e && Ta.endShadows(), this.info.autoReset && this.info.reset(), void 0 !== e && this.setRenderTarget(e), ja.enabled && sa.isAvailable() && sa.attachCamera(b), ma.render(H, a, b, f), c = H.opaque, d = H.transparent, a.overrideMaterial ? (e = a.overrideMaterial, c.length && m(c,
|
a, b, e), d.length && m(d, a, b, e)) : (c.length && m(c, a, b), d.length && m(d, a, b)), a.onAfterRender(D, a, b), null !== Q && (ea.updateRenderTargetMipmap(Q), ea.updateMultisampleRenderTarget(Q)), ba.buffers.depth.setTest(!0), ba.buffers.depth.setMask(!0), ba.buffers.color.setMask(!0), ba.setPolygonOffset(!1), ja.enabled && (sa.isAvailable() && sa.detachCamera(b), ja.submitFrame()), E = H = null) : console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.")
|
};
|
this.setFramebuffer = function (a) {
|
P !== a && null === Q && J.bindFramebuffer(36160,
|
a);
|
P = a
|
};
|
this.getActiveCubeFace = function () {
|
return R
|
};
|
this.getActiveMipmapLevel = function () {
|
return O
|
};
|
this.getRenderTarget = function () {
|
return Q
|
};
|
this.setRenderTarget = function (a, b, c) {
|
Q = a;
|
R = b;
|
O = c;
|
a && void 0 === aa.get(a).__webglFramebuffer && ea.setupRenderTarget(a);
|
var d = P,
|
e = !1;
|
a ? (d = aa.get(a).__webglFramebuffer, a.isWebGLRenderTargetCube ? (d = d[b || 0], e = !0) : d = a.isWebGLMultisampleRenderTarget ? aa.get(a).__webglMultisampledFramebuffer : d, S.copy(a.viewport), Z.copy(a.scissor), da = a.scissorTest) : (S.copy(U).multiplyScalar(ha).floor(),
|
Z.copy(ia).multiplyScalar(ha).floor(), da = na);
|
X !== d && (J.bindFramebuffer(36160, d), X = d);
|
ba.viewport(S);
|
ba.scissor(Z);
|
ba.setScissorTest(da);
|
e && (a = aa.get(a.texture), J.framebufferTexture2D(36160, 36064, 34069 + (b || 0), a.__webglTexture, c || 0))
|
};
|
this.readRenderTargetPixels = function (a, b, c, d, e, f, g) {
|
if (a && a.isWebGLRenderTarget) {
|
var h = aa.get(a).__webglFramebuffer;
|
a.isWebGLRenderTargetCube && void 0 !== g && (h = h[g]);
|
if (h) {
|
g = !1;
|
h !== X && (J.bindFramebuffer(36160, h), g = !0);
|
try {
|
var k = a.texture,
|
m = k.format,
|
n = k.type;
|
1023 !== m && la.convert(m) !==
|
J.getParameter(35739) ? console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.") : 1009 === n || la.convert(n) === J.getParameter(35738) || 1015 === n && (Ea.isWebGL2 || ta.get("OES_texture_float") || ta.get("WEBGL_color_buffer_float")) || 1016 === n && (Ea.isWebGL2 ? ta.get("EXT_color_buffer_float") : ta.get("EXT_color_buffer_half_float")) ? 36053 === J.checkFramebufferStatus(36160) ? 0 <= b && b <= a.width - d && 0 <= c && c <= a.height - e && J.readPixels(b, c, d, e, la.convert(m), la.convert(n),
|
f) : console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.") : console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")
|
} finally {
|
g && J.bindFramebuffer(36160, X)
|
}
|
}
|
} else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")
|
};
|
this.copyFramebufferToTexture = function (a, b, c) {
|
void 0 === c && (c = 0);
|
var d = Math.pow(2, -c),
|
e = Math.floor(b.image.width *
|
d);
|
d = Math.floor(b.image.height * d);
|
var f = la.convert(b.format);
|
ea.setTexture2D(b, 0);
|
J.copyTexImage2D(3553, c, f, a.x, a.y, e, d, 0);
|
ba.unbindTexture()
|
};
|
this.copyTextureToTexture = function (a, b, c, d) {
|
var e = b.image.width,
|
f = b.image.height,
|
g = la.convert(c.format),
|
h = la.convert(c.type);
|
ea.setTexture2D(c, 0);
|
b.isDataTexture ? J.texSubImage2D(3553, d || 0, a.x, a.y, e, f, g, h, b.image.data) : J.texSubImage2D(3553, d || 0, a.x, a.y, g, h, b.image);
|
ba.unbindTexture()
|
};
|
this.initTexture = function (a) {
|
ea.setTexture2D(a, 0);
|
ba.unbindTexture()
|
};
|
"undefined" !==
|
typeof __THREE_DEVTOOLS__ && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe", {
|
detail: this
|
}))
|
}
|
|
function cf(e, h) {
|
this.name = "";
|
this.color = new D(e);
|
this.density = void 0 !== h ? h : 2.5E-4
|
}
|
|
function df(e, h, a) {
|
this.name = "";
|
this.color = new D(e);
|
this.near = void 0 !== h ? h : 1;
|
this.far = void 0 !== a ? a : 1E3
|
}
|
|
function wb(e, h) {
|
this.array = e;
|
this.stride = h;
|
this.count = void 0 !== e ? e.length / h : 0;
|
this.usage = 35044;
|
this.updateRange = {
|
offset: 0,
|
count: -1
|
};
|
this.version = 0
|
}
|
|
function Zd(e, h, a, b) {
|
this.data = e;
|
this.itemSize = h;
|
this.offset = a;
|
this.normalized = !0 === b
|
}
|
|
function Nb(e) {
|
R.call(this);
|
this.type = "SpriteMaterial";
|
this.color = new D(16777215);
|
this.alphaMap = this.map = null;
|
this.rotation = 0;
|
this.transparent = this.sizeAttenuation = !0;
|
this.setValues(e)
|
}
|
|
function $d(e) {
|
E.call(this);
|
this.type = "Sprite";
|
if (void 0 === Wc) {
|
Wc = new G;
|
var h = new Float32Array([-.5, -.5, 0, 0, 0, .5, -.5, 0, 1, 0, .5, .5, 0, 1, 1, -.5, .5, 0, 0, 1]);
|
h = new wb(h, 5);
|
Wc.setIndex([0, 1, 2, 0, 2, 3]);
|
Wc.setAttribute("position", new Zd(h, 3, 0, !1));
|
Wc.setAttribute("uv", new Zd(h, 2, 3, !1))
|
}
|
this.geometry = Wc;
|
this.material = void 0 !==
|
e ? e : new Nb;
|
this.center = new z(.5, .5)
|
}
|
|
function ef(e, h, a, b, c, d) {
|
Xc.subVectors(e, a).addScalar(.5).multiply(b);
|
void 0 !== c ? (ae.x = d * Xc.x - c * Xc.y, ae.y = c * Xc.x + d * Xc.y) : ae.copy(Xc);
|
e.copy(h);
|
e.x += ae.x;
|
e.y += ae.y;
|
e.applyMatrix4(Ci)
|
}
|
|
function be() {
|
E.call(this);
|
this.type = "LOD";
|
Object.defineProperties(this, {
|
levels: {
|
enumerable: !0,
|
value: []
|
}
|
});
|
this.autoUpdate = !0
|
}
|
|
function ce(e, h) {
|
e && e.isGeometry && console.error("THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");
|
ia.call(this, e, h);
|
this.type =
|
"SkinnedMesh";
|
this.bindMode = "attached";
|
this.bindMatrix = new I;
|
this.bindMatrixInverse = new I
|
}
|
|
function ff(e, h) {
|
e = e || [];
|
this.bones = e.slice(0);
|
this.boneMatrices = new Float32Array(16 * this.bones.length);
|
this.frame = -1;
|
if (void 0 === h) this.calculateInverses();
|
else if (this.bones.length === h.length) this.boneInverses = h.slice(0);
|
else
|
for (console.warn("THREE.Skeleton boneInverses is the wrong length."), this.boneInverses = [], e = 0, h = this.bones.length; e < h; e++) this.boneInverses.push(new I)
|
}
|
|
function Ig() {
|
E.call(this);
|
this.type =
|
"Bone"
|
}
|
|
function gf(e, h, a) {
|
ia.call(this, e, h);
|
this.instanceMatrix = new O(new Float32Array(16 * a), 16);
|
this.count = a
|
}
|
|
function T(e) {
|
R.call(this);
|
this.type = "LineBasicMaterial";
|
this.color = new D(16777215);
|
this.linewidth = 1;
|
this.linejoin = this.linecap = "round";
|
this.setValues(e)
|
}
|
|
function pa(e, h, a) {
|
1 === a && console.error("THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.");
|
E.call(this);
|
this.type = "Line";
|
this.geometry = void 0 !== e ? e : new G;
|
this.material = void 0 !== h ? h : new T({
|
color: 16777215 *
|
Math.random()
|
})
|
}
|
|
function Z(e, h) {
|
pa.call(this, e, h);
|
this.type = "LineSegments"
|
}
|
|
function hf(e, h) {
|
pa.call(this, e, h);
|
this.type = "LineLoop"
|
}
|
|
function Va(e) {
|
R.call(this);
|
this.type = "PointsMaterial";
|
this.color = new D(16777215);
|
this.alphaMap = this.map = null;
|
this.size = 1;
|
this.sizeAttenuation = !0;
|
this.morphTargets = !1;
|
this.setValues(e)
|
}
|
|
function Yc(e, h) {
|
E.call(this);
|
this.type = "Points";
|
this.geometry = void 0 !== e ? e : new G;
|
this.material = void 0 !== h ? h : new Va({
|
color: 16777215 * Math.random()
|
});
|
this.updateMorphTargets()
|
}
|
|
function Jg(e,
|
h, a, b, c, d, f) {
|
var g = Kg.distanceSqToPoint(e);
|
g < a && (a = new q, Kg.closestPointToPoint(e, a), a.applyMatrix4(b), e = c.ray.origin.distanceTo(a), e < c.near || e > c.far || d.push({
|
distance: e,
|
distanceToRay: Math.sqrt(g),
|
point: a,
|
index: h,
|
face: null,
|
object: f
|
}))
|
}
|
|
function Lg(e, h, a, b, c, d, f, g, k) {
|
S.call(this, e, h, a, b, c, d, f, g, k);
|
this.format = void 0 !== f ? f : 1022;
|
this.minFilter = void 0 !== d ? d : 1006;
|
this.magFilter = void 0 !== c ? c : 1006;
|
this.generateMipmaps = !1
|
}
|
|
function Zc(e, h, a, b, c, d, f, g, k, m, n, p) {
|
S.call(this, null, d, f, g, k, m, b, c, n, p);
|
this.image = {
|
width: h,
|
height: a
|
};
|
this.mipmaps = e;
|
this.generateMipmaps = this.flipY = !1
|
}
|
|
function de(e, h, a, b, c, d, f, g, k) {
|
S.call(this, e, h, a, b, c, d, f, g, k);
|
this.needsUpdate = !0
|
}
|
|
function ee(e, h, a, b, c, d, f, g, k, m) {
|
m = void 0 !== m ? m : 1026;
|
if (1026 !== m && 1027 !== m) throw Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");
|
void 0 === a && 1026 === m && (a = 1012);
|
void 0 === a && 1027 === m && (a = 1020);
|
S.call(this, null, b, c, d, f, g, m, a, k);
|
this.image = {
|
width: e,
|
height: h
|
};
|
this.magFilter = void 0 !== f ? f : 1003;
|
this.minFilter = void 0 !==
|
g ? g : 1003;
|
this.generateMipmaps = this.flipY = !1
|
}
|
|
function $c(e) {
|
G.call(this);
|
this.type = "WireframeGeometry";
|
var h = [],
|
a, b, c, d = [0, 0],
|
f = {},
|
g = ["a", "b", "c"];
|
if (e && e.isGeometry) {
|
var k = e.faces;
|
var m = 0;
|
for (b = k.length; m < b; m++) {
|
var n = k[m];
|
for (a = 0; 3 > a; a++) {
|
var p = n[g[a]];
|
var l = n[g[(a + 1) % 3]];
|
d[0] = Math.min(p, l);
|
d[1] = Math.max(p, l);
|
p = d[0] + "," + d[1];
|
void 0 === f[p] && (f[p] = {
|
index1: d[0],
|
index2: d[1]
|
})
|
}
|
}
|
for (p in f) m = f[p], g = e.vertices[m.index1], h.push(g.x, g.y, g.z), g = e.vertices[m.index2], h.push(g.x, g.y, g.z)
|
} else if (e && e.isBufferGeometry)
|
if (g =
|
new q, null !== e.index) {
|
k = e.attributes.position;
|
n = e.index;
|
var t = e.groups;
|
0 === t.length && (t = [{
|
start: 0,
|
count: n.count,
|
materialIndex: 0
|
}]);
|
e = 0;
|
for (c = t.length; e < c; ++e)
|
for (m = t[e], a = m.start, b = m.count, m = a, b = a + b; m < b; m += 3)
|
for (a = 0; 3 > a; a++) p = n.getX(m + a), l = n.getX(m + (a + 1) % 3), d[0] = Math.min(p, l), d[1] = Math.max(p, l), p = d[0] + "," + d[1], void 0 === f[p] && (f[p] = {
|
index1: d[0],
|
index2: d[1]
|
});
|
for (p in f) m = f[p], g.fromBufferAttribute(k, m.index1), h.push(g.x, g.y, g.z), g.fromBufferAttribute(k, m.index2), h.push(g.x, g.y, g.z)
|
} else
|
for (k = e.attributes.position,
|
m = 0, b = k.count / 3; m < b; m++)
|
for (a = 0; 3 > a; a++) f = 3 * m + a, g.fromBufferAttribute(k, f), h.push(g.x, g.y, g.z), f = 3 * m + (a + 1) % 3, g.fromBufferAttribute(k, f), h.push(g.x, g.y, g.z);
|
this.setAttribute("position", new F(h, 3))
|
}
|
|
function fe(e, h, a) {
|
P.call(this);
|
this.type = "ParametricGeometry";
|
this.parameters = {
|
func: e,
|
slices: h,
|
stacks: a
|
};
|
this.fromBufferGeometry(new ad(e, h, a));
|
this.mergeVertices()
|
}
|
|
function ad(e, h, a) {
|
G.call(this);
|
this.type = "ParametricBufferGeometry";
|
this.parameters = {
|
func: e,
|
slices: h,
|
stacks: a
|
};
|
var b = [],
|
c = [],
|
d = [],
|
f = [],
|
g =
|
new q,
|
k = new q,
|
m = new q,
|
n = new q,
|
p = new q,
|
l, t;
|
3 > e.length && console.error("THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.");
|
var r = h + 1;
|
for (l = 0; l <= a; l++) {
|
var u = l / a;
|
for (t = 0; t <= h; t++) {
|
var v = t / h;
|
e(v, u, k);
|
c.push(k.x, k.y, k.z);
|
0 <= v - 1E-5 ? (e(v - 1E-5, u, m), n.subVectors(k, m)) : (e(v + 1E-5, u, m), n.subVectors(m, k));
|
0 <= u - 1E-5 ? (e(v, u - 1E-5, m), p.subVectors(k, m)) : (e(v, u + 1E-5, m), p.subVectors(m, k));
|
g.crossVectors(n, p).normalize();
|
d.push(g.x, g.y, g.z);
|
f.push(v, u)
|
}
|
}
|
for (l = 0; l < a; l++)
|
for (t = 0; t < h; t++) e =
|
l * r + t + 1, g = (l + 1) * r + t + 1, k = (l + 1) * r + t, b.push(l * r + t, e, k), b.push(e, g, k);
|
this.setIndex(b);
|
this.setAttribute("position", new F(c, 3));
|
this.setAttribute("normal", new F(d, 3));
|
this.setAttribute("uv", new F(f, 2))
|
}
|
|
function ge(e, h, a, b) {
|
P.call(this);
|
this.type = "PolyhedronGeometry";
|
this.parameters = {
|
vertices: e,
|
indices: h,
|
radius: a,
|
detail: b
|
};
|
this.fromBufferGeometry(new Fa(e, h, a, b));
|
this.mergeVertices()
|
}
|
|
function Fa(e, h, a, b) {
|
function c(a) {
|
g.push(a.x, a.y, a.z)
|
}
|
|
function d(a, b) {
|
a *= 3;
|
b.x = e[a + 0];
|
b.y = e[a + 1];
|
b.z = e[a + 2]
|
}
|
|
function f(a,
|
b, c, d) {
|
0 > d && 1 === a.x && (k[b] = a.x - 1);
|
0 === c.x && 0 === c.z && (k[b] = d / 2 / Math.PI + .5)
|
}
|
G.call(this);
|
this.type = "PolyhedronBufferGeometry";
|
this.parameters = {
|
vertices: e,
|
indices: h,
|
radius: a,
|
detail: b
|
};
|
a = a || 1;
|
b = b || 0;
|
var g = [],
|
k = [];
|
(function (a) {
|
for (var b = new q, e = new q, f = new q, g = 0; g < h.length; g += 3) {
|
d(h[g + 0], b);
|
d(h[g + 1], e);
|
d(h[g + 2], f);
|
var k, m, l = b,
|
w = e,
|
x = f,
|
B = Math.pow(2, a),
|
C = [];
|
for (m = 0; m <= B; m++) {
|
C[m] = [];
|
var A = l.clone().lerp(x, m / B),
|
z = w.clone().lerp(x, m / B),
|
W = B - m;
|
for (k = 0; k <= W; k++) C[m][k] = 0 === k && m === B ? A : A.clone().lerp(z, k / W)
|
}
|
for (m =
|
0; m < B; m++)
|
for (k = 0; k < 2 * (B - m) - 1; k++) l = Math.floor(k / 2), 0 === k % 2 ? (c(C[m][l + 1]), c(C[m + 1][l]), c(C[m][l])) : (c(C[m][l + 1]), c(C[m + 1][l + 1]), c(C[m + 1][l]))
|
}
|
})(b);
|
(function (a) {
|
for (var b = new q, c = 0; c < g.length; c += 3) b.x = g[c + 0], b.y = g[c + 1], b.z = g[c + 2], b.normalize().multiplyScalar(a), g[c + 0] = b.x, g[c + 1] = b.y, g[c + 2] = b.z
|
})(a);
|
(function () {
|
for (var a = new q, b = 0; b < g.length; b += 3) a.x = g[b + 0], a.y = g[b + 1], a.z = g[b + 2], k.push(Math.atan2(a.z, -a.x) / 2 / Math.PI + .5, 1 - (Math.atan2(-a.y, Math.sqrt(a.x * a.x + a.z * a.z)) / Math.PI + .5));
|
a = new q;
|
b = new q;
|
for (var c =
|
new q, d = new q, e = new z, h = new z, l = new z, v = 0, w = 0; v < g.length; v += 9, w += 6) {
|
a.set(g[v + 0], g[v + 1], g[v + 2]);
|
b.set(g[v + 3], g[v + 4], g[v + 5]);
|
c.set(g[v + 6], g[v + 7], g[v + 8]);
|
e.set(k[w + 0], k[w + 1]);
|
h.set(k[w + 2], k[w + 3]);
|
l.set(k[w + 4], k[w + 5]);
|
d.copy(a).add(b).add(c).divideScalar(3);
|
var x = Math.atan2(d.z, -d.x);
|
f(e, w + 0, a, x);
|
f(h, w + 2, b, x);
|
f(l, w + 4, c, x)
|
}
|
for (a = 0; a < k.length; a += 6) b = k[a + 0], c = k[a + 2], d = k[a + 4], e = Math.min(b, c, d), .9 < Math.max(b, c, d) && .1 > e && (.2 > b && (k[a + 0] += 1), .2 > c && (k[a + 2] += 1), .2 > d && (k[a + 4] += 1))
|
})();
|
this.setAttribute("position",
|
new F(g, 3));
|
this.setAttribute("normal", new F(g.slice(), 3));
|
this.setAttribute("uv", new F(k, 2));
|
0 === b ? this.computeVertexNormals() : this.normalizeNormals()
|
}
|
|
function he(e, h) {
|
P.call(this);
|
this.type = "TetrahedronGeometry";
|
this.parameters = {
|
radius: e,
|
detail: h
|
};
|
this.fromBufferGeometry(new bd(e, h));
|
this.mergeVertices()
|
}
|
|
function bd(e, h) {
|
Fa.call(this, [1, 1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1], [2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1], e, h);
|
this.type = "TetrahedronBufferGeometry";
|
this.parameters = {
|
radius: e,
|
detail: h
|
}
|
}
|
|
function ie(e, h) {
|
P.call(this);
|
this.type = "OctahedronGeometry";
|
this.parameters = {
|
radius: e,
|
detail: h
|
};
|
this.fromBufferGeometry(new lc(e, h));
|
this.mergeVertices()
|
}
|
|
function lc(e, h) {
|
Fa.call(this, [1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1], [0, 2, 4, 0, 4, 3, 0, 3, 5, 0, 5, 2, 1, 2, 5, 1, 5, 3, 1, 3, 4, 1, 4, 2], e, h);
|
this.type = "OctahedronBufferGeometry";
|
this.parameters = {
|
radius: e,
|
detail: h
|
}
|
}
|
|
function je(e, h) {
|
P.call(this);
|
this.type = "IcosahedronGeometry";
|
this.parameters = {
|
radius: e,
|
detail: h
|
};
|
this.fromBufferGeometry(new cd(e, h));
|
this.mergeVertices()
|
}
|
|
function cd(e, h) {
|
var a =
|
(1 + Math.sqrt(5)) / 2;
|
Fa.call(this, [-1, a, 0, 1, a, 0, -1, -a, 0, 1, -a, 0, 0, -1, a, 0, 1, a, 0, -1, -a, 0, 1, -a, a, 0, -1, a, 0, 1, -a, 0, -1, -a, 0, 1], [0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1], e, h);
|
this.type = "IcosahedronBufferGeometry";
|
this.parameters = {
|
radius: e,
|
detail: h
|
}
|
}
|
|
function ke(e, h) {
|
P.call(this);
|
this.type = "DodecahedronGeometry";
|
this.parameters = {
|
radius: e,
|
detail: h
|
};
|
this.fromBufferGeometry(new dd(e, h));
|
this.mergeVertices()
|
}
|
|
function dd(e, h) {
|
var a =
|
(1 + Math.sqrt(5)) / 2,
|
b = 1 / a;
|
Fa.call(this, [-1, -1, -1, -1, -1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, -1, 1, 1, 1, 0, -b, -a, 0, -b, a, 0, b, -a, 0, b, a, -b, -a, 0, -b, a, 0, b, -a, 0, b, a, 0, -a, 0, -b, a, 0, -b, -a, 0, b, a, 0, b], [3, 11, 7, 3, 7, 15, 3, 15, 13, 7, 19, 17, 7, 17, 6, 7, 6, 15, 17, 4, 8, 17, 8, 10, 17, 10, 6, 8, 0, 16, 8, 16, 2, 8, 2, 10, 0, 12, 1, 0, 1, 18, 0, 18, 16, 6, 10, 2, 6, 2, 13, 6, 13, 15, 2, 16, 18, 2, 18, 3, 2, 3, 13, 18, 1, 9, 18, 9, 11, 18, 11, 3, 4, 14, 12, 4, 12, 0, 4, 0, 8, 11, 9, 5, 11, 5, 19, 11, 19, 7, 19, 5, 14, 19, 14, 4, 19, 4, 17, 1, 12, 14, 1, 14, 5, 1, 5, 9], e, h);
|
this.type = "DodecahedronBufferGeometry";
|
this.parameters = {
|
radius: e,
|
detail: h
|
}
|
}
|
|
function le(e, h, a, b, c, d) {
|
P.call(this);
|
this.type = "TubeGeometry";
|
this.parameters = {
|
path: e,
|
tubularSegments: h,
|
radius: a,
|
radialSegments: b,
|
closed: c
|
};
|
void 0 !== d && console.warn("THREE.TubeGeometry: taper has been removed.");
|
e = new mc(e, h, a, b, c);
|
this.tangents = e.tangents;
|
this.normals = e.normals;
|
this.binormals = e.binormals;
|
this.fromBufferGeometry(e);
|
this.mergeVertices()
|
}
|
|
function mc(e, h, a, b, c) {
|
function d(c) {
|
n = e.getPointAt(c / h, n);
|
var d = f.normals[c];
|
c = f.binormals[c];
|
for (l = 0; l <= b; l++) {
|
var m = l / b * Math.PI *
|
2,
|
p = Math.sin(m);
|
m = -Math.cos(m);
|
k.x = m * d.x + p * c.x;
|
k.y = m * d.y + p * c.y;
|
k.z = m * d.z + p * c.z;
|
k.normalize();
|
r.push(k.x, k.y, k.z);
|
g.x = n.x + a * k.x;
|
g.y = n.y + a * k.y;
|
g.z = n.z + a * k.z;
|
t.push(g.x, g.y, g.z)
|
}
|
}
|
G.call(this);
|
this.type = "TubeBufferGeometry";
|
this.parameters = {
|
path: e,
|
tubularSegments: h,
|
radius: a,
|
radialSegments: b,
|
closed: c
|
};
|
h = h || 64;
|
a = a || 1;
|
b = b || 8;
|
c = c || !1;
|
var f = e.computeFrenetFrames(h, c);
|
this.tangents = f.tangents;
|
this.normals = f.normals;
|
this.binormals = f.binormals;
|
var g = new q,
|
k = new q,
|
m = new z,
|
n = new q,
|
p, l, t = [],
|
r = [],
|
u = [],
|
v = [];
|
for (p =
|
0; p < h; p++) d(p);
|
d(!1 === c ? h : 0);
|
for (p = 0; p <= h; p++)
|
for (l = 0; l <= b; l++) m.x = p / h, m.y = l / b, u.push(m.x, m.y);
|
(function () {
|
for (l = 1; l <= h; l++)
|
for (p = 1; p <= b; p++) {
|
var a = (b + 1) * l + (p - 1),
|
c = (b + 1) * l + p,
|
d = (b + 1) * (l - 1) + p;
|
v.push((b + 1) * (l - 1) + (p - 1), a, d);
|
v.push(a, c, d)
|
}
|
})();
|
this.setIndex(v);
|
this.setAttribute("position", new F(t, 3));
|
this.setAttribute("normal", new F(r, 3));
|
this.setAttribute("uv", new F(u, 2))
|
}
|
|
function me(e, h, a, b, c, d, f) {
|
P.call(this);
|
this.type = "TorusKnotGeometry";
|
this.parameters = {
|
radius: e,
|
tube: h,
|
tubularSegments: a,
|
radialSegments: b,
|
p: c,
|
q: d
|
};
|
void 0 !== f && console.warn("THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.");
|
this.fromBufferGeometry(new ed(e, h, a, b, c, d));
|
this.mergeVertices()
|
}
|
|
function ed(e, h, a, b, c, d) {
|
function f(a, b, c, d, e) {
|
var f = Math.sin(a);
|
b = c / b * a;
|
c = Math.cos(b);
|
e.x = d * (2 + c) * .5 * Math.cos(a);
|
e.y = d * (2 + c) * f * .5;
|
e.z = d * Math.sin(b) * .5
|
}
|
G.call(this);
|
this.type = "TorusKnotBufferGeometry";
|
this.parameters = {
|
radius: e,
|
tube: h,
|
tubularSegments: a,
|
radialSegments: b,
|
p: c,
|
q: d
|
};
|
e = e || 1;
|
h = h || .4;
|
a = Math.floor(a) ||
|
64;
|
b = Math.floor(b) || 8;
|
c = c || 2;
|
d = d || 3;
|
var g = [],
|
k = [],
|
m = [],
|
n = [],
|
p, l = new q,
|
t = new q,
|
r = new q,
|
u = new q,
|
v = new q,
|
w = new q,
|
x = new q;
|
for (p = 0; p <= a; ++p) {
|
var B = p / a * c * Math.PI * 2;
|
f(B, c, d, e, r);
|
f(B + .01, c, d, e, u);
|
w.subVectors(u, r);
|
x.addVectors(u, r);
|
v.crossVectors(w, x);
|
x.crossVectors(v, w);
|
v.normalize();
|
x.normalize();
|
for (B = 0; B <= b; ++B) {
|
var C = B / b * Math.PI * 2,
|
A = -h * Math.cos(C);
|
C = h * Math.sin(C);
|
l.x = r.x + (A * x.x + C * v.x);
|
l.y = r.y + (A * x.y + C * v.y);
|
l.z = r.z + (A * x.z + C * v.z);
|
k.push(l.x, l.y, l.z);
|
t.subVectors(l, r).normalize();
|
m.push(t.x, t.y, t.z);
|
n.push(p /
|
a);
|
n.push(B / b)
|
}
|
}
|
for (B = 1; B <= a; B++)
|
for (p = 1; p <= b; p++) e = (b + 1) * B + (p - 1), h = (b + 1) * B + p, c = (b + 1) * (B - 1) + p, g.push((b + 1) * (B - 1) + (p - 1), e, c), g.push(e, h, c);
|
this.setIndex(g);
|
this.setAttribute("position", new F(k, 3));
|
this.setAttribute("normal", new F(m, 3));
|
this.setAttribute("uv", new F(n, 2))
|
}
|
|
function ne(e, h, a, b, c) {
|
P.call(this);
|
this.type = "TorusGeometry";
|
this.parameters = {
|
radius: e,
|
tube: h,
|
radialSegments: a,
|
tubularSegments: b,
|
arc: c
|
};
|
this.fromBufferGeometry(new fd(e, h, a, b, c));
|
this.mergeVertices()
|
}
|
|
function fd(e, h, a, b, c) {
|
G.call(this);
|
this.type = "TorusBufferGeometry";
|
this.parameters = {
|
radius: e,
|
tube: h,
|
radialSegments: a,
|
tubularSegments: b,
|
arc: c
|
};
|
e = e || 1;
|
h = h || .4;
|
a = Math.floor(a) || 8;
|
b = Math.floor(b) || 6;
|
c = c || 2 * Math.PI;
|
var d = [],
|
f = [],
|
g = [],
|
k = [],
|
m = new q,
|
n = new q,
|
p = new q,
|
l, t;
|
for (l = 0; l <= a; l++)
|
for (t = 0; t <= b; t++) {
|
var r = t / b * c,
|
u = l / a * Math.PI * 2;
|
n.x = (e + h * Math.cos(u)) * Math.cos(r);
|
n.y = (e + h * Math.cos(u)) * Math.sin(r);
|
n.z = h * Math.sin(u);
|
f.push(n.x, n.y, n.z);
|
m.x = e * Math.cos(r);
|
m.y = e * Math.sin(r);
|
p.subVectors(n, m).normalize();
|
g.push(p.x, p.y, p.z);
|
k.push(t / b);
|
k.push(l /
|
a)
|
}
|
for (l = 1; l <= a; l++)
|
for (t = 1; t <= b; t++) e = (b + 1) * (l - 1) + t - 1, h = (b + 1) * (l - 1) + t, c = (b + 1) * l + t, d.push((b + 1) * l + t - 1, e, c), d.push(e, h, c);
|
this.setIndex(d);
|
this.setAttribute("position", new F(f, 3));
|
this.setAttribute("normal", new F(g, 3));
|
this.setAttribute("uv", new F(k, 2))
|
}
|
|
function Di(e, h, a, b, c) {
|
for (var d, f = 0, g = h, k = a - b; g < a; g += b) f += (e[k] - e[g]) * (e[g + 1] + e[k + 1]), k = g;
|
if (c === 0 < f)
|
for (c = h; c < a; c += b) d = Ei(c, e[c], e[c + 1], d);
|
else
|
for (c = a - b; c >= h; c -= b) d = Ei(c, e[c], e[c + 1], d);
|
d && nc(d, d.next) && (oe(d), d = d.next);
|
return d
|
}
|
|
function pe(e, h) {
|
if (!e) return e;
|
h || (h = e);
|
do {
|
var a = !1;
|
if (e.steiner || !nc(e, e.next) && 0 !== wa(e.prev, e, e.next)) e = e.next;
|
else {
|
oe(e);
|
e = h = e.prev;
|
if (e === e.next) break;
|
a = !0
|
}
|
} while (a || e !== h);
|
return h
|
}
|
|
function qe(e, h, a, b, c, d, f) {
|
if (e) {
|
if (!f && d) {
|
var g = e,
|
k = g;
|
do null === k.z && (k.z = Mg(k.x, k.y, b, c, d)), k.prevZ = k.prev, k = k.nextZ = k.next; while (k !== g);
|
k.prevZ.nextZ = null;
|
k.prevZ = null;
|
g = k;
|
var m, n, p, l, t = 1;
|
do {
|
k = g;
|
var r = g = null;
|
for (n = 0; k;) {
|
n++;
|
var u = k;
|
for (m = p = 0; m < t && (p++, u = u.nextZ, u); m++);
|
for (l = t; 0 < p || 0 < l && u;) 0 !== p && (0 === l || !u || k.z <= u.z) ? (m = k, k = k.nextZ, p--) : (m =
|
u, u = u.nextZ, l--), r ? r.nextZ = m : g = m, m.prevZ = r, r = m;
|
k = u
|
}
|
r.nextZ = null;
|
t *= 2
|
} while (1 < n)
|
}
|
for (g = e; e.prev !== e.next;) {
|
k = e.prev;
|
u = e.next;
|
if (d) r = il(e, b, c, d);
|
else a: if (r = e, n = r.prev, p = r, t = r.next, 0 <= wa(n, p, t)) r = !1;
|
else {
|
for (m = r.next.next; m !== r.prev;) {
|
if (gd(n.x, n.y, p.x, p.y, t.x, t.y, m.x, m.y) && 0 <= wa(m.prev, m, m.next)) {
|
r = !1;
|
break a
|
}
|
m = m.next
|
}
|
r = !0
|
} if (r) h.push(k.i / a), h.push(e.i / a), h.push(u.i / a), oe(e), g = e = u.next;
|
else if (e = u, e === g) {
|
if (!f) qe(pe(e), h, a, b, c, d, 1);
|
else if (1 === f) {
|
f = h;
|
g = a;
|
k = e;
|
do u = k.prev, r = k.next.next, !nc(u, r) && Fi(u,
|
k, k.next, r) && re(u, r) && re(r, u) && (f.push(u.i / g), f.push(k.i / g), f.push(r.i / g), oe(k), oe(k.next), k = e = r), k = k.next; while (k !== e);
|
e = k;
|
qe(e, h, a, b, c, d, 2)
|
} else if (2 === f) a: {
|
f = e;do {
|
for (g = f.next.next; g !== f.prev;) {
|
if (k = f.i !== g.i) {
|
k = f;
|
u = g;
|
if (r = k.next.i !== u.i && k.prev.i !== u.i) {
|
b: {
|
r = k;do {
|
if (r.i !== k.i && r.next.i !== k.i && r.i !== u.i && r.next.i !== u.i && Fi(r, r.next, k, u)) {
|
r = !0;
|
break b
|
}
|
r = r.next
|
} while (r !== k);r = !1
|
}
|
r = !r
|
}
|
if (r = r && re(k, u) && re(u, k)) {
|
r = k;
|
n = !1;
|
p = (k.x + u.x) / 2;
|
u = (k.y + u.y) / 2;
|
do r.y > u !== r.next.y > u && r.next.y !== r.y && p < (r.next.x -
|
r.x) * (u - r.y) / (r.next.y - r.y) + r.x && (n = !n), r = r.next; while (r !== k);
|
r = n
|
}
|
k = r
|
}
|
if (k) {
|
e = Gi(f, g);
|
f = pe(f, f.next);
|
e = pe(e, e.next);
|
qe(f, h, a, b, c, d);
|
qe(e, h, a, b, c, d);
|
break a
|
}
|
g = g.next
|
}
|
f = f.next
|
} while (f !== e)
|
}
|
break
|
}
|
}
|
}
|
}
|
|
function il(e, h, a, b) {
|
var c = e.prev,
|
d = e.next;
|
if (0 <= wa(c, e, d)) return !1;
|
var f = c.x > e.x ? c.x > d.x ? c.x : d.x : e.x > d.x ? e.x : d.x,
|
g = c.y > e.y ? c.y > d.y ? c.y : d.y : e.y > d.y ? e.y : d.y,
|
k = Mg(c.x < e.x ? c.x < d.x ? c.x : d.x : e.x < d.x ? e.x : d.x, c.y < e.y ? c.y < d.y ? c.y : d.y : e.y < d.y ? e.y : d.y, h, a, b);
|
h = Mg(f, g, h, a, b);
|
a = e.prevZ;
|
for (b = e.nextZ; a && a.z >= k && b && b.z <=
|
h;) {
|
if (a !== e.prev && a !== e.next && gd(c.x, c.y, e.x, e.y, d.x, d.y, a.x, a.y) && 0 <= wa(a.prev, a, a.next)) return !1;
|
a = a.prevZ;
|
if (b !== e.prev && b !== e.next && gd(c.x, c.y, e.x, e.y, d.x, d.y, b.x, b.y) && 0 <= wa(b.prev, b, b.next)) return !1;
|
b = b.nextZ
|
}
|
for (; a && a.z >= k;) {
|
if (a !== e.prev && a !== e.next && gd(c.x, c.y, e.x, e.y, d.x, d.y, a.x, a.y) && 0 <= wa(a.prev, a, a.next)) return !1;
|
a = a.prevZ
|
}
|
for (; b && b.z <= h;) {
|
if (b !== e.prev && b !== e.next && gd(c.x, c.y, e.x, e.y, d.x, d.y, b.x, b.y) && 0 <= wa(b.prev, b, b.next)) return !1;
|
b = b.nextZ
|
}
|
return !0
|
}
|
|
function jl(e, h) {
|
return e.x - h.x
|
}
|
|
function kl(e, h) {
|
var a = h,
|
b = e.x,
|
c = e.y,
|
d = -Infinity;
|
do {
|
if (c <= a.y && c >= a.next.y && a.next.y !== a.y) {
|
var f = a.x + (c - a.y) * (a.next.x - a.x) / (a.next.y - a.y);
|
if (f <= b && f > d) {
|
d = f;
|
if (f === b) {
|
if (c === a.y) return a;
|
if (c === a.next.y) return a.next
|
}
|
var g = a.x < a.next.x ? a : a.next
|
}
|
}
|
a = a.next
|
} while (a !== h);
|
if (!g) return null;
|
if (b === d) return g.prev;
|
h = g;
|
f = g.x;
|
var k = g.y,
|
m = Infinity;
|
for (a = g.next; a !== h;) {
|
if (b >= a.x && a.x >= f && b !== a.x && gd(c < k ? b : d, c, f, k, c < k ? d : b, c, a.x, a.y)) {
|
var n = Math.abs(c - a.y) / (b - a.x);
|
(n < m || n === m && a.x > g.x) && re(a, e) && (g = a, m = n)
|
}
|
a =
|
a.next
|
}
|
return g
|
}
|
|
function Mg(e, h, a, b, c) {
|
e = 32767 * (e - a) * c;
|
h = 32767 * (h - b) * c;
|
e = (e | e << 8) & 16711935;
|
e = (e | e << 4) & 252645135;
|
e = (e | e << 2) & 858993459;
|
h = (h | h << 8) & 16711935;
|
h = (h | h << 4) & 252645135;
|
h = (h | h << 2) & 858993459;
|
return (e | e << 1) & 1431655765 | ((h | h << 1) & 1431655765) << 1
|
}
|
|
function ll(e) {
|
var h = e,
|
a = e;
|
do {
|
if (h.x < a.x || h.x === a.x && h.y < a.y) a = h;
|
h = h.next
|
} while (h !== e);
|
return a
|
}
|
|
function gd(e, h, a, b, c, d, f, g) {
|
return 0 <= (c - f) * (h - g) - (e - f) * (d - g) && 0 <= (e - f) * (b - g) - (a - f) * (h - g) && 0 <= (a - f) * (d - g) - (c - f) * (b - g)
|
}
|
|
function wa(e, h, a) {
|
return (h.y - e.y) * (a.x -
|
h.x) - (h.x - e.x) * (a.y - h.y)
|
}
|
|
function nc(e, h) {
|
return e.x === h.x && e.y === h.y
|
}
|
|
function Fi(e, h, a, b) {
|
return nc(e, a) && nc(h, b) || nc(e, b) && nc(a, h) ? !0 : 0 < wa(e, h, a) !== 0 < wa(e, h, b) && 0 < wa(a, b, e) !== 0 < wa(a, b, h)
|
}
|
|
function re(e, h) {
|
return 0 > wa(e.prev, e, e.next) ? 0 <= wa(e, h, e.next) && 0 <= wa(e, e.prev, h) : 0 > wa(e, h, e.prev) || 0 > wa(e, e.next, h)
|
}
|
|
function Gi(e, h) {
|
var a = new Ng(e.i, e.x, e.y),
|
b = new Ng(h.i, h.x, h.y),
|
c = e.next,
|
d = h.prev;
|
e.next = h;
|
h.prev = e;
|
a.next = c;
|
c.prev = a;
|
b.next = a;
|
a.prev = b;
|
d.next = b;
|
b.prev = d;
|
return b
|
}
|
|
function Ei(e, h, a, b) {
|
e = new Ng(e,
|
h, a);
|
b ? (e.next = b.next, e.prev = b, b.next.prev = e, b.next = e) : (e.prev = e, e.next = e);
|
return e
|
}
|
|
function oe(e) {
|
e.next.prev = e.prev;
|
e.prev.next = e.next;
|
e.prevZ && (e.prevZ.nextZ = e.nextZ);
|
e.nextZ && (e.nextZ.prevZ = e.prevZ)
|
}
|
|
function Ng(e, h, a) {
|
this.i = e;
|
this.x = h;
|
this.y = a;
|
this.nextZ = this.prevZ = this.z = this.next = this.prev = null;
|
this.steiner = !1
|
}
|
|
function Hi(e) {
|
var h = e.length;
|
2 < h && e[h - 1].equals(e[0]) && e.pop()
|
}
|
|
function Ii(e, h) {
|
for (var a = 0; a < h.length; a++) e.push(h[a].x), e.push(h[a].y)
|
}
|
|
function oc(e, h) {
|
P.call(this);
|
this.type = "ExtrudeGeometry";
|
this.parameters = {
|
shapes: e,
|
options: h
|
};
|
this.fromBufferGeometry(new jb(e, h));
|
this.mergeVertices()
|
}
|
|
function jb(e, h) {
|
function a(a) {
|
function e(a, b, c) {
|
b || console.error("THREE.ExtrudeGeometry: vec does not exist");
|
return b.clone().multiplyScalar(c).add(a)
|
}
|
|
function f(a, b, c) {
|
var d = a.x - b.x;
|
var e = a.y - b.y;
|
var f = c.x - a.x;
|
var g = c.y - a.y,
|
h = d * d + e * e;
|
if (Math.abs(d * g - e * f) > Number.EPSILON) {
|
var k = Math.sqrt(h),
|
m = Math.sqrt(f * f + g * g);
|
h = b.x - e / k;
|
b = b.y + d / k;
|
g = ((c.x - g / m - h) * g - (c.y + f / m - b) * f) / (d * g - e * f);
|
f = h + d * g - a.x;
|
d = b + e * g - a.y;
|
e = f * f +
|
d * d;
|
if (2 >= e) return new z(f, d);
|
e = Math.sqrt(e / 2)
|
} else a = !1, d > Number.EPSILON ? f > Number.EPSILON && (a = !0) : d < -Number.EPSILON ? f < -Number.EPSILON && (a = !0) : Math.sign(e) === Math.sign(g) && (a = !0), a ? (f = -e, e = Math.sqrt(h)) : (f = d, d = e, e = Math.sqrt(h / 2));
|
return new z(f / e, d / e)
|
}
|
|
function g(a, d) {
|
for (L = a.length; 0 <= --L;) {
|
var e = L;
|
var f = L - 1;
|
0 > f && (f = a.length - 1);
|
var g, h = x + 2 * D;
|
for (g = 0; g < h; g++) {
|
var k = Z * g,
|
m = Z * (g + 1),
|
n = d + f + k,
|
p = d + f + m;
|
m = d + e + m;
|
r(d + e + k);
|
r(n);
|
r(m);
|
r(n);
|
r(p);
|
r(m);
|
k = c.length / 3;
|
k = H.generateSideWallUV(b, c, k - 6, k - 3, k - 2, k - 1);
|
u(k[0]);
|
u(k[1]);
|
u(k[3]);
|
u(k[1]);
|
u(k[2]);
|
u(k[3])
|
}
|
}
|
}
|
|
function k(a, b, c) {
|
v.push(a);
|
v.push(b);
|
v.push(c)
|
}
|
|
function l(a, d, e) {
|
r(a);
|
r(d);
|
r(e);
|
a = c.length / 3;
|
a = H.generateTopUV(b, c, a - 3, a - 2, a - 1);
|
u(a[0]);
|
u(a[1]);
|
u(a[2])
|
}
|
|
function r(a) {
|
c.push(v[3 * a]);
|
c.push(v[3 * a + 1]);
|
c.push(v[3 * a + 2])
|
}
|
|
function u(a) {
|
d.push(a.x);
|
d.push(a.y)
|
}
|
var v = [],
|
w = void 0 !== h.curveSegments ? h.curveSegments : 12,
|
x = void 0 !== h.steps ? h.steps : 1,
|
B = void 0 !== h.depth ? h.depth : 100,
|
C = void 0 !== h.bevelEnabled ? h.bevelEnabled : !0,
|
A = void 0 !== h.bevelThickness ? h.bevelThickness : 6,
|
E = void 0 !== h.bevelSize ? h.bevelSize : A - 2,
|
W = void 0 !== h.bevelOffset ? h.bevelOffset : 0,
|
D = void 0 !== h.bevelSegments ? h.bevelSegments : 3,
|
F = h.extrudePath,
|
H = void 0 !== h.UVGenerator ? h.UVGenerator : ml;
|
void 0 !== h.amount && (console.warn("THREE.ExtrudeBufferGeometry: amount has been renamed to depth."), B = h.amount);
|
var G = !1;
|
if (F) {
|
var K = F.getSpacedPoints(x);
|
G = !0;
|
C = !1;
|
var M = F.computeFrenetFrames(x, !1);
|
var P = new q;
|
var R = new q;
|
var O = new q
|
}
|
C || (W = E = A = D = 0);
|
var N;
|
w = a.extractPoints(w);
|
a = w.shape;
|
var Q = w.holes;
|
if (!xb.isClockWise(a)) {
|
a =
|
a.reverse();
|
var I = 0;
|
for (N = Q.length; I < N; I++) {
|
var S = Q[I];
|
xb.isClockWise(S) && (Q[I] = S.reverse())
|
}
|
}
|
var aa = xb.triangulateShape(a, Q),
|
X = a;
|
I = 0;
|
for (N = Q.length; I < N; I++) S = Q[I], a = a.concat(S);
|
var T, Z = a.length,
|
V, ea = aa.length;
|
w = [];
|
var L = 0;
|
var Y = X.length;
|
var ha = Y - 1;
|
for (T = L + 1; L < Y; L++, ha++, T++) ha === Y && (ha = 0), T === Y && (T = 0), w[L] = f(X[L], X[ha], X[T]);
|
F = [];
|
var fa = w.concat();
|
I = 0;
|
for (N = Q.length; I < N; I++) {
|
S = Q[I];
|
var ca = [];
|
L = 0;
|
Y = S.length;
|
ha = Y - 1;
|
for (T = L + 1; L < Y; L++, ha++, T++) ha === Y && (ha = 0), T === Y && (T = 0), ca[L] = f(S[L], S[ha], S[T]);
|
F.push(ca);
|
fa = fa.concat(ca)
|
}
|
for (ha = 0; ha < D; ha++) {
|
Y = ha / D;
|
var da = A * Math.cos(Y * Math.PI / 2);
|
T = E * Math.sin(Y * Math.PI / 2) + W;
|
L = 0;
|
for (Y = X.length; L < Y; L++) {
|
var U = e(X[L], w[L], T);
|
k(U.x, U.y, -da)
|
}
|
I = 0;
|
for (N = Q.length; I < N; I++)
|
for (S = Q[I], ca = F[I], L = 0, Y = S.length; L < Y; L++) U = e(S[L], ca[L], T), k(U.x, U.y, -da)
|
}
|
T = E + W;
|
for (L = 0; L < Z; L++) U = C ? e(a[L], fa[L], T) : a[L], G ? (R.copy(M.normals[0]).multiplyScalar(U.x), P.copy(M.binormals[0]).multiplyScalar(U.y), O.copy(K[0]).add(R).add(P), k(O.x, O.y, O.z)) : k(U.x, U.y, 0);
|
for (Y = 1; Y <= x; Y++)
|
for (L = 0; L < Z; L++) U = C ? e(a[L],
|
fa[L], T) : a[L], G ? (R.copy(M.normals[Y]).multiplyScalar(U.x), P.copy(M.binormals[Y]).multiplyScalar(U.y), O.copy(K[Y]).add(R).add(P), k(O.x, O.y, O.z)) : k(U.x, U.y, B / x * Y);
|
for (ha = D - 1; 0 <= ha; ha--) {
|
Y = ha / D;
|
da = A * Math.cos(Y * Math.PI / 2);
|
T = E * Math.sin(Y * Math.PI / 2) + W;
|
L = 0;
|
for (Y = X.length; L < Y; L++) U = e(X[L], w[L], T), k(U.x, U.y, B + da);
|
I = 0;
|
for (N = Q.length; I < N; I++)
|
for (S = Q[I], ca = F[I], L = 0, Y = S.length; L < Y; L++) U = e(S[L], ca[L], T), G ? k(U.x, U.y + K[x - 1].y, K[x - 1].x + da) : k(U.x, U.y, B + da)
|
}(function () {
|
var a = c.length / 3;
|
if (C) {
|
var d = 0 * Z;
|
for (L = 0; L < ea; L++) V =
|
aa[L], l(V[2] + d, V[1] + d, V[0] + d);
|
d = Z * (x + 2 * D);
|
for (L = 0; L < ea; L++) V = aa[L], l(V[0] + d, V[1] + d, V[2] + d)
|
} else {
|
for (L = 0; L < ea; L++) V = aa[L], l(V[2], V[1], V[0]);
|
for (L = 0; L < ea; L++) V = aa[L], l(V[0] + Z * x, V[1] + Z * x, V[2] + Z * x)
|
}
|
b.addGroup(a, c.length / 3 - a, 0)
|
})();
|
(function () {
|
var a = c.length / 3,
|
d = 0;
|
g(X, d);
|
d += X.length;
|
I = 0;
|
for (N = Q.length; I < N; I++) S = Q[I], g(S, d), d += S.length;
|
b.addGroup(a, c.length / 3 - a, 1)
|
})()
|
}
|
G.call(this);
|
this.type = "ExtrudeBufferGeometry";
|
this.parameters = {
|
shapes: e,
|
options: h
|
};
|
e = Array.isArray(e) ? e : [e];
|
for (var b = this, c = [], d = [], f =
|
0, g = e.length; f < g; f++) a(e[f]);
|
this.setAttribute("position", new F(c, 3));
|
this.setAttribute("uv", new F(d, 2));
|
this.computeVertexNormals()
|
}
|
|
function Ji(e, h, a) {
|
a.shapes = [];
|
if (Array.isArray(e))
|
for (var b = 0, c = e.length; b < c; b++) a.shapes.push(e[b].uuid);
|
else a.shapes.push(e.uuid);
|
void 0 !== h.extrudePath && (a.options.extrudePath = h.extrudePath.toJSON());
|
return a
|
}
|
|
function se(e, h) {
|
P.call(this);
|
this.type = "TextGeometry";
|
this.parameters = {
|
text: e,
|
parameters: h
|
};
|
this.fromBufferGeometry(new hd(e, h));
|
this.mergeVertices()
|
}
|
|
function hd(e,
|
h) {
|
h = h || {};
|
var a = h.font;
|
if (!a || !a.isFont) return console.error("THREE.TextGeometry: font parameter is not an instance of THREE.Font."), new P;
|
e = a.generateShapes(e, h.size);
|
h.depth = void 0 !== h.height ? h.height : 50;
|
void 0 === h.bevelThickness && (h.bevelThickness = 10);
|
void 0 === h.bevelSize && (h.bevelSize = 8);
|
void 0 === h.bevelEnabled && (h.bevelEnabled = !1);
|
jb.call(this, e, h);
|
this.type = "TextBufferGeometry"
|
}
|
|
function te(e, h, a, b, c, d, f) {
|
P.call(this);
|
this.type = "SphereGeometry";
|
this.parameters = {
|
radius: e,
|
widthSegments: h,
|
heightSegments: a,
|
phiStart: b,
|
phiLength: c,
|
thetaStart: d,
|
thetaLength: f
|
};
|
this.fromBufferGeometry(new Ob(e, h, a, b, c, d, f));
|
this.mergeVertices()
|
}
|
|
function Ob(e, h, a, b, c, d, f) {
|
G.call(this);
|
this.type = "SphereBufferGeometry";
|
this.parameters = {
|
radius: e,
|
widthSegments: h,
|
heightSegments: a,
|
phiStart: b,
|
phiLength: c,
|
thetaStart: d,
|
thetaLength: f
|
};
|
e = e || 1;
|
h = Math.max(3, Math.floor(h) || 8);
|
a = Math.max(2, Math.floor(a) || 6);
|
b = void 0 !== b ? b : 0;
|
c = void 0 !== c ? c : 2 * Math.PI;
|
d = void 0 !== d ? d : 0;
|
f = void 0 !== f ? f : Math.PI;
|
var g = Math.min(d + f, Math.PI),
|
k, m, n = 0,
|
p = [],
|
l = new q,
|
t = new q,
|
r = [],
|
u = [],
|
v = [],
|
w = [];
|
for (m = 0; m <= a; m++) {
|
var x = [],
|
B = m / a,
|
C = 0;
|
0 == m && 0 == d ? C = .5 / h : m == a && g == Math.PI && (C = -.5 / h);
|
for (k = 0; k <= h; k++) {
|
var A = k / h;
|
l.x = -e * Math.cos(b + A * c) * Math.sin(d + B * f);
|
l.y = e * Math.cos(d + B * f);
|
l.z = e * Math.sin(b + A * c) * Math.sin(d + B * f);
|
u.push(l.x, l.y, l.z);
|
t.copy(l).normalize();
|
v.push(t.x, t.y, t.z);
|
w.push(A + C, 1 - B);
|
x.push(n++)
|
}
|
p.push(x)
|
}
|
for (m = 0; m < a; m++)
|
for (k = 0; k < h; k++) e = p[m][k + 1], b = p[m][k], c = p[m + 1][k], f = p[m + 1][k + 1], (0 !== m || 0 < d) && r.push(e, b, f), (m !== a - 1 || g < Math.PI) && r.push(b, c, f);
|
this.setIndex(r);
|
this.setAttribute("position",
|
new F(u, 3));
|
this.setAttribute("normal", new F(v, 3));
|
this.setAttribute("uv", new F(w, 2))
|
}
|
|
function ue(e, h, a, b, c, d) {
|
P.call(this);
|
this.type = "RingGeometry";
|
this.parameters = {
|
innerRadius: e,
|
outerRadius: h,
|
thetaSegments: a,
|
phiSegments: b,
|
thetaStart: c,
|
thetaLength: d
|
};
|
this.fromBufferGeometry(new id(e, h, a, b, c, d));
|
this.mergeVertices()
|
}
|
|
function id(e, h, a, b, c, d) {
|
G.call(this);
|
this.type = "RingBufferGeometry";
|
this.parameters = {
|
innerRadius: e,
|
outerRadius: h,
|
thetaSegments: a,
|
phiSegments: b,
|
thetaStart: c,
|
thetaLength: d
|
};
|
e = e || .5;
|
h = h ||
|
1;
|
c = void 0 !== c ? c : 0;
|
d = void 0 !== d ? d : 2 * Math.PI;
|
a = void 0 !== a ? Math.max(3, a) : 8;
|
b = void 0 !== b ? Math.max(1, b) : 1;
|
var f = [],
|
g = [],
|
k = [],
|
m = [],
|
n = e,
|
p = (h - e) / b,
|
l = new q,
|
t = new z,
|
r, u;
|
for (r = 0; r <= b; r++) {
|
for (u = 0; u <= a; u++) e = c + u / a * d, l.x = n * Math.cos(e), l.y = n * Math.sin(e), g.push(l.x, l.y, l.z), k.push(0, 0, 1), t.x = (l.x / h + 1) / 2, t.y = (l.y / h + 1) / 2, m.push(t.x, t.y);
|
n += p
|
}
|
for (r = 0; r < b; r++)
|
for (h = r * (a + 1), u = 0; u < a; u++) e = u + h, c = e + a + 1, d = e + a + 2, n = e + 1, f.push(e, c, n), f.push(c, d, n);
|
this.setIndex(f);
|
this.setAttribute("position", new F(g, 3));
|
this.setAttribute("normal",
|
new F(k, 3));
|
this.setAttribute("uv", new F(m, 2))
|
}
|
|
function ve(e, h, a, b) {
|
P.call(this);
|
this.type = "LatheGeometry";
|
this.parameters = {
|
points: e,
|
segments: h,
|
phiStart: a,
|
phiLength: b
|
};
|
this.fromBufferGeometry(new jd(e, h, a, b));
|
this.mergeVertices()
|
}
|
|
function jd(e, h, a, b) {
|
G.call(this);
|
this.type = "LatheBufferGeometry";
|
this.parameters = {
|
points: e,
|
segments: h,
|
phiStart: a,
|
phiLength: b
|
};
|
h = Math.floor(h) || 12;
|
a = a || 0;
|
b = b || 2 * Math.PI;
|
b = N.clamp(b, 0, 2 * Math.PI);
|
var c = [],
|
d = [],
|
f = [],
|
g = 1 / h,
|
k = new q,
|
m = new z,
|
n;
|
for (n = 0; n <= h; n++) {
|
var p = a + n * g * b;
|
var l =
|
Math.sin(p),
|
t = Math.cos(p);
|
for (p = 0; p <= e.length - 1; p++) k.x = e[p].x * l, k.y = e[p].y, k.z = e[p].x * t, d.push(k.x, k.y, k.z), m.x = n / h, m.y = p / (e.length - 1), f.push(m.x, m.y)
|
}
|
for (n = 0; n < h; n++)
|
for (p = 0; p < e.length - 1; p++) a = p + n * e.length, g = a + e.length, k = a + e.length + 1, m = a + 1, c.push(a, g, m), c.push(g, k, m);
|
this.setIndex(c);
|
this.setAttribute("position", new F(d, 3));
|
this.setAttribute("uv", new F(f, 2));
|
this.computeVertexNormals();
|
if (b === 2 * Math.PI)
|
for (b = this.attributes.normal.array, c = new q, d = new q, f = new q, a = h * e.length * 3, p = n = 0; n < e.length; n++,
|
p += 3) c.x = b[p + 0], c.y = b[p + 1], c.z = b[p + 2], d.x = b[a + p + 0], d.y = b[a + p + 1], d.z = b[a + p + 2], f.addVectors(c, d).normalize(), b[p + 0] = b[a + p + 0] = f.x, b[p + 1] = b[a + p + 1] = f.y, b[p + 2] = b[a + p + 2] = f.z
|
}
|
|
function pc(e, h) {
|
P.call(this);
|
this.type = "ShapeGeometry";
|
"object" === typeof h && (console.warn("THREE.ShapeGeometry: Options parameter has been removed."), h = h.curveSegments);
|
this.parameters = {
|
shapes: e,
|
curveSegments: h
|
};
|
this.fromBufferGeometry(new qc(e, h));
|
this.mergeVertices()
|
}
|
|
function qc(e, h) {
|
function a(a) {
|
var e, g = c.length / 3;
|
a = a.extractPoints(h);
|
var m = a.shape,
|
n = a.holes;
|
!1 === xb.isClockWise(m) && (m = m.reverse());
|
a = 0;
|
for (e = n.length; a < e; a++) {
|
var l = n[a];
|
!0 === xb.isClockWise(l) && (n[a] = l.reverse())
|
}
|
var q = xb.triangulateShape(m, n);
|
a = 0;
|
for (e = n.length; a < e; a++) l = n[a], m = m.concat(l);
|
a = 0;
|
for (e = m.length; a < e; a++) l = m[a], c.push(l.x, l.y, 0), d.push(0, 0, 1), f.push(l.x, l.y);
|
a = 0;
|
for (e = q.length; a < e; a++) m = q[a], b.push(m[0] + g, m[1] + g, m[2] + g), k += 3
|
}
|
G.call(this);
|
this.type = "ShapeBufferGeometry";
|
this.parameters = {
|
shapes: e,
|
curveSegments: h
|
};
|
h = h || 12;
|
var b = [],
|
c = [],
|
d = [],
|
f = [],
|
g = 0,
|
k =
|
0;
|
if (!1 === Array.isArray(e)) a(e);
|
else
|
for (var m = 0; m < e.length; m++) a(e[m]), this.addGroup(g, k, m), g += k, k = 0;
|
this.setIndex(b);
|
this.setAttribute("position", new F(c, 3));
|
this.setAttribute("normal", new F(d, 3));
|
this.setAttribute("uv", new F(f, 2))
|
}
|
|
function Ki(e, h) {
|
h.shapes = [];
|
if (Array.isArray(e))
|
for (var a = 0, b = e.length; a < b; a++) h.shapes.push(e[a].uuid);
|
else h.shapes.push(e.uuid);
|
return h
|
}
|
|
function kd(e, h) {
|
G.call(this);
|
this.type = "EdgesGeometry";
|
this.parameters = {
|
thresholdAngle: h
|
};
|
var a = [];
|
h = Math.cos(N.DEG2RAD * (void 0 !==
|
h ? h : 1));
|
var b = [0, 0],
|
c = {},
|
d = ["a", "b", "c"];
|
if (e.isBufferGeometry) {
|
var f = new P;
|
f.fromBufferGeometry(e)
|
} else f = e.clone();
|
f.mergeVertices();
|
f.computeFaceNormals();
|
e = f.vertices;
|
f = f.faces;
|
for (var g = 0, k = f.length; g < k; g++)
|
for (var m = f[g], n = 0; 3 > n; n++) {
|
var p = m[d[n]];
|
var l = m[d[(n + 1) % 3]];
|
b[0] = Math.min(p, l);
|
b[1] = Math.max(p, l);
|
p = b[0] + "," + b[1];
|
void 0 === c[p] ? c[p] = {
|
index1: b[0],
|
index2: b[1],
|
face1: g,
|
face2: void 0
|
} : c[p].face2 = g
|
}
|
for (p in c)
|
if (b = c[p], void 0 === b.face2 || f[b.face1].normal.dot(f[b.face2].normal) <= h) d = e[b.index1],
|
a.push(d.x, d.y, d.z), d = e[b.index2], a.push(d.x, d.y, d.z);
|
this.setAttribute("position", new F(a, 3))
|
}
|
|
function rc(e, h, a, b, c, d, f, g) {
|
P.call(this);
|
this.type = "CylinderGeometry";
|
this.parameters = {
|
radiusTop: e,
|
radiusBottom: h,
|
height: a,
|
radialSegments: b,
|
heightSegments: c,
|
openEnded: d,
|
thetaStart: f,
|
thetaLength: g
|
};
|
this.fromBufferGeometry(new yb(e, h, a, b, c, d, f, g));
|
this.mergeVertices()
|
}
|
|
function yb(e, h, a, b, c, d, f, g) {
|
function k(a) {
|
var c, d = new z,
|
k = new q,
|
y = 0,
|
u = !0 === a ? e : h,
|
x = !0 === a ? 1 : -1;
|
var D = r;
|
for (c = 1; c <= b; c++) p.push(0, v * x, 0), l.push(0,
|
x, 0), t.push(.5, .5), r++;
|
var E = r;
|
for (c = 0; c <= b; c++) {
|
var F = c / b * g + f,
|
G = Math.cos(F);
|
F = Math.sin(F);
|
k.x = u * F;
|
k.y = v * x;
|
k.z = u * G;
|
p.push(k.x, k.y, k.z);
|
l.push(0, x, 0);
|
d.x = .5 * G + .5;
|
d.y = .5 * F * x + .5;
|
t.push(d.x, d.y);
|
r++
|
}
|
for (c = 0; c < b; c++) d = D + c, k = E + c, !0 === a ? n.push(k, k + 1, d) : n.push(k + 1, k, d), y += 3;
|
m.addGroup(w, y, !0 === a ? 1 : 2);
|
w += y
|
}
|
G.call(this);
|
this.type = "CylinderBufferGeometry";
|
this.parameters = {
|
radiusTop: e,
|
radiusBottom: h,
|
height: a,
|
radialSegments: b,
|
heightSegments: c,
|
openEnded: d,
|
thetaStart: f,
|
thetaLength: g
|
};
|
var m = this;
|
e = void 0 !== e ? e : 1;
|
h = void 0 !== h ? h : 1;
|
a = a || 1;
|
b = Math.floor(b) || 8;
|
c = Math.floor(c) || 1;
|
d = void 0 !== d ? d : !1;
|
f = void 0 !== f ? f : 0;
|
g = void 0 !== g ? g : 2 * Math.PI;
|
var n = [],
|
p = [],
|
l = [],
|
t = [],
|
r = 0,
|
u = [],
|
v = a / 2,
|
w = 0;
|
(function () {
|
var d, k, y = new q,
|
A = new q,
|
z = 0,
|
D = (h - e) / a;
|
for (k = 0; k <= c; k++) {
|
var E = [],
|
F = k / c,
|
H = F * (h - e) + e;
|
for (d = 0; d <= b; d++) {
|
var G = d / b,
|
I = G * g + f,
|
K = Math.sin(I);
|
I = Math.cos(I);
|
A.x = H * K;
|
A.y = -F * a + v;
|
A.z = H * I;
|
p.push(A.x, A.y, A.z);
|
y.set(K, D, I).normalize();
|
l.push(y.x, y.y, y.z);
|
t.push(G, 1 - F);
|
E.push(r++)
|
}
|
u.push(E)
|
}
|
for (d = 0; d < b; d++)
|
for (k = 0; k < c; k++) y = u[k + 1][d], A = u[k +
|
1][d + 1], D = u[k][d + 1], n.push(u[k][d], y, D), n.push(y, A, D), z += 6;
|
m.addGroup(w, z, 0);
|
w += z
|
})();
|
!1 === d && (0 < e && k(!0), 0 < h && k(!1));
|
this.setIndex(n);
|
this.setAttribute("position", new F(p, 3));
|
this.setAttribute("normal", new F(l, 3));
|
this.setAttribute("uv", new F(t, 2))
|
}
|
|
function we(e, h, a, b, c, d, f) {
|
rc.call(this, 0, e, h, a, b, c, d, f);
|
this.type = "ConeGeometry";
|
this.parameters = {
|
radius: e,
|
height: h,
|
radialSegments: a,
|
heightSegments: b,
|
openEnded: c,
|
thetaStart: d,
|
thetaLength: f
|
}
|
}
|
|
function xe(e, h, a, b, c, d, f) {
|
yb.call(this, 0, e, h, a, b, c, d, f);
|
this.type =
|
"ConeBufferGeometry";
|
this.parameters = {
|
radius: e,
|
height: h,
|
radialSegments: a,
|
heightSegments: b,
|
openEnded: c,
|
thetaStart: d,
|
thetaLength: f
|
}
|
}
|
|
function ye(e, h, a, b) {
|
P.call(this);
|
this.type = "CircleGeometry";
|
this.parameters = {
|
radius: e,
|
segments: h,
|
thetaStart: a,
|
thetaLength: b
|
};
|
this.fromBufferGeometry(new ld(e, h, a, b));
|
this.mergeVertices()
|
}
|
|
function ld(e, h, a, b) {
|
G.call(this);
|
this.type = "CircleBufferGeometry";
|
this.parameters = {
|
radius: e,
|
segments: h,
|
thetaStart: a,
|
thetaLength: b
|
};
|
e = e || 1;
|
h = void 0 !== h ? Math.max(3, h) : 8;
|
a = void 0 !== a ? a :
|
0;
|
b = void 0 !== b ? b : 2 * Math.PI;
|
var c = [],
|
d = [],
|
f = [],
|
g = [],
|
k, m = new q,
|
n = new z;
|
d.push(0, 0, 0);
|
f.push(0, 0, 1);
|
g.push(.5, .5);
|
var p = 0;
|
for (k = 3; p <= h; p++, k += 3) {
|
var l = a + p / h * b;
|
m.x = e * Math.cos(l);
|
m.y = e * Math.sin(l);
|
d.push(m.x, m.y, m.z);
|
f.push(0, 0, 1);
|
n.x = (d[k] / e + 1) / 2;
|
n.y = (d[k + 1] / e + 1) / 2;
|
g.push(n.x, n.y)
|
}
|
for (k = 1; k <= h; k++) c.push(k, k + 1, 0);
|
this.setIndex(c);
|
this.setAttribute("position", new F(d, 3));
|
this.setAttribute("normal", new F(f, 3));
|
this.setAttribute("uv", new F(g, 2))
|
}
|
|
function sc(e) {
|
R.call(this);
|
this.type = "ShadowMaterial";
|
this.color =
|
new D(0);
|
this.transparent = !0;
|
this.setValues(e)
|
}
|
|
function md(e) {
|
Aa.call(this, e);
|
this.type = "RawShaderMaterial"
|
}
|
|
function kb(e) {
|
R.call(this);
|
this.defines = {
|
STANDARD: ""
|
};
|
this.type = "MeshStandardMaterial";
|
this.color = new D(16777215);
|
this.metalness = this.roughness = .5;
|
this.lightMap = this.map = null;
|
this.lightMapIntensity = 1;
|
this.aoMap = null;
|
this.aoMapIntensity = 1;
|
this.emissive = new D(0);
|
this.emissiveIntensity = 1;
|
this.bumpMap = this.emissiveMap = null;
|
this.bumpScale = 1;
|
this.normalMap = null;
|
this.normalMapType = 0;
|
this.normalScale =
|
new z(1, 1);
|
this.displacementMap = null;
|
this.displacementScale = 1;
|
this.displacementBias = 0;
|
this.envMap = this.alphaMap = this.metalnessMap = this.roughnessMap = null;
|
this.envMapIntensity = 1;
|
this.refractionRatio = .98;
|
this.wireframe = !1;
|
this.wireframeLinewidth = 1;
|
this.wireframeLinejoin = this.wireframeLinecap = "round";
|
this.morphNormals = this.morphTargets = this.skinning = !1;
|
this.setValues(e)
|
}
|
|
function tc(e) {
|
kb.call(this);
|
this.defines = {
|
STANDARD: "",
|
PHYSICAL: ""
|
};
|
this.type = "MeshPhysicalMaterial";
|
this.reflectivity = .5;
|
this.clearcoatRoughness =
|
this.clearcoat = 0;
|
this.sheen = null;
|
this.clearcoatNormalScale = new z(1, 1);
|
this.clearcoatNormalMap = null;
|
this.transparency = 0;
|
this.setValues(e)
|
}
|
|
function Wa(e) {
|
R.call(this);
|
this.type = "MeshPhongMaterial";
|
this.color = new D(16777215);
|
this.specular = new D(1118481);
|
this.shininess = 30;
|
this.lightMap = this.map = null;
|
this.lightMapIntensity = 1;
|
this.aoMap = null;
|
this.aoMapIntensity = 1;
|
this.emissive = new D(0);
|
this.emissiveIntensity = 1;
|
this.bumpMap = this.emissiveMap = null;
|
this.bumpScale = 1;
|
this.normalMap = null;
|
this.normalMapType = 0;
|
this.normalScale = new z(1, 1);
|
this.displacementMap = null;
|
this.displacementScale = 1;
|
this.displacementBias = 0;
|
this.envMap = this.alphaMap = this.specularMap = null;
|
this.combine = 0;
|
this.reflectivity = 1;
|
this.refractionRatio = .98;
|
this.wireframe = !1;
|
this.wireframeLinewidth = 1;
|
this.wireframeLinejoin = this.wireframeLinecap = "round";
|
this.morphNormals = this.morphTargets = this.skinning = !1;
|
this.setValues(e)
|
}
|
|
function uc(e) {
|
Wa.call(this);
|
this.defines = {
|
TOON: ""
|
};
|
this.type = "MeshToonMaterial";
|
this.gradientMap = null;
|
this.setValues(e)
|
}
|
|
function vc(e) {
|
R.call(this);
|
this.type = "MeshNormalMaterial";
|
this.bumpMap = null;
|
this.bumpScale = 1;
|
this.normalMap = null;
|
this.normalMapType = 0;
|
this.normalScale = new z(1, 1);
|
this.displacementMap = null;
|
this.displacementScale = 1;
|
this.displacementBias = 0;
|
this.wireframe = !1;
|
this.wireframeLinewidth = 1;
|
this.morphNormals = this.morphTargets = this.skinning = this.fog = !1;
|
this.setValues(e)
|
}
|
|
function wc(e) {
|
R.call(this);
|
this.type = "MeshLambertMaterial";
|
this.color = new D(16777215);
|
this.lightMap = this.map = null;
|
this.lightMapIntensity = 1;
|
this.aoMap = null;
|
this.aoMapIntensity =
|
1;
|
this.emissive = new D(0);
|
this.emissiveIntensity = 1;
|
this.envMap = this.alphaMap = this.specularMap = this.emissiveMap = null;
|
this.combine = 0;
|
this.reflectivity = 1;
|
this.refractionRatio = .98;
|
this.wireframe = !1;
|
this.wireframeLinewidth = 1;
|
this.wireframeLinejoin = this.wireframeLinecap = "round";
|
this.morphNormals = this.morphTargets = this.skinning = !1;
|
this.setValues(e)
|
}
|
|
function xc(e) {
|
R.call(this);
|
this.defines = {
|
MATCAP: ""
|
};
|
this.type = "MeshMatcapMaterial";
|
this.color = new D(16777215);
|
this.bumpMap = this.map = this.matcap = null;
|
this.bumpScale =
|
1;
|
this.normalMap = null;
|
this.normalMapType = 0;
|
this.normalScale = new z(1, 1);
|
this.displacementMap = null;
|
this.displacementScale = 1;
|
this.displacementBias = 0;
|
this.alphaMap = null;
|
this.morphNormals = this.morphTargets = this.skinning = !1;
|
this.setValues(e)
|
}
|
|
function yc(e) {
|
T.call(this);
|
this.type = "LineDashedMaterial";
|
this.scale = 1;
|
this.dashSize = 3;
|
this.gapSize = 1;
|
this.setValues(e)
|
}
|
|
function La(e, h, a, b) {
|
this.parameterPositions = e;
|
this._cachedIndex = 0;
|
this.resultBuffer = void 0 !== b ? b : new h.constructor(a);
|
this.sampleValues = h;
|
this.valueSize =
|
a
|
}
|
|
function jf(e, h, a, b) {
|
La.call(this, e, h, a, b);
|
this._offsetNext = this._weightNext = this._offsetPrev = this._weightPrev = -0
|
}
|
|
function ze(e, h, a, b) {
|
La.call(this, e, h, a, b)
|
}
|
|
function kf(e, h, a, b) {
|
La.call(this, e, h, a, b)
|
}
|
|
function ua(e, h, a, b) {
|
if (void 0 === e) throw Error("THREE.KeyframeTrack: track name is undefined");
|
if (void 0 === h || 0 === h.length) throw Error("THREE.KeyframeTrack: no keyframes in track named " + e);
|
this.name = e;
|
this.times = aa.convertArray(h, this.TimeBufferType);
|
this.values = aa.convertArray(a, this.ValueBufferType);
|
this.setInterpolation(b || this.DefaultInterpolation)
|
}
|
|
function lf(e, h, a) {
|
ua.call(this, e, h, a)
|
}
|
|
function mf(e, h, a, b) {
|
ua.call(this, e, h, a, b)
|
}
|
|
function nd(e, h, a, b) {
|
ua.call(this, e, h, a, b)
|
}
|
|
function nf(e, h, a, b) {
|
La.call(this, e, h, a, b)
|
}
|
|
function Ae(e, h, a, b) {
|
ua.call(this, e, h, a, b)
|
}
|
|
function of (e, h, a, b) {
|
ua.call(this, e, h, a, b)
|
}
|
|
function od(e, h, a, b) {
|
ua.call(this, e, h, a, b)
|
}
|
|
function Pa(e, h, a) {
|
this.name = e;
|
this.tracks = a;
|
this.duration = void 0 !== h ? h : -1;
|
this.uuid = N.generateUUID();
|
0 > this.duration && this.resetDuration()
|
}
|
|
function nl(e) {
|
switch (e.toLowerCase()) {
|
case "scalar":
|
case "double":
|
case "float":
|
case "number":
|
case "integer":
|
return nd;
|
case "vector":
|
case "vector2":
|
case "vector3":
|
case "vector4":
|
return od;
|
case "color":
|
return mf;
|
case "quaternion":
|
return Ae;
|
case "bool":
|
case "boolean":
|
return lf;
|
case "string":
|
return of
|
}
|
throw Error("THREE.KeyframeTrack: Unsupported typeName: " + e);
|
}
|
|
function ol(e) {
|
if (void 0 === e.type) throw Error("THREE.KeyframeTrack: track type undefined, can not parse");
|
var h = nl(e.type);
|
if (void 0 === e.times) {
|
var a = [],
|
b = [];
|
aa.flattenJSON(e.keys, a, b, "value");
|
e.times = a;
|
e.values = b
|
}
|
return void 0 !== h.parse ? h.parse(e) : new h(e.name,
|
e.times, e.values, e.interpolation)
|
}
|
|
function Og(e, h, a) {
|
var b = this,
|
c = !1,
|
d = 0,
|
f = 0,
|
g = void 0,
|
k = [];
|
this.onStart = void 0;
|
this.onLoad = e;
|
this.onProgress = h;
|
this.onError = a;
|
this.itemStart = function (a) {
|
f++;
|
if (!1 === c && void 0 !== b.onStart) b.onStart(a, d, f);
|
c = !0
|
};
|
this.itemEnd = function (a) {
|
d++;
|
if (void 0 !== b.onProgress) b.onProgress(a, d, f);
|
if (d === f && (c = !1, void 0 !== b.onLoad)) b.onLoad()
|
};
|
this.itemError = function (a) {
|
if (void 0 !== b.onError) b.onError(a)
|
};
|
this.resolveURL = function (a) {
|
return g ? g(a) : a
|
};
|
this.setURLModifier = function (a) {
|
g =
|
a;
|
return this
|
};
|
this.addHandler = function (a, b) {
|
k.push(a, b);
|
return this
|
};
|
this.removeHandler = function (a) {
|
a = k.indexOf(a); - 1 !== a && k.splice(a, 2);
|
return this
|
};
|
this.getHandler = function (a) {
|
for (var b = 0, c = k.length; b < c; b += 2) {
|
var d = k[b + 1];
|
if (k[b].test(a)) return d
|
}
|
return null
|
}
|
}
|
|
function X(e) {
|
this.manager = void 0 !== e ? e : Li;
|
this.crossOrigin = "anonymous";
|
this.resourcePath = this.path = ""
|
}
|
|
function Qa(e) {
|
X.call(this, e)
|
}
|
|
function Pg(e) {
|
X.call(this, e)
|
}
|
|
function Qg(e) {
|
X.call(this, e)
|
}
|
|
function pf(e) {
|
X.call(this, e)
|
}
|
|
function pd(e) {
|
X.call(this,
|
e)
|
}
|
|
function qf(e) {
|
X.call(this, e)
|
}
|
|
function rf(e) {
|
X.call(this, e)
|
}
|
|
function M() {
|
this.type = "Curve";
|
this.arcLengthDivisions = 200
|
}
|
|
function Ma(e, h, a, b, c, d, f, g) {
|
M.call(this);
|
this.type = "EllipseCurve";
|
this.aX = e || 0;
|
this.aY = h || 0;
|
this.xRadius = a || 1;
|
this.yRadius = b || 1;
|
this.aStartAngle = c || 0;
|
this.aEndAngle = d || 2 * Math.PI;
|
this.aClockwise = f || !1;
|
this.aRotation = g || 0
|
}
|
|
function qd(e, h, a, b, c, d) {
|
Ma.call(this, e, h, a, a, b, c, d);
|
this.type = "ArcCurve"
|
}
|
|
function Rg() {
|
var e = 0,
|
h = 0,
|
a = 0,
|
b = 0;
|
return {
|
initCatmullRom: function (c, d, f, g, k) {
|
c = k * (f - c);
|
g = k * (g - d);
|
e = d;
|
h = c;
|
a = -3 * d + 3 * f - 2 * c - g;
|
b = 2 * d - 2 * f + c + g
|
},
|
initNonuniformCatmullRom: function (c, d, f, g, k, m, n) {
|
c = ((d - c) / k - (f - c) / (k + m) + (f - d) / m) * m;
|
g = ((f - d) / m - (g - d) / (m + n) + (g - f) / n) * m;
|
e = d;
|
h = c;
|
a = -3 * d + 3 * f - 2 * c - g;
|
b = 2 * d - 2 * f + c + g
|
},
|
calc: function (c) {
|
var d = c * c;
|
return e + h * c + a * d + b * d * c
|
}
|
}
|
}
|
|
function la(e, h, a, b) {
|
M.call(this);
|
this.type = "CatmullRomCurve3";
|
this.points = e || [];
|
this.closed = h || !1;
|
this.curveType = a || "centripetal";
|
this.tension = b || .5
|
}
|
|
function Mi(e, h, a, b, c) {
|
h = .5 * (b - h);
|
c = .5 * (c - a);
|
var d = e * e;
|
return (2 * a - 2 * b + h + c) * e * d + (-3 * a + 3 * b - 2 * h -
|
c) * d + h * e + a
|
}
|
|
function Be(e, h, a, b) {
|
var c = 1 - e;
|
return c * c * h + 2 * (1 - e) * e * a + e * e * b
|
}
|
|
function Ce(e, h, a, b, c) {
|
var d = 1 - e,
|
f = 1 - e;
|
return d * d * d * h + 3 * f * f * e * a + 3 * (1 - e) * e * e * b + e * e * e * c
|
}
|
|
function Xa(e, h, a, b) {
|
M.call(this);
|
this.type = "CubicBezierCurve";
|
this.v0 = e || new z;
|
this.v1 = h || new z;
|
this.v2 = a || new z;
|
this.v3 = b || new z
|
}
|
|
function lb(e, h, a, b) {
|
M.call(this);
|
this.type = "CubicBezierCurve3";
|
this.v0 = e || new q;
|
this.v1 = h || new q;
|
this.v2 = a || new q;
|
this.v3 = b || new q
|
}
|
|
function Ga(e, h) {
|
M.call(this);
|
this.type = "LineCurve";
|
this.v1 = e || new z;
|
this.v2 = h ||
|
new z
|
}
|
|
function Ya(e, h) {
|
M.call(this);
|
this.type = "LineCurve3";
|
this.v1 = e || new q;
|
this.v2 = h || new q
|
}
|
|
function Za(e, h, a) {
|
M.call(this);
|
this.type = "QuadraticBezierCurve";
|
this.v0 = e || new z;
|
this.v1 = h || new z;
|
this.v2 = a || new z
|
}
|
|
function mb(e, h, a) {
|
M.call(this);
|
this.type = "QuadraticBezierCurve3";
|
this.v0 = e || new q;
|
this.v1 = h || new q;
|
this.v2 = a || new q
|
}
|
|
function $a(e) {
|
M.call(this);
|
this.type = "SplineCurve";
|
this.points = e || []
|
}
|
|
function zb() {
|
M.call(this);
|
this.type = "CurvePath";
|
this.curves = [];
|
this.autoClose = !1
|
}
|
|
function ab(e) {
|
zb.call(this);
|
this.type = "Path";
|
this.currentPoint = new z;
|
e && this.setFromPoints(e)
|
}
|
|
function Pb(e) {
|
ab.call(this, e);
|
this.uuid = N.generateUUID();
|
this.type = "Shape";
|
this.holes = []
|
}
|
|
function da(e, h) {
|
E.call(this);
|
this.type = "Light";
|
this.color = new D(e);
|
this.intensity = void 0 !== h ? h : 1;
|
this.receiveShadow = void 0
|
}
|
|
function sf(e, h, a) {
|
da.call(this, e, a);
|
this.type = "HemisphereLight";
|
this.castShadow = void 0;
|
this.position.copy(E.DefaultUp);
|
this.updateMatrix();
|
this.groundColor = new D(h)
|
}
|
|
function nb(e) {
|
this.camera = e;
|
this.bias = 0;
|
this.radius = 1;
|
this.mapSize = new z(512, 512);
|
this.mapPass = this.map = null;
|
this.matrix = new I;
|
this._frustum = new Sd;
|
this._frameExtents = new z(1, 1);
|
this._viewportCount = 1;
|
this._viewports = [new ca(0, 0, 1, 1)]
|
}
|
|
function tf() {
|
nb.call(this, new na(50, 1, .5, 500))
|
}
|
|
function uf(e, h, a, b, c, d) {
|
da.call(this, e, h);
|
this.type = "SpotLight";
|
this.position.copy(E.DefaultUp);
|
this.updateMatrix();
|
this.target = new E;
|
Object.defineProperty(this, "power", {
|
get: function () {
|
return this.intensity * Math.PI
|
},
|
set: function (a) {
|
this.intensity = a / Math.PI
|
}
|
});
|
this.distance =
|
void 0 !== a ? a : 0;
|
this.angle = void 0 !== b ? b : Math.PI / 3;
|
this.penumbra = void 0 !== c ? c : 0;
|
this.decay = void 0 !== d ? d : 1;
|
this.shadow = new tf
|
}
|
|
function Sg() {
|
nb.call(this, new na(90, 1, .5, 500));
|
this._frameExtents = new z(4, 2);
|
this._viewportCount = 6;
|
this._viewports = [new ca(2, 1, 1, 1), new ca(0, 1, 1, 1), new ca(3, 1, 1, 1), new ca(1, 1, 1, 1), new ca(3, 0, 1, 1), new ca(1, 0, 1, 1)];
|
this._cubeDirections = [new q(1, 0, 0), new q(-1, 0, 0), new q(0, 0, 1), new q(0, 0, -1), new q(0, 1, 0), new q(0, -1, 0)];
|
this._cubeUps = [new q(0, 1, 0), new q(0, 1, 0), new q(0, 1, 0), new q(0,
|
1, 0), new q(0, 0, 1), new q(0, 0, -1)]
|
}
|
|
function vf(e, h, a, b) {
|
da.call(this, e, h);
|
this.type = "PointLight";
|
Object.defineProperty(this, "power", {
|
get: function () {
|
return 4 * this.intensity * Math.PI
|
},
|
set: function (a) {
|
this.intensity = a / (4 * Math.PI)
|
}
|
});
|
this.distance = void 0 !== a ? a : 0;
|
this.decay = void 0 !== b ? b : 1;
|
this.shadow = new Sg
|
}
|
|
function De(e, h, a, b, c, d) {
|
hb.call(this);
|
this.type = "OrthographicCamera";
|
this.zoom = 1;
|
this.view = null;
|
this.left = void 0 !== e ? e : -1;
|
this.right = void 0 !== h ? h : 1;
|
this.top = void 0 !== a ? a : 1;
|
this.bottom = void 0 !== b ? b : -1;
|
this.near = void 0 !== c ? c : .1;
|
this.far = void 0 !== d ? d : 2E3;
|
this.updateProjectionMatrix()
|
}
|
|
function wf() {
|
nb.call(this, new De(-5, 5, 5, -5, .5, 500))
|
}
|
|
function xf(e, h) {
|
da.call(this, e, h);
|
this.type = "DirectionalLight";
|
this.position.copy(E.DefaultUp);
|
this.updateMatrix();
|
this.target = new E;
|
this.shadow = new wf
|
}
|
|
function yf(e, h) {
|
da.call(this, e, h);
|
this.type = "AmbientLight";
|
this.castShadow = void 0
|
}
|
|
function zf(e, h, a, b) {
|
da.call(this, e, h);
|
this.type = "RectAreaLight";
|
this.width = void 0 !== a ? a : 10;
|
this.height = void 0 !== b ? b : 10
|
}
|
|
function Af(e) {
|
X.call(this,
|
e);
|
this.textures = {}
|
}
|
|
function Bf() {
|
G.call(this);
|
this.type = "InstancedBufferGeometry";
|
this.maxInstancedCount = void 0
|
}
|
|
function Cf(e, h, a, b) {
|
"number" === typeof a && (b = a, a = !1, console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument."));
|
O.call(this, e, h, a);
|
this.meshPerAttribute = b || 1
|
}
|
|
function Df(e) {
|
X.call(this, e)
|
}
|
|
function Ef(e) {
|
X.call(this, e)
|
}
|
|
function Tg(e) {
|
"undefined" === typeof createImageBitmap && console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported.");
|
"undefined" === typeof fetch && console.warn("THREE.ImageBitmapLoader: fetch() not supported.");
|
X.call(this, e);
|
this.options = void 0
|
}
|
|
function Ug() {
|
this.type = "ShapePath";
|
this.color = new D;
|
this.subPaths = [];
|
this.currentPath = null
|
}
|
|
function Vg(e) {
|
this.type = "Font";
|
this.data = e
|
}
|
|
function Wg(e) {
|
X.call(this, e)
|
}
|
|
function Ff(e) {
|
X.call(this, e)
|
}
|
|
function Gf() {
|
this.coefficients = [];
|
for (var e = 0; 9 > e; e++) this.coefficients.push(new q)
|
}
|
|
function bb(e, h) {
|
da.call(this, void 0, h);
|
this.sh = void 0 !== e ? e : new Gf
|
}
|
|
function Xg(e, h, a) {
|
bb.call(this,
|
void 0, a);
|
e = (new D).set(e);
|
a = (new D).set(h);
|
h = new q(e.r, e.g, e.b);
|
e = new q(a.r, a.g, a.b);
|
a = Math.sqrt(Math.PI);
|
var b = a * Math.sqrt(.75);
|
this.sh.coefficients[0].copy(h).add(e).multiplyScalar(a);
|
this.sh.coefficients[1].copy(h).sub(e).multiplyScalar(b)
|
}
|
|
function Yg(e, h) {
|
bb.call(this, void 0, h);
|
e = (new D).set(e);
|
this.sh.coefficients[0].set(e.r, e.g, e.b).multiplyScalar(2 * Math.sqrt(Math.PI))
|
}
|
|
function Ni() {
|
this.type = "StereoCamera";
|
this.aspect = 1;
|
this.eyeSep = .064;
|
this.cameraL = new na;
|
this.cameraL.layers.enable(1);
|
this.cameraL.matrixAutoUpdate = !1;
|
this.cameraR = new na;
|
this.cameraR.layers.enable(2);
|
this.cameraR.matrixAutoUpdate = !1;
|
this._cache = {
|
focus: null,
|
fov: null,
|
aspect: null,
|
near: null,
|
far: null,
|
zoom: null,
|
eyeSep: null
|
}
|
}
|
|
function Zg(e) {
|
this.autoStart = void 0 !== e ? e : !0;
|
this.elapsedTime = this.oldTime = this.startTime = 0;
|
this.running = !1
|
}
|
|
function $g() {
|
E.call(this);
|
this.type = "AudioListener";
|
this.context = ah.getContext();
|
this.gain = this.context.createGain();
|
this.gain.connect(this.context.destination);
|
this.filter = null;
|
this.timeDelta = 0;
|
this._clock = new Zg
|
}
|
|
function rd(e) {
|
E.call(this);
|
this.type = "Audio";
|
this.listener = e;
|
this.context = e.context;
|
this.gain = this.context.createGain();
|
this.gain.connect(e.getInput());
|
this.autoplay = !1;
|
this.buffer = null;
|
this.detune = 0;
|
this.loop = !1;
|
this.offset = this.loopEnd = this.loopStart = 0;
|
this.duration = void 0;
|
this.playbackRate = 1;
|
this.isPlaying = !1;
|
this.hasPlaybackControl = !0;
|
this.sourceType = "empty";
|
this._pausedAt = this._startedAt = 0;
|
this.filters = []
|
}
|
|
function bh(e) {
|
rd.call(this, e);
|
this.panner = this.context.createPanner();
|
this.panner.panningModel = "HRTF";
|
this.panner.connect(this.gain)
|
}
|
|
function ch(e, h) {
|
this.analyser = e.context.createAnalyser();
|
this.analyser.fftSize = void 0 !== h ? h : 2048;
|
this.data = new Uint8Array(this.analyser.frequencyBinCount);
|
e.getOutput().connect(this.analyser)
|
}
|
|
function dh(e, h, a) {
|
this.binding = e;
|
this.valueSize = a;
|
e = Float64Array;
|
switch (h) {
|
case "quaternion":
|
h = this._slerp;
|
break;
|
case "string":
|
case "bool":
|
e = Array;
|
h = this._select;
|
break;
|
default:
|
h = this._lerp
|
}
|
this.buffer = new e(4 * a);
|
this._mixBufferRegion = h;
|
this.referenceCount = this.useCount = this.cumulativeWeight = 0
|
}
|
|
function Oi(e,
|
h, a) {
|
a = a || ja.parseTrackName(h);
|
this._targetGroup = e;
|
this._bindings = e.subscribe_(h, a)
|
}
|
|
function ja(e, h, a) {
|
this.path = h;
|
this.parsedPath = a || ja.parseTrackName(h);
|
this.node = ja.findNode(e, this.parsedPath.nodeName) || e;
|
this.rootNode = e
|
}
|
|
function Pi() {
|
this.uuid = N.generateUUID();
|
this._objects = Array.prototype.slice.call(arguments);
|
this.nCachedObjects_ = 0;
|
var e = {};
|
this._indicesByUUID = e;
|
for (var h = 0, a = arguments.length; h !== a; ++h) e[arguments[h].uuid] = h;
|
this._paths = [];
|
this._parsedPaths = [];
|
this._bindings = [];
|
this._bindingsIndicesByPath = {};
|
var b = this;
|
this.stats = {
|
objects: {
|
get total() {
|
return b._objects.length
|
},
|
get inUse() {
|
return this.total - b.nCachedObjects_
|
}
|
},
|
get bindingsPerObject() {
|
return b._bindings.length
|
}
|
}
|
}
|
|
function Qi(e, h, a) {
|
this._mixer = e;
|
this._clip = h;
|
this._localRoot = a || null;
|
e = h.tracks;
|
h = e.length;
|
a = Array(h);
|
for (var b = {
|
endingStart: 2400,
|
endingEnd: 2400
|
}, c = 0; c !== h; ++c) {
|
var d = e[c].createInterpolant(null);
|
a[c] = d;
|
d.settings = b
|
}
|
this._interpolantSettings = b;
|
this._interpolants = a;
|
this._propertyBindings = Array(h);
|
this._weightInterpolant = this._timeScaleInterpolant =
|
this._byClipCacheIndex = this._cacheIndex = null;
|
this.loop = 2201;
|
this._loopCount = -1;
|
this._startTime = null;
|
this.time = 0;
|
this._effectiveWeight = this.weight = this._effectiveTimeScale = this.timeScale = 1;
|
this.repetitions = Infinity;
|
this.paused = !1;
|
this.enabled = !0;
|
this.clampWhenFinished = !1;
|
this.zeroSlopeAtEnd = this.zeroSlopeAtStart = !0
|
}
|
|
function eh(e) {
|
this._root = e;
|
this._initMemoryManager();
|
this.time = this._accuIndex = 0;
|
this.timeScale = 1
|
}
|
|
function Hf(e, h) {
|
"string" === typeof e && (console.warn("THREE.Uniform: Type parameter is no longer needed."),
|
e = h);
|
this.value = e
|
}
|
|
function fh(e, h, a) {
|
wb.call(this, e, h);
|
this.meshPerAttribute = a || 1
|
}
|
|
function Ri(e, h, a, b) {
|
this.ray = new ac(e, h);
|
this.near = a || 0;
|
this.far = b || Infinity;
|
this.camera = null;
|
this.params = {
|
Mesh: {},
|
Line: {},
|
LOD: {},
|
Points: {
|
threshold: 1
|
},
|
Sprite: {}
|
};
|
Object.defineProperties(this.params, {
|
PointCloud: {
|
get: function () {
|
console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points.");
|
return this.Points
|
}
|
}
|
})
|
}
|
|
function Si(e, h) {
|
return e.distance - h.distance
|
}
|
|
function gh(e, h, a, b) {
|
if (!1 !== e.visible &&
|
(e.raycast(h, a), !0 === b)) {
|
e = e.children;
|
b = 0;
|
for (var c = e.length; b < c; b++) gh(e[b], h, a, !0)
|
}
|
}
|
|
function Ti(e, h, a) {
|
this.radius = void 0 !== e ? e : 1;
|
this.phi = void 0 !== h ? h : 0;
|
this.theta = void 0 !== a ? a : 0;
|
return this
|
}
|
|
function Ui(e, h, a) {
|
this.radius = void 0 !== e ? e : 1;
|
this.theta = void 0 !== h ? h : 0;
|
this.y = void 0 !== a ? a : 0;
|
return this
|
}
|
|
function hh(e, h) {
|
this.min = void 0 !== e ? e : new z(Infinity, Infinity);
|
this.max = void 0 !== h ? h : new z(-Infinity, -Infinity)
|
}
|
|
function ih(e, h) {
|
this.start = void 0 !== e ? e : new q;
|
this.end = void 0 !== h ? h : new q
|
}
|
|
function Ee(e) {
|
E.call(this);
|
this.material = e;
|
this.render = function () {}
|
}
|
|
function Fe(e, h, a, b) {
|
this.object = e;
|
this.size = void 0 !== h ? h : 1;
|
e = void 0 !== a ? a : 16711680;
|
b = void 0 !== b ? b : 1;
|
h = 0;
|
(a = this.object.geometry) && a.isGeometry ? h = 3 * a.faces.length : a && a.isBufferGeometry && (h = a.attributes.normal.count);
|
a = new G;
|
h = new F(6 * h, 3);
|
a.setAttribute("position", h);
|
Z.call(this, a, new T({
|
color: e,
|
linewidth: b
|
}));
|
this.matrixAutoUpdate = !1;
|
this.update()
|
}
|
|
function sd(e, h) {
|
E.call(this);
|
this.light = e;
|
this.light.updateMatrixWorld();
|
this.matrix = e.matrixWorld;
|
this.matrixAutoUpdate = !1;
|
this.color = h;
|
e = new G;
|
h = [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -1, 1];
|
for (var a = 0, b = 1; 32 > a; a++, b++) {
|
var c = a / 32 * Math.PI * 2,
|
d = b / 32 * Math.PI * 2;
|
h.push(Math.cos(c), Math.sin(c), 1, Math.cos(d), Math.sin(d), 1)
|
}
|
e.setAttribute("position", new F(h, 3));
|
h = new T({
|
fog: !1
|
});
|
this.cone = new Z(e, h);
|
this.add(this.cone);
|
this.update()
|
}
|
|
function Vi(e) {
|
var h = [];
|
e && e.isBone && h.push(e);
|
for (var a = 0; a < e.children.length; a++) h.push.apply(h, Vi(e.children[a]));
|
return h
|
}
|
|
function td(e) {
|
for (var h = Vi(e), a = new G, b = [], c = [], d = new D(0, 0, 1), f = new D(0, 1, 0), g = 0; g < h.length; g++) {
|
var k = h[g];
|
k.parent && k.parent.isBone && (b.push(0, 0, 0), b.push(0, 0, 0), c.push(d.r, d.g, d.b), c.push(f.r, f.g, f.b))
|
}
|
a.setAttribute("position", new F(b, 3));
|
a.setAttribute("color", new F(c, 3));
|
b = new T({
|
vertexColors: 2,
|
depthTest: !1,
|
depthWrite: !1,
|
transparent: !0
|
});
|
Z.call(this, a, b);
|
this.root = e;
|
this.bones = h;
|
this.matrix = e.matrixWorld;
|
this.matrixAutoUpdate = !1
|
}
|
|
function ud(e, h, a) {
|
this.light = e;
|
this.light.updateMatrixWorld();
|
this.color = a;
|
e = new Ob(h, 4, 2);
|
h = new Ia({
|
wireframe: !0,
|
fog: !1
|
});
|
ia.call(this, e, h);
|
this.matrix = this.light.matrixWorld;
|
this.matrixAutoUpdate = !1;
|
this.update()
|
}
|
|
function vd(e, h) {
|
this.type = "RectAreaLightHelper";
|
this.light = e;
|
this.color = h;
|
e = new G;
|
e.setAttribute("position", new F([1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0], 3));
|
e.computeBoundingSphere();
|
h = new T({
|
fog: !1
|
});
|
pa.call(this, e, h);
|
e = new G;
|
e.setAttribute("position", new F([1, 1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0], 3));
|
e.computeBoundingSphere();
|
this.add(new ia(e, new Ia({
|
side: 1,
|
fog: !1
|
})));
|
this.update()
|
}
|
|
function wd(e,
|
h, a) {
|
E.call(this);
|
this.light = e;
|
this.light.updateMatrixWorld();
|
this.matrix = e.matrixWorld;
|
this.matrixAutoUpdate = !1;
|
this.color = a;
|
e = new lc(h);
|
e.rotateY(.5 * Math.PI);
|
this.material = new Ia({
|
wireframe: !0,
|
fog: !1
|
});
|
void 0 === this.color && (this.material.vertexColors = 2);
|
h = e.getAttribute("position");
|
h = new Float32Array(3 * h.count);
|
e.setAttribute("color", new O(h, 3));
|
this.add(new ia(e, this.material));
|
this.update()
|
}
|
|
function xd(e, h) {
|
this.lightProbe = e;
|
this.size = h;
|
e = new Aa({
|
defines: {
|
GAMMA_OUTPUT: ""
|
},
|
uniforms: {
|
sh: {
|
value: this.lightProbe.sh.coefficients
|
},
|
intensity: {
|
value: this.lightProbe.intensity
|
}
|
},
|
vertexShader: "varying vec3 vNormal;\nvoid main() {\n\tvNormal = normalize( normalMatrix * normal );\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",
|
fragmentShader: "#define RECIPROCAL_PI 0.318309886\nvec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {\n\t// matrix is assumed to be orthogonal\n\treturn normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );\n}\nvec3 linearToOutput( in vec3 a ) {\n\t#ifdef GAMMA_OUTPUT\n\t\treturn pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );\n\t#else\n\t\treturn a;\n\t#endif\n}\n// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\t// normal is assumed to have unit length\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\t// band 0\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\t// band 1\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\t// band 2\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nuniform vec3 sh[ 9 ]; // sh coefficients\nuniform float intensity; // light probe intensity\nvarying vec3 vNormal;\nvoid main() {\n\tvec3 normal = normalize( vNormal );\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, sh );\n\tvec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;\n\toutgoingLight = linearToOutput( outgoingLight );\n\tgl_FragColor = vec4( outgoingLight, 1.0 );\n}"
|
});
|
h = new Ob(1, 32, 16);
|
ia.call(this, h, e);
|
this.onBeforeRender()
|
}
|
|
function If(e, h, a, b) {
|
e = e || 10;
|
h = h || 10;
|
a = new D(void 0 !== a ? a : 4473924);
|
b = new D(void 0 !== b ? b : 8947848);
|
var c = h / 2,
|
d = e / h,
|
f = e / 2;
|
e = [];
|
for (var g = [], k = 0, m = 0, n = -f; k <= h; k++, n += d) {
|
e.push(-f, 0, n, f, 0, n);
|
e.push(n, 0, -f, n, 0, f);
|
var p = k === c ? a : b;
|
p.toArray(g, m);
|
m += 3;
|
p.toArray(g, m);
|
m += 3;
|
p.toArray(g, m);
|
m += 3;
|
p.toArray(g, m);
|
m += 3
|
}
|
h = new G;
|
h.setAttribute("position", new F(e, 3));
|
h.setAttribute("color", new F(g, 3));
|
a = new T({
|
vertexColors: 2
|
});
|
Z.call(this, h, a)
|
}
|
|
function Jf(e, h,
|
a, b, c, d) {
|
e = e || 10;
|
h = h || 16;
|
a = a || 8;
|
b = b || 64;
|
c = new D(void 0 !== c ? c : 4473924);
|
d = new D(void 0 !== d ? d : 8947848);
|
var f = [],
|
g = [],
|
k;
|
for (k = 0; k <= h; k++) {
|
var m = k / h * 2 * Math.PI;
|
var n = Math.sin(m) * e;
|
m = Math.cos(m) * e;
|
f.push(0, 0, 0);
|
f.push(n, 0, m);
|
var p = k & 1 ? c : d;
|
g.push(p.r, p.g, p.b);
|
g.push(p.r, p.g, p.b)
|
}
|
for (k = 0; k <= a; k++) {
|
p = k & 1 ? c : d;
|
var l = e - e / a * k;
|
for (h = 0; h < b; h++) m = h / b * 2 * Math.PI, n = Math.sin(m) * l, m = Math.cos(m) * l, f.push(n, 0, m), g.push(p.r, p.g, p.b), m = (h + 1) / b * 2 * Math.PI, n = Math.sin(m) * l, m = Math.cos(m) * l, f.push(n, 0, m), g.push(p.r, p.g, p.b)
|
}
|
e = new G;
|
e.setAttribute("position", new F(f, 3));
|
e.setAttribute("color", new F(g, 3));
|
f = new T({
|
vertexColors: 2
|
});
|
Z.call(this, e, f)
|
}
|
|
function yd(e, h, a, b) {
|
this.audio = e;
|
this.range = h || 1;
|
this.divisionsInnerAngle = a || 16;
|
this.divisionsOuterAngle = b || 2;
|
e = new G;
|
h = new Float32Array(3 * (3 * (this.divisionsInnerAngle + 2 * this.divisionsOuterAngle) + 3));
|
e.setAttribute("position", new O(h, 3));
|
h = new T({
|
color: 65280
|
});
|
a = new T({
|
color: 16776960
|
});
|
pa.call(this, e, [a, h]);
|
this.update()
|
}
|
|
function Ge(e, h, a, b) {
|
this.object = e;
|
this.size = void 0 !== h ? h : 1;
|
e =
|
void 0 !== a ? a : 16776960;
|
b = void 0 !== b ? b : 1;
|
h = 0;
|
(a = this.object.geometry) && a.isGeometry ? h = a.faces.length : console.warn("THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.");
|
a = new G;
|
h = new F(6 * h, 3);
|
a.setAttribute("position", h);
|
Z.call(this, a, new T({
|
color: e,
|
linewidth: b
|
}));
|
this.matrixAutoUpdate = !1;
|
this.update()
|
}
|
|
function zd(e, h, a) {
|
E.call(this);
|
this.light = e;
|
this.light.updateMatrixWorld();
|
this.matrix = e.matrixWorld;
|
this.matrixAutoUpdate = !1;
|
this.color = a;
|
void 0 === h &&
|
(h = 1);
|
e = new G;
|
e.setAttribute("position", new F([-h, h, 0, h, h, 0, h, -h, 0, -h, -h, 0, -h, h, 0], 3));
|
h = new T({
|
fog: !1
|
});
|
this.lightPlane = new pa(e, h);
|
this.add(this.lightPlane);
|
e = new G;
|
e.setAttribute("position", new F([0, 0, 0, 0, 0, 1], 3));
|
this.targetLine = new pa(e, h);
|
this.add(this.targetLine);
|
this.update()
|
}
|
|
function He(e) {
|
function h(b, c, d) {
|
a(b, d);
|
a(c, d)
|
}
|
|
function a(a, b) {
|
d.push(0, 0, 0);
|
f.push(b.r, b.g, b.b);
|
void 0 === g[a] && (g[a] = []);
|
g[a].push(d.length / 3 - 1)
|
}
|
var b = new G,
|
c = new T({
|
color: 16777215,
|
vertexColors: 1
|
}),
|
d = [],
|
f = [],
|
g = {},
|
k =
|
new D(16755200),
|
m = new D(16711680),
|
n = new D(43775),
|
p = new D(16777215),
|
l = new D(3355443);
|
h("n1", "n2", k);
|
h("n2", "n4", k);
|
h("n4", "n3", k);
|
h("n3", "n1", k);
|
h("f1", "f2", k);
|
h("f2", "f4", k);
|
h("f4", "f3", k);
|
h("f3", "f1", k);
|
h("n1", "f1", k);
|
h("n2", "f2", k);
|
h("n3", "f3", k);
|
h("n4", "f4", k);
|
h("p", "n1", m);
|
h("p", "n2", m);
|
h("p", "n3", m);
|
h("p", "n4", m);
|
h("u1", "u2", n);
|
h("u2", "u3", n);
|
h("u3", "u1", n);
|
h("c", "t", p);
|
h("p", "c", l);
|
h("cn1", "cn2", l);
|
h("cn3", "cn4", l);
|
h("cf1", "cf2", l);
|
h("cf3", "cf4", l);
|
b.setAttribute("position", new F(d, 3));
|
b.setAttribute("color",
|
new F(f, 3));
|
Z.call(this, b, c);
|
this.camera = e;
|
this.camera.updateProjectionMatrix && this.camera.updateProjectionMatrix();
|
this.matrix = e.matrixWorld;
|
this.matrixAutoUpdate = !1;
|
this.pointMap = g;
|
this.update()
|
}
|
|
function qa(e, h, a, b, c, d, f) {
|
Kf.set(c, d, f).unproject(b);
|
e = h[e];
|
if (void 0 !== e)
|
for (a = a.getAttribute("position"), h = 0, b = e.length; h < b; h++) a.setXYZ(e[h], Kf.x, Kf.y, Kf.z)
|
}
|
|
function Ab(e, h) {
|
this.object = e;
|
void 0 === h && (h = 16776960);
|
e = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]);
|
var a = new Float32Array(24),
|
b = new G;
|
b.setIndex(new O(e, 1));
|
b.setAttribute("position", new O(a, 3));
|
Z.call(this, b, new T({
|
color: h
|
}));
|
this.matrixAutoUpdate = !1;
|
this.update()
|
}
|
|
function Ie(e, h) {
|
this.type = "Box3Helper";
|
this.box = e;
|
h = h || 16776960;
|
e = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]);
|
var a = new G;
|
a.setIndex(new O(e, 1));
|
a.setAttribute("position", new F([1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1], 3));
|
Z.call(this, a, new T({
|
color: h
|
}));
|
this.geometry.computeBoundingSphere()
|
}
|
|
function Je(e, h, a) {
|
this.type =
|
"PlaneHelper";
|
this.plane = e;
|
this.size = void 0 === h ? 1 : h;
|
e = void 0 !== a ? a : 16776960;
|
h = new G;
|
h.setAttribute("position", new F([1, -1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0], 3));
|
h.computeBoundingSphere();
|
pa.call(this, h, new T({
|
color: e
|
}));
|
h = new G;
|
h.setAttribute("position", new F([1, 1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1, -1, 1], 3));
|
h.computeBoundingSphere();
|
this.add(new ia(h, new Ia({
|
color: e,
|
opacity: .2,
|
transparent: !0,
|
depthWrite: !1
|
})))
|
}
|
|
function Bb(e, h, a, b, c, d) {
|
E.call(this);
|
void 0 === e && (e = new q(0,
|
0, 1));
|
void 0 === h && (h = new q(0, 0, 0));
|
void 0 === a && (a = 1);
|
void 0 === b && (b = 16776960);
|
void 0 === c && (c = .2 * a);
|
void 0 === d && (d = .2 * c);
|
void 0 === Lf && (Lf = new G, Lf.setAttribute("position", new F([0, 0, 0, 0, 1, 0], 3)), jh = new yb(0, .5, 1, 5, 1), jh.translate(0, -.5, 0));
|
this.position.copy(h);
|
this.line = new pa(Lf, new T({
|
color: b
|
}));
|
this.line.matrixAutoUpdate = !1;
|
this.add(this.line);
|
this.cone = new ia(jh, new Ia({
|
color: b
|
}));
|
this.cone.matrixAutoUpdate = !1;
|
this.add(this.cone);
|
this.setDirection(e);
|
this.setLength(a, c, d)
|
}
|
|
function Ke(e) {
|
e = e ||
|
1;
|
var h = [0, 0, 0, e, 0, 0, 0, 0, 0, 0, e, 0, 0, 0, 0, 0, 0, e];
|
e = new G;
|
e.setAttribute("position", new F(h, 3));
|
e.setAttribute("color", new F([1, 0, 0, 1, .6, 0, 0, 1, 0, .6, 1, 0, 0, 0, 1, 0, .6, 1], 3));
|
h = new T({
|
vertexColors: 2
|
});
|
Z.call(this, e, h)
|
}
|
|
function Wi(e) {
|
console.warn("THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.");
|
la.call(this, e);
|
this.type = "catmullrom";
|
this.closed = !0
|
}
|
|
function Xi(e) {
|
console.warn("THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.");
|
la.call(this, e);
|
this.type =
|
"catmullrom"
|
}
|
|
function kh(e) {
|
console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.");
|
la.call(this, e);
|
this.type = "catmullrom"
|
}
|
if (wx.getPerformance) {
|
var pl = wx.getSystemInfoSync().platform,
|
Mf = wx.getPerformance(),
|
ql = Mf.now(),
|
rl = Object.assign({}, Mf, {
|
now: function () {
|
return (Mf.now() - ql) / 1E3
|
}
|
});
|
var sl = "devtools" === pl ? Mf : rl
|
}
|
var tl = sl,
|
lh = wx.getSystemInfoSync(),
|
Yi = lh.screenWidth,
|
Zi = lh.screenHeight,
|
ul = lh.devicePixelRatio,
|
Kc = Yi,
|
Lc = Zi,
|
vl = {
|
width: Yi,
|
height: Zi,
|
availWidth: Kc,
|
availHeight: Lc,
|
availLeft: 0,
|
availTop: 0
|
},
|
Le = new WeakMap,
|
mh = function () {
|
function e() {
|
fb(this, e);
|
Le.set(this, {})
|
}
|
Ve(e, [{
|
key: "addEventListener",
|
value: function (e, a) {
|
var b = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {},
|
c = Le.get(this);
|
c || (c = {}, Le.set(this, c));
|
c[e] || (c[e] = []);
|
c[e].push(a);
|
b.capture && console.warn("EventTarget.addEventListener: options.capture is not implemented.");
|
b.once && console.warn("EventTarget.addEventListener: options.once is not implemented.");
|
b.passive && console.warn("EventTarget.addEventListener: options.passive is not implemented.")
|
}
|
},
|
{
|
key: "removeEventListener",
|
value: function (e, a) {
|
var b = Le.get(this);
|
if (b && (e = b[e]) && 0 < e.length)
|
for (b = e.length; b--; 0 < b)
|
if (e[b] === a) {
|
e.splice(b, 1);
|
break
|
}
|
}
|
}, {
|
key: "dispatchEvent",
|
value: function () {
|
var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {},
|
a = Le.get(this)[e.type];
|
if (a)
|
for (var b = 0; b < a.length; b++) a[b](e)
|
}
|
}
|
]);
|
return e
|
}(),
|
$i = function (e) {
|
function h() {
|
fb(this, h);
|
var a = Xb(this, sb(h).call(this));
|
a.className = "";
|
a.children = [];
|
return a
|
}
|
Wb(h, e);
|
Ve(h, [{
|
key: "setAttribute",
|
value: function (a, b) {
|
this[a] =
|
b
|
}
|
}, {
|
key: "getAttribute",
|
value: function (a) {
|
return this[a]
|
}
|
}, {
|
key: "setAttributeNS",
|
value: function (a, b) {
|
this[a] = b
|
}
|
}, {
|
key: "getAttributeNS",
|
value: function (a) {
|
return this[a]
|
}
|
}]);
|
return h
|
}(function (e) {
|
function h() {
|
fb(this, h);
|
var a = Xb(this, sb(h).call(this));
|
a.childNodes = [];
|
return a
|
}
|
Wb(h, e);
|
Ve(h, [{
|
key: "appendChild",
|
value: function (a) {
|
this.childNodes.push(a);
|
if (a instanceof h) this.childNodes.push(a);
|
else throw new TypeError("Failed to executed 'appendChild' on 'Node': parameter 1 is not of type 'Node'.");
|
}
|
},
|
{
|
key: "cloneNode",
|
value: function () {
|
var a = Object.create(this);
|
Object.assign(a, this);
|
return a
|
}
|
}, {
|
key: "removeChild",
|
value: function (a) {
|
var b = this.childNodes.findIndex(function (b) {
|
return b === a
|
});
|
return -1 < b ? this.childNodes.splice(b, 1) : null
|
}
|
}
|
]);
|
return h
|
}(mh)),
|
zc = function (e) {
|
function h() {
|
var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "",
|
b = 1 < arguments.length ? arguments[1] : void 0;
|
fb(this, h);
|
var c = Xb(this, sb(h).call(this));
|
c.className = "";
|
c.children = [];
|
c.focus = fa;
|
c.blur = fa;
|
c.insertBefore = fa;
|
c.appendChild =
|
fa;
|
c.removeChild = fa;
|
c.remove = fa;
|
c.innerHTML = "";
|
c.tagName = a.toUpperCase();
|
Ph(tb(c), b);
|
a = tb(c);
|
a.style = a.style || {};
|
Object.assign(a.style, {
|
top: "0px",
|
left: "0px",
|
width: Kc + "px",
|
height: Lc + "px",
|
margin: "0px",
|
padding: "0px"
|
});
|
Qh(tb(c));
|
Nj(tb(c));
|
a = tb(c);
|
"offsetLeft" in a || (a.offsetLeft = 0, a.offsetTop = 0);
|
"offsetWidth" in a || (a.offsetWidth = Kc, a.offsetHeight = Lc);
|
a = tb(c);
|
"scrollLeft" in a || (a.scrollLeft = 0, a.scrollTop = 0);
|
"scrollWidth" in a || (a.scrollWidth = Kc, a.scrollHeight = Lc);
|
return c
|
}
|
Wb(h, e);
|
return h
|
}($i),
|
ra = null,
|
ma =
|
new Map,
|
nh = {
|
0: "animation-delay",
|
1: "animation-direction",
|
2: "animation-duration",
|
3: "animation-fill-mode",
|
4: "animation-iteration-count",
|
5: "animation-name",
|
6: "animation-play-state",
|
7: "animation-timing-function",
|
8: "background-attachment",
|
9: "background-blend-mode",
|
10: "background-clip",
|
11: "background-color",
|
12: "background-image",
|
13: "background-origin",
|
14: "background-position",
|
15: "background-repeat",
|
16: "background-size",
|
17: "border-bottom-color",
|
18: "border-bottom-left-radius",
|
19: "border-bottom-right-radius",
|
20: "border-bottom-style",
|
21: "border-bottom-width",
|
22: "border-collapse",
|
23: "border-image-outset",
|
24: "border-image-repeat",
|
25: "border-image-slice",
|
26: "border-image-source",
|
27: "border-image-width",
|
28: "border-left-color",
|
29: "border-left-style",
|
30: "border-left-width",
|
31: "border-right-color",
|
32: "border-right-style",
|
33: "border-right-width",
|
34: "border-top-color",
|
35: "border-top-left-radius",
|
36: "border-top-right-radius",
|
37: "border-top-style",
|
38: "border-top-width",
|
39: "bottom",
|
40: "box-shadow",
|
41: "box-sizing",
|
42: "break-after",
|
43: "break-before",
|
44: "break-inside",
|
45: "caption-side",
|
46: "clear",
|
47: "clip",
|
48: "color",
|
49: "content",
|
50: "cursor",
|
51: "direction",
|
52: "display",
|
53: "empty-cells",
|
54: "float",
|
55: "font-family",
|
56: "font-kerning",
|
57: "font-size",
|
58: "font-stretch",
|
59: "font-style",
|
60: "font-variant",
|
61: "font-variant-ligatures",
|
62: "font-variant-caps",
|
63: "font-variant-numeric",
|
64: "font-variant-east-asian",
|
65: "font-weight",
|
66: "height",
|
67: "image-rendering",
|
68: "isolation",
|
69: "justify-items",
|
70: "justify-self",
|
71: "left",
|
72: "letter-spacing",
|
73: "line-height",
|
74: "list-style-image",
|
75: "list-style-position",
|
76: "list-style-type",
|
77: "margin-bottom",
|
78: "margin-left",
|
79: "margin-right",
|
80: "margin-top",
|
81: "max-height",
|
82: "max-width",
|
83: "min-height",
|
84: "min-width",
|
85: "mix-blend-mode",
|
86: "object-fit",
|
87: "object-position",
|
88: "offset-distance",
|
89: "offset-path",
|
90: "offset-rotate",
|
91: "opacity",
|
92: "orphans",
|
93: "outline-color",
|
94: "outline-offset",
|
95: "outline-style",
|
96: "outline-width",
|
97: "overflow-anchor",
|
98: "overflow-wrap",
|
99: "overflow-x",
|
100: "overflow-y",
|
101: "padding-bottom",
|
102: "padding-left",
|
103: "padding-right",
|
104: "padding-top",
|
105: "pointer-events",
|
106: "position",
|
107: "resize",
|
108: "right",
|
109: "scroll-behavior",
|
110: "speak",
|
111: "table-layout",
|
112: "tab-size",
|
113: "text-align",
|
114: "text-align-last",
|
115: "text-decoration",
|
116: "text-decoration-line",
|
117: "text-decoration-style",
|
118: "text-decoration-color",
|
119: "text-decoration-skip-ink",
|
120: "text-underline-position",
|
121: "text-indent",
|
122: "text-rendering",
|
123: "text-shadow",
|
124: "text-size-adjust",
|
125: "text-overflow",
|
126: "text-transform",
|
127: "top",
|
128: "touch-action",
|
129: "transition-delay",
|
130: "transition-duration",
|
131: "transition-property",
|
132: "transition-timing-function",
|
133: "unicode-bidi",
|
134: "vertical-align",
|
135: "visibility",
|
136: "white-space",
|
137: "widows",
|
138: "width",
|
139: "will-change",
|
140: "word-break",
|
141: "word-spacing",
|
142: "word-wrap",
|
143: "z-index",
|
144: "zoom",
|
145: "-webkit-appearance",
|
146: "backface-visibility",
|
147: "-webkit-border-horizontal-spacing",
|
148: "-webkit-border-image",
|
149: "-webkit-border-vertical-spacing",
|
150: "-webkit-box-align",
|
151: "-webkit-box-decoration-break",
|
152: "-webkit-box-direction",
|
153: "-webkit-box-flex",
|
154: "-webkit-box-flex-group",
|
155: "-webkit-box-lines",
|
156: "-webkit-box-ordinal-group",
|
157: "-webkit-box-orient",
|
158: "-webkit-box-pack",
|
159: "-webkit-box-reflect",
|
160: "column-count",
|
161: "column-gap",
|
162: "column-rule-color",
|
163: "column-rule-style",
|
164: "column-rule-width",
|
165: "column-span",
|
166: "column-width",
|
167: "align-content",
|
168: "align-items",
|
169: "align-self",
|
170: "flex-basis",
|
171: "flex-grow",
|
172: "flex-shrink",
|
173: "flex-direction",
|
174: "flex-wrap",
|
175: "justify-content",
|
176: "-webkit-font-smoothing",
|
177: "grid-auto-columns",
|
178: "grid-auto-flow",
|
179: "grid-auto-rows",
|
180: "grid-column-end",
|
181: "grid-column-start",
|
182: "grid-template-areas",
|
183: "grid-template-columns",
|
184: "grid-template-rows",
|
185: "grid-row-end",
|
186: "grid-row-start",
|
187: "grid-column-gap",
|
188: "grid-row-gap",
|
189: "-webkit-highlight",
|
190: "hyphens",
|
191: "-webkit-hyphenate-character",
|
192: "-webkit-line-break",
|
193: "-webkit-line-clamp",
|
194: "-webkit-locale",
|
195: "-webkit-margin-before-collapse",
|
196: "-webkit-margin-after-collapse",
|
197: "-webkit-mask-box-image",
|
198: "-webkit-mask-box-image-outset",
|
199: "-webkit-mask-box-image-repeat",
|
200: "-webkit-mask-box-image-slice",
|
201: "-webkit-mask-box-image-source",
|
202: "-webkit-mask-box-image-width",
|
203: "-webkit-mask-clip",
|
204: "-webkit-mask-composite",
|
205: "-webkit-mask-image",
|
206: "-webkit-mask-origin",
|
207: "-webkit-mask-position",
|
208: "-webkit-mask-repeat",
|
209: "-webkit-mask-size",
|
210: "order",
|
211: "perspective",
|
212: "perspective-origin",
|
213: "-webkit-print-color-adjust",
|
214: "-webkit-rtl-ordering",
|
215: "shape-outside",
|
216: "shape-image-threshold",
|
217: "shape-margin",
|
218: "-webkit-tap-highlight-color",
|
219: "-webkit-text-combine",
|
220: "-webkit-text-decorations-in-effect",
|
221: "-webkit-text-emphasis-color",
|
222: "-webkit-text-emphasis-position",
|
223: "-webkit-text-emphasis-style",
|
224: "-webkit-text-fill-color",
|
225: "-webkit-text-orientation",
|
226: "-webkit-text-security",
|
227: "-webkit-text-stroke-color",
|
228: "-webkit-text-stroke-width",
|
229: "transform",
|
230: "transform-origin",
|
231: "transform-style",
|
232: "-webkit-user-drag",
|
233: "-webkit-user-modify",
|
234: "user-select",
|
235: "-webkit-writing-mode",
|
236: "-webkit-app-region",
|
237: "buffered-rendering",
|
238: "clip-path",
|
239: "clip-rule",
|
240: "mask",
|
241: "filter",
|
242: "flood-color",
|
243: "flood-opacity",
|
244: "lighting-color",
|
245: "stop-color",
|
246: "stop-opacity",
|
247: "color-interpolation",
|
248: "color-interpolation-filters",
|
249: "color-rendering",
|
250: "fill",
|
251: "fill-opacity",
|
252: "fill-rule",
|
253: "marker-end",
|
254: "marker-mid",
|
255: "marker-start",
|
256: "mask-type",
|
257: "shape-rendering",
|
258: "stroke",
|
259: "stroke-dasharray",
|
260: "stroke-dashoffset",
|
261: "stroke-linecap",
|
262: "stroke-linejoin",
|
263: "stroke-miterlimit",
|
264: "stroke-opacity",
|
265: "stroke-width",
|
266: "alignment-baseline",
|
267: "baseline-shift",
|
268: "dominant-baseline",
|
269: "text-anchor",
|
270: "writing-mode",
|
271: "vector-effect",
|
272: "paint-order",
|
273: "d",
|
274: "cx",
|
275: "cy",
|
276: "x",
|
277: "y",
|
278: "r",
|
279: "rx",
|
280: "ry",
|
281: "caret-color",
|
282: "line-break",
|
display: "inline",
|
dominantBaseline: "auto",
|
emptyCells: "show",
|
fill: "rgb(0, 0, 0)",
|
fillOpacity: "1",
|
fillRule: "nonzero",
|
filter: "none",
|
flex: "0 1 auto",
|
flexBasis: "auto",
|
flexDirection: "row",
|
flexFlow: "row nowrap",
|
flexGrow: "0",
|
flexShrink: "1",
|
flexWrap: "nowrap",
|
"float": "none",
|
floodColor: "rgb(0, 0, 0)",
|
floodOpacity: "1",
|
font: 'normal normal 400 normal 16px / normal "PingFang SC"',
|
fontDisplay: "",
|
fontFamily: '"PingFang SC"',
|
fontFeatureSettings: "normal",
|
fontKerning: "auto",
|
fontSize: "16px",
|
fontStretch: "100%",
|
fontStyle: "normal",
|
fontVariant: "normal",
|
fontVariantCaps: "normal",
|
fontVariantEastAsian: "normal",
|
fontVariantLigatures: "normal",
|
fontVariantNumeric: "normal",
|
fontVariationSettings: "normal",
|
fontWeight: "400",
|
grid: "none / none / none / row / auto / auto",
|
gridArea: "auto / auto / auto / auto",
|
gridAutoColumns: "auto",
|
gridAutoFlow: "row",
|
gridAutoRows: "auto",
|
gridColumn: "auto / auto",
|
gridColumnEnd: "auto",
|
gridColumnGap: "0px",
|
gridColumnStart: "auto",
|
gridGap: "0px 0px",
|
gridRow: "auto / auto",
|
gridRowEnd: "auto",
|
gridRowGap: "0px",
|
gridRowStart: "auto",
|
gridTemplate: "none / none / none",
|
gridTemplateAreas: "none",
|
gridTemplateColumns: "none",
|
gridTemplateRows: "none",
|
height: "0px",
|
hyphens: "manual",
|
imageRendering: "auto",
|
inlineSize: "0px",
|
isolation: "auto",
|
justifyContent: "normal",
|
justifyItems: "normal",
|
justifySelf: "auto",
|
left: "auto",
|
letterSpacing: "normal",
|
lightingColor: "rgb(255, 255, 255)",
|
lineBreak: "auto",
|
lineHeight: "normal",
|
listStyle: "disc outside none",
|
listStyleImage: "none",
|
listStylePosition: "outside",
|
listStyleType: "disc",
|
margin: "0px",
|
marginBottom: "0px",
|
marginLeft: "0px",
|
marginRight: "0px",
|
marginTop: "0px",
|
marker: "",
|
markerEnd: "none",
|
markerMid: "none",
|
markerStart: "none",
|
mask: "none",
|
maskType: "luminance",
|
maxBlockSize: "none",
|
maxHeight: "none",
|
maxInlineSize: "none",
|
maxWidth: "none",
|
maxZoom: "",
|
minBlockSize: "0px",
|
minHeight: "0px",
|
minInlineSize: "0px",
|
minWidth: "0px",
|
minZoom: "",
|
mixBlendMode: "normal",
|
objectFit: "fill",
|
objectPosition: "50% 50%",
|
offset: "none 0px auto 0deg",
|
offsetDistance: "0px",
|
offsetPath: "none",
|
offsetRotate: "auto 0deg",
|
opacity: "1",
|
order: "0",
|
orientation: "",
|
orphans: "2",
|
outline: "rgb(0, 0, 0) none 0px",
|
outlineColor: "rgb(0, 0, 0)",
|
outlineOffset: "0px",
|
outlineStyle: "none",
|
outlineWidth: "0px",
|
overflow: "visible",
|
overflowAnchor: "auto",
|
overflowWrap: "normal",
|
overflowX: "visible",
|
overflowY: "visible",
|
overscrollBehavior: "auto auto",
|
overscrollBehaviorX: "auto",
|
overscrollBehaviorY: "auto",
|
padding: "0px",
|
paddingBottom: "0px",
|
paddingLeft: "0px",
|
paddingRight: "0px",
|
paddingTop: "0px",
|
page: "",
|
pageBreakAfter: "auto",
|
pageBreakBefore: "auto",
|
pageBreakInside: "auto",
|
paintOrder: "fill stroke markers",
|
perspective: "none",
|
perspectiveOrigin: "0px 0px",
|
placeContent: "normal normal",
|
placeItems: "normal normal",
|
placeSelf: "auto auto",
|
pointerEvents: "auto",
|
position: "static",
|
quotes: "",
|
r: "0px",
|
resize: "none",
|
right: "auto",
|
rx: "auto",
|
ry: "auto",
|
scrollBehavior: "auto",
|
shapeImageThreshold: "0",
|
shapeMargin: "0px",
|
shapeOutside: "none",
|
shapeRendering: "auto",
|
size: "",
|
speak: "normal",
|
src: "",
|
stopColor: "rgb(0, 0, 0)",
|
stopOpacity: "1",
|
stroke: "none",
|
strokeDasharray: "none",
|
strokeDashoffset: "0px",
|
strokeLinecap: "butt",
|
strokeLinejoin: "miter",
|
strokeMiterlimit: "4",
|
strokeOpacity: "1",
|
strokeWidth: "1px",
|
tabSize: "8",
|
tableLayout: "auto",
|
textAlign: "start",
|
textAlignLast: "auto",
|
textAnchor: "start",
|
textCombineUpright: "none",
|
textDecoration: "none solid rgb(0, 0, 0)",
|
textDecorationColor: "rgb(0, 0, 0)",
|
textDecorationLine: "none",
|
textDecorationSkipInk: "auto",
|
textDecorationStyle: "solid",
|
textIndent: "0px",
|
textOrientation: "mixed",
|
textOverflow: "clip",
|
textRendering: "auto",
|
textShadow: "none",
|
textSizeAdjust: "auto",
|
textTransform: "none",
|
textUnderlinePosition: "auto",
|
top: "auto",
|
touchAction: "auto",
|
transform: "none",
|
transformBox: "view-box",
|
transformOrigin: "0px 0px",
|
transformStyle: "flat",
|
transition: "all 0s ease 0s",
|
transitionDelay: "0s",
|
transitionDuration: "0s",
|
transitionProperty: "all",
|
transitionTimingFunction: "ease",
|
unicodeBidi: "normal",
|
unicodeRange: "",
|
userSelect: "auto",
|
userZoom: "",
|
vectorEffect: "none",
|
verticalAlign: "baseline",
|
visibility: "visible",
|
webkitAppRegion: "no-drag",
|
webkitAppearance: "none",
|
webkitBorderAfter: "0px none rgb(0, 0, 0)",
|
webkitBorderAfterColor: "rgb(0, 0, 0)",
|
webkitBorderAfterStyle: "none",
|
webkitBorderAfterWidth: "0px",
|
webkitBorderBefore: "0px none rgb(0, 0, 0)",
|
webkitBorderBeforeColor: "rgb(0, 0, 0)",
|
webkitBorderBeforeStyle: "none",
|
webkitBorderBeforeWidth: "0px",
|
webkitBorderEnd: "0px none rgb(0, 0, 0)",
|
webkitBorderEndColor: "rgb(0, 0, 0)",
|
webkitBorderEndStyle: "none",
|
webkitBorderEndWidth: "0px",
|
webkitBorderHorizontalSpacing: "0px",
|
webkitBorderImage: "none",
|
webkitBorderStart: "0px none rgb(0, 0, 0)",
|
webkitBorderStartColor: "rgb(0, 0, 0)",
|
webkitBorderStartStyle: "none",
|
webkitBorderStartWidth: "0px",
|
webkitBorderVerticalSpacing: "0px",
|
webkitBoxAlign: "stretch",
|
webkitBoxDecorationBreak: "slice",
|
webkitBoxDirection: "normal",
|
webkitBoxFlex: "0",
|
webkitBoxFlexGroup: "1",
|
webkitBoxLines: "single",
|
webkitBoxOrdinalGroup: "1",
|
webkitBoxOrient: "horizontal",
|
webkitBoxPack: "start",
|
webkitBoxReflect: "none",
|
webkitColumnBreakAfter: "auto",
|
webkitColumnBreakBefore: "auto",
|
webkitColumnBreakInside: "auto",
|
webkitFontSizeDelta: "",
|
webkitFontSmoothing: "auto",
|
webkitHighlight: "none",
|
webkitHyphenateCharacter: "auto",
|
webkitLineBreak: "auto",
|
webkitLineClamp: "none",
|
webkitLocale: "auto",
|
webkitLogicalHeight: "0px",
|
webkitLogicalWidth: "0px",
|
webkitMarginAfter: "0px",
|
webkitMarginAfterCollapse: "collapse",
|
webkitMarginBefore: "0px",
|
webkitMarginBeforeCollapse: "collapse",
|
webkitMarginBottomCollapse: "collapse",
|
webkitMarginCollapse: "",
|
webkitMarginEnd: "0px",
|
webkitMarginStart: "0px",
|
webkitMarginTopCollapse: "collapse",
|
webkitMask: "",
|
webkitMaskBoxImage: "none",
|
webkitMaskBoxImageOutset: "0px",
|
webkitMaskBoxImageRepeat: "stretch",
|
webkitMaskBoxImageSlice: "0 fill",
|
webkitMaskBoxImageSource: "none",
|
webkitMaskBoxImageWidth: "auto",
|
webkitMaskClip: "border-box",
|
webkitMaskComposite: "source-over",
|
webkitMaskImage: "none",
|
webkitMaskOrigin: "border-box",
|
webkitMaskPosition: "0% 0%",
|
webkitMaskPositionX: "0%",
|
webkitMaskPositionY: "0%",
|
webkitMaskRepeat: "repeat",
|
webkitMaskRepeatX: "",
|
webkitMaskRepeatY: "",
|
webkitMaskSize: "auto",
|
webkitMaxLogicalHeight: "none",
|
webkitMaxLogicalWidth: "none",
|
webkitMinLogicalHeight: "0px",
|
webkitMinLogicalWidth: "0px",
|
webkitPaddingAfter: "0px",
|
webkitPaddingBefore: "0px",
|
webkitPaddingEnd: "0px",
|
webkitPaddingStart: "0px",
|
webkitPerspectiveOriginX: "",
|
webkitPerspectiveOriginY: "",
|
webkitPrintColorAdjust: "economy",
|
webkitRtlOrdering: "logical",
|
webkitRubyPosition: "before",
|
webkitTapHighlightColor: "rgba(0, 0, 0, 0.4)",
|
webkitTextCombine: "none",
|
webkitTextDecorationsInEffect: "none",
|
webkitTextEmphasis: "",
|
webkitTextEmphasisColor: "rgb(0, 0, 0)",
|
webkitTextEmphasisPosition: "over right",
|
webkitTextEmphasisStyle: "none",
|
webkitTextFillColor: "rgb(0, 0, 0)",
|
webkitTextOrientation: "vertical-right",
|
webkitTextSecurity: "none",
|
webkitTextStroke: "",
|
webkitTextStrokeColor: "rgb(0, 0, 0)",
|
webkitTextStrokeWidth: "0px",
|
webkitTransformOriginX: "",
|
webkitTransformOriginY: "",
|
webkitTransformOriginZ: "",
|
webkitUserDrag: "auto",
|
webkitUserModify: "read-only",
|
webkitWritingMode: "horizontal-tb",
|
whiteSpace: "normal",
|
widows: "2",
|
width: "0px",
|
willChange: "auto",
|
wordBreak: "normal",
|
wordSpacing: "0px",
|
wordWrap: "normal",
|
writingMode: "horizontal-tb",
|
x: "0px",
|
y: "0px",
|
zIndex: "auto",
|
zoom: "1"
|
},
|
pg = function a(h) {
|
fb(this, a);
|
this.cancelable = this.cancelBubble = !1;
|
this.currentTarget = this.target = null;
|
this.stopPropagation = this.preventDefault = fa;
|
this.type = h;
|
this.timeStamp = Date.now()
|
},
|
aj = {
|
href: "app.js",
|
reload: function () {},
|
replace: function (h) {
|
this.href = h
|
}
|
},
|
wl = function (h) {
|
function a() {
|
fb(this, a);
|
return Xb(this, sb(a).call(this, "html", 0))
|
}
|
Wb(a, h);
|
return a
|
}(zc),
|
xl = function (h) {
|
function a() {
|
fb(this, a);
|
return Xb(this, sb(a).call(this, "body", 0))
|
}
|
Wb(a, h);
|
return a
|
}(zc),
|
bj = function (h) {
|
function a(b) {
|
fb(this, a);
|
b = Xb(this, sb(a).call(this, b));
|
b.touches = [];
|
b.targetTouches = [];
|
b.changedTouches = [];
|
b.target = null;
|
b.currentTarget = null;
|
return b
|
}
|
Wb(a, h);
|
return a
|
}(pg),
|
oh = function b(a) {
|
fb(this, b);
|
this.identifier =
|
a.identifier;
|
this.force = void 0 === a.force ? 1 : a.force;
|
this.pageX = a.pageX || a.x;
|
this.pageY = a.pageY || a.y;
|
this.clientX = a.clientX || a.x;
|
this.clientY = a.clientY || a.y;
|
this.screenX = this.pageX;
|
this.screenY = this.pageY
|
},
|
Me = {},
|
V = {
|
readyState: "complete",
|
visibilityState: "visible",
|
hidden: !1,
|
fullscreen: !0,
|
location: aj,
|
scripts: [],
|
style: {},
|
ontouchstart: null,
|
ontouchmove: null,
|
ontouchend: null,
|
onvisibilitychange: null,
|
parentNode: null,
|
parentElement: null,
|
createElement: function (a) {
|
a = a.toLowerCase();
|
if ("canvas" === a) {
|
if (null == ra) throw Error("please register a canvas");
|
return ra
|
}
|
return "img" === a ? new Rh : new zc(a)
|
},
|
createElementNS: function (a, b) {
|
return this.createElement(b)
|
},
|
createTextNode: function (a) {
|
return a
|
},
|
getElementById: function (a) {
|
return ma.has(a) ? ma.get(a) : null
|
},
|
getElementsByTagName: function (a) {
|
a = a.toLowerCase();
|
return "head" === a ? [V.head] : "body" === a ? [V.body] : "canvas" === a ? ng(ma) : []
|
},
|
getElementsByTagNameNS: function (a, b) {
|
return this.getElementsByTagName(b)
|
},
|
getElementsByName: function (a) {
|
return "head" === a ? [V.head] : "body" === a ? [V.body] : "canvas" === a ? ng(ma) : []
|
},
|
querySelector: function (a) {
|
if ("head" ===
|
a) return V.head;
|
if ("body" === a) return V.body;
|
if ("canvas" === a) return ra;
|
a = a.slice(1);
|
return ma.has(a) ? ma.get(a) : null
|
},
|
querySelectorAll: function (a) {
|
return "head" === a ? [V.head] : "body" === a ? [V.body] : "canvas" === a ? ng(ma) : []
|
},
|
addEventListener: function (a, b) {
|
Me[a] || (Me[a] = []);
|
Me[a].push(b)
|
},
|
removeEventListener: function (a, b) {
|
if ((a = Me[a]) && 0 < a.length)
|
for (var c = a.length; c--; 0 < c)
|
if (a[c] === b) {
|
a.splice(c, 1);
|
break
|
}
|
},
|
dispatchEvent: function (a) {
|
var b = a.type,
|
c = Me[b];
|
if (c)
|
for (var d = 0; d < c.length; d++) c[d](a);
|
if (a.target && "function" ===
|
typeof a.target["on" + b]) a.target["on" + b](a)
|
}
|
};
|
V.documentElement = new wl;
|
V.head = new zc("head");
|
V.body = new xl;
|
if (wx.onHide) wx.onHide(Sh(!1));
|
if (wx.onShow) wx.onShow(Sh(!0));
|
var ph = wx.getSystemInfoSync(),
|
yl = ph.platform,
|
cj = ph.language,
|
dj = -1 !== ph.system.toLowerCase().indexOf("android") ? "Android; CPU Android 6.0" : "iPhone; CPU iPhone OS 10_3_1 like Mac OS X",
|
zl = "Mozilla/5.0 (".concat(dj, ") AppleWebKit/603.1.30 (KHTML, like Gecko) Mobile/14E8301 MicroMessenger/6.6.0 MiniGame NetType/WIFI Language/").concat(cj),
|
ej = {
|
platform: yl,
|
language: cj,
|
appVersion: "5.0 (".concat(dj, ") AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"),
|
userAgent: zl,
|
onLine: !0,
|
geolocation: {
|
getCurrentPosition: fa,
|
watchPosition: fa,
|
clearWatch: fa
|
}
|
};
|
if (wx.onNetworkStatusChange) wx.onNetworkStatusChange(function (a) {
|
ej.onLine = a.isConnected
|
});
|
var Nf = new WeakMap,
|
Of = new WeakMap,
|
Al = new WeakMap,
|
Ac = function (a) {
|
function b() {
|
fb(this, b);
|
var a = Xb(this, sb(b).call(this));
|
a.onabort = null;
|
a.onerror = null;
|
a.onload = null;
|
a.onloadstart =
|
null;
|
a.onprogress = null;
|
a.ontimeout = null;
|
a.onloadend = null;
|
a.onreadystatechange = null;
|
a.readyState = 0;
|
a.response = null;
|
a.responseText = null;
|
a.responseType = "text";
|
a.dataType = "string";
|
a.responseXML = null;
|
a.status = 0;
|
a.statusText = "";
|
a.upload = {};
|
a.withCredentials = !1;
|
Nf.set(tb(a), {
|
"content-type": "application/x-www-form-urlencoded"
|
});
|
Of.set(tb(a), {});
|
return a
|
}
|
Wb(b, a);
|
Ve(b, [{
|
key: "abort",
|
value: function () {
|
var a = Al.get(this);
|
a && a.abort()
|
}
|
}, {
|
key: "getAllResponseHeaders",
|
value: function () {
|
var a = Of.get(this);
|
return Object.keys(a).map(function (b) {
|
return "".concat(b,
|
": ").concat(a[b])
|
}).join("\n")
|
}
|
}, {
|
key: "getResponseHeader",
|
value: function (a) {
|
return Of.get(this)[a]
|
}
|
}, {
|
key: "open",
|
value: function (a, d) {
|
this._method = a;
|
this._url = d;
|
We.call(this, b.OPENED)
|
}
|
}, {
|
key: "overrideMimeType",
|
value: function () {}
|
}, {
|
key: "send",
|
value: function () {
|
var a = this,
|
d = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "";
|
if (this.readyState !== b.OPENED) throw Error("Failed to execute 'send' on 'XMLHttpRequest': The object's state must be OPENED.");
|
var f = this._url,
|
g = Nf.get(this),
|
k = this.responseType,
|
m = this.dataType,
|
n = !/^(http|https|ftp|wxfile):\/\/.*/i.test(f),
|
p;
|
"arraybuffer" !== k && (p = "utf8");
|
delete this.response;
|
this.response = null;
|
var l = function (c) {
|
var d = c.data,
|
f = c.statusCode;
|
c = c.header;
|
f = void 0 === f ? 200 : f;
|
if ("string" !== typeof d && !(d instanceof ArrayBuffer)) try {
|
d = JSON.stringify(d)
|
} catch (w) {}
|
a.status = f;
|
c && Of.set(a, c);
|
Yb.call(a, "loadstart");
|
We.call(a, b.HEADERS_RECEIVED);
|
We.call(a, b.LOADING);
|
a.response = d;
|
d instanceof ArrayBuffer ? Object.defineProperty(a, "responseText", {
|
enumerable: !0,
|
configurable: !0,
|
get: function () {
|
throw "InvalidStateError : responseType is " + this.responseType;
|
}
|
}) : a.responseText = d;
|
We.call(a, b.DONE);
|
Yb.call(a, "load");
|
Yb.call(a, "loadend")
|
},
|
t = function (b) {
|
b = b.errMsg; - 1 !== b.indexOf("abort") ? Yb.call(a, "abort") : Yb.call(a, "error", {
|
message: b
|
});
|
Yb.call(a, "loadend");
|
n && console.warn(b)
|
};
|
n ? (d = wx.getFileSystemManager(), f = {
|
filePath: f,
|
success: l,
|
fail: t
|
}, p && (f.encoding = p), d.readFile(f)) : wx.request({
|
data: d,
|
url: f,
|
method: this._method,
|
header: g,
|
dataType: m,
|
responseType: k,
|
success: l,
|
fail: t
|
})
|
}
|
}, {
|
key: "setRequestHeader",
|
value: function (a, b) {
|
var c = Nf.get(this);
|
c[a] = b;
|
Nf.set(this, c)
|
}
|
}, {
|
key: "addEventListener",
|
value: function (a, b) {
|
var c = this;
|
"function" === typeof b && (this["on" + a] = function () {
|
var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
|
a.target = a.target || c;
|
b.call(c, a)
|
})
|
}
|
}, {
|
key: "removeEventListener",
|
value: function (a, b) {
|
this["on" + a] === b && (this["on" + a] = null)
|
}
|
}]);
|
return b
|
}(mh);
|
Ac.UNSEND = 0;
|
Ac.OPENED = 1;
|
Ac.HEADERS_RECEIVED = 2;
|
Ac.LOADING = 3;
|
Ac.DONE = 4;
|
if ("devtools" !== wx.getSystemInfoSync().platform) {
|
var fj = wx.getPerformance ?
|
wx.getPerformance() : Date,
|
qh = {};
|
console.time = function (a) {
|
qh[a] = fj.now()
|
};
|
console.timeEnd = function (a) {
|
var b = qh[a];
|
b && (b = fj.now() - b, console.log(a + ": " + b / 1E3 + "ms"), delete qh[a])
|
}
|
}
|
if (wx.onWindowResize) wx.onWindowResize(function (a) {
|
var b = new pg("resize");
|
b.target = V;
|
b.timeStamp = Date.now();
|
b.res = a;
|
b.windowWidth = a.windowWidth;
|
b.windowHeight = a.windowHeight;
|
V.dispatchEvent(b)
|
});
|
var kc = Object.freeze({
|
__proto__: null,
|
AudioContext: null,
|
Element: $i,
|
HTMLElement: zc,
|
Image: Rh,
|
TouchEvent: bj,
|
VRFrameData: fa,
|
XMLHttpRequest: Ac,
|
_canvasMap: ma,
|
addEventListener: Th,
|
alert: function (a) {
|
console.log(a)
|
},
|
arrayBufferToBase64: wx.arrayBufferToBase64 || fa,
|
base64ToArrayBuffer: wx.base64ToArrayBuffer || fa,
|
blur: function () {},
|
cancelAnimationFrame: ra ? ra.cancelAnimationFrame : fa,
|
get canvas() {
|
return ra
|
},
|
clearCanvas: function () {
|
ma.clear();
|
ra = null
|
},
|
devicePixelRatio: ul,
|
document: V,
|
focus: function () {},
|
getComputedStyle: function (a) {
|
var b = a.tagName;
|
return "CANVAS" === b ? (a = a.getBoundingClientRect(), Object.assign(nh, {
|
display: "inline",
|
position: "static",
|
inlineSize: a.width +
|
"px",
|
perspectiveOrigin: a.width / 2 + "px " + a.height / 2 + "px",
|
transformOrigin: a.width / 2 + "px " + a.height / 2 + "px",
|
webkitLogicalWidth: a.width + "px",
|
webkitLogicalHeight: a.height + "px",
|
width: a.width + "px",
|
height: a.height + "px"
|
})) : "IMG" === b ? (b = a.width, a = a.height, Object.assign(nh, {
|
display: "inline",
|
position: "static",
|
inlineSize: b + "px",
|
perspectiveOrigin: b / 2 + "px " + a / 2 + "px",
|
transformOrigin: b / 2 + "px " + a / 2 + "px",
|
webkitLogicalWidth: b + "px",
|
webkitLogicalHeight: a + "px",
|
width: b + "px",
|
height: a + "px"
|
})) : nh
|
},
|
innerHeight: Lc,
|
innerWidth: Kc,
|
location: aj,
|
navigator: ej,
|
ontouchend: null,
|
ontouchmove: null,
|
ontouchstart: null,
|
performance: tl,
|
registerCanvas: function () {
|
for (var a = null, b = null, c = arguments.length, d = Array(c), f = 0; f < c; f++) d[f] = arguments[f];
|
if (0 === d.length) throw Error("need arguments");
|
1 === d.length && d[0]._canvasId ? (b = d[0], a = d[0]._canvasId) : 2 === d.length && "string" === typeof d[0] && d[1]._canvasId && (a = d[0], b = d[1]);
|
if (!a || !b) throw Error("parameter err");
|
if (5 <= ma.size && (console.warn("canvas map size bigger 5 please remove unused canvas!"), c = ma.keys().next().value)) ma["delete"](c);
|
ma.has(a) ? ra = ma.get(a) : (b.type = "canvas", c = new zc("canvas"), og(b, c), og(b.constructor.prototype, mh.prototype), og(b.constructor.prototype, zc.prototype), ma.set(a, b), ra = b);
|
return ra
|
},
|
removeEventListener: Uh,
|
requestAnimationFrame: ra ? ra.requestAnimationFrame : fa,
|
screen: vl,
|
scrollBy: function (a, b) {},
|
scrollTo: function (a, b) {},
|
scrollX: 0,
|
scrollY: 0,
|
touchEventHandlerFactory: function (a, b) {
|
return function (c) {
|
var d = new bj(b);
|
d.changedTouches = c.changedTouches.map(function (a) {
|
return new oh(a)
|
});
|
d.touches = c.touches.map(function (a) {
|
return new oh(a)
|
});
|
d.targetTouches = Array.prototype.slice.call(c.touches.map(function (a) {
|
return new oh(a)
|
}));
|
d.timeStamp = c.timeStamp;
|
"document" == a ? (d.target = V, d.currentTarget = V, V.dispatchEvent(d)) : (d.target = ra, d.currentTarget = ra, ra.dispatchEvent(d))
|
}
|
},
|
unregisterCanvas: function (a) {
|
if (!a) throw Error("need arguments");
|
if ("string" === typeof a) return ma["delete"](a);
|
if (a._canvasId) return ma["delete"](a._canvasId);
|
ra = null;
|
return !1
|
},
|
webkitAudioContext: null
|
});
|
void 0 === Number.EPSILON && (Number.EPSILON = Math.pow(2, -52));
|
void 0 ===
|
Number.isInteger && (Number.isInteger = function (a) {
|
return "number" === typeof a && isFinite(a) && Math.floor(a) === a
|
});
|
void 0 === Math.sign && (Math.sign = function (a) {
|
return 0 > a ? -1 : 0 < a ? 1 : +a
|
});
|
!1 === "name" in Function.prototype && Object.defineProperty(Function.prototype, "name", {
|
get: function () {
|
return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]
|
}
|
});
|
void 0 === Object.assign && (Object.assign = function (a) {
|
if (void 0 === a || null === a) throw new TypeError("Cannot convert undefined or null to object");
|
for (var b = Object(a), c =
|
1; c < arguments.length; c++) {
|
var d = arguments[c];
|
if (void 0 !== d && null !== d)
|
for (var f in d) Object.prototype.hasOwnProperty.call(d, f) && (b[f] = d[f])
|
}
|
return b
|
});
|
Object.assign(Ra.prototype, {
|
addEventListener: function (a, b) {
|
void 0 === this._listeners && (this._listeners = {});
|
var c = this._listeners;
|
void 0 === c[a] && (c[a] = []); - 1 === c[a].indexOf(b) && c[a].push(b)
|
},
|
hasEventListener: function (a, b) {
|
if (void 0 === this._listeners) return !1;
|
var c = this._listeners;
|
return void 0 !== c[a] && -1 !== c[a].indexOf(b)
|
},
|
removeEventListener: function (a,
|
b) {
|
void 0 !== this._listeners && (a = this._listeners[a], void 0 !== a && (b = a.indexOf(b), -1 !== b && a.splice(b, 1)))
|
},
|
dispatchEvent: function (a) {
|
if (void 0 !== this._listeners) {
|
var b = this._listeners[a.type];
|
if (void 0 !== b) {
|
a.target = this;
|
b = b.slice(0);
|
for (var c = 0, d = b.length; c < d; c++) b[c].call(this, a)
|
}
|
}
|
}
|
});
|
for (var xa = [], Ne = 0; 256 > Ne; Ne++) xa[Ne] = (16 > Ne ? "0" : "") + Ne.toString(16);
|
var N = {
|
DEG2RAD: Math.PI / 180,
|
RAD2DEG: 180 / Math.PI,
|
generateUUID: function () {
|
var a = 4294967295 * Math.random() | 0,
|
b = 4294967295 * Math.random() | 0,
|
c = 4294967295 * Math.random() |
|
0,
|
d = 4294967295 * Math.random() | 0;
|
return (xa[a & 255] + xa[a >> 8 & 255] + xa[a >> 16 & 255] + xa[a >> 24 & 255] + "-" + xa[b & 255] + xa[b >> 8 & 255] + "-" + xa[b >> 16 & 15 | 64] + xa[b >> 24 & 255] + "-" + xa[c & 63 | 128] + xa[c >> 8 & 255] + "-" + xa[c >> 16 & 255] + xa[c >> 24 & 255] + xa[d & 255] + xa[d >> 8 & 255] + xa[d >> 16 & 255] + xa[d >> 24 & 255]).toUpperCase()
|
},
|
clamp: function (a, b, c) {
|
return Math.max(b, Math.min(c, a))
|
},
|
euclideanModulo: function (a, b) {
|
return (a % b + b) % b
|
},
|
mapLinear: function (a, b, c, d, f) {
|
return d + (a - b) * (f - d) / (c - b)
|
},
|
lerp: function (a, b, c) {
|
return (1 - c) * a + c * b
|
},
|
smoothstep: function (a,
|
b, c) {
|
if (a <= b) return 0;
|
if (a >= c) return 1;
|
a = (a - b) / (c - b);
|
return a * a * (3 - 2 * a)
|
},
|
smootherstep: function (a, b, c) {
|
if (a <= b) return 0;
|
if (a >= c) return 1;
|
a = (a - b) / (c - b);
|
return a * a * a * (a * (6 * a - 15) + 10)
|
},
|
randInt: function (a, b) {
|
return a + Math.floor(Math.random() * (b - a + 1))
|
},
|
randFloat: function (a, b) {
|
return a + Math.random() * (b - a)
|
},
|
randFloatSpread: function (a) {
|
return a * (.5 - Math.random())
|
},
|
degToRad: function (a) {
|
return a * N.DEG2RAD
|
},
|
radToDeg: function (a) {
|
return a * N.RAD2DEG
|
},
|
isPowerOfTwo: function (a) {
|
return 0 === (a & a - 1) && 0 !== a
|
},
|
ceilPowerOfTwo: function (a) {
|
return Math.pow(2,
|
Math.ceil(Math.log(a) / Math.LN2))
|
},
|
floorPowerOfTwo: function (a) {
|
return Math.pow(2, Math.floor(Math.log(a) / Math.LN2))
|
}
|
};
|
Object.defineProperties(z.prototype, {
|
width: {
|
get: function () {
|
return this.x
|
},
|
set: function (a) {
|
this.x = a
|
}
|
},
|
height: {
|
get: function () {
|
return this.y
|
},
|
set: function (a) {
|
this.y = a
|
}
|
}
|
});
|
Object.assign(z.prototype, {
|
isVector2: !0,
|
set: function (a, b) {
|
this.x = a;
|
this.y = b;
|
return this
|
},
|
setScalar: function (a) {
|
this.y = this.x = a;
|
return this
|
},
|
setX: function (a) {
|
this.x = a;
|
return this
|
},
|
setY: function (a) {
|
this.y = a;
|
return this
|
},
|
setComponent: function (a, b) {
|
switch (a) {
|
case 0:
|
this.x = b;
|
break;
|
case 1:
|
this.y = b;
|
break;
|
default:
|
throw Error("index is out of range: " + a);
|
}
|
return this
|
},
|
getComponent: function (a) {
|
switch (a) {
|
case 0:
|
return this.x;
|
case 1:
|
return this.y;
|
default:
|
throw Error("index is out of range: " + a);
|
}
|
},
|
clone: function () {
|
return new this.constructor(this.x, this.y)
|
},
|
copy: function (a) {
|
this.x = a.x;
|
this.y = a.y;
|
return this
|
},
|
add: function (a, b) {
|
if (void 0 !== b) return console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),
|
this.addVectors(a, b);
|
this.x += a.x;
|
this.y += a.y;
|
return this
|
},
|
addScalar: function (a) {
|
this.x += a;
|
this.y += a;
|
return this
|
},
|
addVectors: function (a, b) {
|
this.x = a.x + b.x;
|
this.y = a.y + b.y;
|
return this
|
},
|
addScaledVector: function (a, b) {
|
this.x += a.x * b;
|
this.y += a.y * b;
|
return this
|
},
|
sub: function (a, b) {
|
if (void 0 !== b) return console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), this.subVectors(a, b);
|
this.x -= a.x;
|
this.y -= a.y;
|
return this
|
},
|
subScalar: function (a) {
|
this.x -= a;
|
this.y -= a;
|
return this
|
},
|
subVectors: function (a, b) {
|
this.x = a.x - b.x;
|
this.y = a.y - b.y;
|
return this
|
},
|
multiply: function (a) {
|
this.x *= a.x;
|
this.y *= a.y;
|
return this
|
},
|
multiplyScalar: function (a) {
|
this.x *= a;
|
this.y *= a;
|
return this
|
},
|
divide: function (a) {
|
this.x /= a.x;
|
this.y /= a.y;
|
return this
|
},
|
divideScalar: function (a) {
|
return this.multiplyScalar(1 / a)
|
},
|
applyMatrix3: function (a) {
|
var b = this.x,
|
c = this.y;
|
a = a.elements;
|
this.x = a[0] * b + a[3] * c + a[6];
|
this.y = a[1] * b + a[4] * c + a[7];
|
return this
|
},
|
min: function (a) {
|
this.x = Math.min(this.x, a.x);
|
this.y = Math.min(this.y, a.y);
|
return this
|
},
|
max: function (a) {
|
this.x = Math.max(this.x, a.x);
|
this.y = Math.max(this.y, a.y);
|
return this
|
},
|
clamp: function (a, b) {
|
this.x = Math.max(a.x, Math.min(b.x, this.x));
|
this.y = Math.max(a.y, Math.min(b.y, this.y));
|
return this
|
},
|
clampScalar: function (a, b) {
|
this.x = Math.max(a, Math.min(b, this.x));
|
this.y = Math.max(a, Math.min(b, this.y));
|
return this
|
},
|
clampLength: function (a, b) {
|
var c = this.length();
|
return this.divideScalar(c || 1).multiplyScalar(Math.max(a, Math.min(b, c)))
|
},
|
floor: function () {
|
this.x = Math.floor(this.x);
|
this.y = Math.floor(this.y);
|
return this
|
},
|
ceil: function () {
|
this.x = Math.ceil(this.x);
|
this.y = Math.ceil(this.y);
|
return this
|
},
|
round: function () {
|
this.x = Math.round(this.x);
|
this.y = Math.round(this.y);
|
return this
|
},
|
roundToZero: function () {
|
this.x = 0 > this.x ? Math.ceil(this.x) : Math.floor(this.x);
|
this.y = 0 > this.y ? Math.ceil(this.y) : Math.floor(this.y);
|
return this
|
},
|
negate: function () {
|
this.x = -this.x;
|
this.y = -this.y;
|
return this
|
},
|
dot: function (a) {
|
return this.x * a.x + this.y * a.y
|
},
|
cross: function (a) {
|
return this.x * a.y - this.y * a.x
|
},
|
lengthSq: function () {
|
return this.x *
|
this.x + this.y * this.y
|
},
|
length: function () {
|
return Math.sqrt(this.x * this.x + this.y * this.y)
|
},
|
manhattanLength: function () {
|
return Math.abs(this.x) + Math.abs(this.y)
|
},
|
normalize: function () {
|
return this.divideScalar(this.length() || 1)
|
},
|
angle: function () {
|
var a = Math.atan2(this.y, this.x);
|
0 > a && (a += 2 * Math.PI);
|
return a
|
},
|
distanceTo: function (a) {
|
return Math.sqrt(this.distanceToSquared(a))
|
},
|
distanceToSquared: function (a) {
|
var b = this.x - a.x;
|
a = this.y - a.y;
|
return b * b + a * a
|
},
|
manhattanDistanceTo: function (a) {
|
return Math.abs(this.x - a.x) +
|
Math.abs(this.y - a.y)
|
},
|
setLength: function (a) {
|
return this.normalize().multiplyScalar(a)
|
},
|
lerp: function (a, b) {
|
this.x += (a.x - this.x) * b;
|
this.y += (a.y - this.y) * b;
|
return this
|
},
|
lerpVectors: function (a, b, c) {
|
return this.subVectors(b, a).multiplyScalar(c).add(a)
|
},
|
equals: function (a) {
|
return a.x === this.x && a.y === this.y
|
},
|
fromArray: function (a, b) {
|
void 0 === b && (b = 0);
|
this.x = a[b];
|
this.y = a[b + 1];
|
return this
|
},
|
toArray: function (a, b) {
|
void 0 === a && (a = []);
|
void 0 === b && (b = 0);
|
a[b] = this.x;
|
a[b + 1] = this.y;
|
return a
|
},
|
fromBufferAttribute: function (a,
|
b, c) {
|
void 0 !== c && console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute().");
|
this.x = a.getX(b);
|
this.y = a.getY(b);
|
return this
|
},
|
rotateAround: function (a, b) {
|
var c = Math.cos(b);
|
b = Math.sin(b);
|
var d = this.x - a.x,
|
f = this.y - a.y;
|
this.x = d * c - f * b + a.x;
|
this.y = d * b + f * c + a.y;
|
return this
|
}
|
});
|
Object.assign(ya, {
|
slerp: function (a, b, c, d) {
|
return c.copy(a).slerp(b, d)
|
},
|
slerpFlat: function (a, b, c, d, f, g, k) {
|
var m = c[d + 0],
|
n = c[d + 1],
|
p = c[d + 2];
|
c = c[d + 3];
|
d = f[g + 0];
|
var l = f[g + 1],
|
t = f[g + 2];
|
f = f[g + 3];
|
if (c !== f || m !== d || n !== l || p !==
|
t) {
|
g = 1 - k;
|
var r = m * d + n * l + p * t + c * f,
|
u = 0 <= r ? 1 : -1,
|
q = 1 - r * r;
|
q > Number.EPSILON && (q = Math.sqrt(q), r = Math.atan2(q, r * u), g = Math.sin(g * r) / q, k = Math.sin(k * r) / q);
|
u *= k;
|
m = m * g + d * u;
|
n = n * g + l * u;
|
p = p * g + t * u;
|
c = c * g + f * u;
|
g === 1 - k && (k = 1 / Math.sqrt(m * m + n * n + p * p + c * c), m *= k, n *= k, p *= k, c *= k)
|
}
|
a[b] = m;
|
a[b + 1] = n;
|
a[b + 2] = p;
|
a[b + 3] = c
|
}
|
});
|
Object.defineProperties(ya.prototype, {
|
x: {
|
get: function () {
|
return this._x
|
},
|
set: function (a) {
|
this._x = a;
|
this._onChangeCallback()
|
}
|
},
|
y: {
|
get: function () {
|
return this._y
|
},
|
set: function (a) {
|
this._y = a;
|
this._onChangeCallback()
|
}
|
},
|
z: {
|
get: function () {
|
return this._z
|
},
|
set: function (a) {
|
this._z = a;
|
this._onChangeCallback()
|
}
|
},
|
w: {
|
get: function () {
|
return this._w
|
},
|
set: function (a) {
|
this._w = a;
|
this._onChangeCallback()
|
}
|
}
|
});
|
Object.assign(ya.prototype, {
|
isQuaternion: !0,
|
set: function (a, b, c, d) {
|
this._x = a;
|
this._y = b;
|
this._z = c;
|
this._w = d;
|
this._onChangeCallback();
|
return this
|
},
|
clone: function () {
|
return new this.constructor(this._x, this._y, this._z, this._w)
|
},
|
copy: function (a) {
|
this._x = a.x;
|
this._y = a.y;
|
this._z = a.z;
|
this._w = a.w;
|
this._onChangeCallback();
|
return this
|
},
|
setFromEuler: function (a, b) {
|
if (!a ||
|
!a.isEuler) throw Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");
|
var c = a._x,
|
d = a._y,
|
f = a._z;
|
a = a.order;
|
var g = Math.cos,
|
k = Math.sin,
|
m = g(c / 2),
|
n = g(d / 2);
|
g = g(f / 2);
|
c = k(c / 2);
|
d = k(d / 2);
|
f = k(f / 2);
|
"XYZ" === a ? (this._x = c * n * g + m * d * f, this._y = m * d * g - c * n * f, this._z = m * n * f + c * d * g, this._w = m * n * g - c * d * f) : "YXZ" === a ? (this._x = c * n * g + m * d * f, this._y = m * d * g - c * n * f, this._z = m * n * f - c * d * g, this._w = m * n * g + c * d * f) : "ZXY" === a ? (this._x = c * n * g - m * d * f, this._y = m * d * g + c * n * f, this._z = m * n * f + c * d * g, this._w =
|
m * n * g - c * d * f) : "ZYX" === a ? (this._x = c * n * g - m * d * f, this._y = m * d * g + c * n * f, this._z = m * n * f - c * d * g, this._w = m * n * g + c * d * f) : "YZX" === a ? (this._x = c * n * g + m * d * f, this._y = m * d * g + c * n * f, this._z = m * n * f - c * d * g, this._w = m * n * g - c * d * f) : "XZY" === a && (this._x = c * n * g - m * d * f, this._y = m * d * g - c * n * f, this._z = m * n * f + c * d * g, this._w = m * n * g + c * d * f);
|
!1 !== b && this._onChangeCallback();
|
return this
|
},
|
setFromAxisAngle: function (a, b) {
|
b /= 2;
|
var c = Math.sin(b);
|
this._x = a.x * c;
|
this._y = a.y * c;
|
this._z = a.z * c;
|
this._w = Math.cos(b);
|
this._onChangeCallback();
|
return this
|
},
|
setFromRotationMatrix: function (a) {
|
var b =
|
a.elements,
|
c = b[0];
|
a = b[4];
|
var d = b[8],
|
f = b[1],
|
g = b[5],
|
k = b[9],
|
m = b[2],
|
n = b[6];
|
b = b[10];
|
var p = c + g + b;
|
0 < p ? (c = .5 / Math.sqrt(p + 1), this._w = .25 / c, this._x = (n - k) * c, this._y = (d - m) * c, this._z = (f - a) * c) : c > g && c > b ? (c = 2 * Math.sqrt(1 + c - g - b), this._w = (n - k) / c, this._x = .25 * c, this._y = (a + f) / c, this._z = (d + m) / c) : g > b ? (c = 2 * Math.sqrt(1 + g - c - b), this._w = (d - m) / c, this._x = (a + f) / c, this._y = .25 * c, this._z = (k + n) / c) : (c = 2 * Math.sqrt(1 + b - c - g), this._w = (f - a) / c, this._x = (d + m) / c, this._y = (k + n) / c, this._z = .25 * c);
|
this._onChangeCallback();
|
return this
|
},
|
setFromUnitVectors: function (a,
|
b) {
|
var c = a.dot(b) + 1;
|
1E-6 > c ? (c = 0, Math.abs(a.x) > Math.abs(a.z) ? (this._x = -a.y, this._y = a.x, this._z = 0) : (this._x = 0, this._y = -a.z, this._z = a.y)) : (this._x = a.y * b.z - a.z * b.y, this._y = a.z * b.x - a.x * b.z, this._z = a.x * b.y - a.y * b.x);
|
this._w = c;
|
return this.normalize()
|
},
|
angleTo: function (a) {
|
return 2 * Math.acos(Math.abs(N.clamp(this.dot(a), -1, 1)))
|
},
|
rotateTowards: function (a, b) {
|
var c = this.angleTo(a);
|
if (0 === c) return this;
|
this.slerp(a, Math.min(1, b / c));
|
return this
|
},
|
inverse: function () {
|
return this.conjugate()
|
},
|
conjugate: function () {
|
this._x *=
|
-1;
|
this._y *= -1;
|
this._z *= -1;
|
this._onChangeCallback();
|
return this
|
},
|
dot: function (a) {
|
return this._x * a._x + this._y * a._y + this._z * a._z + this._w * a._w
|
},
|
lengthSq: function () {
|
return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w
|
},
|
length: function () {
|
return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w)
|
},
|
normalize: function () {
|
var a = this.length();
|
0 === a ? (this._z = this._y = this._x = 0, this._w = 1) : (a = 1 / a, this._x *= a, this._y *= a, this._z *= a, this._w *= a);
|
this._onChangeCallback();
|
return this
|
},
|
multiply: function (a, b) {
|
return void 0 !== b ? (console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."), this.multiplyQuaternions(a, b)) : this.multiplyQuaternions(this, a)
|
},
|
premultiply: function (a) {
|
return this.multiplyQuaternions(a, this)
|
},
|
multiplyQuaternions: function (a, b) {
|
var c = a._x,
|
d = a._y,
|
f = a._z;
|
a = a._w;
|
var g = b._x,
|
k = b._y,
|
m = b._z;
|
b = b._w;
|
this._x = c * b + a * g + d * m - f * k;
|
this._y = d * b + a * k + f * g - c * m;
|
this._z = f * b + a * m + c * k - d * g;
|
this._w = a * b - c * g - d * k - f * m;
|
this._onChangeCallback();
|
return this
|
},
|
slerp: function (a, b) {
|
if (0 === b) return this;
|
if (1 === b) return this.copy(a);
|
var c = this._x,
|
d = this._y,
|
f = this._z,
|
g = this._w,
|
k = g * a._w + c * a._x + d * a._y + f * a._z;
|
0 > k ? (this._w = -a._w, this._x = -a._x, this._y = -a._y, this._z = -a._z, k = -k) : this.copy(a);
|
if (1 <= k) return this._w = g, this._x = c, this._y = d, this._z = f, this;
|
a = 1 - k * k;
|
if (a <= Number.EPSILON) return k = 1 - b, this._w = k * g + b * this._w, this._x = k * c + b * this._x, this._y = k * d + b * this._y, this._z = k * f + b * this._z, this.normalize(), this._onChangeCallback(), this;
|
a = Math.sqrt(a);
|
var m = Math.atan2(a,
|
k);
|
k = Math.sin((1 - b) * m) / a;
|
b = Math.sin(b * m) / a;
|
this._w = g * k + this._w * b;
|
this._x = c * k + this._x * b;
|
this._y = d * k + this._y * b;
|
this._z = f * k + this._z * b;
|
this._onChangeCallback();
|
return this
|
},
|
equals: function (a) {
|
return a._x === this._x && a._y === this._y && a._z === this._z && a._w === this._w
|
},
|
fromArray: function (a, b) {
|
void 0 === b && (b = 0);
|
this._x = a[b];
|
this._y = a[b + 1];
|
this._z = a[b + 2];
|
this._w = a[b + 3];
|
this._onChangeCallback();
|
return this
|
},
|
toArray: function (a, b) {
|
void 0 === a && (a = []);
|
void 0 === b && (b = 0);
|
a[b] = this._x;
|
a[b + 1] = this._y;
|
a[b + 2] = this._z;
|
a[b +
|
3] = this._w;
|
return a
|
},
|
_onChange: function (a) {
|
this._onChangeCallback = a;
|
return this
|
},
|
_onChangeCallback: function () {}
|
});
|
var rh = new q,
|
gj = new ya;
|
Object.assign(q.prototype, {
|
isVector3: !0,
|
set: function (a, b, c) {
|
this.x = a;
|
this.y = b;
|
this.z = c;
|
return this
|
},
|
setScalar: function (a) {
|
this.z = this.y = this.x = a;
|
return this
|
},
|
setX: function (a) {
|
this.x = a;
|
return this
|
},
|
setY: function (a) {
|
this.y = a;
|
return this
|
},
|
setZ: function (a) {
|
this.z = a;
|
return this
|
},
|
setComponent: function (a, b) {
|
switch (a) {
|
case 0:
|
this.x = b;
|
break;
|
case 1:
|
this.y = b;
|
break;
|
case 2:
|
this.z =
|
b;
|
break;
|
default:
|
throw Error("index is out of range: " + a);
|
}
|
return this
|
},
|
getComponent: function (a) {
|
switch (a) {
|
case 0:
|
return this.x;
|
case 1:
|
return this.y;
|
case 2:
|
return this.z;
|
default:
|
throw Error("index is out of range: " + a);
|
}
|
},
|
clone: function () {
|
return new this.constructor(this.x, this.y, this.z)
|
},
|
copy: function (a) {
|
this.x = a.x;
|
this.y = a.y;
|
this.z = a.z;
|
return this
|
},
|
add: function (a, b) {
|
if (void 0 !== b) return console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), this.addVectors(a,
|
b);
|
this.x += a.x;
|
this.y += a.y;
|
this.z += a.z;
|
return this
|
},
|
addScalar: function (a) {
|
this.x += a;
|
this.y += a;
|
this.z += a;
|
return this
|
},
|
addVectors: function (a, b) {
|
this.x = a.x + b.x;
|
this.y = a.y + b.y;
|
this.z = a.z + b.z;
|
return this
|
},
|
addScaledVector: function (a, b) {
|
this.x += a.x * b;
|
this.y += a.y * b;
|
this.z += a.z * b;
|
return this
|
},
|
sub: function (a, b) {
|
if (void 0 !== b) return console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), this.subVectors(a, b);
|
this.x -= a.x;
|
this.y -= a.y;
|
this.z -= a.z;
|
return this
|
},
|
subScalar: function (a) {
|
this.x -=
|
a;
|
this.y -= a;
|
this.z -= a;
|
return this
|
},
|
subVectors: function (a, b) {
|
this.x = a.x - b.x;
|
this.y = a.y - b.y;
|
this.z = a.z - b.z;
|
return this
|
},
|
multiply: function (a, b) {
|
if (void 0 !== b) return console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."), this.multiplyVectors(a, b);
|
this.x *= a.x;
|
this.y *= a.y;
|
this.z *= a.z;
|
return this
|
},
|
multiplyScalar: function (a) {
|
this.x *= a;
|
this.y *= a;
|
this.z *= a;
|
return this
|
},
|
multiplyVectors: function (a, b) {
|
this.x = a.x * b.x;
|
this.y = a.y * b.y;
|
this.z = a.z * b.z;
|
return this
|
},
|
applyEuler: function (a) {
|
a && a.isEuler || console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.");
|
return this.applyQuaternion(gj.setFromEuler(a))
|
},
|
applyAxisAngle: function (a, b) {
|
return this.applyQuaternion(gj.setFromAxisAngle(a, b))
|
},
|
applyMatrix3: function (a) {
|
var b = this.x,
|
c = this.y,
|
d = this.z;
|
a = a.elements;
|
this.x = a[0] * b + a[3] * c + a[6] * d;
|
this.y = a[1] * b + a[4] * c + a[7] * d;
|
this.z = a[2] * b + a[5] * c + a[8] * d;
|
return this
|
},
|
applyMatrix4: function (a) {
|
var b = this.x,
|
c = this.y,
|
d = this.z;
|
a = a.elements;
|
var f = 1 / (a[3] * b + a[7] * c + a[11] * d + a[15]);
|
this.x = (a[0] * b + a[4] * c + a[8] * d + a[12]) * f;
|
this.y = (a[1] * b + a[5] * c + a[9] * d + a[13]) * f;
|
this.z = (a[2] * b + a[6] * c + a[10] * d + a[14]) * f;
|
return this
|
},
|
applyQuaternion: function (a) {
|
var b = this.x,
|
c = this.y,
|
d = this.z,
|
f = a.x,
|
g = a.y,
|
k = a.z;
|
a = a.w;
|
var m = a * b + g * d - k * c,
|
n = a * c + k * b - f * d,
|
p = a * d + f * c - g * b;
|
b = -f * b - g * c - k * d;
|
this.x = m * a + b * -f + n * -k - p * -g;
|
this.y = n * a + b * -g + p * -f - m * -k;
|
this.z = p * a + b * -k + m * -g - n * -f;
|
return this
|
},
|
project: function (a) {
|
return this.applyMatrix4(a.matrixWorldInverse).applyMatrix4(a.projectionMatrix)
|
},
|
unproject: function (a) {
|
return this.applyMatrix4(a.projectionMatrixInverse).applyMatrix4(a.matrixWorld)
|
},
|
transformDirection: function (a) {
|
var b = this.x,
|
c = this.y,
|
d = this.z;
|
a = a.elements;
|
this.x = a[0] * b + a[4] * c + a[8] * d;
|
this.y = a[1] * b + a[5] * c + a[9] * d;
|
this.z = a[2] * b + a[6] * c + a[10] * d;
|
return this.normalize()
|
},
|
divide: function (a) {
|
this.x /= a.x;
|
this.y /= a.y;
|
this.z /= a.z;
|
return this
|
},
|
divideScalar: function (a) {
|
return this.multiplyScalar(1 / a)
|
},
|
min: function (a) {
|
this.x = Math.min(this.x, a.x);
|
this.y = Math.min(this.y, a.y);
|
this.z = Math.min(this.z,
|
a.z);
|
return this
|
},
|
max: function (a) {
|
this.x = Math.max(this.x, a.x);
|
this.y = Math.max(this.y, a.y);
|
this.z = Math.max(this.z, a.z);
|
return this
|
},
|
clamp: function (a, b) {
|
this.x = Math.max(a.x, Math.min(b.x, this.x));
|
this.y = Math.max(a.y, Math.min(b.y, this.y));
|
this.z = Math.max(a.z, Math.min(b.z, this.z));
|
return this
|
},
|
clampScalar: function (a, b) {
|
this.x = Math.max(a, Math.min(b, this.x));
|
this.y = Math.max(a, Math.min(b, this.y));
|
this.z = Math.max(a, Math.min(b, this.z));
|
return this
|
},
|
clampLength: function (a, b) {
|
var c = this.length();
|
return this.divideScalar(c ||
|
1).multiplyScalar(Math.max(a, Math.min(b, c)))
|
},
|
floor: function () {
|
this.x = Math.floor(this.x);
|
this.y = Math.floor(this.y);
|
this.z = Math.floor(this.z);
|
return this
|
},
|
ceil: function () {
|
this.x = Math.ceil(this.x);
|
this.y = Math.ceil(this.y);
|
this.z = Math.ceil(this.z);
|
return this
|
},
|
round: function () {
|
this.x = Math.round(this.x);
|
this.y = Math.round(this.y);
|
this.z = Math.round(this.z);
|
return this
|
},
|
roundToZero: function () {
|
this.x = 0 > this.x ? Math.ceil(this.x) : Math.floor(this.x);
|
this.y = 0 > this.y ? Math.ceil(this.y) : Math.floor(this.y);
|
this.z =
|
0 > this.z ? Math.ceil(this.z) : Math.floor(this.z);
|
return this
|
},
|
negate: function () {
|
this.x = -this.x;
|
this.y = -this.y;
|
this.z = -this.z;
|
return this
|
},
|
dot: function (a) {
|
return this.x * a.x + this.y * a.y + this.z * a.z
|
},
|
lengthSq: function () {
|
return this.x * this.x + this.y * this.y + this.z * this.z
|
},
|
length: function () {
|
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z)
|
},
|
manhattanLength: function () {
|
return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z)
|
},
|
normalize: function () {
|
return this.divideScalar(this.length() || 1)
|
},
|
setLength: function (a) {
|
return this.normalize().multiplyScalar(a)
|
},
|
lerp: function (a, b) {
|
this.x += (a.x - this.x) * b;
|
this.y += (a.y - this.y) * b;
|
this.z += (a.z - this.z) * b;
|
return this
|
},
|
lerpVectors: function (a, b, c) {
|
return this.subVectors(b, a).multiplyScalar(c).add(a)
|
},
|
cross: function (a, b) {
|
return void 0 !== b ? (console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."), this.crossVectors(a, b)) : this.crossVectors(this, a)
|
},
|
crossVectors: function (a, b) {
|
var c = a.x,
|
d = a.y;
|
a = a.z;
|
var f = b.x,
|
g = b.y;
|
b = b.z;
|
this.x = d * b - a * g;
|
this.y = a * f - c * b;
|
this.z = c * g - d * f;
|
return this
|
},
|
projectOnVector: function (a) {
|
var b = a.dot(this) / a.lengthSq();
|
return this.copy(a).multiplyScalar(b)
|
},
|
projectOnPlane: function (a) {
|
rh.copy(this).projectOnVector(a);
|
return this.sub(rh)
|
},
|
reflect: function (a) {
|
return this.sub(rh.copy(a).multiplyScalar(2 * this.dot(a)))
|
},
|
angleTo: function (a) {
|
var b = Math.sqrt(this.lengthSq() * a.lengthSq());
|
0 === b && console.error("THREE.Vector3: angleTo() can't handle zero length vectors.");
|
a = this.dot(a) / b;
|
return Math.acos(N.clamp(a, -1, 1))
|
},
|
distanceTo: function (a) {
|
return Math.sqrt(this.distanceToSquared(a))
|
},
|
distanceToSquared: function (a) {
|
var b = this.x - a.x,
|
c = this.y - a.y;
|
a = this.z - a.z;
|
return b * b + c * c + a * a
|
},
|
manhattanDistanceTo: function (a) {
|
return Math.abs(this.x - a.x) + Math.abs(this.y - a.y) + Math.abs(this.z - a.z)
|
},
|
setFromSpherical: function (a) {
|
return this.setFromSphericalCoords(a.radius, a.phi, a.theta)
|
},
|
setFromSphericalCoords: function (a, b, c) {
|
var d = Math.sin(b) * a;
|
this.x = d * Math.sin(c);
|
this.y = Math.cos(b) * a;
|
this.z = d * Math.cos(c);
|
return this
|
},
|
setFromCylindrical: function (a) {
|
return this.setFromCylindricalCoords(a.radius, a.theta,
|
a.y)
|
},
|
setFromCylindricalCoords: function (a, b, c) {
|
this.x = a * Math.sin(b);
|
this.y = c;
|
this.z = a * Math.cos(b);
|
return this
|
},
|
setFromMatrixPosition: function (a) {
|
a = a.elements;
|
this.x = a[12];
|
this.y = a[13];
|
this.z = a[14];
|
return this
|
},
|
setFromMatrixScale: function (a) {
|
var b = this.setFromMatrixColumn(a, 0).length(),
|
c = this.setFromMatrixColumn(a, 1).length();
|
a = this.setFromMatrixColumn(a, 2).length();
|
this.x = b;
|
this.y = c;
|
this.z = a;
|
return this
|
},
|
setFromMatrixColumn: function (a, b) {
|
return this.fromArray(a.elements, 4 * b)
|
},
|
equals: function (a) {
|
return a.x ===
|
this.x && a.y === this.y && a.z === this.z
|
},
|
fromArray: function (a, b) {
|
void 0 === b && (b = 0);
|
this.x = a[b];
|
this.y = a[b + 1];
|
this.z = a[b + 2];
|
return this
|
},
|
toArray: function (a, b) {
|
void 0 === a && (a = []);
|
void 0 === b && (b = 0);
|
a[b] = this.x;
|
a[b + 1] = this.y;
|
a[b + 2] = this.z;
|
return a
|
},
|
fromBufferAttribute: function (a, b, c) {
|
void 0 !== c && console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute().");
|
this.x = a.getX(b);
|
this.y = a.getY(b);
|
this.z = a.getZ(b);
|
return this
|
}
|
});
|
var Bc = new q;
|
Object.assign(ka.prototype, {
|
isMatrix3: !0,
|
set: function (a,
|
b, c, d, f, g, k, m, n) {
|
var p = this.elements;
|
p[0] = a;
|
p[1] = d;
|
p[2] = k;
|
p[3] = b;
|
p[4] = f;
|
p[5] = m;
|
p[6] = c;
|
p[7] = g;
|
p[8] = n;
|
return this
|
},
|
identity: function () {
|
this.set(1, 0, 0, 0, 1, 0, 0, 0, 1);
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).fromArray(this.elements)
|
},
|
copy: function (a) {
|
var b = this.elements;
|
a = a.elements;
|
b[0] = a[0];
|
b[1] = a[1];
|
b[2] = a[2];
|
b[3] = a[3];
|
b[4] = a[4];
|
b[5] = a[5];
|
b[6] = a[6];
|
b[7] = a[7];
|
b[8] = a[8];
|
return this
|
},
|
setFromMatrix4: function (a) {
|
a = a.elements;
|
this.set(a[0], a[4], a[8], a[1], a[5], a[9], a[2], a[6], a[10]);
|
return this
|
},
|
applyToBufferAttribute: function (a) {
|
for (var b = 0, c = a.count; b < c; b++) Bc.x = a.getX(b), Bc.y = a.getY(b), Bc.z = a.getZ(b), Bc.applyMatrix3(this), a.setXYZ(b, Bc.x, Bc.y, Bc.z);
|
return a
|
},
|
multiply: function (a) {
|
return this.multiplyMatrices(this, a)
|
},
|
premultiply: function (a) {
|
return this.multiplyMatrices(a, this)
|
},
|
multiplyMatrices: function (a, b) {
|
var c = a.elements,
|
d = b.elements;
|
b = this.elements;
|
a = c[0];
|
var f = c[3],
|
g = c[6],
|
k = c[1],
|
m = c[4],
|
n = c[7],
|
p = c[2],
|
l = c[5];
|
c = c[8];
|
var t = d[0],
|
r = d[3],
|
u = d[6],
|
q = d[1],
|
w = d[4],
|
x = d[7],
|
B = d[2],
|
C = d[5];
|
d = d[8];
|
b[0] = a * t + f * q + g * B;
|
b[3] = a * r + f * w + g * C;
|
b[6] = a * u + f * x + g * d;
|
b[1] = k * t + m * q + n * B;
|
b[4] = k * r + m * w + n * C;
|
b[7] = k * u + m * x + n * d;
|
b[2] = p * t + l * q + c * B;
|
b[5] = p * r + l * w + c * C;
|
b[8] = p * u + l * x + c * d;
|
return this
|
},
|
multiplyScalar: function (a) {
|
var b = this.elements;
|
b[0] *= a;
|
b[3] *= a;
|
b[6] *= a;
|
b[1] *= a;
|
b[4] *= a;
|
b[7] *= a;
|
b[2] *= a;
|
b[5] *= a;
|
b[8] *= a;
|
return this
|
},
|
determinant: function () {
|
var a = this.elements,
|
b = a[0],
|
c = a[1],
|
d = a[2],
|
f = a[3],
|
g = a[4],
|
k = a[5],
|
m = a[6],
|
n = a[7];
|
a = a[8];
|
return b * g * a - b * k * n - c * f * a + c * k * m + d * f * n - d * g * m
|
},
|
getInverse: function (a, b) {
|
a && a.isMatrix4 && console.error("THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.");
|
var c = a.elements;
|
a = this.elements;
|
var d = c[0],
|
f = c[1],
|
g = c[2],
|
k = c[3],
|
m = c[4],
|
n = c[5],
|
p = c[6],
|
l = c[7];
|
c = c[8];
|
var t = c * m - n * l,
|
r = n * p - c * k,
|
u = l * k - m * p,
|
q = d * t + f * r + g * u;
|
if (0 === q) {
|
if (!0 === b) throw Error("THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0");
|
console.warn("THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0");
|
return this.identity()
|
}
|
b = 1 / q;
|
a[0] = t * b;
|
a[1] = (g * l - c * f) * b;
|
a[2] = (n * f - g * m) * b;
|
a[3] = r * b;
|
a[4] = (c * d - g * p) * b;
|
a[5] = (g * k - n * d) * b;
|
a[6] = u * b;
|
a[7] = (f * p - l * d) * b;
|
a[8] = (m * d - f * k) * b;
|
return this
|
},
|
transpose: function () {
|
var a = this.elements;
|
var b = a[1];
|
a[1] = a[3];
|
a[3] = b;
|
b = a[2];
|
a[2] = a[6];
|
a[6] = b;
|
b = a[5];
|
a[5] = a[7];
|
a[7] = b;
|
return this
|
},
|
getNormalMatrix: function (a) {
|
return this.setFromMatrix4(a).getInverse(this).transpose()
|
},
|
transposeIntoArray: function (a) {
|
var b = this.elements;
|
a[0] = b[0];
|
a[1] = b[3];
|
a[2] = b[6];
|
a[3] = b[1];
|
a[4] = b[4];
|
a[5] = b[7];
|
a[6] = b[2];
|
a[7] = b[5];
|
a[8] = b[8];
|
return this
|
},
|
setUvTransform: function (a, b, c, d, f, g, k) {
|
var m = Math.cos(f);
|
f = Math.sin(f);
|
this.set(c * m, c * f, -c * (m * g + f * k) + g + a, -d * f, d * m, -d * (-f * g + m * k) + k +
|
b, 0, 0, 1)
|
},
|
scale: function (a, b) {
|
var c = this.elements;
|
c[0] *= a;
|
c[3] *= a;
|
c[6] *= a;
|
c[1] *= b;
|
c[4] *= b;
|
c[7] *= b;
|
return this
|
},
|
rotate: function (a) {
|
var b = Math.cos(a);
|
a = Math.sin(a);
|
var c = this.elements,
|
d = c[0],
|
f = c[3],
|
g = c[6],
|
k = c[1],
|
m = c[4],
|
n = c[7];
|
c[0] = b * d + a * k;
|
c[3] = b * f + a * m;
|
c[6] = b * g + a * n;
|
c[1] = -a * d + b * k;
|
c[4] = -a * f + b * m;
|
c[7] = -a * g + b * n;
|
return this
|
},
|
translate: function (a, b) {
|
var c = this.elements;
|
c[0] += a * c[2];
|
c[3] += a * c[5];
|
c[6] += a * c[8];
|
c[1] += b * c[2];
|
c[4] += b * c[5];
|
c[7] += b * c[8];
|
return this
|
},
|
equals: function (a) {
|
var b = this.elements;
|
a = a.elements;
|
for (var c = 0; 9 > c; c++)
|
if (b[c] !== a[c]) return !1;
|
return !0
|
},
|
fromArray: function (a, b) {
|
void 0 === b && (b = 0);
|
for (var c = 0; 9 > c; c++) this.elements[c] = a[c + b];
|
return this
|
},
|
toArray: function (a, b) {
|
void 0 === a && (a = []);
|
void 0 === b && (b = 0);
|
var c = this.elements;
|
a[b] = c[0];
|
a[b + 1] = c[1];
|
a[b + 2] = c[2];
|
a[b + 3] = c[3];
|
a[b + 4] = c[4];
|
a[b + 5] = c[5];
|
a[b + 6] = c[6];
|
a[b + 7] = c[7];
|
a[b + 8] = c[8];
|
return a
|
}
|
});
|
var Ad, Qb = {
|
getDataURL: function (a) {
|
if ("undefined" == typeof HTMLCanvasElement) return a.src;
|
if (!(a instanceof HTMLCanvasElement)) {
|
void 0 === Ad && (Ad = V.createElementNS("http://www.w3.org/1999/xhtml",
|
"canvas"));
|
Ad.width = a.width;
|
Ad.height = a.height;
|
var b = Ad.getContext("2d");
|
a instanceof ImageData ? b.putImageData(a, 0, 0) : b.drawImage(a, 0, 0, a.width, a.height);
|
a = Ad
|
}
|
return 2048 < a.width || 2048 < a.height ? a.toDataURL("image/jpeg", .6) : a.toDataURL("image/png")
|
}
|
},
|
Oj = 0;
|
S.DEFAULT_IMAGE = void 0;
|
S.DEFAULT_MAPPING = 300;
|
S.prototype = Object.assign(Object.create(Ra.prototype), {
|
constructor: S,
|
isTexture: !0,
|
updateMatrix: function () {
|
this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation,
|
this.center.x, this.center.y)
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.name = a.name;
|
this.image = a.image;
|
this.mipmaps = a.mipmaps.slice(0);
|
this.mapping = a.mapping;
|
this.wrapS = a.wrapS;
|
this.wrapT = a.wrapT;
|
this.magFilter = a.magFilter;
|
this.minFilter = a.minFilter;
|
this.anisotropy = a.anisotropy;
|
this.format = a.format;
|
this.type = a.type;
|
this.offset.copy(a.offset);
|
this.repeat.copy(a.repeat);
|
this.center.copy(a.center);
|
this.rotation = a.rotation;
|
this.matrixAutoUpdate = a.matrixAutoUpdate;
|
this.matrix.copy(a.matrix);
|
this.generateMipmaps = a.generateMipmaps;
|
this.premultiplyAlpha = a.premultiplyAlpha;
|
this.flipY = a.flipY;
|
this.unpackAlignment = a.unpackAlignment;
|
this.encoding = a.encoding;
|
return this
|
},
|
toJSON: function (a) {
|
var b = void 0 === a || "string" === typeof a;
|
if (!b && void 0 !== a.textures[this.uuid]) return a.textures[this.uuid];
|
var c = {
|
metadata: {
|
version: 4.5,
|
type: "Texture",
|
generator: "Texture.toJSON"
|
},
|
uuid: this.uuid,
|
name: this.name,
|
mapping: this.mapping,
|
repeat: [this.repeat.x, this.repeat.y],
|
offset: [this.offset.x,
|
this.offset.y
|
],
|
center: [this.center.x, this.center.y],
|
rotation: this.rotation,
|
wrap: [this.wrapS, this.wrapT],
|
format: this.format,
|
type: this.type,
|
encoding: this.encoding,
|
minFilter: this.minFilter,
|
magFilter: this.magFilter,
|
anisotropy: this.anisotropy,
|
flipY: this.flipY,
|
premultiplyAlpha: this.premultiplyAlpha,
|
unpackAlignment: this.unpackAlignment
|
};
|
if (void 0 !== this.image) {
|
var d = this.image;
|
void 0 === d.uuid && (d.uuid = N.generateUUID());
|
if (!b && void 0 === a.images[d.uuid]) {
|
if (Array.isArray(d)) {
|
var f = [];
|
for (var g = 0, k = d.length; g <
|
k; g++) f.push(Qb.getDataURL(d[g]))
|
} else f = Qb.getDataURL(d);
|
a.images[d.uuid] = {
|
uuid: d.uuid,
|
url: f
|
}
|
}
|
c.image = d.uuid
|
}
|
b || (a.textures[this.uuid] = c);
|
return c
|
},
|
dispose: function () {
|
this.dispatchEvent({
|
type: "dispose"
|
})
|
},
|
transformUv: function (a) {
|
if (300 !== this.mapping) return a;
|
a.applyMatrix3(this.matrix);
|
if (0 > a.x || 1 < a.x) switch (this.wrapS) {
|
case 1E3:
|
a.x -= Math.floor(a.x);
|
break;
|
case 1001:
|
a.x = 0 > a.x ? 0 : 1;
|
break;
|
case 1002:
|
a.x = 1 === Math.abs(Math.floor(a.x) % 2) ? Math.ceil(a.x) - a.x : a.x - Math.floor(a.x)
|
}
|
if (0 > a.y || 1 < a.y) switch (this.wrapT) {
|
case 1E3:
|
a.y -=
|
Math.floor(a.y);
|
break;
|
case 1001:
|
a.y = 0 > a.y ? 0 : 1;
|
break;
|
case 1002:
|
a.y = 1 === Math.abs(Math.floor(a.y) % 2) ? Math.ceil(a.y) - a.y : a.y - Math.floor(a.y)
|
}
|
this.flipY && (a.y = 1 - a.y);
|
return a
|
}
|
});
|
Object.defineProperty(S.prototype, "needsUpdate", {
|
set: function (a) {
|
!0 === a && this.version++
|
}
|
});
|
Object.defineProperties(ca.prototype, {
|
width: {
|
get: function () {
|
return this.z
|
},
|
set: function (a) {
|
this.z = a
|
}
|
},
|
height: {
|
get: function () {
|
return this.w
|
},
|
set: function (a) {
|
this.w = a
|
}
|
}
|
});
|
Object.assign(ca.prototype, {
|
isVector4: !0,
|
set: function (a, b, c, d) {
|
this.x =
|
a;
|
this.y = b;
|
this.z = c;
|
this.w = d;
|
return this
|
},
|
setScalar: function (a) {
|
this.w = this.z = this.y = this.x = a;
|
return this
|
},
|
setX: function (a) {
|
this.x = a;
|
return this
|
},
|
setY: function (a) {
|
this.y = a;
|
return this
|
},
|
setZ: function (a) {
|
this.z = a;
|
return this
|
},
|
setW: function (a) {
|
this.w = a;
|
return this
|
},
|
setComponent: function (a, b) {
|
switch (a) {
|
case 0:
|
this.x = b;
|
break;
|
case 1:
|
this.y = b;
|
break;
|
case 2:
|
this.z = b;
|
break;
|
case 3:
|
this.w = b;
|
break;
|
default:
|
throw Error("index is out of range: " + a);
|
}
|
return this
|
},
|
getComponent: function (a) {
|
switch (a) {
|
case 0:
|
return this.x;
|
case 1:
|
return this.y;
|
case 2:
|
return this.z;
|
case 3:
|
return this.w;
|
default:
|
throw Error("index is out of range: " + a);
|
}
|
},
|
clone: function () {
|
return new this.constructor(this.x, this.y, this.z, this.w)
|
},
|
copy: function (a) {
|
this.x = a.x;
|
this.y = a.y;
|
this.z = a.z;
|
this.w = void 0 !== a.w ? a.w : 1;
|
return this
|
},
|
add: function (a, b) {
|
if (void 0 !== b) return console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), this.addVectors(a, b);
|
this.x += a.x;
|
this.y += a.y;
|
this.z += a.z;
|
this.w += a.w;
|
return this
|
},
|
addScalar: function (a) {
|
this.x += a;
|
this.y += a;
|
this.z += a;
|
this.w += a;
|
return this
|
},
|
addVectors: function (a, b) {
|
this.x = a.x + b.x;
|
this.y = a.y + b.y;
|
this.z = a.z + b.z;
|
this.w = a.w + b.w;
|
return this
|
},
|
addScaledVector: function (a, b) {
|
this.x += a.x * b;
|
this.y += a.y * b;
|
this.z += a.z * b;
|
this.w += a.w * b;
|
return this
|
},
|
sub: function (a, b) {
|
if (void 0 !== b) return console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), this.subVectors(a, b);
|
this.x -= a.x;
|
this.y -= a.y;
|
this.z -= a.z;
|
this.w -= a.w;
|
return this
|
},
|
subScalar: function (a) {
|
this.x -=
|
a;
|
this.y -= a;
|
this.z -= a;
|
this.w -= a;
|
return this
|
},
|
subVectors: function (a, b) {
|
this.x = a.x - b.x;
|
this.y = a.y - b.y;
|
this.z = a.z - b.z;
|
this.w = a.w - b.w;
|
return this
|
},
|
multiplyScalar: function (a) {
|
this.x *= a;
|
this.y *= a;
|
this.z *= a;
|
this.w *= a;
|
return this
|
},
|
applyMatrix4: function (a) {
|
var b = this.x,
|
c = this.y,
|
d = this.z,
|
f = this.w;
|
a = a.elements;
|
this.x = a[0] * b + a[4] * c + a[8] * d + a[12] * f;
|
this.y = a[1] * b + a[5] * c + a[9] * d + a[13] * f;
|
this.z = a[2] * b + a[6] * c + a[10] * d + a[14] * f;
|
this.w = a[3] * b + a[7] * c + a[11] * d + a[15] * f;
|
return this
|
},
|
divideScalar: function (a) {
|
return this.multiplyScalar(1 /
|
a)
|
},
|
setAxisAngleFromQuaternion: function (a) {
|
this.w = 2 * Math.acos(a.w);
|
var b = Math.sqrt(1 - a.w * a.w);
|
1E-4 > b ? (this.x = 1, this.z = this.y = 0) : (this.x = a.x / b, this.y = a.y / b, this.z = a.z / b);
|
return this
|
},
|
setAxisAngleFromRotationMatrix: function (a) {
|
a = a.elements;
|
var b = a[0];
|
var c = a[4];
|
var d = a[8],
|
f = a[1],
|
g = a[5],
|
k = a[9];
|
var m = a[2];
|
var n = a[6];
|
var p = a[10];
|
if (.01 > Math.abs(c - f) && .01 > Math.abs(d - m) && .01 > Math.abs(k - n)) {
|
if (.1 > Math.abs(c + f) && .1 > Math.abs(d + m) && .1 > Math.abs(k + n) && .1 > Math.abs(b + g + p - 3)) return this.set(1, 0, 0, 0), this;
|
a = Math.PI;
|
b = (b + 1) / 2;
|
g = (g + 1) / 2;
|
p = (p + 1) / 2;
|
c = (c + f) / 4;
|
d = (d + m) / 4;
|
k = (k + n) / 4;
|
b > g && b > p ? .01 > b ? (n = 0, c = m = .707106781) : (n = Math.sqrt(b), m = c / n, c = d / n) : g > p ? .01 > g ? (n = .707106781, m = 0, c = .707106781) : (m = Math.sqrt(g), n = c / m, c = k / m) : .01 > p ? (m = n = .707106781, c = 0) : (c = Math.sqrt(p), n = d / c, m = k / c);
|
this.set(n, m, c, a);
|
return this
|
}
|
a = Math.sqrt((n - k) * (n - k) + (d - m) * (d - m) + (f - c) * (f - c));
|
.001 > Math.abs(a) && (a = 1);
|
this.x = (n - k) / a;
|
this.y = (d - m) / a;
|
this.z = (f - c) / a;
|
this.w = Math.acos((b + g + p - 1) / 2);
|
return this
|
},
|
min: function (a) {
|
this.x = Math.min(this.x, a.x);
|
this.y = Math.min(this.y,
|
a.y);
|
this.z = Math.min(this.z, a.z);
|
this.w = Math.min(this.w, a.w);
|
return this
|
},
|
max: function (a) {
|
this.x = Math.max(this.x, a.x);
|
this.y = Math.max(this.y, a.y);
|
this.z = Math.max(this.z, a.z);
|
this.w = Math.max(this.w, a.w);
|
return this
|
},
|
clamp: function (a, b) {
|
this.x = Math.max(a.x, Math.min(b.x, this.x));
|
this.y = Math.max(a.y, Math.min(b.y, this.y));
|
this.z = Math.max(a.z, Math.min(b.z, this.z));
|
this.w = Math.max(a.w, Math.min(b.w, this.w));
|
return this
|
},
|
clampScalar: function (a, b) {
|
this.x = Math.max(a, Math.min(b, this.x));
|
this.y = Math.max(a, Math.min(b,
|
this.y));
|
this.z = Math.max(a, Math.min(b, this.z));
|
this.w = Math.max(a, Math.min(b, this.w));
|
return this
|
},
|
clampLength: function (a, b) {
|
var c = this.length();
|
return this.divideScalar(c || 1).multiplyScalar(Math.max(a, Math.min(b, c)))
|
},
|
floor: function () {
|
this.x = Math.floor(this.x);
|
this.y = Math.floor(this.y);
|
this.z = Math.floor(this.z);
|
this.w = Math.floor(this.w);
|
return this
|
},
|
ceil: function () {
|
this.x = Math.ceil(this.x);
|
this.y = Math.ceil(this.y);
|
this.z = Math.ceil(this.z);
|
this.w = Math.ceil(this.w);
|
return this
|
},
|
round: function () {
|
this.x =
|
Math.round(this.x);
|
this.y = Math.round(this.y);
|
this.z = Math.round(this.z);
|
this.w = Math.round(this.w);
|
return this
|
},
|
roundToZero: function () {
|
this.x = 0 > this.x ? Math.ceil(this.x) : Math.floor(this.x);
|
this.y = 0 > this.y ? Math.ceil(this.y) : Math.floor(this.y);
|
this.z = 0 > this.z ? Math.ceil(this.z) : Math.floor(this.z);
|
this.w = 0 > this.w ? Math.ceil(this.w) : Math.floor(this.w);
|
return this
|
},
|
negate: function () {
|
this.x = -this.x;
|
this.y = -this.y;
|
this.z = -this.z;
|
this.w = -this.w;
|
return this
|
},
|
dot: function (a) {
|
return this.x * a.x + this.y * a.y + this.z *
|
a.z + this.w * a.w
|
},
|
lengthSq: function () {
|
return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w
|
},
|
length: function () {
|
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w)
|
},
|
manhattanLength: function () {
|
return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w)
|
},
|
normalize: function () {
|
return this.divideScalar(this.length() || 1)
|
},
|
setLength: function (a) {
|
return this.normalize().multiplyScalar(a)
|
},
|
lerp: function (a, b) {
|
this.x += (a.x - this.x) * b;
|
this.y += (a.y - this.y) * b;
|
this.z += (a.z -
|
this.z) * b;
|
this.w += (a.w - this.w) * b;
|
return this
|
},
|
lerpVectors: function (a, b, c) {
|
return this.subVectors(b, a).multiplyScalar(c).add(a)
|
},
|
equals: function (a) {
|
return a.x === this.x && a.y === this.y && a.z === this.z && a.w === this.w
|
},
|
fromArray: function (a, b) {
|
void 0 === b && (b = 0);
|
this.x = a[b];
|
this.y = a[b + 1];
|
this.z = a[b + 2];
|
this.w = a[b + 3];
|
return this
|
},
|
toArray: function (a, b) {
|
void 0 === a && (a = []);
|
void 0 === b && (b = 0);
|
a[b] = this.x;
|
a[b + 1] = this.y;
|
a[b + 2] = this.z;
|
a[b + 3] = this.w;
|
return a
|
},
|
fromBufferAttribute: function (a, b, c) {
|
void 0 !== c && console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute().");
|
this.x = a.getX(b);
|
this.y = a.getY(b);
|
this.z = a.getZ(b);
|
this.w = a.getW(b);
|
return this
|
}
|
});
|
sa.prototype = Object.assign(Object.create(Ra.prototype), {
|
constructor: sa,
|
isWebGLRenderTarget: !0,
|
setSize: function (a, b) {
|
if (this.width !== a || this.height !== b) this.width = a, this.height = b, this.texture.image.width = a, this.texture.image.height = b, this.dispose();
|
this.viewport.set(0, 0, a, b);
|
this.scissor.set(0, 0, a, b)
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.width = a.width;
|
this.height = a.height;
|
this.viewport.copy(a.viewport);
|
this.texture = a.texture.clone();
|
this.depthBuffer = a.depthBuffer;
|
this.stencilBuffer = a.stencilBuffer;
|
this.depthTexture = a.depthTexture;
|
return this
|
},
|
dispose: function () {
|
this.dispatchEvent({
|
type: "dispose"
|
})
|
}
|
});
|
qg.prototype = Object.assign(Object.create(sa.prototype), {
|
constructor: qg,
|
isWebGLMultisampleRenderTarget: !0,
|
copy: function (a) {
|
sa.prototype.copy.call(this, a);
|
this.samples = a.samples;
|
return this
|
}
|
});
|
var Na = new q,
|
ea = new I,
|
Bl = new q(0, 0, 0),
|
Cl = new q(1, 1, 1),
|
Rb = new q,
|
Pf = new q,
|
Da = new q;
|
Object.assign(I.prototype, {
|
isMatrix4: !0,
|
set: function (a, b, c, d, f, g, k, m, n, p, l, t, r, u, q, w) {
|
var y = this.elements;
|
y[0] = a;
|
y[4] = b;
|
y[8] = c;
|
y[12] = d;
|
y[1] = f;
|
y[5] = g;
|
y[9] = k;
|
y[13] = m;
|
y[2] = n;
|
y[6] = p;
|
y[10] = l;
|
y[14] = t;
|
y[3] = r;
|
y[7] = u;
|
y[11] = q;
|
y[15] = w;
|
return this
|
},
|
identity: function () {
|
this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
|
return this
|
},
|
clone: function () {
|
return (new I).fromArray(this.elements)
|
},
|
copy: function (a) {
|
var b = this.elements;
|
a = a.elements;
|
b[0] = a[0];
|
b[1] = a[1];
|
b[2] = a[2];
|
b[3] = a[3];
|
b[4] = a[4];
|
b[5] = a[5];
|
b[6] = a[6];
|
b[7] = a[7];
|
b[8] = a[8];
|
b[9] = a[9];
|
b[10] = a[10];
|
b[11] = a[11];
|
b[12] = a[12];
|
b[13] = a[13];
|
b[14] = a[14];
|
b[15] = a[15];
|
return this
|
},
|
copyPosition: function (a) {
|
var b = this.elements;
|
a = a.elements;
|
b[12] = a[12];
|
b[13] = a[13];
|
b[14] = a[14];
|
return this
|
},
|
extractBasis: function (a, b, c) {
|
a.setFromMatrixColumn(this, 0);
|
b.setFromMatrixColumn(this, 1);
|
c.setFromMatrixColumn(this, 2);
|
return this
|
},
|
makeBasis: function (a, b, c) {
|
this.set(a.x, b.x, c.x, 0, a.y, b.y, c.y, 0, a.z, b.z, c.z, 0, 0, 0, 0, 1);
|
return this
|
},
|
extractRotation: function (a) {
|
var b = this.elements,
|
c = a.elements,
|
d = 1 / Na.setFromMatrixColumn(a, 0).length(),
|
f = 1 / Na.setFromMatrixColumn(a, 1).length();
|
a = 1 / Na.setFromMatrixColumn(a, 2).length();
|
b[0] = c[0] * d;
|
b[1] = c[1] * d;
|
b[2] = c[2] * d;
|
b[3] = 0;
|
b[4] = c[4] * f;
|
b[5] = c[5] * f;
|
b[6] = c[6] * f;
|
b[7] = 0;
|
b[8] = c[8] * a;
|
b[9] = c[9] * a;
|
b[10] = c[10] * a;
|
b[11] = 0;
|
b[12] = 0;
|
b[13] = 0;
|
b[14] = 0;
|
b[15] = 1;
|
return this
|
},
|
makeRotationFromEuler: function (a) {
|
a && a.isEuler || console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");
|
var b = this.elements,
|
c = a.x,
|
d = a.y,
|
f = a.z,
|
g = Math.cos(c);
|
c = Math.sin(c);
|
var k = Math.cos(d);
|
d = Math.sin(d);
|
var m = Math.cos(f);
|
f = Math.sin(f);
|
if ("XYZ" === a.order) {
|
a = g * m;
|
var n = g * f,
|
p = c * m,
|
l = c * f;
|
b[0] = k * m;
|
b[4] = -k * f;
|
b[8] = d;
|
b[1] = n + p * d;
|
b[5] = a - l * d;
|
b[9] = -c * k;
|
b[2] = l - a * d;
|
b[6] = p + n * d;
|
b[10] = g * k
|
} else "YXZ" === a.order ? (a = k * m, n = k * f, p = d * m, l = d * f, b[0] = a + l * c, b[4] = p * c - n, b[8] = g * d, b[1] = g * f, b[5] = g * m, b[9] = -c, b[2] = n * c - p, b[6] = l + a * c, b[10] = g * k) : "ZXY" === a.order ? (a = k * m, n = k * f, p = d * m, l = d * f, b[0] = a - l * c, b[4] = -g * f, b[8] = p + n * c, b[1] = n + p * c, b[5] = g * m, b[9] = l - a * c, b[2] = -g * d, b[6] = c, b[10] = g * k) : "ZYX" === a.order ? (a = g * m, n = g * f, p = c * m, l = c * f, b[0] = k * m,
|
b[4] = p * d - n, b[8] = a * d + l, b[1] = k * f, b[5] = l * d + a, b[9] = n * d - p, b[2] = -d, b[6] = c * k, b[10] = g * k) : "YZX" === a.order ? (a = g * k, n = g * d, p = c * k, l = c * d, b[0] = k * m, b[4] = l - a * f, b[8] = p * f + n, b[1] = f, b[5] = g * m, b[9] = -c * m, b[2] = -d * m, b[6] = n * f + p, b[10] = a - l * f) : "XZY" === a.order && (a = g * k, n = g * d, p = c * k, l = c * d, b[0] = k * m, b[4] = -f, b[8] = d * m, b[1] = a * f + l, b[5] = g * m, b[9] = n * f - p, b[2] = p * f - n, b[6] = c * m, b[10] = l * f + a);
|
b[3] = 0;
|
b[7] = 0;
|
b[11] = 0;
|
b[12] = 0;
|
b[13] = 0;
|
b[14] = 0;
|
b[15] = 1;
|
return this
|
},
|
makeRotationFromQuaternion: function (a) {
|
return this.compose(Bl, a, Cl)
|
},
|
lookAt: function (a, b,
|
c) {
|
var d = this.elements;
|
Da.subVectors(a, b);
|
0 === Da.lengthSq() && (Da.z = 1);
|
Da.normalize();
|
Rb.crossVectors(c, Da);
|
0 === Rb.lengthSq() && (1 === Math.abs(c.z) ? Da.x += 1E-4 : Da.z += 1E-4, Da.normalize(), Rb.crossVectors(c, Da));
|
Rb.normalize();
|
Pf.crossVectors(Da, Rb);
|
d[0] = Rb.x;
|
d[4] = Pf.x;
|
d[8] = Da.x;
|
d[1] = Rb.y;
|
d[5] = Pf.y;
|
d[9] = Da.y;
|
d[2] = Rb.z;
|
d[6] = Pf.z;
|
d[10] = Da.z;
|
return this
|
},
|
multiply: function (a, b) {
|
return void 0 !== b ? (console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),
|
this.multiplyMatrices(a, b)) : this.multiplyMatrices(this, a)
|
},
|
premultiply: function (a) {
|
return this.multiplyMatrices(a, this)
|
},
|
multiplyMatrices: function (a, b) {
|
var c = a.elements,
|
d = b.elements;
|
b = this.elements;
|
a = c[0];
|
var f = c[4],
|
g = c[8],
|
k = c[12],
|
m = c[1],
|
n = c[5],
|
p = c[9],
|
l = c[13],
|
t = c[2],
|
r = c[6],
|
q = c[10],
|
v = c[14],
|
w = c[3],
|
x = c[7],
|
B = c[11];
|
c = c[15];
|
var C = d[0],
|
A = d[4],
|
z = d[8],
|
D = d[12],
|
E = d[1],
|
F = d[5],
|
H = d[9],
|
G = d[13],
|
I = d[2],
|
K = d[6],
|
M = d[10],
|
N = d[14],
|
O = d[3],
|
P = d[7],
|
Q = d[11];
|
d = d[15];
|
b[0] = a * C + f * E + g * I + k * O;
|
b[4] = a * A + f * F + g * K + k * P;
|
b[8] = a * z + f * H + g * M +
|
k * Q;
|
b[12] = a * D + f * G + g * N + k * d;
|
b[1] = m * C + n * E + p * I + l * O;
|
b[5] = m * A + n * F + p * K + l * P;
|
b[9] = m * z + n * H + p * M + l * Q;
|
b[13] = m * D + n * G + p * N + l * d;
|
b[2] = t * C + r * E + q * I + v * O;
|
b[6] = t * A + r * F + q * K + v * P;
|
b[10] = t * z + r * H + q * M + v * Q;
|
b[14] = t * D + r * G + q * N + v * d;
|
b[3] = w * C + x * E + B * I + c * O;
|
b[7] = w * A + x * F + B * K + c * P;
|
b[11] = w * z + x * H + B * M + c * Q;
|
b[15] = w * D + x * G + B * N + c * d;
|
return this
|
},
|
multiplyScalar: function (a) {
|
var b = this.elements;
|
b[0] *= a;
|
b[4] *= a;
|
b[8] *= a;
|
b[12] *= a;
|
b[1] *= a;
|
b[5] *= a;
|
b[9] *= a;
|
b[13] *= a;
|
b[2] *= a;
|
b[6] *= a;
|
b[10] *= a;
|
b[14] *= a;
|
b[3] *= a;
|
b[7] *= a;
|
b[11] *= a;
|
b[15] *= a;
|
return this
|
},
|
applyToBufferAttribute: function (a) {
|
for (var b =
|
0, c = a.count; b < c; b++) Na.x = a.getX(b), Na.y = a.getY(b), Na.z = a.getZ(b), Na.applyMatrix4(this), a.setXYZ(b, Na.x, Na.y, Na.z);
|
return a
|
},
|
determinant: function () {
|
var a = this.elements,
|
b = a[0],
|
c = a[4],
|
d = a[8],
|
f = a[12],
|
g = a[1],
|
k = a[5],
|
m = a[9],
|
n = a[13],
|
p = a[2],
|
l = a[6],
|
t = a[10],
|
r = a[14];
|
return a[3] * (+f * m * l - d * n * l - f * k * t + c * n * t + d * k * r - c * m * r) + a[7] * (+b * m * r - b * n * t + f * g * t - d * g * r + d * n * p - f * m * p) + a[11] * (+b * n * l - b * k * r - f * g * l + c * g * r + f * k * p - c * n * p) + a[15] * (-d * k * p - b * m * l + b * k * t + d * g * l - c * g * t + c * m * p)
|
},
|
transpose: function () {
|
var a = this.elements;
|
var b = a[1];
|
a[1] = a[4];
|
a[4] = b;
|
b = a[2];
|
a[2] = a[8];
|
a[8] = b;
|
b = a[6];
|
a[6] = a[9];
|
a[9] = b;
|
b = a[3];
|
a[3] = a[12];
|
a[12] = b;
|
b = a[7];
|
a[7] = a[13];
|
a[13] = b;
|
b = a[11];
|
a[11] = a[14];
|
a[14] = b;
|
return this
|
},
|
setPosition: function (a, b, c) {
|
var d = this.elements;
|
a.isVector3 ? (d[12] = a.x, d[13] = a.y, d[14] = a.z) : (d[12] = a, d[13] = b, d[14] = c);
|
return this
|
},
|
getInverse: function (a, b) {
|
var c = this.elements,
|
d = a.elements;
|
a = d[0];
|
var f = d[1],
|
g = d[2],
|
k = d[3],
|
m = d[4],
|
n = d[5],
|
p = d[6],
|
l = d[7],
|
t = d[8],
|
r = d[9],
|
q = d[10],
|
v = d[11],
|
w = d[12],
|
x = d[13],
|
B = d[14];
|
d = d[15];
|
var C = r * B * l - x * q * l + x * p * v - n * B * v - r * p * d + n * q * d,
|
A = w * q * l - t * B * l - w * p * v + m * B * v + t * p * d - m * q * d,
|
z = t * x * l - w * r * l + w * n * v - m * x * v - t * n * d + m * r * d,
|
D = w * r * p - t * x * p - w * n * q + m * x * q + t * n * B - m * r * B,
|
E = a * C + f * A + g * z + k * D;
|
if (0 === E) {
|
if (!0 === b) throw Error("THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0");
|
console.warn("THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0");
|
return this.identity()
|
}
|
b = 1 / E;
|
c[0] = C * b;
|
c[1] = (x * q * k - r * B * k - x * g * v + f * B * v + r * g * d - f * q * d) * b;
|
c[2] = (n * B * k - x * p * k + x * g * l - f * B * l - n * g * d + f * p * d) * b;
|
c[3] = (r * p * k - n * q * k - r * g * l + f * q * l + n * g * v - f * p * v) * b;
|
c[4] = A * b;
|
c[5] =
|
(t * B * k - w * q * k + w * g * v - a * B * v - t * g * d + a * q * d) * b;
|
c[6] = (w * p * k - m * B * k - w * g * l + a * B * l + m * g * d - a * p * d) * b;
|
c[7] = (m * q * k - t * p * k + t * g * l - a * q * l - m * g * v + a * p * v) * b;
|
c[8] = z * b;
|
c[9] = (w * r * k - t * x * k - w * f * v + a * x * v + t * f * d - a * r * d) * b;
|
c[10] = (m * x * k - w * n * k + w * f * l - a * x * l - m * f * d + a * n * d) * b;
|
c[11] = (t * n * k - m * r * k - t * f * l + a * r * l + m * f * v - a * n * v) * b;
|
c[12] = D * b;
|
c[13] = (t * x * g - w * r * g + w * f * q - a * x * q - t * f * B + a * r * B) * b;
|
c[14] = (w * n * g - m * x * g - w * f * p + a * x * p + m * f * B - a * n * B) * b;
|
c[15] = (m * r * g - t * n * g + t * f * p - a * r * p - m * f * q + a * n * q) * b;
|
return this
|
},
|
scale: function (a) {
|
var b = this.elements,
|
c = a.x,
|
d = a.y;
|
a = a.z;
|
b[0] *= c;
|
b[4] *= d;
|
b[8] *= a;
|
b[1] *= c;
|
b[5] *= d;
|
b[9] *= a;
|
b[2] *= c;
|
b[6] *= d;
|
b[10] *= a;
|
b[3] *= c;
|
b[7] *= d;
|
b[11] *= a;
|
return this
|
},
|
getMaxScaleOnAxis: function () {
|
var a = this.elements;
|
return Math.sqrt(Math.max(a[0] * a[0] + a[1] * a[1] + a[2] * a[2], a[4] * a[4] + a[5] * a[5] + a[6] * a[6], a[8] * a[8] + a[9] * a[9] + a[10] * a[10]))
|
},
|
makeTranslation: function (a, b, c) {
|
this.set(1, 0, 0, a, 0, 1, 0, b, 0, 0, 1, c, 0, 0, 0, 1);
|
return this
|
},
|
makeRotationX: function (a) {
|
var b = Math.cos(a);
|
a = Math.sin(a);
|
this.set(1, 0, 0, 0, 0, b, -a, 0, 0, a, b, 0, 0, 0, 0, 1);
|
return this
|
},
|
makeRotationY: function (a) {
|
var b =
|
Math.cos(a);
|
a = Math.sin(a);
|
this.set(b, 0, a, 0, 0, 1, 0, 0, -a, 0, b, 0, 0, 0, 0, 1);
|
return this
|
},
|
makeRotationZ: function (a) {
|
var b = Math.cos(a);
|
a = Math.sin(a);
|
this.set(b, -a, 0, 0, a, b, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
|
return this
|
},
|
makeRotationAxis: function (a, b) {
|
var c = Math.cos(b);
|
b = Math.sin(b);
|
var d = 1 - c,
|
f = a.x,
|
g = a.y;
|
a = a.z;
|
var k = d * f,
|
m = d * g;
|
this.set(k * f + c, k * g - b * a, k * a + b * g, 0, k * g + b * a, m * g + c, m * a - b * f, 0, k * a - b * g, m * a + b * f, d * a * a + c, 0, 0, 0, 0, 1);
|
return this
|
},
|
makeScale: function (a, b, c) {
|
this.set(a, 0, 0, 0, 0, b, 0, 0, 0, 0, c, 0, 0, 0, 0, 1);
|
return this
|
},
|
makeShear: function (a,
|
b, c) {
|
this.set(1, b, c, 0, a, 1, c, 0, a, b, 1, 0, 0, 0, 0, 1);
|
return this
|
},
|
compose: function (a, b, c) {
|
var d = this.elements,
|
f = b._x,
|
g = b._y,
|
k = b._z,
|
m = b._w,
|
n = f + f,
|
l = g + g,
|
q = k + k;
|
b = f * n;
|
var t = f * l;
|
f *= q;
|
var r = g * l;
|
g *= q;
|
k *= q;
|
n *= m;
|
l *= m;
|
m *= q;
|
q = c.x;
|
var u = c.y;
|
c = c.z;
|
d[0] = (1 - (r + k)) * q;
|
d[1] = (t + m) * q;
|
d[2] = (f - l) * q;
|
d[3] = 0;
|
d[4] = (t - m) * u;
|
d[5] = (1 - (b + k)) * u;
|
d[6] = (g + n) * u;
|
d[7] = 0;
|
d[8] = (f + l) * c;
|
d[9] = (g - n) * c;
|
d[10] = (1 - (b + r)) * c;
|
d[11] = 0;
|
d[12] = a.x;
|
d[13] = a.y;
|
d[14] = a.z;
|
d[15] = 1;
|
return this
|
},
|
decompose: function (a, b, c) {
|
var d = this.elements,
|
f = Na.set(d[0], d[1], d[2]).length(),
|
g = Na.set(d[4], d[5], d[6]).length(),
|
k = Na.set(d[8], d[9], d[10]).length();
|
0 > this.determinant() && (f = -f);
|
a.x = d[12];
|
a.y = d[13];
|
a.z = d[14];
|
ea.copy(this);
|
a = 1 / f;
|
d = 1 / g;
|
var m = 1 / k;
|
ea.elements[0] *= a;
|
ea.elements[1] *= a;
|
ea.elements[2] *= a;
|
ea.elements[4] *= d;
|
ea.elements[5] *= d;
|
ea.elements[6] *= d;
|
ea.elements[8] *= m;
|
ea.elements[9] *= m;
|
ea.elements[10] *= m;
|
b.setFromRotationMatrix(ea);
|
c.x = f;
|
c.y = g;
|
c.z = k;
|
return this
|
},
|
makePerspective: function (a, b, c, d, f, g) {
|
void 0 === g && console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");
|
var k = this.elements;
|
k[0] = 2 * f / (b - a);
|
k[4] = 0;
|
k[8] = (b + a) / (b - a);
|
k[12] = 0;
|
k[1] = 0;
|
k[5] = 2 * f / (c - d);
|
k[9] = (c + d) / (c - d);
|
k[13] = 0;
|
k[2] = 0;
|
k[6] = 0;
|
k[10] = -(g + f) / (g - f);
|
k[14] = -2 * g * f / (g - f);
|
k[3] = 0;
|
k[7] = 0;
|
k[11] = -1;
|
k[15] = 0;
|
return this
|
},
|
makeOrthographic: function (a, b, c, d, f, g) {
|
var k = this.elements,
|
m = 1 / (b - a),
|
n = 1 / (c - d),
|
l = 1 / (g - f);
|
k[0] = 2 * m;
|
k[4] = 0;
|
k[8] = 0;
|
k[12] = -((b + a) * m);
|
k[1] = 0;
|
k[5] = 2 * n;
|
k[9] = 0;
|
k[13] = -((c + d) * n);
|
k[2] = 0;
|
k[6] = 0;
|
k[10] = -2 * l;
|
k[14] = -((g + f) * l);
|
k[3] = 0;
|
k[7] = 0;
|
k[11] = 0;
|
k[15] = 1;
|
return this
|
},
|
equals: function (a) {
|
var b = this.elements;
|
a = a.elements;
|
for (var c = 0; 16 > c; c++)
|
if (b[c] !== a[c]) return !1;
|
return !0
|
},
|
fromArray: function (a, b) {
|
void 0 === b && (b = 0);
|
for (var c = 0; 16 > c; c++) this.elements[c] = a[c + b];
|
return this
|
},
|
toArray: function (a, b) {
|
void 0 === a && (a = []);
|
void 0 === b && (b = 0);
|
var c = this.elements;
|
a[b] = c[0];
|
a[b + 1] = c[1];
|
a[b + 2] = c[2];
|
a[b + 3] = c[3];
|
a[b + 4] = c[4];
|
a[b + 5] = c[5];
|
a[b + 6] = c[6];
|
a[b + 7] = c[7];
|
a[b + 8] = c[8];
|
a[b + 9] = c[9];
|
a[b + 10] = c[10];
|
a[b + 11] = c[11];
|
a[b + 12] = c[12];
|
a[b + 13] = c[13];
|
a[b + 14] = c[14];
|
a[b + 15] = c[15];
|
return a
|
}
|
});
|
var hj = new I,
|
ij = new ya;
|
Zb.RotationOrders =
|
"XYZ YZX ZXY XZY YXZ ZYX".split(" ");
|
Zb.DefaultOrder = "XYZ";
|
Object.defineProperties(Zb.prototype, {
|
x: {
|
get: function () {
|
return this._x
|
},
|
set: function (a) {
|
this._x = a;
|
this._onChangeCallback()
|
}
|
},
|
y: {
|
get: function () {
|
return this._y
|
},
|
set: function (a) {
|
this._y = a;
|
this._onChangeCallback()
|
}
|
},
|
z: {
|
get: function () {
|
return this._z
|
},
|
set: function (a) {
|
this._z = a;
|
this._onChangeCallback()
|
}
|
},
|
order: {
|
get: function () {
|
return this._order
|
},
|
set: function (a) {
|
this._order = a;
|
this._onChangeCallback()
|
}
|
}
|
});
|
Object.assign(Zb.prototype, {
|
isEuler: !0,
|
set: function (a,
|
b, c, d) {
|
this._x = a;
|
this._y = b;
|
this._z = c;
|
this._order = d || this._order;
|
this._onChangeCallback();
|
return this
|
},
|
clone: function () {
|
return new this.constructor(this._x, this._y, this._z, this._order)
|
},
|
copy: function (a) {
|
this._x = a._x;
|
this._y = a._y;
|
this._z = a._z;
|
this._order = a._order;
|
this._onChangeCallback();
|
return this
|
},
|
setFromRotationMatrix: function (a, b, c) {
|
var d = N.clamp,
|
f = a.elements;
|
a = f[0];
|
var g = f[4],
|
k = f[8],
|
m = f[1],
|
n = f[5],
|
l = f[9],
|
q = f[2],
|
t = f[6];
|
f = f[10];
|
b = b || this._order;
|
"XYZ" === b ? (this._y = Math.asin(d(k, -1, 1)), .9999999 > Math.abs(k) ?
|
(this._x = Math.atan2(-l, f), this._z = Math.atan2(-g, a)) : (this._x = Math.atan2(t, n), this._z = 0)) : "YXZ" === b ? (this._x = Math.asin(-d(l, -1, 1)), .9999999 > Math.abs(l) ? (this._y = Math.atan2(k, f), this._z = Math.atan2(m, n)) : (this._y = Math.atan2(-q, a), this._z = 0)) : "ZXY" === b ? (this._x = Math.asin(d(t, -1, 1)), .9999999 > Math.abs(t) ? (this._y = Math.atan2(-q, f), this._z = Math.atan2(-g, n)) : (this._y = 0, this._z = Math.atan2(m, a))) : "ZYX" === b ? (this._y = Math.asin(-d(q, -1, 1)), .9999999 > Math.abs(q) ? (this._x = Math.atan2(t, f), this._z = Math.atan2(m, a)) :
|
(this._x = 0, this._z = Math.atan2(-g, n))) : "YZX" === b ? (this._z = Math.asin(d(m, -1, 1)), .9999999 > Math.abs(m) ? (this._x = Math.atan2(-l, n), this._y = Math.atan2(-q, a)) : (this._x = 0, this._y = Math.atan2(k, f))) : "XZY" === b ? (this._z = Math.asin(-d(g, -1, 1)), .9999999 > Math.abs(g) ? (this._x = Math.atan2(t, n), this._y = Math.atan2(k, a)) : (this._x = Math.atan2(-l, f), this._y = 0)) : console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: " + b);
|
this._order = b;
|
!1 !== c && this._onChangeCallback();
|
return this
|
},
|
setFromQuaternion: function (a,
|
b, c) {
|
hj.makeRotationFromQuaternion(a);
|
return this.setFromRotationMatrix(hj, b, c)
|
},
|
setFromVector3: function (a, b) {
|
return this.set(a.x, a.y, a.z, b || this._order)
|
},
|
reorder: function (a) {
|
ij.setFromEuler(this);
|
return this.setFromQuaternion(ij, a)
|
},
|
equals: function (a) {
|
return a._x === this._x && a._y === this._y && a._z === this._z && a._order === this._order
|
},
|
fromArray: function (a) {
|
this._x = a[0];
|
this._y = a[1];
|
this._z = a[2];
|
void 0 !== a[3] && (this._order = a[3]);
|
this._onChangeCallback();
|
return this
|
},
|
toArray: function (a, b) {
|
void 0 === a && (a = []);
|
void 0 === b && (b = 0);
|
a[b] = this._x;
|
a[b + 1] = this._y;
|
a[b + 2] = this._z;
|
a[b + 3] = this._order;
|
return a
|
},
|
toVector3: function (a) {
|
return a ? a.set(this._x, this._y, this._z) : new q(this._x, this._y, this._z)
|
},
|
_onChange: function (a) {
|
this._onChangeCallback = a;
|
return this
|
},
|
_onChangeCallback: function () {}
|
});
|
Object.assign(rg.prototype, {
|
set: function (a) {
|
this.mask = 1 << a | 0
|
},
|
enable: function (a) {
|
this.mask = this.mask | 1 << a | 0
|
},
|
enableAll: function () {
|
this.mask = -1
|
},
|
toggle: function (a) {
|
this.mask ^= 1 << a | 0
|
},
|
disable: function (a) {
|
this.mask &= ~(1 << a |
|
0)
|
},
|
disableAll: function () {
|
this.mask = 0
|
},
|
test: function (a) {
|
return 0 !== (this.mask & a.mask)
|
}
|
});
|
var Pj = 0,
|
jj = new q,
|
Bd = new ya,
|
Cb = new I,
|
Qf = new q,
|
Oe = new q,
|
Dl = new q,
|
El = new ya,
|
kj = new q(1, 0, 0),
|
lj = new q(0, 1, 0),
|
mj = new q(0, 0, 1),
|
Fl = {
|
type: "added"
|
},
|
Gl = {
|
type: "removed"
|
};
|
E.DefaultUp = new q(0, 1, 0);
|
E.DefaultMatrixAutoUpdate = !0;
|
E.prototype = Object.assign(Object.create(Ra.prototype), {
|
constructor: E,
|
isObject3D: !0,
|
onBeforeRender: function () {},
|
onAfterRender: function () {},
|
applyMatrix: function (a) {
|
this.matrixAutoUpdate && this.updateMatrix();
|
this.matrix.premultiply(a);
|
this.matrix.decompose(this.position, this.quaternion, this.scale)
|
},
|
applyQuaternion: function (a) {
|
this.quaternion.premultiply(a);
|
return this
|
},
|
setRotationFromAxisAngle: function (a, b) {
|
this.quaternion.setFromAxisAngle(a, b)
|
},
|
setRotationFromEuler: function (a) {
|
this.quaternion.setFromEuler(a, !0)
|
},
|
setRotationFromMatrix: function (a) {
|
this.quaternion.setFromRotationMatrix(a)
|
},
|
setRotationFromQuaternion: function (a) {
|
this.quaternion.copy(a)
|
},
|
rotateOnAxis: function (a, b) {
|
Bd.setFromAxisAngle(a, b);
|
this.quaternion.multiply(Bd);
|
return this
|
},
|
rotateOnWorldAxis: function (a, b) {
|
Bd.setFromAxisAngle(a, b);
|
this.quaternion.premultiply(Bd);
|
return this
|
},
|
rotateX: function (a) {
|
return this.rotateOnAxis(kj, a)
|
},
|
rotateY: function (a) {
|
return this.rotateOnAxis(lj, a)
|
},
|
rotateZ: function (a) {
|
return this.rotateOnAxis(mj, a)
|
},
|
translateOnAxis: function (a, b) {
|
jj.copy(a).applyQuaternion(this.quaternion);
|
this.position.add(jj.multiplyScalar(b));
|
return this
|
},
|
translateX: function (a) {
|
return this.translateOnAxis(kj, a)
|
},
|
translateY: function (a) {
|
return this.translateOnAxis(lj,
|
a)
|
},
|
translateZ: function (a) {
|
return this.translateOnAxis(mj, a)
|
},
|
localToWorld: function (a) {
|
return a.applyMatrix4(this.matrixWorld)
|
},
|
worldToLocal: function (a) {
|
return a.applyMatrix4(Cb.getInverse(this.matrixWorld))
|
},
|
lookAt: function (a, b, c) {
|
a.isVector3 ? Qf.copy(a) : Qf.set(a, b, c);
|
a = this.parent;
|
this.updateWorldMatrix(!0, !1);
|
Oe.setFromMatrixPosition(this.matrixWorld);
|
this.isCamera || this.isLight ? Cb.lookAt(Oe, Qf, this.up) : Cb.lookAt(Qf, Oe, this.up);
|
this.quaternion.setFromRotationMatrix(Cb);
|
a && (Cb.extractRotation(a.matrixWorld),
|
Bd.setFromRotationMatrix(Cb), this.quaternion.premultiply(Bd.inverse()))
|
},
|
add: function (a) {
|
if (1 < arguments.length) {
|
for (var b = 0; b < arguments.length; b++) this.add(arguments[b]);
|
return this
|
}
|
if (a === this) return console.error("THREE.Object3D.add: object can't be added as a child of itself.", a), this;
|
a && a.isObject3D ? (null !== a.parent && a.parent.remove(a), a.parent = this, this.children.push(a), a.dispatchEvent(Fl)) : console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.", a);
|
return this
|
},
|
remove: function (a) {
|
if (1 <
|
arguments.length) {
|
for (var b = 0; b < arguments.length; b++) this.remove(arguments[b]);
|
return this
|
}
|
b = this.children.indexOf(a); - 1 !== b && (a.parent = null, this.children.splice(b, 1), a.dispatchEvent(Gl));
|
return this
|
},
|
attach: function (a) {
|
this.updateWorldMatrix(!0, !1);
|
Cb.getInverse(this.matrixWorld);
|
null !== a.parent && (a.parent.updateWorldMatrix(!0, !1), Cb.multiply(a.parent.matrixWorld));
|
a.applyMatrix(Cb);
|
a.updateWorldMatrix(!1, !1);
|
this.add(a);
|
return this
|
},
|
getObjectById: function (a) {
|
return this.getObjectByProperty("id",
|
a)
|
},
|
getObjectByName: function (a) {
|
return this.getObjectByProperty("name", a)
|
},
|
getObjectByProperty: function (a, b) {
|
if (this[a] === b) return this;
|
for (var c = 0, d = this.children.length; c < d; c++) {
|
var f = this.children[c].getObjectByProperty(a, b);
|
if (void 0 !== f) return f
|
}
|
},
|
getWorldPosition: function (a) {
|
void 0 === a && (console.warn("THREE.Object3D: .getWorldPosition() target is now required"), a = new q);
|
this.updateMatrixWorld(!0);
|
return a.setFromMatrixPosition(this.matrixWorld)
|
},
|
getWorldQuaternion: function (a) {
|
void 0 === a && (console.warn("THREE.Object3D: .getWorldQuaternion() target is now required"),
|
a = new ya);
|
this.updateMatrixWorld(!0);
|
this.matrixWorld.decompose(Oe, a, Dl);
|
return a
|
},
|
getWorldScale: function (a) {
|
void 0 === a && (console.warn("THREE.Object3D: .getWorldScale() target is now required"), a = new q);
|
this.updateMatrixWorld(!0);
|
this.matrixWorld.decompose(Oe, El, a);
|
return a
|
},
|
getWorldDirection: function (a) {
|
void 0 === a && (console.warn("THREE.Object3D: .getWorldDirection() target is now required"), a = new q);
|
this.updateMatrixWorld(!0);
|
var b = this.matrixWorld.elements;
|
return a.set(b[8], b[9], b[10]).normalize()
|
},
|
raycast: function () {},
|
traverse: function (a) {
|
a(this);
|
for (var b = this.children, c = 0, d = b.length; c < d; c++) b[c].traverse(a)
|
},
|
traverseVisible: function (a) {
|
if (!1 !== this.visible) {
|
a(this);
|
for (var b = this.children, c = 0, d = b.length; c < d; c++) b[c].traverseVisible(a)
|
}
|
},
|
traverseAncestors: function (a) {
|
var b = this.parent;
|
null !== b && (a(b), b.traverseAncestors(a))
|
},
|
updateMatrix: function () {
|
this.matrix.compose(this.position, this.quaternion, this.scale);
|
this.matrixWorldNeedsUpdate = !0
|
},
|
updateMatrixWorld: function (a) {
|
this.matrixAutoUpdate &&
|
this.updateMatrix();
|
if (this.matrixWorldNeedsUpdate || a) null === this.parent ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix), this.matrixWorldNeedsUpdate = !1, a = !0;
|
for (var b = this.children, c = 0, d = b.length; c < d; c++) b[c].updateMatrixWorld(a)
|
},
|
updateWorldMatrix: function (a, b) {
|
var c = this.parent;
|
!0 === a && null !== c && c.updateWorldMatrix(!0, !1);
|
this.matrixAutoUpdate && this.updateMatrix();
|
null === this.parent ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,
|
this.matrix);
|
if (!0 === b)
|
for (a = this.children, b = 0, c = a.length; b < c; b++) a[b].updateWorldMatrix(!1, !0)
|
},
|
toJSON: function (a) {
|
function b(b, c) {
|
void 0 === b[c.uuid] && (b[c.uuid] = c.toJSON(a));
|
return c.uuid
|
}
|
|
function c(a) {
|
var b = [],
|
c;
|
for (c in a) {
|
var d = a[c];
|
delete d.metadata;
|
b.push(d)
|
}
|
return b
|
}
|
var d = void 0 === a || "string" === typeof a,
|
f = {};
|
d && (a = {
|
geometries: {},
|
materials: {},
|
textures: {},
|
images: {},
|
shapes: {}
|
}, f.metadata = {
|
version: 4.5,
|
type: "Object",
|
generator: "Object3D.toJSON"
|
});
|
var g = {};
|
g.uuid = this.uuid;
|
g.type = this.type;
|
"" !==
|
this.name && (g.name = this.name);
|
!0 === this.castShadow && (g.castShadow = !0);
|
!0 === this.receiveShadow && (g.receiveShadow = !0);
|
!1 === this.visible && (g.visible = !1);
|
!1 === this.frustumCulled && (g.frustumCulled = !1);
|
0 !== this.renderOrder && (g.renderOrder = this.renderOrder);
|
"{}" !== JSON.stringify(this.userData) && (g.userData = this.userData);
|
g.layers = this.layers.mask;
|
g.matrix = this.matrix.toArray();
|
!1 === this.matrixAutoUpdate && (g.matrixAutoUpdate = !1);
|
this.isMesh && 0 !== this.drawMode && (g.drawMode = this.drawMode);
|
this.isInstancedMesh &&
|
(g.type = "InstancedMesh", g.count = this.count, g.instanceMatrix = this.instanceMatrix.toJSON());
|
if (this.isMesh || this.isLine || this.isPoints) {
|
g.geometry = b(a.geometries, this.geometry);
|
var k = this.geometry.parameters;
|
if (void 0 !== k && void 0 !== k.shapes)
|
if (k = k.shapes, Array.isArray(k))
|
for (var m = 0, n = k.length; m < n; m++) b(a.shapes, k[m]);
|
else b(a.shapes, k)
|
}
|
if (void 0 !== this.material)
|
if (Array.isArray(this.material)) {
|
k = [];
|
m = 0;
|
for (n = this.material.length; m < n; m++) k.push(b(a.materials, this.material[m]));
|
g.material = k
|
} else g.material =
|
b(a.materials, this.material);
|
if (0 < this.children.length)
|
for (g.children = [], m = 0; m < this.children.length; m++) g.children.push(this.children[m].toJSON(a).object);
|
if (d) {
|
d = c(a.geometries);
|
m = c(a.materials);
|
n = c(a.textures);
|
var l = c(a.images);
|
k = c(a.shapes);
|
0 < d.length && (f.geometries = d);
|
0 < m.length && (f.materials = m);
|
0 < n.length && (f.textures = n);
|
0 < l.length && (f.images = l);
|
0 < k.length && (f.shapes = k)
|
}
|
f.object = g;
|
return f
|
},
|
clone: function (a) {
|
return (new this.constructor).copy(this, a)
|
},
|
copy: function (a, b) {
|
void 0 === b && (b = !0);
|
this.name =
|
a.name;
|
this.up.copy(a.up);
|
this.position.copy(a.position);
|
this.quaternion.copy(a.quaternion);
|
this.scale.copy(a.scale);
|
this.matrix.copy(a.matrix);
|
this.matrixWorld.copy(a.matrixWorld);
|
this.matrixAutoUpdate = a.matrixAutoUpdate;
|
this.matrixWorldNeedsUpdate = a.matrixWorldNeedsUpdate;
|
this.layers.mask = a.layers.mask;
|
this.visible = a.visible;
|
this.castShadow = a.castShadow;
|
this.receiveShadow = a.receiveShadow;
|
this.frustumCulled = a.frustumCulled;
|
this.renderOrder = a.renderOrder;
|
this.userData = JSON.parse(JSON.stringify(a.userData));
|
if (!0 === b)
|
for (b = 0; b < a.children.length; b++) this.add(a.children[b].clone());
|
return this
|
}
|
});
|
Kd.prototype = Object.assign(Object.create(E.prototype), {
|
constructor: Kd,
|
isScene: !0,
|
copy: function (a, b) {
|
E.prototype.copy.call(this, a, b);
|
null !== a.background && (this.background = a.background.clone());
|
null !== a.fog && (this.fog = a.fog.clone());
|
null !== a.overrideMaterial && (this.overrideMaterial = a.overrideMaterial.clone());
|
this.autoUpdate = a.autoUpdate;
|
this.matrixAutoUpdate = a.matrixAutoUpdate;
|
return this
|
},
|
toJSON: function (a) {
|
var b =
|
E.prototype.toJSON.call(this, a);
|
null !== this.background && (b.object.background = this.background.toJSON(a));
|
null !== this.fog && (b.object.fog = this.fog.toJSON());
|
return b
|
},
|
dispose: function () {
|
this.dispatchEvent({
|
type: "dispose"
|
})
|
}
|
});
|
var Db = [new q, new q, new q, new q, new q, new q, new q, new q],
|
ob = new q,
|
Cd = new q,
|
Dd = new q,
|
Ed = new q,
|
Sb = new q,
|
Tb = new q,
|
Cc = new q,
|
Pe = new q,
|
Rf = new q,
|
Sf = new q,
|
$b = new q;
|
Object.assign(gb.prototype, {
|
isBox3: !0,
|
set: function (a, b) {
|
this.min.copy(a);
|
this.max.copy(b);
|
return this
|
},
|
setFromArray: function (a) {
|
for (var b =
|
Infinity, c = Infinity, d = Infinity, f = -Infinity, g = -Infinity, k = -Infinity, m = 0, n = a.length; m < n; m += 3) {
|
var l = a[m],
|
q = a[m + 1],
|
t = a[m + 2];
|
l < b && (b = l);
|
q < c && (c = q);
|
t < d && (d = t);
|
l > f && (f = l);
|
q > g && (g = q);
|
t > k && (k = t)
|
}
|
this.min.set(b, c, d);
|
this.max.set(f, g, k);
|
return this
|
},
|
setFromBufferAttribute: function (a) {
|
for (var b = Infinity, c = Infinity, d = Infinity, f = -Infinity, g = -Infinity, k = -Infinity, m = 0, n = a.count; m < n; m++) {
|
var l = a.getX(m),
|
q = a.getY(m),
|
t = a.getZ(m);
|
l < b && (b = l);
|
q < c && (c = q);
|
t < d && (d = t);
|
l > f && (f = l);
|
q > g && (g = q);
|
t > k && (k = t)
|
}
|
this.min.set(b, c, d);
|
this.max.set(f, g, k);
|
return this
|
},
|
setFromPoints: function (a) {
|
this.makeEmpty();
|
for (var b = 0, c = a.length; b < c; b++) this.expandByPoint(a[b]);
|
return this
|
},
|
setFromCenterAndSize: function (a, b) {
|
b = ob.copy(b).multiplyScalar(.5);
|
this.min.copy(a).sub(b);
|
this.max.copy(a).add(b);
|
return this
|
},
|
setFromObject: function (a) {
|
this.makeEmpty();
|
return this.expandByObject(a)
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.min.copy(a.min);
|
this.max.copy(a.max);
|
return this
|
},
|
makeEmpty: function () {
|
this.min.x =
|
this.min.y = this.min.z = Infinity;
|
this.max.x = this.max.y = this.max.z = -Infinity;
|
return this
|
},
|
isEmpty: function () {
|
return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z
|
},
|
getCenter: function (a) {
|
void 0 === a && (console.warn("THREE.Box3: .getCenter() target is now required"), a = new q);
|
return this.isEmpty() ? a.set(0, 0, 0) : a.addVectors(this.min, this.max).multiplyScalar(.5)
|
},
|
getSize: function (a) {
|
void 0 === a && (console.warn("THREE.Box3: .getSize() target is now required"), a = new q);
|
return this.isEmpty() ?
|
a.set(0, 0, 0) : a.subVectors(this.max, this.min)
|
},
|
expandByPoint: function (a) {
|
this.min.min(a);
|
this.max.max(a);
|
return this
|
},
|
expandByVector: function (a) {
|
this.min.sub(a);
|
this.max.add(a);
|
return this
|
},
|
expandByScalar: function (a) {
|
this.min.addScalar(-a);
|
this.max.addScalar(a);
|
return this
|
},
|
expandByObject: function (a) {
|
var b;
|
a.updateWorldMatrix(!1, !1);
|
var c = a.geometry;
|
if (void 0 !== c)
|
if (c.isGeometry) {
|
var d = c.vertices;
|
c = 0;
|
for (b = d.length; c < b; c++) ob.copy(d[c]), ob.applyMatrix4(a.matrixWorld), this.expandByPoint(ob)
|
} else if (c.isBufferGeometry &&
|
(d = c.attributes.position, void 0 !== d))
|
for (c = 0, b = d.count; c < b; c++) ob.fromBufferAttribute(d, c).applyMatrix4(a.matrixWorld), this.expandByPoint(ob);
|
a = a.children;
|
c = 0;
|
for (b = a.length; c < b; c++) this.expandByObject(a[c]);
|
return this
|
},
|
containsPoint: function (a) {
|
return a.x < this.min.x || a.x > this.max.x || a.y < this.min.y || a.y > this.max.y || a.z < this.min.z || a.z > this.max.z ? !1 : !0
|
},
|
containsBox: function (a) {
|
return this.min.x <= a.min.x && a.max.x <= this.max.x && this.min.y <= a.min.y && a.max.y <= this.max.y && this.min.z <= a.min.z && a.max.z <=
|
this.max.z
|
},
|
getParameter: function (a, b) {
|
void 0 === b && (console.warn("THREE.Box3: .getParameter() target is now required"), b = new q);
|
return b.set((a.x - this.min.x) / (this.max.x - this.min.x), (a.y - this.min.y) / (this.max.y - this.min.y), (a.z - this.min.z) / (this.max.z - this.min.z))
|
},
|
intersectsBox: function (a) {
|
return a.max.x < this.min.x || a.min.x > this.max.x || a.max.y < this.min.y || a.min.y > this.max.y || a.max.z < this.min.z || a.min.z > this.max.z ? !1 : !0
|
},
|
intersectsSphere: function (a) {
|
this.clampPoint(a.center, ob);
|
return ob.distanceToSquared(a.center) <=
|
a.radius * a.radius
|
},
|
intersectsPlane: function (a) {
|
if (0 < a.normal.x) {
|
var b = a.normal.x * this.min.x;
|
var c = a.normal.x * this.max.x
|
} else b = a.normal.x * this.max.x, c = a.normal.x * this.min.x;
|
0 < a.normal.y ? (b += a.normal.y * this.min.y, c += a.normal.y * this.max.y) : (b += a.normal.y * this.max.y, c += a.normal.y * this.min.y);
|
0 < a.normal.z ? (b += a.normal.z * this.min.z, c += a.normal.z * this.max.z) : (b += a.normal.z * this.max.z, c += a.normal.z * this.min.z);
|
return b <= -a.constant && c >= -a.constant
|
},
|
intersectsTriangle: function (a) {
|
if (this.isEmpty()) return !1;
|
this.getCenter(Pe);
|
Rf.subVectors(this.max, Pe);
|
Cd.subVectors(a.a, Pe);
|
Dd.subVectors(a.b, Pe);
|
Ed.subVectors(a.c, Pe);
|
Sb.subVectors(Dd, Cd);
|
Tb.subVectors(Ed, Dd);
|
Cc.subVectors(Cd, Ed);
|
a = [0, -Sb.z, Sb.y, 0, -Tb.z, Tb.y, 0, -Cc.z, Cc.y, Sb.z, 0, -Sb.x, Tb.z, 0, -Tb.x, Cc.z, 0, -Cc.x, -Sb.y, Sb.x, 0, -Tb.y, Tb.x, 0, -Cc.y, Cc.x, 0];
|
if (!sg(a, Cd, Dd, Ed, Rf)) return !1;
|
a = [1, 0, 0, 0, 1, 0, 0, 0, 1];
|
if (!sg(a, Cd, Dd, Ed, Rf)) return !1;
|
Sf.crossVectors(Sb, Tb);
|
a = [Sf.x, Sf.y, Sf.z];
|
return sg(a, Cd, Dd, Ed, Rf)
|
},
|
clampPoint: function (a, b) {
|
void 0 === b && (console.warn("THREE.Box3: .clampPoint() target is now required"),
|
b = new q);
|
return b.copy(a).clamp(this.min, this.max)
|
},
|
distanceToPoint: function (a) {
|
return ob.copy(a).clamp(this.min, this.max).sub(a).length()
|
},
|
getBoundingSphere: function (a) {
|
void 0 === a && console.error("THREE.Box3: .getBoundingSphere() target is now required");
|
this.getCenter(a.center);
|
a.radius = .5 * this.getSize(ob).length();
|
return a
|
},
|
intersect: function (a) {
|
this.min.max(a.min);
|
this.max.min(a.max);
|
this.isEmpty() && this.makeEmpty();
|
return this
|
},
|
union: function (a) {
|
this.min.min(a.min);
|
this.max.max(a.max);
|
return this
|
},
|
applyMatrix4: function (a) {
|
if (this.isEmpty()) return this;
|
Db[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(a);
|
Db[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(a);
|
Db[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(a);
|
Db[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(a);
|
Db[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(a);
|
Db[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(a);
|
Db[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(a);
|
Db[7].set(this.max.x, this.max.y,
|
this.max.z).applyMatrix4(a);
|
this.setFromPoints(Db);
|
return this
|
},
|
translate: function (a) {
|
this.min.add(a);
|
this.max.add(a);
|
return this
|
},
|
equals: function (a) {
|
return a.min.equals(this.min) && a.max.equals(this.max)
|
}
|
});
|
var Hl = new gb;
|
Object.assign(ub.prototype, {
|
set: function (a, b) {
|
this.center.copy(a);
|
this.radius = b;
|
return this
|
},
|
setFromPoints: function (a, b) {
|
var c = this.center;
|
void 0 !== b ? c.copy(b) : Hl.setFromPoints(a).getCenter(c);
|
for (var d = b = 0, f = a.length; d < f; d++) b = Math.max(b, c.distanceToSquared(a[d]));
|
this.radius = Math.sqrt(b);
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.center.copy(a.center);
|
this.radius = a.radius;
|
return this
|
},
|
empty: function () {
|
return 0 >= this.radius
|
},
|
containsPoint: function (a) {
|
return a.distanceToSquared(this.center) <= this.radius * this.radius
|
},
|
distanceToPoint: function (a) {
|
return a.distanceTo(this.center) - this.radius
|
},
|
intersectsSphere: function (a) {
|
var b = this.radius + a.radius;
|
return a.center.distanceToSquared(this.center) <= b * b
|
},
|
intersectsBox: function (a) {
|
return a.intersectsSphere(this)
|
},
|
intersectsPlane: function (a) {
|
return Math.abs(a.distanceToPoint(this.center)) <= this.radius
|
},
|
clampPoint: function (a, b) {
|
var c = this.center.distanceToSquared(a);
|
void 0 === b && (console.warn("THREE.Sphere: .clampPoint() target is now required"), b = new q);
|
b.copy(a);
|
c > this.radius * this.radius && (b.sub(this.center).normalize(), b.multiplyScalar(this.radius).add(this.center));
|
return b
|
},
|
getBoundingBox: function (a) {
|
void 0 === a && (console.warn("THREE.Sphere: .getBoundingBox() target is now required"), a = new gb);
|
a.set(this.center,
|
this.center);
|
a.expandByScalar(this.radius);
|
return a
|
},
|
applyMatrix4: function (a) {
|
this.center.applyMatrix4(a);
|
this.radius *= a.getMaxScaleOnAxis();
|
return this
|
},
|
translate: function (a) {
|
this.center.add(a);
|
return this
|
},
|
equals: function (a) {
|
return a.center.equals(this.center) && a.radius === this.radius
|
}
|
});
|
var Eb = new q,
|
sh = new q,
|
Tf = new q,
|
Ub = new q,
|
th = new q,
|
Uf = new q,
|
uh = new q;
|
Object.assign(ac.prototype, {
|
set: function (a, b) {
|
this.origin.copy(a);
|
this.direction.copy(b);
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.origin.copy(a.origin);
|
this.direction.copy(a.direction);
|
return this
|
},
|
at: function (a, b) {
|
void 0 === b && (console.warn("THREE.Ray: .at() target is now required"), b = new q);
|
return b.copy(this.direction).multiplyScalar(a).add(this.origin)
|
},
|
lookAt: function (a) {
|
this.direction.copy(a).sub(this.origin).normalize();
|
return this
|
},
|
recast: function (a) {
|
this.origin.copy(this.at(a, Eb));
|
return this
|
},
|
closestPointToPoint: function (a, b) {
|
void 0 === b && (console.warn("THREE.Ray: .closestPointToPoint() target is now required"),
|
b = new q);
|
b.subVectors(a, this.origin);
|
a = b.dot(this.direction);
|
return 0 > a ? b.copy(this.origin) : b.copy(this.direction).multiplyScalar(a).add(this.origin)
|
},
|
distanceToPoint: function (a) {
|
return Math.sqrt(this.distanceSqToPoint(a))
|
},
|
distanceSqToPoint: function (a) {
|
var b = Eb.subVectors(a, this.origin).dot(this.direction);
|
if (0 > b) return this.origin.distanceToSquared(a);
|
Eb.copy(this.direction).multiplyScalar(b).add(this.origin);
|
return Eb.distanceToSquared(a)
|
},
|
distanceSqToSegment: function (a, b, c, d) {
|
sh.copy(a).add(b).multiplyScalar(.5);
|
Tf.copy(b).sub(a).normalize();
|
Ub.copy(this.origin).sub(sh);
|
var f = .5 * a.distanceTo(b),
|
g = -this.direction.dot(Tf),
|
k = Ub.dot(this.direction),
|
m = -Ub.dot(Tf),
|
n = Ub.lengthSq(),
|
l = Math.abs(1 - g * g);
|
if (0 < l) {
|
a = g * m - k;
|
b = g * k - m;
|
var q = f * l;
|
0 <= a ? b >= -q ? b <= q ? (f = 1 / l, a *= f, b *= f, g = a * (a + g * b + 2 * k) + b * (g * a + b + 2 * m) + n) : (b = f, a = Math.max(0, -(g * b + k)), g = -a * a + b * (b + 2 * m) + n) : (b = -f, a = Math.max(0, -(g * b + k)), g = -a * a + b * (b + 2 * m) + n) : b <= -q ? (a = Math.max(0, -(-g * f + k)), b = 0 < a ? -f : Math.min(Math.max(-f, -m), f), g = -a * a + b * (b + 2 * m) + n) : b <= q ? (a = 0, b = Math.min(Math.max(-f,
|
-m), f), g = b * (b + 2 * m) + n) : (a = Math.max(0, -(g * f + k)), b = 0 < a ? f : Math.min(Math.max(-f, -m), f), g = -a * a + b * (b + 2 * m) + n)
|
} else b = 0 < g ? -f : f, a = Math.max(0, -(g * b + k)), g = -a * a + b * (b + 2 * m) + n;
|
c && c.copy(this.direction).multiplyScalar(a).add(this.origin);
|
d && d.copy(Tf).multiplyScalar(b).add(sh);
|
return g
|
},
|
intersectSphere: function (a, b) {
|
Eb.subVectors(a.center, this.origin);
|
var c = Eb.dot(this.direction),
|
d = Eb.dot(Eb) - c * c;
|
a = a.radius * a.radius;
|
if (d > a) return null;
|
a = Math.sqrt(a - d);
|
d = c - a;
|
c += a;
|
return 0 > d && 0 > c ? null : 0 > d ? this.at(c, b) : this.at(d, b)
|
},
|
intersectsSphere: function (a) {
|
return this.distanceSqToPoint(a.center) <= a.radius * a.radius
|
},
|
distanceToPlane: function (a) {
|
var b = a.normal.dot(this.direction);
|
if (0 === b) return 0 === a.distanceToPoint(this.origin) ? 0 : null;
|
a = -(this.origin.dot(a.normal) + a.constant) / b;
|
return 0 <= a ? a : null
|
},
|
intersectPlane: function (a, b) {
|
a = this.distanceToPlane(a);
|
return null === a ? null : this.at(a, b)
|
},
|
intersectsPlane: function (a) {
|
var b = a.distanceToPoint(this.origin);
|
return 0 === b || 0 > a.normal.dot(this.direction) * b ? !0 : !1
|
},
|
intersectBox: function (a,
|
b) {
|
var c = 1 / this.direction.x;
|
var d = 1 / this.direction.y;
|
var f = 1 / this.direction.z,
|
g = this.origin;
|
if (0 <= c) {
|
var k = (a.min.x - g.x) * c;
|
c *= a.max.x - g.x
|
} else k = (a.max.x - g.x) * c, c *= a.min.x - g.x;
|
if (0 <= d) {
|
var m = (a.min.y - g.y) * d;
|
d *= a.max.y - g.y
|
} else m = (a.max.y - g.y) * d, d *= a.min.y - g.y;
|
if (k > d || m > c) return null;
|
if (m > k || k !== k) k = m;
|
if (d < c || c !== c) c = d;
|
0 <= f ? (m = (a.min.z - g.z) * f, a = (a.max.z - g.z) * f) : (m = (a.max.z - g.z) * f, a = (a.min.z - g.z) * f);
|
if (k > a || m > c) return null;
|
if (m > k || k !== k) k = m;
|
if (a < c || c !== c) c = a;
|
return 0 > c ? null : this.at(0 <= k ? k : c, b)
|
},
|
intersectsBox: function (a) {
|
return null !==
|
this.intersectBox(a, Eb)
|
},
|
intersectTriangle: function (a, b, c, d, f) {
|
th.subVectors(b, a);
|
Uf.subVectors(c, a);
|
uh.crossVectors(th, Uf);
|
b = this.direction.dot(uh);
|
if (0 < b) {
|
if (d) return null;
|
d = 1
|
} else if (0 > b) d = -1, b = -b;
|
else return null;
|
Ub.subVectors(this.origin, a);
|
a = d * this.direction.dot(Uf.crossVectors(Ub, Uf));
|
if (0 > a) return null;
|
c = d * this.direction.dot(th.cross(Ub));
|
if (0 > c || a + c > b) return null;
|
a = -d * Ub.dot(uh);
|
return 0 > a ? null : this.at(a / b, f)
|
},
|
applyMatrix4: function (a) {
|
this.origin.applyMatrix4(a);
|
this.direction.transformDirection(a);
|
return this
|
},
|
equals: function (a) {
|
return a.origin.equals(this.origin) && a.direction.equals(this.direction)
|
}
|
});
|
var vh = new q,
|
Il = new q,
|
Jl = new ka;
|
Object.assign(Sa.prototype, {
|
isPlane: !0,
|
set: function (a, b) {
|
this.normal.copy(a);
|
this.constant = b;
|
return this
|
},
|
setComponents: function (a, b, c, d) {
|
this.normal.set(a, b, c);
|
this.constant = d;
|
return this
|
},
|
setFromNormalAndCoplanarPoint: function (a, b) {
|
this.normal.copy(a);
|
this.constant = -b.dot(this.normal);
|
return this
|
},
|
setFromCoplanarPoints: function (a, b, c) {
|
b = vh.subVectors(c, b).cross(Il.subVectors(a,
|
b)).normalize();
|
this.setFromNormalAndCoplanarPoint(b, a);
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.normal.copy(a.normal);
|
this.constant = a.constant;
|
return this
|
},
|
normalize: function () {
|
var a = 1 / this.normal.length();
|
this.normal.multiplyScalar(a);
|
this.constant *= a;
|
return this
|
},
|
negate: function () {
|
this.constant *= -1;
|
this.normal.negate();
|
return this
|
},
|
distanceToPoint: function (a) {
|
return this.normal.dot(a) + this.constant
|
},
|
distanceToSphere: function (a) {
|
return this.distanceToPoint(a.center) -
|
a.radius
|
},
|
projectPoint: function (a, b) {
|
void 0 === b && (console.warn("THREE.Plane: .projectPoint() target is now required"), b = new q);
|
return b.copy(this.normal).multiplyScalar(-this.distanceToPoint(a)).add(a)
|
},
|
intersectLine: function (a, b) {
|
void 0 === b && (console.warn("THREE.Plane: .intersectLine() target is now required"), b = new q);
|
var c = a.delta(vh),
|
d = this.normal.dot(c);
|
if (0 === d) {
|
if (0 === this.distanceToPoint(a.start)) return b.copy(a.start)
|
} else if (d = -(a.start.dot(this.normal) + this.constant) / d, !(0 > d || 1 < d)) return b.copy(c).multiplyScalar(d).add(a.start)
|
},
|
intersectsLine: function (a) {
|
var b = this.distanceToPoint(a.start);
|
a = this.distanceToPoint(a.end);
|
return 0 > b && 0 < a || 0 > a && 0 < b
|
},
|
intersectsBox: function (a) {
|
return a.intersectsPlane(this)
|
},
|
intersectsSphere: function (a) {
|
return a.intersectsPlane(this)
|
},
|
coplanarPoint: function (a) {
|
void 0 === a && (console.warn("THREE.Plane: .coplanarPoint() target is now required"), a = new q);
|
return a.copy(this.normal).multiplyScalar(-this.constant)
|
},
|
applyMatrix4: function (a, b) {
|
b = b || Jl.getNormalMatrix(a);
|
a = this.coplanarPoint(vh).applyMatrix4(a);
|
b = this.normal.applyMatrix3(b).normalize();
|
this.constant = -a.dot(b);
|
return this
|
},
|
translate: function (a) {
|
this.constant -= a.dot(this.normal);
|
return this
|
},
|
equals: function (a) {
|
return a.normal.equals(this.normal) && a.constant === this.constant
|
}
|
});
|
var cb = new q,
|
Fb = new q,
|
wh = new q,
|
Gb = new q,
|
Fd = new q,
|
Gd = new q,
|
nj = new q,
|
xh = new q,
|
yh = new q,
|
zh = new q;
|
Object.assign(va, {
|
getNormal: function (a, b, c, d) {
|
void 0 === d && (console.warn("THREE.Triangle: .getNormal() target is now required"), d = new q);
|
d.subVectors(c, b);
|
cb.subVectors(a, b);
|
d.cross(cb);
|
a = d.lengthSq();
|
return 0 < a ? d.multiplyScalar(1 / Math.sqrt(a)) : d.set(0, 0, 0)
|
},
|
getBarycoord: function (a, b, c, d, f) {
|
cb.subVectors(d, b);
|
Fb.subVectors(c, b);
|
wh.subVectors(a, b);
|
a = cb.dot(cb);
|
b = cb.dot(Fb);
|
c = cb.dot(wh);
|
var g = Fb.dot(Fb);
|
d = Fb.dot(wh);
|
var k = a * g - b * b;
|
void 0 === f && (console.warn("THREE.Triangle: .getBarycoord() target is now required"), f = new q);
|
if (0 === k) return f.set(-2, -1, -1);
|
k = 1 / k;
|
g = (g * c - b * d) * k;
|
a = (a * d - b * c) * k;
|
return f.set(1 - g - a, a, g)
|
},
|
containsPoint: function (a, b, c, d) {
|
va.getBarycoord(a, b, c, d, Gb);
|
return 0 <= Gb.x && 0 <= Gb.y && 1 >= Gb.x + Gb.y
|
},
|
getUV: function (a, b, c, d, f, g, k, m) {
|
this.getBarycoord(a, b, c, d, Gb);
|
m.set(0, 0);
|
m.addScaledVector(f, Gb.x);
|
m.addScaledVector(g, Gb.y);
|
m.addScaledVector(k, Gb.z);
|
return m
|
},
|
isFrontFacing: function (a, b, c, d) {
|
cb.subVectors(c, b);
|
Fb.subVectors(a, b);
|
return 0 > cb.cross(Fb).dot(d) ? !0 : !1
|
}
|
});
|
Object.assign(va.prototype, {
|
set: function (a, b, c) {
|
this.a.copy(a);
|
this.b.copy(b);
|
this.c.copy(c);
|
return this
|
},
|
setFromPointsAndIndices: function (a, b, c, d) {
|
this.a.copy(a[b]);
|
this.b.copy(a[c]);
|
this.c.copy(a[d]);
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.a.copy(a.a);
|
this.b.copy(a.b);
|
this.c.copy(a.c);
|
return this
|
},
|
getArea: function () {
|
cb.subVectors(this.c, this.b);
|
Fb.subVectors(this.a, this.b);
|
return .5 * cb.cross(Fb).length()
|
},
|
getMidpoint: function (a) {
|
void 0 === a && (console.warn("THREE.Triangle: .getMidpoint() target is now required"), a = new q);
|
return a.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3)
|
},
|
getNormal: function (a) {
|
return va.getNormal(this.a, this.b,
|
this.c, a)
|
},
|
getPlane: function (a) {
|
void 0 === a && (console.warn("THREE.Triangle: .getPlane() target is now required"), a = new Sa);
|
return a.setFromCoplanarPoints(this.a, this.b, this.c)
|
},
|
getBarycoord: function (a, b) {
|
return va.getBarycoord(a, this.a, this.b, this.c, b)
|
},
|
getUV: function (a, b, c, d, f) {
|
return va.getUV(a, this.a, this.b, this.c, b, c, d, f)
|
},
|
containsPoint: function (a) {
|
return va.containsPoint(a, this.a, this.b, this.c)
|
},
|
isFrontFacing: function (a) {
|
return va.isFrontFacing(this.a, this.b, this.c, a)
|
},
|
intersectsBox: function (a) {
|
return a.intersectsTriangle(this)
|
},
|
closestPointToPoint: function (a, b) {
|
void 0 === b && (console.warn("THREE.Triangle: .closestPointToPoint() target is now required"), b = new q);
|
var c = this.a,
|
d = this.b,
|
f = this.c;
|
Fd.subVectors(d, c);
|
Gd.subVectors(f, c);
|
xh.subVectors(a, c);
|
var g = Fd.dot(xh),
|
k = Gd.dot(xh);
|
if (0 >= g && 0 >= k) return b.copy(c);
|
yh.subVectors(a, d);
|
var m = Fd.dot(yh),
|
n = Gd.dot(yh);
|
if (0 <= m && n <= m) return b.copy(d);
|
var l = g * n - m * k;
|
if (0 >= l && 0 <= g && 0 >= m) return d = g / (g - m), b.copy(c).addScaledVector(Fd, d);
|
zh.subVectors(a, f);
|
a = Fd.dot(zh);
|
var y = Gd.dot(zh);
|
if (0 <=
|
y && a <= y) return b.copy(f);
|
g = a * k - g * y;
|
if (0 >= g && 0 <= k && 0 >= y) return l = k / (k - y), b.copy(c).addScaledVector(Gd, l);
|
k = m * y - a * n;
|
if (0 >= k && 0 <= n - m && 0 <= a - y) return nj.subVectors(f, d), l = (n - m) / (n - m + (a - y)), b.copy(d).addScaledVector(nj, l);
|
f = 1 / (k + g + l);
|
d = g * f;
|
l *= f;
|
return b.copy(c).addScaledVector(Fd, d).addScaledVector(Gd, l)
|
},
|
equals: function (a) {
|
return a.a.equals(this.a) && a.b.equals(this.b) && a.c.equals(this.c)
|
}
|
});
|
var oj = {
|
aliceblue: 15792383,
|
antiquewhite: 16444375,
|
aqua: 65535,
|
aquamarine: 8388564,
|
azure: 15794175,
|
beige: 16119260,
|
bisque: 16770244,
|
black: 0,
|
blanchedalmond: 16772045,
|
blue: 255,
|
blueviolet: 9055202,
|
brown: 10824234,
|
burlywood: 14596231,
|
cadetblue: 6266528,
|
chartreuse: 8388352,
|
chocolate: 13789470,
|
coral: 16744272,
|
cornflowerblue: 6591981,
|
cornsilk: 16775388,
|
crimson: 14423100,
|
cyan: 65535,
|
darkblue: 139,
|
darkcyan: 35723,
|
darkgoldenrod: 12092939,
|
darkgray: 11119017,
|
darkgreen: 25600,
|
darkgrey: 11119017,
|
darkkhaki: 12433259,
|
darkmagenta: 9109643,
|
darkolivegreen: 5597999,
|
darkorange: 16747520,
|
darkorchid: 10040012,
|
darkred: 9109504,
|
darksalmon: 15308410,
|
darkseagreen: 9419919,
|
darkslateblue: 4734347,
|
darkslategray: 3100495,
|
darkslategrey: 3100495,
|
darkturquoise: 52945,
|
darkviolet: 9699539,
|
deeppink: 16716947,
|
deepskyblue: 49151,
|
dimgray: 6908265,
|
dimgrey: 6908265,
|
dodgerblue: 2003199,
|
firebrick: 11674146,
|
floralwhite: 16775920,
|
forestgreen: 2263842,
|
fuchsia: 16711935,
|
gainsboro: 14474460,
|
ghostwhite: 16316671,
|
gold: 16766720,
|
goldenrod: 14329120,
|
gray: 8421504,
|
green: 32768,
|
greenyellow: 11403055,
|
grey: 8421504,
|
honeydew: 15794160,
|
hotpink: 16738740,
|
indianred: 13458524,
|
indigo: 4915330,
|
ivory: 16777200,
|
khaki: 15787660,
|
lavender: 15132410,
|
lavenderblush: 16773365,
|
lawngreen: 8190976,
|
lemonchiffon: 16775885,
|
lightblue: 11393254,
|
lightcoral: 15761536,
|
lightcyan: 14745599,
|
lightgoldenrodyellow: 16448210,
|
lightgray: 13882323,
|
lightgreen: 9498256,
|
lightgrey: 13882323,
|
lightpink: 16758465,
|
lightsalmon: 16752762,
|
lightseagreen: 2142890,
|
lightskyblue: 8900346,
|
lightslategray: 7833753,
|
lightslategrey: 7833753,
|
lightsteelblue: 11584734,
|
lightyellow: 16777184,
|
lime: 65280,
|
limegreen: 3329330,
|
linen: 16445670,
|
magenta: 16711935,
|
maroon: 8388608,
|
mediumaquamarine: 6737322,
|
mediumblue: 205,
|
mediumorchid: 12211667,
|
mediumpurple: 9662683,
|
mediumseagreen: 3978097,
|
mediumslateblue: 8087790,
|
mediumspringgreen: 64154,
|
mediumturquoise: 4772300,
|
mediumvioletred: 13047173,
|
midnightblue: 1644912,
|
mintcream: 16121850,
|
mistyrose: 16770273,
|
moccasin: 16770229,
|
navajowhite: 16768685,
|
navy: 128,
|
oldlace: 16643558,
|
olive: 8421376,
|
olivedrab: 7048739,
|
orange: 16753920,
|
orangered: 16729344,
|
orchid: 14315734,
|
palegoldenrod: 15657130,
|
palegreen: 10025880,
|
paleturquoise: 11529966,
|
palevioletred: 14381203,
|
papayawhip: 16773077,
|
peachpuff: 16767673,
|
peru: 13468991,
|
pink: 16761035,
|
plum: 14524637,
|
powderblue: 11591910,
|
purple: 8388736,
|
rebeccapurple: 6697881,
|
red: 16711680,
|
rosybrown: 12357519,
|
royalblue: 4286945,
|
saddlebrown: 9127187,
|
salmon: 16416882,
|
sandybrown: 16032864,
|
seagreen: 3050327,
|
seashell: 16774638,
|
sienna: 10506797,
|
silver: 12632256,
|
skyblue: 8900331,
|
slateblue: 6970061,
|
slategray: 7372944,
|
slategrey: 7372944,
|
snow: 16775930,
|
springgreen: 65407,
|
steelblue: 4620980,
|
tan: 13808780,
|
teal: 32896,
|
thistle: 14204888,
|
tomato: 16737095,
|
turquoise: 4251856,
|
violet: 15631086,
|
wheat: 16113331,
|
white: 16777215,
|
whitesmoke: 16119285,
|
yellow: 16776960,
|
yellowgreen: 10145074
|
},
|
Ha = {
|
h: 0,
|
s: 0,
|
l: 0
|
},
|
Vf = {
|
h: 0,
|
s: 0,
|
l: 0
|
};
|
Object.assign(D.prototype, {
|
isColor: !0,
|
r: 1,
|
g: 1,
|
b: 1,
|
set: function (a) {
|
a && a.isColor ? this.copy(a) : "number" === typeof a ? this.setHex(a) : "string" === typeof a && this.setStyle(a);
|
return this
|
},
|
setScalar: function (a) {
|
this.b = this.g = this.r = a;
|
return this
|
},
|
setHex: function (a) {
|
a = Math.floor(a);
|
this.r = (a >> 16 & 255) / 255;
|
this.g = (a >> 8 & 255) / 255;
|
this.b = (a & 255) / 255;
|
return this
|
},
|
setRGB: function (a, b, c) {
|
this.r = a;
|
this.g = b;
|
this.b = c;
|
return this
|
},
|
setHSL: function (a, b, c) {
|
a = N.euclideanModulo(a, 1);
|
b = N.clamp(b,
|
0, 1);
|
c = N.clamp(c, 0, 1);
|
0 === b ? this.r = this.g = this.b = c : (b = .5 >= c ? c * (1 + b) : c + b - c * b, c = 2 * c - b, this.r = tg(c, b, a + 1 / 3), this.g = tg(c, b, a), this.b = tg(c, b, a - 1 / 3));
|
return this
|
},
|
setStyle: function (a) {
|
function b(b) {
|
void 0 !== b && 1 > parseFloat(b) && console.warn("THREE.Color: Alpha component of " + a + " will be ignored.")
|
}
|
var c;
|
if (c = /^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(a)) {
|
var d = c[2];
|
switch (c[1]) {
|
case "rgb":
|
case "rgba":
|
if (c = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d)) return this.r = Math.min(255, parseInt(c[1],
|
10)) / 255, this.g = Math.min(255, parseInt(c[2], 10)) / 255, this.b = Math.min(255, parseInt(c[3], 10)) / 255, b(c[5]), this;
|
if (c = /^(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d)) return this.r = Math.min(100, parseInt(c[1], 10)) / 100, this.g = Math.min(100, parseInt(c[2], 10)) / 100, this.b = Math.min(100, parseInt(c[3], 10)) / 100, b(c[5]), this;
|
break;
|
case "hsl":
|
case "hsla":
|
if (c = /^([0-9]*\.?[0-9]+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d)) {
|
d = parseFloat(c[1]) / 360;
|
var f = parseInt(c[2],
|
10) / 100,
|
g = parseInt(c[3], 10) / 100;
|
b(c[5]);
|
return this.setHSL(d, f, g)
|
}
|
}
|
} else if (c = /^#([A-Fa-f0-9]+)$/.exec(a)) {
|
c = c[1];
|
d = c.length;
|
if (3 === d) return this.r = parseInt(c.charAt(0) + c.charAt(0), 16) / 255, this.g = parseInt(c.charAt(1) + c.charAt(1), 16) / 255, this.b = parseInt(c.charAt(2) + c.charAt(2), 16) / 255, this;
|
if (6 === d) return this.r = parseInt(c.charAt(0) + c.charAt(1), 16) / 255, this.g = parseInt(c.charAt(2) + c.charAt(3), 16) / 255, this.b = parseInt(c.charAt(4) + c.charAt(5), 16) / 255, this
|
}
|
return a && 0 < a.length ? this.setColorName(a) : this
|
},
|
setColorName: function (a) {
|
var b = oj[a];
|
void 0 !== b ? this.setHex(b) : console.warn("THREE.Color: Unknown color " + a);
|
return this
|
},
|
clone: function () {
|
return new this.constructor(this.r, this.g, this.b)
|
},
|
copy: function (a) {
|
this.r = a.r;
|
this.g = a.g;
|
this.b = a.b;
|
return this
|
},
|
copyGammaToLinear: function (a, b) {
|
void 0 === b && (b = 2);
|
this.r = Math.pow(a.r, b);
|
this.g = Math.pow(a.g, b);
|
this.b = Math.pow(a.b, b);
|
return this
|
},
|
copyLinearToGamma: function (a, b) {
|
void 0 === b && (b = 2);
|
b = 0 < b ? 1 / b : 1;
|
this.r = Math.pow(a.r, b);
|
this.g = Math.pow(a.g, b);
|
this.b = Math.pow(a.b,
|
b);
|
return this
|
},
|
convertGammaToLinear: function (a) {
|
this.copyGammaToLinear(this, a);
|
return this
|
},
|
convertLinearToGamma: function (a) {
|
this.copyLinearToGamma(this, a);
|
return this
|
},
|
copySRGBToLinear: function (a) {
|
this.r = ug(a.r);
|
this.g = ug(a.g);
|
this.b = ug(a.b);
|
return this
|
},
|
copyLinearToSRGB: function (a) {
|
this.r = vg(a.r);
|
this.g = vg(a.g);
|
this.b = vg(a.b);
|
return this
|
},
|
convertSRGBToLinear: function () {
|
this.copySRGBToLinear(this);
|
return this
|
},
|
convertLinearToSRGB: function () {
|
this.copyLinearToSRGB(this);
|
return this
|
},
|
getHex: function () {
|
return 255 *
|
this.r << 16 ^ 255 * this.g << 8 ^ 255 * this.b << 0
|
},
|
getHexString: function () {
|
return ("000000" + this.getHex().toString(16)).slice(-6)
|
},
|
getHSL: function (a) {
|
void 0 === a && (console.warn("THREE.Color: .getHSL() target is now required"), a = {
|
h: 0,
|
s: 0,
|
l: 0
|
});
|
var b = this.r,
|
c = this.g,
|
d = this.b,
|
f = Math.max(b, c, d),
|
g = Math.min(b, c, d),
|
k, m = (g + f) / 2;
|
if (g === f) g = k = 0;
|
else {
|
var n = f - g;
|
g = .5 >= m ? n / (f + g) : n / (2 - f - g);
|
switch (f) {
|
case b:
|
k = (c - d) / n + (c < d ? 6 : 0);
|
break;
|
case c:
|
k = (d - b) / n + 2;
|
break;
|
case d:
|
k = (b - c) / n + 4
|
}
|
k /= 6
|
}
|
a.h = k;
|
a.s = g;
|
a.l = m;
|
return a
|
},
|
getStyle: function () {
|
return "rgb(" +
|
(255 * this.r | 0) + "," + (255 * this.g | 0) + "," + (255 * this.b | 0) + ")"
|
},
|
offsetHSL: function (a, b, c) {
|
this.getHSL(Ha);
|
Ha.h += a;
|
Ha.s += b;
|
Ha.l += c;
|
this.setHSL(Ha.h, Ha.s, Ha.l);
|
return this
|
},
|
add: function (a) {
|
this.r += a.r;
|
this.g += a.g;
|
this.b += a.b;
|
return this
|
},
|
addColors: function (a, b) {
|
this.r = a.r + b.r;
|
this.g = a.g + b.g;
|
this.b = a.b + b.b;
|
return this
|
},
|
addScalar: function (a) {
|
this.r += a;
|
this.g += a;
|
this.b += a;
|
return this
|
},
|
sub: function (a) {
|
this.r = Math.max(0, this.r - a.r);
|
this.g = Math.max(0, this.g - a.g);
|
this.b = Math.max(0, this.b - a.b);
|
return this
|
},
|
multiply: function (a) {
|
this.r *=
|
a.r;
|
this.g *= a.g;
|
this.b *= a.b;
|
return this
|
},
|
multiplyScalar: function (a) {
|
this.r *= a;
|
this.g *= a;
|
this.b *= a;
|
return this
|
},
|
lerp: function (a, b) {
|
this.r += (a.r - this.r) * b;
|
this.g += (a.g - this.g) * b;
|
this.b += (a.b - this.b) * b;
|
return this
|
},
|
lerpHSL: function (a, b) {
|
this.getHSL(Ha);
|
a.getHSL(Vf);
|
a = N.lerp(Ha.h, Vf.h, b);
|
var c = N.lerp(Ha.s, Vf.s, b);
|
b = N.lerp(Ha.l, Vf.l, b);
|
this.setHSL(a, c, b);
|
return this
|
},
|
equals: function (a) {
|
return a.r === this.r && a.g === this.g && a.b === this.b
|
},
|
fromArray: function (a, b) {
|
void 0 === b && (b = 0);
|
this.r = a[b];
|
this.g = a[b + 1];
|
this.b = a[b + 2];
|
return this
|
},
|
toArray: function (a, b) {
|
void 0 === a && (a = []);
|
void 0 === b && (b = 0);
|
a[b] = this.r;
|
a[b + 1] = this.g;
|
a[b + 2] = this.b;
|
return a
|
},
|
toJSON: function () {
|
return this.getHex()
|
}
|
});
|
D.NAMES = oj;
|
Object.assign(Mc.prototype, {
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.a = a.a;
|
this.b = a.b;
|
this.c = a.c;
|
this.normal.copy(a.normal);
|
this.color.copy(a.color);
|
this.materialIndex = a.materialIndex;
|
for (var b = 0, c = a.vertexNormals.length; b < c; b++) this.vertexNormals[b] = a.vertexNormals[b].clone();
|
b = 0;
|
for (c = a.vertexColors.length; b < c; b++) this.vertexColors[b] = a.vertexColors[b].clone();
|
return this
|
}
|
});
|
var Qj = 0;
|
R.prototype = Object.assign(Object.create(Ra.prototype), {
|
constructor: R,
|
isMaterial: !0,
|
onBeforeCompile: function () {},
|
setValues: function (a) {
|
if (void 0 !== a)
|
for (var b in a) {
|
var c = a[b];
|
if (void 0 === c) console.warn("THREE.Material: '" + b + "' parameter is undefined.");
|
else if ("shading" === b) console.warn("THREE." + this.type + ": .shading has been removed. Use the boolean .flatShading instead."), this.flatShading =
|
1 === c ? !0 : !1;
|
else {
|
var d = this[b];
|
void 0 === d ? console.warn("THREE." + this.type + ": '" + b + "' is not a property of this material.") : d && d.isColor ? d.set(c) : d && d.isVector3 && c && c.isVector3 ? d.copy(c) : this[b] = c
|
}
|
}
|
},
|
toJSON: function (a) {
|
function b(a) {
|
var b = [],
|
c;
|
for (c in a) {
|
var d = a[c];
|
delete d.metadata;
|
b.push(d)
|
}
|
return b
|
}
|
var c = void 0 === a || "string" === typeof a;
|
c && (a = {
|
textures: {},
|
images: {}
|
});
|
var d = {
|
metadata: {
|
version: 4.5,
|
type: "Material",
|
generator: "Material.toJSON"
|
}
|
};
|
d.uuid = this.uuid;
|
d.type = this.type;
|
"" !== this.name && (d.name =
|
this.name);
|
this.color && this.color.isColor && (d.color = this.color.getHex());
|
void 0 !== this.roughness && (d.roughness = this.roughness);
|
void 0 !== this.metalness && (d.metalness = this.metalness);
|
this.sheen && this.sheen.isColor && (d.sheen = this.sheen.getHex());
|
this.emissive && this.emissive.isColor && (d.emissive = this.emissive.getHex());
|
this.emissiveIntensity && 1 !== this.emissiveIntensity && (d.emissiveIntensity = this.emissiveIntensity);
|
this.specular && this.specular.isColor && (d.specular = this.specular.getHex());
|
void 0 !== this.shininess &&
|
(d.shininess = this.shininess);
|
void 0 !== this.clearcoat && (d.clearcoat = this.clearcoat);
|
void 0 !== this.clearcoatRoughness && (d.clearcoatRoughness = this.clearcoatRoughness);
|
this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture && (d.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(a).uuid, d.clearcoatNormalScale = this.clearcoatNormalScale.toArray());
|
this.map && this.map.isTexture && (d.map = this.map.toJSON(a).uuid);
|
this.matcap && this.matcap.isTexture && (d.matcap = this.matcap.toJSON(a).uuid);
|
this.alphaMap && this.alphaMap.isTexture &&
|
(d.alphaMap = this.alphaMap.toJSON(a).uuid);
|
this.lightMap && this.lightMap.isTexture && (d.lightMap = this.lightMap.toJSON(a).uuid);
|
this.aoMap && this.aoMap.isTexture && (d.aoMap = this.aoMap.toJSON(a).uuid, d.aoMapIntensity = this.aoMapIntensity);
|
this.bumpMap && this.bumpMap.isTexture && (d.bumpMap = this.bumpMap.toJSON(a).uuid, d.bumpScale = this.bumpScale);
|
this.normalMap && this.normalMap.isTexture && (d.normalMap = this.normalMap.toJSON(a).uuid, d.normalMapType = this.normalMapType, d.normalScale = this.normalScale.toArray());
|
this.displacementMap &&
|
this.displacementMap.isTexture && (d.displacementMap = this.displacementMap.toJSON(a).uuid, d.displacementScale = this.displacementScale, d.displacementBias = this.displacementBias);
|
this.roughnessMap && this.roughnessMap.isTexture && (d.roughnessMap = this.roughnessMap.toJSON(a).uuid);
|
this.metalnessMap && this.metalnessMap.isTexture && (d.metalnessMap = this.metalnessMap.toJSON(a).uuid);
|
this.emissiveMap && this.emissiveMap.isTexture && (d.emissiveMap = this.emissiveMap.toJSON(a).uuid);
|
this.specularMap && this.specularMap.isTexture &&
|
(d.specularMap = this.specularMap.toJSON(a).uuid);
|
this.envMap && this.envMap.isTexture && (d.envMap = this.envMap.toJSON(a).uuid, d.reflectivity = this.reflectivity, d.refractionRatio = this.refractionRatio, void 0 !== this.combine && (d.combine = this.combine), void 0 !== this.envMapIntensity && (d.envMapIntensity = this.envMapIntensity));
|
this.gradientMap && this.gradientMap.isTexture && (d.gradientMap = this.gradientMap.toJSON(a).uuid);
|
void 0 !== this.size && (d.size = this.size);
|
void 0 !== this.sizeAttenuation && (d.sizeAttenuation = this.sizeAttenuation);
|
1 !== this.blending && (d.blending = this.blending);
|
!0 === this.flatShading && (d.flatShading = this.flatShading);
|
0 !== this.side && (d.side = this.side);
|
0 !== this.vertexColors && (d.vertexColors = this.vertexColors);
|
1 > this.opacity && (d.opacity = this.opacity);
|
!0 === this.transparent && (d.transparent = this.transparent);
|
d.depthFunc = this.depthFunc;
|
d.depthTest = this.depthTest;
|
d.depthWrite = this.depthWrite;
|
d.stencilWrite = this.stencilWrite;
|
d.stencilWriteMask = this.stencilWriteMask;
|
d.stencilFunc = this.stencilFunc;
|
d.stencilRef = this.stencilRef;
|
d.stencilFuncMask = this.stencilFuncMask;
|
d.stencilFail = this.stencilFail;
|
d.stencilZFail = this.stencilZFail;
|
d.stencilZPass = this.stencilZPass;
|
this.rotation && 0 !== this.rotation && (d.rotation = this.rotation);
|
!0 === this.polygonOffset && (d.polygonOffset = !0);
|
0 !== this.polygonOffsetFactor && (d.polygonOffsetFactor = this.polygonOffsetFactor);
|
0 !== this.polygonOffsetUnits && (d.polygonOffsetUnits = this.polygonOffsetUnits);
|
this.linewidth && 1 !== this.linewidth && (d.linewidth = this.linewidth);
|
void 0 !== this.dashSize && (d.dashSize = this.dashSize);
|
void 0 !== this.gapSize && (d.gapSize = this.gapSize);
|
void 0 !== this.scale && (d.scale = this.scale);
|
!0 === this.dithering && (d.dithering = !0);
|
0 < this.alphaTest && (d.alphaTest = this.alphaTest);
|
!0 === this.premultipliedAlpha && (d.premultipliedAlpha = this.premultipliedAlpha);
|
!0 === this.wireframe && (d.wireframe = this.wireframe);
|
1 < this.wireframeLinewidth && (d.wireframeLinewidth = this.wireframeLinewidth);
|
"round" !== this.wireframeLinecap && (d.wireframeLinecap = this.wireframeLinecap);
|
"round" !== this.wireframeLinejoin && (d.wireframeLinejoin =
|
this.wireframeLinejoin);
|
!0 === this.morphTargets && (d.morphTargets = !0);
|
!0 === this.morphNormals && (d.morphNormals = !0);
|
!0 === this.skinning && (d.skinning = !0);
|
!1 === this.visible && (d.visible = !1);
|
!1 === this.toneMapped && (d.toneMapped = !1);
|
"{}" !== JSON.stringify(this.userData) && (d.userData = this.userData);
|
c && (c = b(a.textures), a = b(a.images), 0 < c.length && (d.textures = c), 0 < a.length && (d.images = a));
|
return d
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.name = a.name;
|
this.fog = a.fog;
|
this.blending =
|
a.blending;
|
this.side = a.side;
|
this.flatShading = a.flatShading;
|
this.vertexTangents = a.vertexTangents;
|
this.vertexColors = a.vertexColors;
|
this.opacity = a.opacity;
|
this.transparent = a.transparent;
|
this.blendSrc = a.blendSrc;
|
this.blendDst = a.blendDst;
|
this.blendEquation = a.blendEquation;
|
this.blendSrcAlpha = a.blendSrcAlpha;
|
this.blendDstAlpha = a.blendDstAlpha;
|
this.blendEquationAlpha = a.blendEquationAlpha;
|
this.depthFunc = a.depthFunc;
|
this.depthTest = a.depthTest;
|
this.depthWrite = a.depthWrite;
|
this.stencilWriteMask = a.stencilWriteMask;
|
this.stencilFunc = a.stencilFunc;
|
this.stencilRef = a.stencilRef;
|
this.stencilFuncMask = a.stencilFuncMask;
|
this.stencilFail = a.stencilFail;
|
this.stencilZFail = a.stencilZFail;
|
this.stencilZPass = a.stencilZPass;
|
this.stencilWrite = a.stencilWrite;
|
var b = a.clippingPlanes,
|
c = null;
|
if (null !== b) {
|
var d = b.length;
|
c = Array(d);
|
for (var f = 0; f !== d; ++f) c[f] = b[f].clone()
|
}
|
this.clippingPlanes = c;
|
this.clipIntersection = a.clipIntersection;
|
this.clipShadows = a.clipShadows;
|
this.shadowSide = a.shadowSide;
|
this.colorWrite = a.colorWrite;
|
this.precision =
|
a.precision;
|
this.polygonOffset = a.polygonOffset;
|
this.polygonOffsetFactor = a.polygonOffsetFactor;
|
this.polygonOffsetUnits = a.polygonOffsetUnits;
|
this.dithering = a.dithering;
|
this.alphaTest = a.alphaTest;
|
this.premultipliedAlpha = a.premultipliedAlpha;
|
this.visible = a.visible;
|
this.toneMapped = a.toneMapped;
|
this.userData = JSON.parse(JSON.stringify(a.userData));
|
return this
|
},
|
dispose: function () {
|
this.dispatchEvent({
|
type: "dispose"
|
})
|
}
|
});
|
Ia.prototype = Object.create(R.prototype);
|
Ia.prototype.constructor = Ia;
|
Ia.prototype.isMeshBasicMaterial = !0;
|
Ia.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.color.copy(a.color);
|
this.map = a.map;
|
this.lightMap = a.lightMap;
|
this.lightMapIntensity = a.lightMapIntensity;
|
this.aoMap = a.aoMap;
|
this.aoMapIntensity = a.aoMapIntensity;
|
this.specularMap = a.specularMap;
|
this.alphaMap = a.alphaMap;
|
this.envMap = a.envMap;
|
this.combine = a.combine;
|
this.reflectivity = a.reflectivity;
|
this.refractionRatio = a.refractionRatio;
|
this.wireframe = a.wireframe;
|
this.wireframeLinewidth = a.wireframeLinewidth;
|
this.wireframeLinecap = a.wireframeLinecap;
|
this.wireframeLinejoin = a.wireframeLinejoin;
|
this.skinning = a.skinning;
|
this.morphTargets = a.morphTargets;
|
return this
|
};
|
Object.defineProperty(O.prototype, "needsUpdate", {
|
set: function (a) {
|
!0 === a && this.version++
|
}
|
});
|
Object.assign(O.prototype, {
|
isBufferAttribute: !0,
|
onUploadCallback: function () {},
|
setUsage: function (a) {
|
this.usage = a;
|
return this
|
},
|
copy: function (a) {
|
this.name = a.name;
|
this.array = new a.array.constructor(a.array);
|
this.itemSize = a.itemSize;
|
this.count = a.count;
|
this.normalized = a.normalized;
|
this.usage = a.usage;
|
return this
|
},
|
copyAt: function (a, b, c) {
|
a *= this.itemSize;
|
c *= b.itemSize;
|
for (var d = 0, f = this.itemSize; d < f; d++) this.array[a + d] = b.array[c + d];
|
return this
|
},
|
copyArray: function (a) {
|
this.array.set(a);
|
return this
|
},
|
copyColorsArray: function (a) {
|
for (var b = this.array, c = 0, d = 0, f = a.length; d < f; d++) {
|
var g = a[d];
|
void 0 === g && (console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined", d), g = new D);
|
b[c++] = g.r;
|
b[c++] = g.g;
|
b[c++] = g.b
|
}
|
return this
|
},
|
copyVector2sArray: function (a) {
|
for (var b = this.array, c = 0, d = 0, f = a.length; d < f; d++) {
|
var g =
|
a[d];
|
void 0 === g && (console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined", d), g = new z);
|
b[c++] = g.x;
|
b[c++] = g.y
|
}
|
return this
|
},
|
copyVector3sArray: function (a) {
|
for (var b = this.array, c = 0, d = 0, f = a.length; d < f; d++) {
|
var g = a[d];
|
void 0 === g && (console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined", d), g = new q);
|
b[c++] = g.x;
|
b[c++] = g.y;
|
b[c++] = g.z
|
}
|
return this
|
},
|
copyVector4sArray: function (a) {
|
for (var b = this.array, c = 0, d = 0, f = a.length; d < f; d++) {
|
var g = a[d];
|
void 0 === g && (console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",
|
d), g = new ca);
|
b[c++] = g.x;
|
b[c++] = g.y;
|
b[c++] = g.z;
|
b[c++] = g.w
|
}
|
return this
|
},
|
set: function (a, b) {
|
void 0 === b && (b = 0);
|
this.array.set(a, b);
|
return this
|
},
|
getX: function (a) {
|
return this.array[a * this.itemSize]
|
},
|
setX: function (a, b) {
|
this.array[a * this.itemSize] = b;
|
return this
|
},
|
getY: function (a) {
|
return this.array[a * this.itemSize + 1]
|
},
|
setY: function (a, b) {
|
this.array[a * this.itemSize + 1] = b;
|
return this
|
},
|
getZ: function (a) {
|
return this.array[a * this.itemSize + 2]
|
},
|
setZ: function (a, b) {
|
this.array[a * this.itemSize + 2] = b;
|
return this
|
},
|
getW: function (a) {
|
return this.array[a *
|
this.itemSize + 3]
|
},
|
setW: function (a, b) {
|
this.array[a * this.itemSize + 3] = b;
|
return this
|
},
|
setXY: function (a, b, c) {
|
a *= this.itemSize;
|
this.array[a + 0] = b;
|
this.array[a + 1] = c;
|
return this
|
},
|
setXYZ: function (a, b, c, d) {
|
a *= this.itemSize;
|
this.array[a + 0] = b;
|
this.array[a + 1] = c;
|
this.array[a + 2] = d;
|
return this
|
},
|
setXYZW: function (a, b, c, d, f) {
|
a *= this.itemSize;
|
this.array[a + 0] = b;
|
this.array[a + 1] = c;
|
this.array[a + 2] = d;
|
this.array[a + 3] = f;
|
return this
|
},
|
onUpload: function (a) {
|
this.onUploadCallback = a;
|
return this
|
},
|
clone: function () {
|
return (new this.constructor(this.array,
|
this.itemSize)).copy(this)
|
},
|
toJSON: function () {
|
return {
|
itemSize: this.itemSize,
|
type: this.array.constructor.name,
|
array: Array.prototype.slice.call(this.array),
|
normalized: this.normalized
|
}
|
}
|
});
|
Ld.prototype = Object.create(O.prototype);
|
Ld.prototype.constructor = Ld;
|
Md.prototype = Object.create(O.prototype);
|
Md.prototype.constructor = Md;
|
Nd.prototype = Object.create(O.prototype);
|
Nd.prototype.constructor = Nd;
|
Od.prototype = Object.create(O.prototype);
|
Od.prototype.constructor = Od;
|
bc.prototype = Object.create(O.prototype);
|
bc.prototype.constructor =
|
bc;
|
Pd.prototype = Object.create(O.prototype);
|
Pd.prototype.constructor = Pd;
|
cc.prototype = Object.create(O.prototype);
|
cc.prototype.constructor = cc;
|
F.prototype = Object.create(O.prototype);
|
F.prototype.constructor = F;
|
Qd.prototype = Object.create(O.prototype);
|
Qd.prototype.constructor = Qd;
|
Object.assign(Vh.prototype, {
|
computeGroups: function (a) {
|
var b = [],
|
c = void 0;
|
a = a.faces;
|
for (var d = 0; d < a.length; d++) {
|
var f = a[d];
|
if (f.materialIndex !== c) {
|
c = f.materialIndex;
|
void 0 !== g && (g.count = 3 * d - g.start, b.push(g));
|
var g = {
|
start: 3 * d,
|
materialIndex: c
|
}
|
}
|
}
|
void 0 !==
|
g && (g.count = 3 * d - g.start, b.push(g));
|
this.groups = b
|
},
|
fromGeometry: function (a) {
|
var b = a.faces,
|
c = a.vertices,
|
d = a.faceVertexUvs,
|
f = d[0] && 0 < d[0].length,
|
g = d[1] && 0 < d[1].length,
|
k = a.morphTargets,
|
m = k.length;
|
if (0 < m) {
|
var n = [];
|
for (var l = 0; l < m; l++) n[l] = {
|
name: k[l].name,
|
data: []
|
};
|
this.morphTargets.position = n
|
}
|
var q = a.morphNormals,
|
t = q.length;
|
if (0 < t) {
|
var r = [];
|
for (l = 0; l < t; l++) r[l] = {
|
name: q[l].name,
|
data: []
|
};
|
this.morphTargets.normal = r
|
}
|
var u = a.skinIndices,
|
v = a.skinWeights,
|
w = u.length === c.length,
|
x = v.length === c.length;
|
0 < c.length &&
|
0 === b.length && console.error("THREE.DirectGeometry: Faceless geometries are not supported.");
|
for (l = 0; l < b.length; l++) {
|
var B = b[l];
|
this.vertices.push(c[B.a], c[B.b], c[B.c]);
|
var C = B.vertexNormals;
|
3 === C.length ? this.normals.push(C[0], C[1], C[2]) : (C = B.normal, this.normals.push(C, C, C));
|
C = B.vertexColors;
|
3 === C.length ? this.colors.push(C[0], C[1], C[2]) : (C = B.color, this.colors.push(C, C, C));
|
!0 === f && (C = d[0][l], void 0 !== C ? this.uvs.push(C[0], C[1], C[2]) : (console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",
|
l), this.uvs.push(new z, new z, new z)));
|
!0 === g && (C = d[1][l], void 0 !== C ? this.uvs2.push(C[0], C[1], C[2]) : (console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ", l), this.uvs2.push(new z, new z, new z)));
|
for (C = 0; C < m; C++) {
|
var A = k[C].vertices;
|
n[C].data.push(A[B.a], A[B.b], A[B.c])
|
}
|
for (C = 0; C < t; C++) A = q[C].vertexNormals[l], r[C].data.push(A.a, A.b, A.c);
|
w && this.skinIndices.push(u[B.a], u[B.b], u[B.c]);
|
x && this.skinWeights.push(v[B.a], v[B.b], v[B.c])
|
}
|
this.computeGroups(a);
|
this.verticesNeedUpdate = a.verticesNeedUpdate;
|
this.normalsNeedUpdate = a.normalsNeedUpdate;
|
this.colorsNeedUpdate = a.colorsNeedUpdate;
|
this.uvsNeedUpdate = a.uvsNeedUpdate;
|
this.groupsNeedUpdate = a.groupsNeedUpdate;
|
null !== a.boundingSphere && (this.boundingSphere = a.boundingSphere.clone());
|
null !== a.boundingBox && (this.boundingBox = a.boundingBox.clone());
|
return this
|
}
|
});
|
var Rj = 1,
|
pb = new I,
|
Ah = new E,
|
Wf = new q,
|
Dc = new gb,
|
Bh = new gb,
|
db = new q;
|
G.prototype = Object.assign(Object.create(Ra.prototype), {
|
constructor: G,
|
isBufferGeometry: !0,
|
getIndex: function () {
|
return this.index
|
},
|
setIndex: function (a) {
|
Array.isArray(a) ? this.index = new(65535 < Wh(a) ? cc : bc)(a, 1) : this.index = a
|
},
|
getAttribute: function (a) {
|
return this.attributes[a]
|
},
|
setAttribute: function (a, b) {
|
this.attributes[a] = b;
|
return this
|
},
|
deleteAttribute: function (a) {
|
delete this.attributes[a];
|
return this
|
},
|
addGroup: function (a, b, c) {
|
this.groups.push({
|
start: a,
|
count: b,
|
materialIndex: void 0 !== c ? c : 0
|
})
|
},
|
clearGroups: function () {
|
this.groups = []
|
},
|
setDrawRange: function (a, b) {
|
this.drawRange.start = a;
|
this.drawRange.count = b
|
},
|
applyMatrix: function (a) {
|
var b =
|
this.attributes.position;
|
void 0 !== b && (a.applyToBufferAttribute(b), b.needsUpdate = !0);
|
var c = this.attributes.normal;
|
void 0 !== c && (b = (new ka).getNormalMatrix(a), b.applyToBufferAttribute(c), c.needsUpdate = !0);
|
c = this.attributes.tangent;
|
void 0 !== c && (b = (new ka).getNormalMatrix(a), b.applyToBufferAttribute(c), c.needsUpdate = !0);
|
null !== this.boundingBox && this.computeBoundingBox();
|
null !== this.boundingSphere && this.computeBoundingSphere();
|
return this
|
},
|
rotateX: function (a) {
|
pb.makeRotationX(a);
|
this.applyMatrix(pb);
|
return this
|
},
|
rotateY: function (a) {
|
pb.makeRotationY(a);
|
this.applyMatrix(pb);
|
return this
|
},
|
rotateZ: function (a) {
|
pb.makeRotationZ(a);
|
this.applyMatrix(pb);
|
return this
|
},
|
translate: function (a, b, c) {
|
pb.makeTranslation(a, b, c);
|
this.applyMatrix(pb);
|
return this
|
},
|
scale: function (a, b, c) {
|
pb.makeScale(a, b, c);
|
this.applyMatrix(pb);
|
return this
|
},
|
lookAt: function (a) {
|
Ah.lookAt(a);
|
Ah.updateMatrix();
|
this.applyMatrix(Ah.matrix);
|
return this
|
},
|
center: function () {
|
this.computeBoundingBox();
|
this.boundingBox.getCenter(Wf).negate();
|
this.translate(Wf.x,
|
Wf.y, Wf.z);
|
return this
|
},
|
setFromObject: function (a) {
|
var b = a.geometry;
|
if (a.isPoints || a.isLine) {
|
a = new F(3 * b.vertices.length, 3);
|
var c = new F(3 * b.colors.length, 3);
|
this.setAttribute("position", a.copyVector3sArray(b.vertices));
|
this.setAttribute("color", c.copyColorsArray(b.colors));
|
b.lineDistances && b.lineDistances.length === b.vertices.length && (a = new F(b.lineDistances.length, 1), this.setAttribute("lineDistance", a.copyArray(b.lineDistances)));
|
null !== b.boundingSphere && (this.boundingSphere = b.boundingSphere.clone());
|
null !== b.boundingBox && (this.boundingBox = b.boundingBox.clone())
|
} else a.isMesh && b && b.isGeometry && this.fromGeometry(b);
|
return this
|
},
|
setFromPoints: function (a) {
|
for (var b = [], c = 0, d = a.length; c < d; c++) {
|
var f = a[c];
|
b.push(f.x, f.y, f.z || 0)
|
}
|
this.setAttribute("position", new F(b, 3));
|
return this
|
},
|
updateFromObject: function (a) {
|
var b = a.geometry;
|
if (a.isMesh) {
|
var c = b.__directGeometry;
|
!0 === b.elementsNeedUpdate && (c = void 0, b.elementsNeedUpdate = !1);
|
if (void 0 === c) return this.fromGeometry(b);
|
c.verticesNeedUpdate = b.verticesNeedUpdate;
|
c.normalsNeedUpdate = b.normalsNeedUpdate;
|
c.colorsNeedUpdate = b.colorsNeedUpdate;
|
c.uvsNeedUpdate = b.uvsNeedUpdate;
|
c.groupsNeedUpdate = b.groupsNeedUpdate;
|
b.verticesNeedUpdate = !1;
|
b.normalsNeedUpdate = !1;
|
b.colorsNeedUpdate = !1;
|
b.uvsNeedUpdate = !1;
|
b.groupsNeedUpdate = !1;
|
b = c
|
}!0 === b.verticesNeedUpdate && (c = this.attributes.position, void 0 !== c && (c.copyVector3sArray(b.vertices), c.needsUpdate = !0), b.verticesNeedUpdate = !1);
|
!0 === b.normalsNeedUpdate && (c = this.attributes.normal, void 0 !== c && (c.copyVector3sArray(b.normals),
|
c.needsUpdate = !0), b.normalsNeedUpdate = !1);
|
!0 === b.colorsNeedUpdate && (c = this.attributes.color, void 0 !== c && (c.copyColorsArray(b.colors), c.needsUpdate = !0), b.colorsNeedUpdate = !1);
|
b.uvsNeedUpdate && (c = this.attributes.uv, void 0 !== c && (c.copyVector2sArray(b.uvs), c.needsUpdate = !0), b.uvsNeedUpdate = !1);
|
b.lineDistancesNeedUpdate && (c = this.attributes.lineDistance, void 0 !== c && (c.copyArray(b.lineDistances), c.needsUpdate = !0), b.lineDistancesNeedUpdate = !1);
|
b.groupsNeedUpdate && (b.computeGroups(a.geometry), this.groups =
|
b.groups, b.groupsNeedUpdate = !1);
|
return this
|
},
|
fromGeometry: function (a) {
|
a.__directGeometry = (new Vh).fromGeometry(a);
|
return this.fromDirectGeometry(a.__directGeometry)
|
},
|
fromDirectGeometry: function (a) {
|
var b = new Float32Array(3 * a.vertices.length);
|
this.setAttribute("position", (new O(b, 3)).copyVector3sArray(a.vertices));
|
0 < a.normals.length && (b = new Float32Array(3 * a.normals.length), this.setAttribute("normal", (new O(b, 3)).copyVector3sArray(a.normals)));
|
0 < a.colors.length && (b = new Float32Array(3 * a.colors.length),
|
this.setAttribute("color", (new O(b, 3)).copyColorsArray(a.colors)));
|
0 < a.uvs.length && (b = new Float32Array(2 * a.uvs.length), this.setAttribute("uv", (new O(b, 2)).copyVector2sArray(a.uvs)));
|
0 < a.uvs2.length && (b = new Float32Array(2 * a.uvs2.length), this.setAttribute("uv2", (new O(b, 2)).copyVector2sArray(a.uvs2)));
|
this.groups = a.groups;
|
for (var c in a.morphTargets) {
|
b = [];
|
for (var d = a.morphTargets[c], f = 0, g = d.length; f < g; f++) {
|
var k = d[f],
|
m = new F(3 * k.data.length, 3);
|
m.name = k.name;
|
b.push(m.copyVector3sArray(k.data))
|
}
|
this.morphAttributes[c] =
|
b
|
}
|
0 < a.skinIndices.length && (c = new F(4 * a.skinIndices.length, 4), this.setAttribute("skinIndex", c.copyVector4sArray(a.skinIndices)));
|
0 < a.skinWeights.length && (c = new F(4 * a.skinWeights.length, 4), this.setAttribute("skinWeight", c.copyVector4sArray(a.skinWeights)));
|
null !== a.boundingSphere && (this.boundingSphere = a.boundingSphere.clone());
|
null !== a.boundingBox && (this.boundingBox = a.boundingBox.clone());
|
return this
|
},
|
computeBoundingBox: function () {
|
null === this.boundingBox && (this.boundingBox = new gb);
|
var a = this.attributes.position,
|
b = this.morphAttributes.position;
|
if (void 0 !== a) {
|
if (this.boundingBox.setFromBufferAttribute(a), b) {
|
a = 0;
|
for (var c = b.length; a < c; a++) Dc.setFromBufferAttribute(b[a]), this.boundingBox.expandByPoint(Dc.min), this.boundingBox.expandByPoint(Dc.max)
|
}
|
} else this.boundingBox.makeEmpty();
|
(isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) && console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',
|
this)
|
},
|
computeBoundingSphere: function () {
|
null === this.boundingSphere && (this.boundingSphere = new ub);
|
var a = this.attributes.position,
|
b = this.morphAttributes.position;
|
if (a) {
|
var c = this.boundingSphere.center;
|
Dc.setFromBufferAttribute(a);
|
if (b)
|
for (var d = 0, f = b.length; d < f; d++) {
|
var g = b[d];
|
Bh.setFromBufferAttribute(g);
|
Dc.expandByPoint(Bh.min);
|
Dc.expandByPoint(Bh.max)
|
}
|
Dc.getCenter(c);
|
var k = 0;
|
d = 0;
|
for (f = a.count; d < f; d++) db.fromBufferAttribute(a, d), k = Math.max(k, c.distanceToSquared(db));
|
if (b)
|
for (d = 0, f = b.length; d < f; d++) {
|
g =
|
b[d];
|
a = 0;
|
for (var m = g.count; a < m; a++) db.fromBufferAttribute(g, a), k = Math.max(k, c.distanceToSquared(db))
|
}
|
this.boundingSphere.radius = Math.sqrt(k);
|
isNaN(this.boundingSphere.radius) && console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this)
|
}
|
},
|
computeFaceNormals: function () {},
|
computeVertexNormals: function () {
|
var a = this.index,
|
b = this.attributes;
|
if (b.position) {
|
var c = b.position.array;
|
if (void 0 === b.normal) this.setAttribute("normal",
|
new O(new Float32Array(c.length), 3));
|
else
|
for (var d = b.normal.array, f = 0, g = d.length; f < g; f++) d[f] = 0;
|
d = b.normal.array;
|
var k = new q,
|
m = new q,
|
n = new q,
|
l = new q,
|
y = new q;
|
if (a) {
|
var t = a.array;
|
f = 0;
|
for (g = a.count; f < g; f += 3) {
|
a = 3 * t[f + 0];
|
var r = 3 * t[f + 1];
|
var u = 3 * t[f + 2];
|
k.fromArray(c, a);
|
m.fromArray(c, r);
|
n.fromArray(c, u);
|
l.subVectors(n, m);
|
y.subVectors(k, m);
|
l.cross(y);
|
d[a] += l.x;
|
d[a + 1] += l.y;
|
d[a + 2] += l.z;
|
d[r] += l.x;
|
d[r + 1] += l.y;
|
d[r + 2] += l.z;
|
d[u] += l.x;
|
d[u + 1] += l.y;
|
d[u + 2] += l.z
|
}
|
} else
|
for (f = 0, g = c.length; f < g; f += 9) k.fromArray(c, f), m.fromArray(c,
|
f + 3), n.fromArray(c, f + 6), l.subVectors(n, m), y.subVectors(k, m), l.cross(y), d[f] = l.x, d[f + 1] = l.y, d[f + 2] = l.z, d[f + 3] = l.x, d[f + 4] = l.y, d[f + 5] = l.z, d[f + 6] = l.x, d[f + 7] = l.y, d[f + 8] = l.z;
|
this.normalizeNormals();
|
b.normal.needsUpdate = !0
|
}
|
},
|
merge: function (a, b) {
|
if (a && a.isBufferGeometry) {
|
void 0 === b && (b = 0, console.warn("THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge."));
|
var c = this.attributes,
|
d;
|
for (d in c)
|
if (void 0 !== a.attributes[d]) {
|
var f =
|
c[d].array,
|
g = a.attributes[d],
|
k = g.array,
|
m = g.itemSize * b;
|
g = Math.min(k.length, f.length - m);
|
for (var n = 0; n < g; n++, m++) f[m] = k[n]
|
} return this
|
}
|
console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.", a)
|
},
|
normalizeNormals: function () {
|
for (var a = this.attributes.normal, b = 0, c = a.count; b < c; b++) db.x = a.getX(b), db.y = a.getY(b), db.z = a.getZ(b), db.normalize(), a.setXYZ(b, db.x, db.y, db.z)
|
},
|
toNonIndexed: function () {
|
function a(a, b) {
|
var c = a.array;
|
a = a.itemSize;
|
for (var d = new c.constructor(b.length *
|
a), f, g = 0, k = 0, m = b.length; k < m; k++) {
|
f = b[k] * a;
|
for (var n = 0; n < a; n++) d[g++] = c[f++]
|
}
|
return new O(d, a)
|
}
|
if (null === this.index) return console.warn("THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed."), this;
|
var b = new G,
|
c = this.index.array,
|
d = this.attributes,
|
f;
|
for (f in d) {
|
var g = d[f];
|
g = a(g, c);
|
b.setAttribute(f, g)
|
}
|
var k = this.morphAttributes;
|
for (f in k) {
|
var m = [],
|
n = k[f];
|
d = 0;
|
for (var l = n.length; d < l; d++) g = n[d], g = a(g, c), m.push(g);
|
b.morphAttributes[f] = m
|
}
|
c = this.groups;
|
d = 0;
|
for (f = c.length; d < f; d++) g = c[d], b.addGroup(g.start,
|
g.count, g.materialIndex);
|
return b
|
},
|
toJSON: function () {
|
var a = {
|
metadata: {
|
version: 4.5,
|
type: "BufferGeometry",
|
generator: "BufferGeometry.toJSON"
|
}
|
};
|
a.uuid = this.uuid;
|
a.type = this.type;
|
"" !== this.name && (a.name = this.name);
|
0 < Object.keys(this.userData).length && (a.userData = this.userData);
|
if (void 0 !== this.parameters) {
|
var b = this.parameters;
|
for (l in b) void 0 !== b[l] && (a[l] = b[l]);
|
return a
|
}
|
a.data = {
|
attributes: {}
|
};
|
b = this.index;
|
null !== b && (a.data.index = {
|
type: b.array.constructor.name,
|
array: Array.prototype.slice.call(b.array)
|
});
|
var c = this.attributes;
|
for (l in c) {
|
b = c[l];
|
var d = b.toJSON();
|
"" !== b.name && (d.name = b.name);
|
a.data.attributes[l] = d
|
}
|
c = {};
|
var f = !1;
|
for (l in this.morphAttributes) {
|
for (var g = this.morphAttributes[l], k = [], m = 0, n = g.length; m < n; m++) b = g[m], d = b.toJSON(), "" !== b.name && (d.name = b.name), k.push(d);
|
0 < k.length && (c[l] = k, f = !0)
|
}
|
f && (a.data.morphAttributes = c);
|
var l = this.groups;
|
0 < l.length && (a.data.groups = JSON.parse(JSON.stringify(l)));
|
l = this.boundingSphere;
|
null !== l && (a.data.boundingSphere = {
|
center: l.center.toArray(),
|
radius: l.radius
|
});
|
return a
|
},
|
clone: function () {
|
return (new G).copy(this)
|
},
|
copy: function (a) {
|
var b;
|
this.index = null;
|
this.attributes = {};
|
this.morphAttributes = {};
|
this.groups = [];
|
this.boundingSphere = this.boundingBox = null;
|
this.name = a.name;
|
var c = a.index;
|
null !== c && this.setIndex(c.clone());
|
c = a.attributes;
|
for (k in c) this.setAttribute(k, c[k].clone());
|
var d = a.morphAttributes;
|
for (k in d) {
|
var f = [],
|
g = d[k];
|
c = 0;
|
for (b = g.length; c < b; c++) f.push(g[c].clone());
|
this.morphAttributes[k] = f
|
}
|
var k = a.groups;
|
c = 0;
|
for (b = k.length; c < b; c++) d = k[c], this.addGroup(d.start,
|
d.count, d.materialIndex);
|
k = a.boundingBox;
|
null !== k && (this.boundingBox = k.clone());
|
k = a.boundingSphere;
|
null !== k && (this.boundingSphere = k.clone());
|
this.drawRange.start = a.drawRange.start;
|
this.drawRange.count = a.drawRange.count;
|
this.userData = a.userData;
|
return this
|
},
|
dispose: function () {
|
this.dispatchEvent({
|
type: "dispose"
|
})
|
}
|
});
|
var pj = new I,
|
Ec = new ac,
|
Ch = new ub,
|
dc = new q,
|
ec = new q,
|
fc = new q,
|
Yh = new q,
|
Zh = new q,
|
$h = new q,
|
wg = new q,
|
xg = new q,
|
yg = new q,
|
Nc = new z,
|
Oc = new z,
|
Pc = new z,
|
Rd = new q,
|
Xe = new q;
|
ia.prototype = Object.assign(Object.create(E.prototype), {
|
constructor: ia,
|
isMesh: !0,
|
setDrawMode: function (a) {
|
this.drawMode = a
|
},
|
copy: function (a) {
|
E.prototype.copy.call(this, a);
|
this.drawMode = a.drawMode;
|
void 0 !== a.morphTargetInfluences && (this.morphTargetInfluences = a.morphTargetInfluences.slice());
|
void 0 !== a.morphTargetDictionary && (this.morphTargetDictionary = Object.assign({}, a.morphTargetDictionary));
|
return this
|
},
|
updateMorphTargets: function () {
|
var a = this.geometry;
|
if (a.isBufferGeometry) {
|
a = a.morphAttributes;
|
var b = Object.keys(a);
|
if (0 < b.length) {
|
var c = a[b[0]];
|
if (void 0 !==
|
c)
|
for (this.morphTargetInfluences = [], this.morphTargetDictionary = {}, a = 0, b = c.length; a < b; a++) {
|
var d = c[a].name || String(a);
|
this.morphTargetInfluences.push(0);
|
this.morphTargetDictionary[d] = a
|
}
|
}
|
} else a = a.morphTargets, void 0 !== a && 0 < a.length && console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")
|
},
|
raycast: function (a, b) {
|
var c = this.geometry,
|
d = this.material,
|
f = this.matrixWorld;
|
if (void 0 !== d && (null === c.boundingSphere && c.computeBoundingSphere(), Ch.copy(c.boundingSphere),
|
Ch.applyMatrix4(f), !1 !== a.ray.intersectsSphere(Ch) && (pj.getInverse(f), Ec.copy(a.ray).applyMatrix4(pj), null === c.boundingBox || !1 !== Ec.intersectsBox(c.boundingBox))))
|
if (0 !== this.drawMode) console.warn("THREE.Mesh: TriangleStripDrawMode and TriangleFanDrawMode are not supported by .raycast().");
|
else if (c.isBufferGeometry) {
|
var g = c.index;
|
f = c.attributes.position;
|
var k = c.morphAttributes.position,
|
m = c.attributes.uv,
|
n = c.attributes.uv2,
|
l = c.groups,
|
q = c.drawRange,
|
t, r;
|
if (null !== g)
|
if (Array.isArray(d)) {
|
var u = 0;
|
for (t =
|
l.length; u < t; u++) {
|
var v = l[u];
|
var w = d[v.materialIndex];
|
var x = Math.max(v.start, q.start);
|
for (r = c = Math.min(v.start + v.count, q.start + q.count); x < r; x += 3) {
|
c = g.getX(x);
|
var B = g.getX(x + 1);
|
var C = g.getX(x + 2);
|
if (c = Ye(this, w, a, Ec, f, k, m, n, c, B, C)) c.faceIndex = Math.floor(x / 3), c.face.materialIndex = v.materialIndex, b.push(c)
|
}
|
}
|
} else
|
for (x = Math.max(0, q.start), c = Math.min(g.count, q.start + q.count), u = x, t = c; u < t; u += 3) {
|
if (c = g.getX(u), B = g.getX(u + 1), C = g.getX(u + 2), c = Ye(this, d, a, Ec, f, k, m, n, c, B, C)) c.faceIndex = Math.floor(u / 3), b.push(c)
|
} else if (void 0 !==
|
f)
|
if (Array.isArray(d))
|
for (u = 0, t = l.length; u < t; u++)
|
for (v = l[u], w = d[v.materialIndex], x = Math.max(v.start, q.start), r = c = Math.min(v.start + v.count, q.start + q.count); x < r; x += 3) {
|
if (c = x, B = x + 1, C = x + 2, c = Ye(this, w, a, Ec, f, k, m, n, c, B, C)) c.faceIndex = Math.floor(x / 3), c.face.materialIndex = v.materialIndex, b.push(c)
|
} else
|
for (x = Math.max(0, q.start), c = Math.min(f.count, q.start + q.count), u = x, t = c; u < t; u += 3)
|
if (c = u, B = u + 1, C = u + 2, c = Ye(this, d, a, Ec, f, k, m, n, c, B, C)) c.faceIndex = Math.floor(u / 3), b.push(c)
|
} else if (c.isGeometry)
|
for (f = Array.isArray(d),
|
k = c.vertices, m = c.faces, c = c.faceVertexUvs[0], 0 < c.length && (g = c), u = 0, t = m.length; u < t; u++)
|
if (v = m[u], c = f ? d[v.materialIndex] : d, void 0 !== c && (n = k[v.a], l = k[v.b], q = k[v.c], c = Xh(this, c, a, Ec, n, l, q, Rd))) g && g[u] && (w = g[u], Nc.copy(w[0]), Oc.copy(w[1]), Pc.copy(w[2]), c.uv = va.getUV(Rd, n, l, q, Nc, Oc, Pc, new z)), c.face = v, c.faceIndex = u, b.push(c)
|
},
|
clone: function () {
|
return (new this.constructor(this.geometry, this.material)).copy(this)
|
}
|
});
|
var Sj = 0,
|
qb = new I,
|
Dh = new E,
|
Xf = new q;
|
P.prototype = Object.assign(Object.create(Ra.prototype), {
|
constructor: P,
|
isGeometry: !0,
|
applyMatrix: function (a) {
|
for (var b = (new ka).getNormalMatrix(a), c = 0, d = this.vertices.length; c < d; c++) this.vertices[c].applyMatrix4(a);
|
c = 0;
|
for (d = this.faces.length; c < d; c++) {
|
a = this.faces[c];
|
a.normal.applyMatrix3(b).normalize();
|
for (var f = 0, g = a.vertexNormals.length; f < g; f++) a.vertexNormals[f].applyMatrix3(b).normalize()
|
}
|
null !== this.boundingBox && this.computeBoundingBox();
|
null !== this.boundingSphere && this.computeBoundingSphere();
|
this.normalsNeedUpdate = this.verticesNeedUpdate = !0;
|
return this
|
},
|
rotateX: function (a) {
|
qb.makeRotationX(a);
|
this.applyMatrix(qb);
|
return this
|
},
|
rotateY: function (a) {
|
qb.makeRotationY(a);
|
this.applyMatrix(qb);
|
return this
|
},
|
rotateZ: function (a) {
|
qb.makeRotationZ(a);
|
this.applyMatrix(qb);
|
return this
|
},
|
translate: function (a, b, c) {
|
qb.makeTranslation(a, b, c);
|
this.applyMatrix(qb);
|
return this
|
},
|
scale: function (a, b, c) {
|
qb.makeScale(a, b, c);
|
this.applyMatrix(qb);
|
return this
|
},
|
lookAt: function (a) {
|
Dh.lookAt(a);
|
Dh.updateMatrix();
|
this.applyMatrix(Dh.matrix);
|
return this
|
},
|
fromBufferGeometry: function (a) {
|
function b(a, b, d, f) {
|
var g = void 0 ===
|
m ? [] : [c.colors[a].clone(), c.colors[b].clone(), c.colors[d].clone()],
|
p = void 0 === k ? [] : [(new q).fromArray(k, 3 * a), (new q).fromArray(k, 3 * b), (new q).fromArray(k, 3 * d)];
|
f = new Mc(a, b, d, p, g, f);
|
c.faces.push(f);
|
void 0 !== n && c.faceVertexUvs[0].push([(new z).fromArray(n, 2 * a), (new z).fromArray(n, 2 * b), (new z).fromArray(n, 2 * d)]);
|
void 0 !== l && c.faceVertexUvs[1].push([(new z).fromArray(l, 2 * a), (new z).fromArray(l, 2 * b), (new z).fromArray(l, 2 * d)])
|
}
|
var c = this,
|
d = null !== a.index ? a.index.array : void 0,
|
f = a.attributes;
|
if (void 0 ===
|
f.position) return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."), this;
|
var g = f.position.array,
|
k = void 0 !== f.normal ? f.normal.array : void 0,
|
m = void 0 !== f.color ? f.color.array : void 0,
|
n = void 0 !== f.uv ? f.uv.array : void 0,
|
l = void 0 !== f.uv2 ? f.uv2.array : void 0;
|
void 0 !== l && (this.faceVertexUvs[1] = []);
|
for (f = 0; f < g.length; f += 3) c.vertices.push((new q).fromArray(g, f)), void 0 !== m && c.colors.push((new D).fromArray(m, f));
|
var y = a.groups;
|
if (0 < y.length)
|
for (f = 0; f < y.length; f++) {
|
g =
|
y[f];
|
var t = g.start,
|
r = t;
|
for (t += g.count; r < t; r += 3) void 0 !== d ? b(d[r], d[r + 1], d[r + 2], g.materialIndex) : b(r, r + 1, r + 2, g.materialIndex)
|
} else if (void 0 !== d)
|
for (f = 0; f < d.length; f += 3) b(d[f], d[f + 1], d[f + 2]);
|
else
|
for (f = 0; f < g.length / 3; f += 3) b(f, f + 1, f + 2);
|
this.computeFaceNormals();
|
null !== a.boundingBox && (this.boundingBox = a.boundingBox.clone());
|
null !== a.boundingSphere && (this.boundingSphere = a.boundingSphere.clone());
|
return this
|
},
|
center: function () {
|
this.computeBoundingBox();
|
this.boundingBox.getCenter(Xf).negate();
|
this.translate(Xf.x,
|
Xf.y, Xf.z);
|
return this
|
},
|
normalize: function () {
|
this.computeBoundingSphere();
|
var a = this.boundingSphere.center,
|
b = this.boundingSphere.radius;
|
b = 0 === b ? 1 : 1 / b;
|
var c = new I;
|
c.set(b, 0, 0, -b * a.x, 0, b, 0, -b * a.y, 0, 0, b, -b * a.z, 0, 0, 0, 1);
|
this.applyMatrix(c);
|
return this
|
},
|
computeFaceNormals: function () {
|
for (var a = new q, b = new q, c = 0, d = this.faces.length; c < d; c++) {
|
var f = this.faces[c],
|
g = this.vertices[f.a],
|
k = this.vertices[f.b];
|
a.subVectors(this.vertices[f.c], k);
|
b.subVectors(g, k);
|
a.cross(b);
|
a.normalize();
|
f.normal.copy(a)
|
}
|
},
|
computeVertexNormals: function (a) {
|
void 0 ===
|
a && (a = !0);
|
var b;
|
var c = Array(this.vertices.length);
|
var d = 0;
|
for (b = this.vertices.length; d < b; d++) c[d] = new q;
|
if (a) {
|
var f = new q,
|
g = new q;
|
a = 0;
|
for (d = this.faces.length; a < d; a++) {
|
b = this.faces[a];
|
var k = this.vertices[b.a];
|
var m = this.vertices[b.b];
|
var l = this.vertices[b.c];
|
f.subVectors(l, m);
|
g.subVectors(k, m);
|
f.cross(g);
|
c[b.a].add(f);
|
c[b.b].add(f);
|
c[b.c].add(f)
|
}
|
} else
|
for (this.computeFaceNormals(), a = 0, d = this.faces.length; a < d; a++) b = this.faces[a], c[b.a].add(b.normal), c[b.b].add(b.normal), c[b.c].add(b.normal);
|
d = 0;
|
for (b =
|
this.vertices.length; d < b; d++) c[d].normalize();
|
a = 0;
|
for (d = this.faces.length; a < d; a++) b = this.faces[a], k = b.vertexNormals, 3 === k.length ? (k[0].copy(c[b.a]), k[1].copy(c[b.b]), k[2].copy(c[b.c])) : (k[0] = c[b.a].clone(), k[1] = c[b.b].clone(), k[2] = c[b.c].clone());
|
0 < this.faces.length && (this.normalsNeedUpdate = !0)
|
},
|
computeFlatVertexNormals: function () {
|
var a;
|
this.computeFaceNormals();
|
var b = 0;
|
for (a = this.faces.length; b < a; b++) {
|
var c = this.faces[b];
|
var d = c.vertexNormals;
|
3 === d.length ? (d[0].copy(c.normal), d[1].copy(c.normal),
|
d[2].copy(c.normal)) : (d[0] = c.normal.clone(), d[1] = c.normal.clone(), d[2] = c.normal.clone())
|
}
|
0 < this.faces.length && (this.normalsNeedUpdate = !0)
|
},
|
computeMorphNormals: function () {
|
var a, b;
|
var c = 0;
|
for (b = this.faces.length; c < b; c++) {
|
var d = this.faces[c];
|
d.__originalFaceNormal ? d.__originalFaceNormal.copy(d.normal) : d.__originalFaceNormal = d.normal.clone();
|
d.__originalVertexNormals || (d.__originalVertexNormals = []);
|
var f = 0;
|
for (a = d.vertexNormals.length; f < a; f++) d.__originalVertexNormals[f] ? d.__originalVertexNormals[f].copy(d.vertexNormals[f]) :
|
d.__originalVertexNormals[f] = d.vertexNormals[f].clone()
|
}
|
var g = new P;
|
g.faces = this.faces;
|
f = 0;
|
for (a = this.morphTargets.length; f < a; f++) {
|
if (!this.morphNormals[f]) {
|
this.morphNormals[f] = {};
|
this.morphNormals[f].faceNormals = [];
|
this.morphNormals[f].vertexNormals = [];
|
d = this.morphNormals[f].faceNormals;
|
var k = this.morphNormals[f].vertexNormals;
|
c = 0;
|
for (b = this.faces.length; c < b; c++) {
|
var m = new q;
|
var l = {
|
a: new q,
|
b: new q,
|
c: new q
|
};
|
d.push(m);
|
k.push(l)
|
}
|
}
|
k = this.morphNormals[f];
|
g.vertices = this.morphTargets[f].vertices;
|
g.computeFaceNormals();
|
g.computeVertexNormals();
|
c = 0;
|
for (b = this.faces.length; c < b; c++) d = this.faces[c], m = k.faceNormals[c], l = k.vertexNormals[c], m.copy(d.normal), l.a.copy(d.vertexNormals[0]), l.b.copy(d.vertexNormals[1]), l.c.copy(d.vertexNormals[2])
|
}
|
c = 0;
|
for (b = this.faces.length; c < b; c++) d = this.faces[c], d.normal = d.__originalFaceNormal, d.vertexNormals = d.__originalVertexNormals
|
},
|
computeBoundingBox: function () {
|
null === this.boundingBox && (this.boundingBox = new gb);
|
this.boundingBox.setFromPoints(this.vertices)
|
},
|
computeBoundingSphere: function () {
|
null ===
|
this.boundingSphere && (this.boundingSphere = new ub);
|
this.boundingSphere.setFromPoints(this.vertices)
|
},
|
merge: function (a, b, c) {
|
if (a && a.isGeometry) {
|
var d, f = this.vertices.length,
|
g = this.vertices,
|
k = a.vertices,
|
m = this.faces,
|
l = a.faces,
|
p = this.colors,
|
q = a.colors;
|
void 0 === c && (c = 0);
|
void 0 !== b && (d = (new ka).getNormalMatrix(b));
|
for (var t = 0, r = k.length; t < r; t++) {
|
var u = k[t].clone();
|
void 0 !== b && u.applyMatrix4(b);
|
g.push(u)
|
}
|
t = 0;
|
for (r = q.length; t < r; t++) p.push(q[t].clone());
|
t = 0;
|
for (r = l.length; t < r; t++) {
|
k = l[t];
|
var v = k.vertexNormals;
|
q = k.vertexColors;
|
p = new Mc(k.a + f, k.b + f, k.c + f);
|
p.normal.copy(k.normal);
|
void 0 !== d && p.normal.applyMatrix3(d).normalize();
|
b = 0;
|
for (g = v.length; b < g; b++) u = v[b].clone(), void 0 !== d && u.applyMatrix3(d).normalize(), p.vertexNormals.push(u);
|
p.color.copy(k.color);
|
b = 0;
|
for (g = q.length; b < g; b++) u = q[b], p.vertexColors.push(u.clone());
|
p.materialIndex = k.materialIndex + c;
|
m.push(p)
|
}
|
t = 0;
|
for (r = a.faceVertexUvs.length; t < r; t++)
|
for (c = a.faceVertexUvs[t], void 0 === this.faceVertexUvs[t] && (this.faceVertexUvs[t] = []), b = 0, g = c.length; b < g; b++) {
|
d =
|
c[b];
|
f = [];
|
m = 0;
|
for (l = d.length; m < l; m++) f.push(d[m].clone());
|
this.faceVertexUvs[t].push(f)
|
}
|
} else console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.", a)
|
},
|
mergeMesh: function (a) {
|
a && a.isMesh ? (a.matrixAutoUpdate && a.updateMatrix(), this.merge(a.geometry, a.matrix)) : console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.", a)
|
},
|
mergeVertices: function () {
|
var a = {},
|
b = [],
|
c = [],
|
d = Math.pow(10, 4),
|
f;
|
var g = 0;
|
for (f = this.vertices.length; g < f; g++) {
|
var k = this.vertices[g];
|
k = Math.round(k.x * d) + "_" + Math.round(k.y * d) + "_" + Math.round(k.z * d);
|
void 0 === a[k] ? (a[k] = g, b.push(this.vertices[g]), c[g] = b.length - 1) : c[g] = c[a[k]]
|
}
|
a = [];
|
g = 0;
|
for (f = this.faces.length; g < f; g++)
|
for (d = this.faces[g], d.a = c[d.a], d.b = c[d.b], d.c = c[d.c], d = [d.a, d.b, d.c], k = 0; 3 > k; k++)
|
if (d[k] === d[(k + 1) % 3]) {
|
a.push(g);
|
break
|
} for (g = a.length - 1; 0 <= g; g--)
|
for (d = a[g], this.faces.splice(d, 1), c = 0, f = this.faceVertexUvs.length; c < f; c++) this.faceVertexUvs[c].splice(d, 1);
|
g = this.vertices.length - b.length;
|
this.vertices = b;
|
return g
|
},
|
setFromPoints: function (a) {
|
this.vertices = [];
|
for (var b = 0, c = a.length; b < c; b++) {
|
var d = a[b];
|
this.vertices.push(new q(d.x, d.y, d.z || 0))
|
}
|
return this
|
},
|
sortFacesByMaterialIndex: function () {
|
for (var a = this.faces, b = a.length, c = 0; c < b; c++) a[c]._id = c;
|
a.sort(function (a, b) {
|
return a.materialIndex - b.materialIndex
|
});
|
var d = this.faceVertexUvs[0],
|
f = this.faceVertexUvs[1],
|
g, k;
|
d && d.length === b && (g = []);
|
f && f.length === b && (k = []);
|
for (c = 0; c < b; c++) {
|
var m = a[c]._id;
|
g && g.push(d[m]);
|
k && k.push(f[m])
|
}
|
g && (this.faceVertexUvs[0] = g);
|
k && (this.faceVertexUvs[1] = k)
|
},
|
toJSON: function () {
|
function a(a,
|
b, c) {
|
return c ? a | 1 << b : a & ~(1 << b)
|
}
|
|
function b(a) {
|
var b = a.x.toString() + a.y.toString() + a.z.toString();
|
if (void 0 !== p[b]) return p[b];
|
p[b] = l.length / 3;
|
l.push(a.x, a.y, a.z);
|
return p[b]
|
}
|
|
function c(a) {
|
var b = a.r.toString() + a.g.toString() + a.b.toString();
|
if (void 0 !== t[b]) return t[b];
|
t[b] = q.length;
|
q.push(a.getHex());
|
return t[b]
|
}
|
|
function d(a) {
|
var b = a.x.toString() + a.y.toString();
|
if (void 0 !== u[b]) return u[b];
|
u[b] = r.length / 2;
|
r.push(a.x, a.y);
|
return u[b]
|
}
|
var f = {
|
metadata: {
|
version: 4.5,
|
type: "Geometry",
|
generator: "Geometry.toJSON"
|
}
|
};
|
f.uuid = this.uuid;
|
f.type = this.type;
|
"" !== this.name && (f.name = this.name);
|
if (void 0 !== this.parameters) {
|
var g = this.parameters,
|
k;
|
for (k in g) void 0 !== g[k] && (f[k] = g[k]);
|
return f
|
}
|
g = [];
|
for (k = 0; k < this.vertices.length; k++) {
|
var m = this.vertices[k];
|
g.push(m.x, m.y, m.z)
|
}
|
m = [];
|
var l = [],
|
p = {},
|
q = [],
|
t = {},
|
r = [],
|
u = {};
|
for (k = 0; k < this.faces.length; k++) {
|
var v = this.faces[k],
|
w = void 0 !== this.faceVertexUvs[0][k],
|
x = 0 < v.normal.length(),
|
B = 0 < v.vertexNormals.length,
|
C = 1 !== v.color.r || 1 !== v.color.g || 1 !== v.color.b,
|
A = 0 < v.vertexColors.length,
|
z = 0;
|
z = a(z, 0, 0);
|
z = a(z, 1, !0);
|
z = a(z, 2, !1);
|
z = a(z, 3, w);
|
z = a(z, 4, x);
|
z = a(z, 5, B);
|
z = a(z, 6, C);
|
z = a(z, 7, A);
|
m.push(z);
|
m.push(v.a, v.b, v.c);
|
m.push(v.materialIndex);
|
w && (w = this.faceVertexUvs[0][k], m.push(d(w[0]), d(w[1]), d(w[2])));
|
x && m.push(b(v.normal));
|
B && (x = v.vertexNormals, m.push(b(x[0]), b(x[1]), b(x[2])));
|
C && m.push(c(v.color));
|
A && (v = v.vertexColors, m.push(c(v[0]), c(v[1]), c(v[2])))
|
}
|
f.data = {};
|
f.data.vertices = g;
|
f.data.normals = l;
|
0 < q.length && (f.data.colors = q);
|
0 < r.length && (f.data.uvs = [r]);
|
f.data.faces = m;
|
return f
|
},
|
clone: function () {
|
return (new P).copy(this)
|
},
|
copy: function (a) {
|
var b, c, d;
|
this.vertices = [];
|
this.colors = [];
|
this.faces = [];
|
this.faceVertexUvs = [
|
[]
|
];
|
this.morphTargets = [];
|
this.morphNormals = [];
|
this.skinWeights = [];
|
this.skinIndices = [];
|
this.lineDistances = [];
|
this.boundingSphere = this.boundingBox = null;
|
this.name = a.name;
|
var f = a.vertices;
|
var g = 0;
|
for (b = f.length; g < b; g++) this.vertices.push(f[g].clone());
|
f = a.colors;
|
g = 0;
|
for (b = f.length; g < b; g++) this.colors.push(f[g].clone());
|
f = a.faces;
|
g = 0;
|
for (b = f.length; g < b; g++) this.faces.push(f[g].clone());
|
g = 0;
|
for (b = a.faceVertexUvs.length; g <
|
b; g++) {
|
var k = a.faceVertexUvs[g];
|
void 0 === this.faceVertexUvs[g] && (this.faceVertexUvs[g] = []);
|
f = 0;
|
for (c = k.length; f < c; f++) {
|
var m = k[f],
|
l = [];
|
var p = 0;
|
for (d = m.length; p < d; p++) l.push(m[p].clone());
|
this.faceVertexUvs[g].push(l)
|
}
|
}
|
p = a.morphTargets;
|
g = 0;
|
for (b = p.length; g < b; g++) {
|
d = {};
|
d.name = p[g].name;
|
if (void 0 !== p[g].vertices)
|
for (d.vertices = [], f = 0, c = p[g].vertices.length; f < c; f++) d.vertices.push(p[g].vertices[f].clone());
|
if (void 0 !== p[g].normals)
|
for (d.normals = [], f = 0, c = p[g].normals.length; f < c; f++) d.normals.push(p[g].normals[f].clone());
|
this.morphTargets.push(d)
|
}
|
p = a.morphNormals;
|
g = 0;
|
for (b = p.length; g < b; g++) {
|
d = {};
|
if (void 0 !== p[g].vertexNormals)
|
for (d.vertexNormals = [], f = 0, c = p[g].vertexNormals.length; f < c; f++) k = p[g].vertexNormals[f], m = {}, m.a = k.a.clone(), m.b = k.b.clone(), m.c = k.c.clone(), d.vertexNormals.push(m);
|
if (void 0 !== p[g].faceNormals)
|
for (d.faceNormals = [], f = 0, c = p[g].faceNormals.length; f < c; f++) d.faceNormals.push(p[g].faceNormals[f].clone());
|
this.morphNormals.push(d)
|
}
|
f = a.skinWeights;
|
g = 0;
|
for (b = f.length; g < b; g++) this.skinWeights.push(f[g].clone());
|
f = a.skinIndices;
|
g = 0;
|
for (b = f.length; g < b; g++) this.skinIndices.push(f[g].clone());
|
f = a.lineDistances;
|
g = 0;
|
for (b = f.length; g < b; g++) this.lineDistances.push(f[g]);
|
g = a.boundingBox;
|
null !== g && (this.boundingBox = g.clone());
|
g = a.boundingSphere;
|
null !== g && (this.boundingSphere = g.clone());
|
this.elementsNeedUpdate = a.elementsNeedUpdate;
|
this.verticesNeedUpdate = a.verticesNeedUpdate;
|
this.uvsNeedUpdate = a.uvsNeedUpdate;
|
this.normalsNeedUpdate = a.normalsNeedUpdate;
|
this.colorsNeedUpdate = a.colorsNeedUpdate;
|
this.lineDistancesNeedUpdate =
|
a.lineDistancesNeedUpdate;
|
this.groupsNeedUpdate = a.groupsNeedUpdate;
|
return this
|
},
|
dispose: function () {
|
this.dispatchEvent({
|
type: "dispose"
|
})
|
}
|
});
|
var Eh = function (a) {
|
function b(b, d, f, g, k, m) {
|
a.call(this);
|
this.type = "BoxGeometry";
|
this.parameters = {
|
width: b,
|
height: d,
|
depth: f,
|
widthSegments: g,
|
heightSegments: k,
|
depthSegments: m
|
};
|
this.fromBufferGeometry(new Ud(b, d, f, g, k, m));
|
this.mergeVertices()
|
}
|
a && (b.__proto__ = a);
|
b.prototype = Object.create(a && a.prototype);
|
return b.prototype.constructor = b
|
}(P),
|
Ud = function (a) {
|
function b(b,
|
d, f, g, k, m) {
|
function c(a, b, c, d, f, g, k, m, n, p, z) {
|
var x = g / n,
|
B = k / p,
|
A = g / 2,
|
C = k / 2,
|
D = m / 2;
|
k = n + 1;
|
var E = p + 1,
|
F = g = 0,
|
G, H, I = new q;
|
for (H = 0; H < E; H++) {
|
var K = H * B - C;
|
for (G = 0; G < k; G++) I[a] = (G * x - A) * d, I[b] = K * f, I[c] = D, t.push(I.x, I.y, I.z), I[a] = 0, I[b] = 0, I[c] = 0 < m ? 1 : -1, r.push(I.x, I.y, I.z), u.push(G / n), u.push(1 - H / p), g += 1
|
}
|
for (H = 0; H < p; H++)
|
for (G = 0; G < n; G++) a = v + G + k * (H + 1), b = v + (G + 1) + k * (H + 1), c = v + (G + 1) + k * H, y.push(v + G + k * H, a, c), y.push(a, b, c), F += 6;
|
l.addGroup(w, F, z);
|
w += F;
|
v += g
|
}
|
a.call(this);
|
this.type = "BoxBufferGeometry";
|
this.parameters = {
|
width: b,
|
height: d,
|
depth: f,
|
widthSegments: g,
|
heightSegments: k,
|
depthSegments: m
|
};
|
var l = this;
|
b = b || 1;
|
d = d || 1;
|
f = f || 1;
|
g = Math.floor(g) || 1;
|
k = Math.floor(k) || 1;
|
m = Math.floor(m) || 1;
|
var y = [],
|
t = [],
|
r = [],
|
u = [],
|
v = 0,
|
w = 0;
|
c("z", "y", "x", -1, -1, f, d, b, m, k, 0);
|
c("z", "y", "x", 1, -1, f, d, -b, m, k, 1);
|
c("x", "z", "y", 1, 1, b, f, d, g, m, 2);
|
c("x", "z", "y", 1, -1, b, f, -d, g, m, 3);
|
c("x", "y", "z", 1, -1, b, d, f, g, k, 4);
|
c("x", "y", "z", -1, -1, b, d, -f, g, k, 5);
|
this.setIndex(y);
|
this.setAttribute("position", new F(t, 3));
|
this.setAttribute("normal", new F(r, 3));
|
this.setAttribute("uv",
|
new F(u, 2))
|
}
|
a && (b.__proto__ = a);
|
b.prototype = Object.create(a && a.prototype);
|
return b.prototype.constructor = b
|
}(G),
|
Kl = {
|
clone: gc,
|
merge: za
|
};
|
Aa.prototype = Object.create(R.prototype);
|
Aa.prototype.constructor = Aa;
|
Aa.prototype.isShaderMaterial = !0;
|
Aa.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.fragmentShader = a.fragmentShader;
|
this.vertexShader = a.vertexShader;
|
this.uniforms = gc(a.uniforms);
|
this.defines = Object.assign({}, a.defines);
|
this.wireframe = a.wireframe;
|
this.wireframeLinewidth = a.wireframeLinewidth;
|
this.lights = a.lights;
|
this.clipping = a.clipping;
|
this.skinning = a.skinning;
|
this.morphTargets = a.morphTargets;
|
this.morphNormals = a.morphNormals;
|
this.extensions = a.extensions;
|
return this
|
};
|
Aa.prototype.toJSON = function (a) {
|
var b = R.prototype.toJSON.call(this, a);
|
b.uniforms = {};
|
for (var c in this.uniforms) {
|
var d = this.uniforms[c].value;
|
b.uniforms[c] = d && d.isTexture ? {
|
type: "t",
|
value: d.toJSON(a).uuid
|
} : d && d.isColor ? {
|
type: "c",
|
value: d.getHex()
|
} : d && d.isVector2 ? {
|
type: "v2",
|
value: d.toArray()
|
} : d && d.isVector3 ? {
|
type: "v3",
|
value: d.toArray()
|
} :
|
d && d.isVector4 ? {
|
type: "v4",
|
value: d.toArray()
|
} : d && d.isMatrix3 ? {
|
type: "m3",
|
value: d.toArray()
|
} : d && d.isMatrix4 ? {
|
type: "m4",
|
value: d.toArray()
|
} : {
|
value: d
|
}
|
}
|
0 < Object.keys(this.defines).length && (b.defines = this.defines);
|
b.vertexShader = this.vertexShader;
|
b.fragmentShader = this.fragmentShader;
|
a = {};
|
for (var f in this.extensions) !0 === this.extensions[f] && (a[f] = !0);
|
0 < Object.keys(a).length && (b.extensions = a);
|
return b
|
};
|
hb.prototype = Object.assign(Object.create(E.prototype), {
|
constructor: hb,
|
isCamera: !0,
|
copy: function (a, b) {
|
E.prototype.copy.call(this,
|
a, b);
|
this.matrixWorldInverse.copy(a.matrixWorldInverse);
|
this.projectionMatrix.copy(a.projectionMatrix);
|
this.projectionMatrixInverse.copy(a.projectionMatrixInverse);
|
return this
|
},
|
getWorldDirection: function (a) {
|
void 0 === a && (console.warn("THREE.Camera: .getWorldDirection() target is now required"), a = new q);
|
this.updateMatrixWorld(!0);
|
var b = this.matrixWorld.elements;
|
return a.set(-b[8], -b[9], -b[10]).normalize()
|
},
|
updateMatrixWorld: function (a) {
|
E.prototype.updateMatrixWorld.call(this, a);
|
this.matrixWorldInverse.getInverse(this.matrixWorld)
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
}
|
});
|
na.prototype = Object.assign(Object.create(hb.prototype), {
|
constructor: na,
|
isPerspectiveCamera: !0,
|
copy: function (a, b) {
|
hb.prototype.copy.call(this, a, b);
|
this.fov = a.fov;
|
this.zoom = a.zoom;
|
this.near = a.near;
|
this.far = a.far;
|
this.focus = a.focus;
|
this.aspect = a.aspect;
|
this.view = null === a.view ? null : Object.assign({}, a.view);
|
this.filmGauge = a.filmGauge;
|
this.filmOffset = a.filmOffset;
|
return this
|
},
|
setFocalLength: function (a) {
|
a = .5 * this.getFilmHeight() / a;
|
this.fov = 2 * N.RAD2DEG *
|
Math.atan(a);
|
this.updateProjectionMatrix()
|
},
|
getFocalLength: function () {
|
var a = Math.tan(.5 * N.DEG2RAD * this.fov);
|
return .5 * this.getFilmHeight() / a
|
},
|
getEffectiveFOV: function () {
|
return 2 * N.RAD2DEG * Math.atan(Math.tan(.5 * N.DEG2RAD * this.fov) / this.zoom)
|
},
|
getFilmWidth: function () {
|
return this.filmGauge * Math.min(this.aspect, 1)
|
},
|
getFilmHeight: function () {
|
return this.filmGauge / Math.max(this.aspect, 1)
|
},
|
setViewOffset: function (a, b, c, d, f, g) {
|
this.aspect = a / b;
|
null === this.view && (this.view = {
|
enabled: !0,
|
fullWidth: 1,
|
fullHeight: 1,
|
offsetX: 0,
|
offsetY: 0,
|
width: 1,
|
height: 1
|
});
|
this.view.enabled = !0;
|
this.view.fullWidth = a;
|
this.view.fullHeight = b;
|
this.view.offsetX = c;
|
this.view.offsetY = d;
|
this.view.width = f;
|
this.view.height = g;
|
this.updateProjectionMatrix()
|
},
|
clearViewOffset: function () {
|
null !== this.view && (this.view.enabled = !1);
|
this.updateProjectionMatrix()
|
},
|
updateProjectionMatrix: function () {
|
var a = this.near,
|
b = a * Math.tan(.5 * N.DEG2RAD * this.fov) / this.zoom,
|
c = 2 * b,
|
d = this.aspect * c,
|
f = -.5 * d,
|
g = this.view;
|
if (null !== this.view && this.view.enabled) {
|
var k = g.fullWidth,
|
m = g.fullHeight;
|
f += g.offsetX * d / k;
|
b -= g.offsetY * c / m;
|
d *= g.width / k;
|
c *= g.height / m
|
}
|
g = this.filmOffset;
|
0 !== g && (f += a * g / this.getFilmWidth());
|
this.projectionMatrix.makePerspective(f, f + d, b, b - c, a, this.far);
|
this.projectionMatrixInverse.getInverse(this.projectionMatrix)
|
},
|
toJSON: function (a) {
|
a = E.prototype.toJSON.call(this, a);
|
a.object.fov = this.fov;
|
a.object.zoom = this.zoom;
|
a.object.near = this.near;
|
a.object.far = this.far;
|
a.object.focus = this.focus;
|
a.object.aspect = this.aspect;
|
null !== this.view && (a.object.view = Object.assign({},
|
this.view));
|
a.object.filmGauge = this.filmGauge;
|
a.object.filmOffset = this.filmOffset;
|
return a
|
}
|
});
|
Qc.prototype = Object.create(E.prototype);
|
Qc.prototype.constructor = Qc;
|
Ib.prototype = Object.create(sa.prototype);
|
Ib.prototype.constructor = Ib;
|
Ib.prototype.isWebGLRenderTargetCube = !0;
|
Ib.prototype.fromEquirectangularTexture = function (a, b) {
|
this.texture.type = b.type;
|
this.texture.format = b.format;
|
this.texture.encoding = b.encoding;
|
var c = new Kd,
|
d = new Aa({
|
type: "CubemapFromEquirect",
|
uniforms: gc({
|
tEquirect: {
|
value: null
|
}
|
}),
|
vertexShader: "varying vec3 vWorldDirection;\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}",
|
fragmentShader: "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n}",
|
side: 1,
|
blending: 0
|
});
|
d.uniforms.tEquirect.value = b;
|
b = new ia(new Ud(5,
|
5, 5), d);
|
c.add(b);
|
d = new Qc(1, 10, 1);
|
d.renderTarget = this;
|
d.renderTarget.texture.name = "CubeCameraTexture";
|
d.update(a, c);
|
b.geometry.dispose();
|
b.material.dispose();
|
return this
|
};
|
hc.prototype = Object.create(S.prototype);
|
hc.prototype.constructor = hc;
|
hc.prototype.isDataTexture = !0;
|
var Hd = new ub,
|
Yf = new q;
|
Object.assign(Sd.prototype, {
|
set: function (a, b, c, d, f, g) {
|
var k = this.planes;
|
k[0].copy(a);
|
k[1].copy(b);
|
k[2].copy(c);
|
k[3].copy(d);
|
k[4].copy(f);
|
k[5].copy(g);
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
for (var b = this.planes, c = 0; 6 > c; c++) b[c].copy(a.planes[c]);
|
return this
|
},
|
setFromMatrix: function (a) {
|
var b = this.planes,
|
c = a.elements;
|
a = c[0];
|
var d = c[1],
|
f = c[2],
|
g = c[3],
|
k = c[4],
|
m = c[5],
|
l = c[6],
|
p = c[7],
|
q = c[8],
|
t = c[9],
|
r = c[10],
|
u = c[11],
|
v = c[12],
|
w = c[13],
|
x = c[14];
|
c = c[15];
|
b[0].setComponents(g - a, p - k, u - q, c - v).normalize();
|
b[1].setComponents(g + a, p + k, u + q, c + v).normalize();
|
b[2].setComponents(g + d, p + m, u + t, c + w).normalize();
|
b[3].setComponents(g - d, p - m, u - t, c - w).normalize();
|
b[4].setComponents(g - f, p - l, u - r, c - x).normalize();
|
b[5].setComponents(g + f, p + l, u + r, c + x).normalize();
|
return this
|
},
|
intersectsObject: function (a) {
|
var b = a.geometry;
|
null === b.boundingSphere && b.computeBoundingSphere();
|
Hd.copy(b.boundingSphere).applyMatrix4(a.matrixWorld);
|
return this.intersectsSphere(Hd)
|
},
|
intersectsSprite: function (a) {
|
Hd.center.set(0, 0, 0);
|
Hd.radius = .7071067811865476;
|
Hd.applyMatrix4(a.matrixWorld);
|
return this.intersectsSphere(Hd)
|
},
|
intersectsSphere: function (a) {
|
var b = this.planes,
|
c = a.center;
|
a = -a.radius;
|
for (var d = 0; 6 > d; d++)
|
if (b[d].distanceToPoint(c) <
|
a) return !1;
|
return !0
|
},
|
intersectsBox: function (a) {
|
for (var b = this.planes, c = 0; 6 > c; c++) {
|
var d = b[c];
|
Yf.x = 0 < d.normal.x ? a.max.x : a.min.x;
|
Yf.y = 0 < d.normal.y ? a.max.y : a.min.y;
|
Yf.z = 0 < d.normal.z ? a.max.z : a.min.z;
|
if (0 > d.distanceToPoint(Yf)) return !1
|
}
|
return !0
|
},
|
containsPoint: function (a) {
|
for (var b = this.planes, c = 0; 6 > c; c++)
|
if (0 > b[c].distanceToPoint(a)) return !1;
|
return !0
|
}
|
});
|
var Q = {
|
alphamap_fragment: "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif",
|
alphamap_pars_fragment: "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",
|
alphatest_fragment: "#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif",
|
aomap_fragment: "#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif",
|
aomap_pars_fragment: "#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",
|
begin_vertex: "vec3 transformed = vec3( position );",
|
beginnormal_vertex: "vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif",
|
bsdfs: "vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\n\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie(float roughness, float NoH) {\n\tfloat invAlpha = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\n}\nfloat V_Neubelt(float NoV, float NoL) {\n\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\n}\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif",
|
bumpmap_pars_fragment: "#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",
|
clipping_planes_fragment: "#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",
|
clipping_planes_pars_fragment: "#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",
|
clipping_planes_pars_vertex: "#if NUM_CLIPPING_PLANES > 0 && ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvarying vec3 vViewPosition;\n#endif",
|
clipping_planes_vertex: "#if NUM_CLIPPING_PLANES > 0 && ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif",
|
color_fragment: "#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",
|
color_pars_fragment: "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",
|
color_pars_vertex: "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",
|
color_vertex: "#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif",
|
common: "#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n}",
|
cube_uv_reflection_fragment: "#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif",
|
defaultnormal_vertex: "vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\ttransformedNormal = mat3( instanceMatrix ) * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = normalMatrix * objectTangent;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",
|
displacementmap_pars_vertex: "#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",
|
displacementmap_vertex: "#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",
|
emissivemap_fragment: "#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",
|
emissivemap_pars_fragment: "#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",
|
encodings_fragment: "gl_FragColor = linearToOutputTexel( gl_FragColor );",
|
encodings_pars_fragment: "\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}",
|
envmap_fragment: "#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\t\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",
|
envmap_common_pars_fragment: "#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",
|
envmap_pars_fragment: "#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",
|
envmap_pars_vertex: "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",
|
envmap_physical_pars_fragment: "#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t vec3 reflectVec = reflect( -viewDir, normal );\n\t\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t#else\n\t\t vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, roughness );\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif",
|
envmap_vertex: "#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) { \n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",
|
fog_vertex: "#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif",
|
fog_pars_vertex: "#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif",
|
fog_fragment: "#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",
|
fog_pars_fragment: "#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",
|
gradientmap_pars_fragment: "#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif",
|
lightmap_fragment: "#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif",
|
lightmap_pars_fragment: "#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",
|
lights_lambert_vertex: "vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif",
|
lights_pars_begin: "uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif",
|
lights_phong_fragment: "BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",
|
lights_phong_pars_fragment: "varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)",
|
lights_physical_fragment: "PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef REFLECTIVITY\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#endif\n#ifdef CLEARCOAT\n\tmaterial.clearcoat = saturate( clearcoat );\tmaterial.clearcoatRoughness = clamp( clearcoatRoughness, 0.04, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheen;\n#endif",
|
lights_physical_pars_fragment: "struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n#ifdef CLEARCOAT\n\tfloat clearcoat;\n\tfloat clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tvec3 sheenColor;\n#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = ccDotNL * directLight.color;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tccIrradiance *= PI;\n\t\t#endif\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\n\t\t\tmaterial.specularRoughness,\n\t\t\tdirectLight.direction,\n\t\t\tgeometry,\n\t\t\tmaterial.sheenColor\n\t\t);\n\t#else\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\n\t#endif\n\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t\tfloat ccDotNL = ccDotNV;\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\tfloat clearcoatInv = 1.0 - clearcoatDHR;\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",
|
lights_fragment_begin: "\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( pointLight.shadow, directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( spotLight.shadow, directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( directionalLight.shadow, directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",
|
lights_fragment_maps: "#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\n\t#ifdef CLEARCOAT\n\t\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\n\t#endif\n#endif",
|
lights_fragment_end: "#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",
|
logdepthbuf_fragment: "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",
|
logdepthbuf_pars_fragment: "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",
|
logdepthbuf_pars_vertex: "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",
|
logdepthbuf_vertex: "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",
|
map_fragment: "#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif",
|
map_pars_fragment: "#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",
|
map_particle_fragment: "#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",
|
map_particle_pars_fragment: "#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",
|
metalnessmap_fragment: "float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",
|
metalnessmap_pars_fragment: "#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",
|
morphnormal_vertex: "#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif",
|
morphtarget_pars_vertex: "#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif",
|
morphtarget_vertex: "#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif",
|
normal_fragment_begin: "#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",
|
normal_fragment_maps: "#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\t#ifdef USE_TANGENT\n\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = normalScale * mapN.xy;\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal, normalScale, normalMap );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif",
|
normalmap_pars_fragment: "#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec2 normalScale, in sampler2D normalMap ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\tvec3 N = normalize( surf_norm );\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy *= normalScale;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tbool frontFacing = dot( cross( S, T ), N ) > 0.0;\n\t\t\tmapN.xy *= ( float( frontFacing ) * 2.0 - 1.0 );\n\t\t#else\n\t\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\tmat3 tsn = mat3( S, T, N );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif",
|
clearcoat_normal_fragment_begin: "#ifdef CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",
|
clearcoat_normal_fragment_maps: "#ifdef USE_CLEARCOAT_NORMALMAP\n\t#ifdef USE_TANGENT\n\t\tmat3 vTBN = mat3( tangent, bitangent, clearcoatNormal );\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = clearcoatNormalScale * mapN.xy;\n\t\tclearcoatNormal = normalize( vTBN * mapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatNormalScale, clearcoatNormalMap );\n\t#endif\n#endif",
|
clearcoat_normalmap_pars_fragment: "#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",
|
packing: "vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 encodeHalfRGBA ( vec2 v ) {\n\tvec4 encoded = vec4( 0.0 );\n\tconst vec2 offset = vec2( 1.0 / 255.0, 0.0 );\n\tencoded.xy = vec2( v.x, fract( v.x * 255.0 ) );\n\tencoded.xy = encoded.xy - ( encoded.yy * offset );\n\tencoded.zw = vec2( v.y, fract( v.y * 255.0 ) );\n\tencoded.zw = encoded.zw - ( encoded.ww * offset );\n\treturn encoded;\n}\nvec2 decodeHalfRGBA( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",
|
premultiplied_alpha_fragment: "#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",
|
project_vertex: "vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",
|
dithering_fragment: "#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",
|
dithering_pars_fragment: "#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",
|
roughnessmap_fragment: "float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",
|
roughnessmap_pars_fragment: "#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",
|
shadowmap_pars_fragment: "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn decodeHalfRGBA( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = ( floor( uv * size - 0.5 ) + 0.5 ) * texelSize;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",
|
shadowmap_pars_vertex: "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",
|
shadowmap_vertex: "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif",
|
shadowmask_pars_fragment: "float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= all( bvec2( directionalLight.shadow, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= all( bvec2( spotLight.shadow, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= all( bvec2( pointLight.shadow, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}",
|
skinbase_vertex: "#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",
|
skinning_pars_vertex: "#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif",
|
skinning_vertex: "#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",
|
skinnormal_vertex: "#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",
|
specularmap_fragment: "float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",
|
specularmap_pars_fragment: "#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",
|
tonemapping_fragment: "#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",
|
tonemapping_pars_fragment: "#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}",
|
uv_pars_fragment: "#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",
|
uv_pars_vertex: "#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",
|
uv_vertex: "#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",
|
uv2_pars_fragment: "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",
|
uv2_pars_vertex: "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif",
|
uv2_vertex: "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif",
|
worldpos_vertex: "#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",
|
background_frag: "uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",
|
background_vert: "varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",
|
cube_frag: "uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\tgl_FragColor.a *= opacity;\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",
|
cube_vert: "varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",
|
depth_frag: "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <logdepthbuf_fragment>\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}",
|
depth_vert: "#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n}",
|
distanceRGBA_frag: "#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",
|
distanceRGBA_vert: "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}",
|
equirect_frag: "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",
|
equirect_vert: "varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}",
|
linedashed_frag: "uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}",
|
linedashed_vert: "uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <color_vertex>\n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}",
|
meshbasic_frag: "uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include <aomap_fragment>\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}",
|
meshbasic_vert: "#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_ENVMAP\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <envmap_vertex>\n\t#include <fog_vertex>\n}",
|
meshlambert_frag: "uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <fog_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <emissivemap_fragment>\n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include <lightmap_fragment>\n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",
|
meshlambert_vert: "#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <lights_lambert_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",
|
meshmatcap_frag: "#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}",
|
meshmatcap_vert: "#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n\tvViewPosition = - mvPosition.xyz;\n}",
|
meshphong_frag: "#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_phong_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",
|
meshphong_vert: "#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",
|
meshphysical_frag: "#define STANDARD\n#ifdef PHYSICAL\n\t#define REFLECTIVITY\n\t#define CLEARCOAT\n\t#define TRANSPARENCY\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef TRANSPARENCY\n\tuniform float transparency;\n#endif\n#ifdef REFLECTIVITY\n\tuniform float reflectivity;\n#endif\n#ifdef CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheen;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <bsdfs>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <lights_physical_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_normalmap_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <roughnessmap_fragment>\n\t#include <metalnessmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#ifdef TRANSPARENCY\n\t\tdiffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\n\t#endif\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",
|
meshphysical_vert: "#define STANDARD\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",
|
normal_frag: "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}",
|
normal_vert: "#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",
|
points_frag: "uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}",
|
points_vert: "uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <color_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n}",
|
shadow_frag: "uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <fog_fragment>\n}",
|
shadow_vert: "#include <fog_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",
|
sprite_frag: "uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}",
|
sprite_vert: "uniform float rotation;\nuniform vec2 center;\n#include <common>\n#include <uv_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}"
|
},
|
K = {
|
common: {
|
diffuse: {
|
value: new D(15658734)
|
},
|
opacity: {
|
value: 1
|
},
|
map: {
|
value: null
|
},
|
uvTransform: {
|
value: new ka
|
},
|
alphaMap: {
|
value: null
|
}
|
},
|
specularmap: {
|
specularMap: {
|
value: null
|
}
|
},
|
envmap: {
|
envMap: {
|
value: null
|
},
|
flipEnvMap: {
|
value: -1
|
},
|
reflectivity: {
|
value: 1
|
},
|
refractionRatio: {
|
value: .98
|
},
|
maxMipLevel: {
|
value: 0
|
}
|
},
|
aomap: {
|
aoMap: {
|
value: null
|
},
|
aoMapIntensity: {
|
value: 1
|
}
|
},
|
lightmap: {
|
lightMap: {
|
value: null
|
},
|
lightMapIntensity: {
|
value: 1
|
}
|
},
|
emissivemap: {
|
emissiveMap: {
|
value: null
|
}
|
},
|
bumpmap: {
|
bumpMap: {
|
value: null
|
},
|
bumpScale: {
|
value: 1
|
}
|
},
|
normalmap: {
|
normalMap: {
|
value: null
|
},
|
normalScale: {
|
value: new z(1, 1)
|
}
|
},
|
displacementmap: {
|
displacementMap: {
|
value: null
|
},
|
displacementScale: {
|
value: 1
|
},
|
displacementBias: {
|
value: 0
|
}
|
},
|
roughnessmap: {
|
roughnessMap: {
|
value: null
|
}
|
},
|
metalnessmap: {
|
metalnessMap: {
|
value: null
|
}
|
},
|
gradientmap: {
|
gradientMap: {
|
value: null
|
}
|
},
|
fog: {
|
fogDensity: {
|
value: 2.5E-4
|
},
|
fogNear: {
|
value: 1
|
},
|
fogFar: {
|
value: 2E3
|
},
|
fogColor: {
|
value: new D(16777215)
|
}
|
},
|
lights: {
|
ambientLightColor: {
|
value: []
|
},
|
lightProbe: {
|
value: []
|
},
|
directionalLights: {
|
value: [],
|
properties: {
|
direction: {},
|
color: {},
|
shadow: {},
|
shadowBias: {},
|
shadowRadius: {},
|
shadowMapSize: {}
|
}
|
},
|
directionalShadowMap: {
|
value: []
|
},
|
directionalShadowMatrix: {
|
value: []
|
},
|
spotLights: {
|
value: [],
|
properties: {
|
color: {},
|
position: {},
|
direction: {},
|
distance: {},
|
coneCos: {},
|
penumbraCos: {},
|
decay: {},
|
shadow: {},
|
shadowBias: {},
|
shadowRadius: {},
|
shadowMapSize: {}
|
}
|
},
|
spotShadowMap: {
|
value: []
|
},
|
spotShadowMatrix: {
|
value: []
|
},
|
pointLights: {
|
value: [],
|
properties: {
|
color: {},
|
position: {},
|
decay: {},
|
distance: {},
|
shadow: {},
|
shadowBias: {},
|
shadowRadius: {},
|
shadowMapSize: {},
|
shadowCameraNear: {},
|
shadowCameraFar: {}
|
}
|
},
|
pointShadowMap: {
|
value: []
|
},
|
pointShadowMatrix: {
|
value: []
|
},
|
hemisphereLights: {
|
value: [],
|
properties: {
|
direction: {},
|
skyColor: {},
|
groundColor: {}
|
}
|
},
|
rectAreaLights: {
|
value: [],
|
properties: {
|
color: {},
|
position: {},
|
width: {},
|
height: {}
|
}
|
}
|
},
|
points: {
|
diffuse: {
|
value: new D(15658734)
|
},
|
opacity: {
|
value: 1
|
},
|
size: {
|
value: 1
|
},
|
scale: {
|
value: 1
|
},
|
map: {
|
value: null
|
},
|
alphaMap: {
|
value: null
|
},
|
uvTransform: {
|
value: new ka
|
}
|
},
|
sprite: {
|
diffuse: {
|
value: new D(15658734)
|
},
|
opacity: {
|
value: 1
|
},
|
center: {
|
value: new z(.5, .5)
|
},
|
rotation: {
|
value: 0
|
},
|
map: {
|
value: null
|
},
|
alphaMap: {
|
value: null
|
},
|
uvTransform: {
|
value: new ka
|
}
|
}
|
},
|
ib = {
|
basic: {
|
uniforms: za([K.common, K.specularmap, K.envmap, K.aomap, K.lightmap, K.fog]),
|
vertexShader: Q.meshbasic_vert,
|
fragmentShader: Q.meshbasic_frag
|
},
|
lambert: {
|
uniforms: za([K.common, K.specularmap, K.envmap, K.aomap, K.lightmap, K.emissivemap, K.fog, K.lights, {
|
emissive: {
|
value: new D(0)
|
}
|
}]),
|
vertexShader: Q.meshlambert_vert,
|
fragmentShader: Q.meshlambert_frag
|
},
|
phong: {
|
uniforms: za([K.common, K.specularmap, K.envmap, K.aomap, K.lightmap, K.emissivemap, K.bumpmap, K.normalmap, K.displacementmap, K.gradientmap,
|
K.fog, K.lights, {
|
emissive: {
|
value: new D(0)
|
},
|
specular: {
|
value: new D(1118481)
|
},
|
shininess: {
|
value: 30
|
}
|
}
|
]),
|
vertexShader: Q.meshphong_vert,
|
fragmentShader: Q.meshphong_frag
|
},
|
standard: {
|
uniforms: za([K.common, K.envmap, K.aomap, K.lightmap, K.emissivemap, K.bumpmap, K.normalmap, K.displacementmap, K.roughnessmap, K.metalnessmap, K.fog, K.lights, {
|
emissive: {
|
value: new D(0)
|
},
|
roughness: {
|
value: .5
|
},
|
metalness: {
|
value: .5
|
},
|
envMapIntensity: {
|
value: 1
|
}
|
}]),
|
vertexShader: Q.meshphysical_vert,
|
fragmentShader: Q.meshphysical_frag
|
},
|
matcap: {
|
uniforms: za([K.common,
|
K.bumpmap, K.normalmap, K.displacementmap, K.fog, {
|
matcap: {
|
value: null
|
}
|
}
|
]),
|
vertexShader: Q.meshmatcap_vert,
|
fragmentShader: Q.meshmatcap_frag
|
},
|
points: {
|
uniforms: za([K.points, K.fog]),
|
vertexShader: Q.points_vert,
|
fragmentShader: Q.points_frag
|
},
|
dashed: {
|
uniforms: za([K.common, K.fog, {
|
scale: {
|
value: 1
|
},
|
dashSize: {
|
value: 1
|
},
|
totalSize: {
|
value: 2
|
}
|
}]),
|
vertexShader: Q.linedashed_vert,
|
fragmentShader: Q.linedashed_frag
|
},
|
depth: {
|
uniforms: za([K.common, K.displacementmap]),
|
vertexShader: Q.depth_vert,
|
fragmentShader: Q.depth_frag
|
},
|
normal: {
|
uniforms: za([K.common,
|
K.bumpmap, K.normalmap, K.displacementmap, {
|
opacity: {
|
value: 1
|
}
|
}
|
]),
|
vertexShader: Q.normal_vert,
|
fragmentShader: Q.normal_frag
|
},
|
sprite: {
|
uniforms: za([K.sprite, K.fog]),
|
vertexShader: Q.sprite_vert,
|
fragmentShader: Q.sprite_frag
|
},
|
background: {
|
uniforms: {
|
uvTransform: {
|
value: new ka
|
},
|
t2D: {
|
value: null
|
}
|
},
|
vertexShader: Q.background_vert,
|
fragmentShader: Q.background_frag
|
},
|
cube: {
|
uniforms: {
|
tCube: {
|
value: null
|
},
|
tFlip: {
|
value: -1
|
},
|
opacity: {
|
value: 1
|
}
|
},
|
vertexShader: Q.cube_vert,
|
fragmentShader: Q.cube_frag
|
},
|
equirect: {
|
uniforms: {
|
tEquirect: {
|
value: null
|
}
|
},
|
vertexShader: Q.equirect_vert,
|
fragmentShader: Q.equirect_frag
|
},
|
distanceRGBA: {
|
uniforms: za([K.common, K.displacementmap, {
|
referencePosition: {
|
value: new q
|
},
|
nearDistance: {
|
value: 1
|
},
|
farDistance: {
|
value: 1E3
|
}
|
}]),
|
vertexShader: Q.distanceRGBA_vert,
|
fragmentShader: Q.distanceRGBA_frag
|
},
|
shadow: {
|
uniforms: za([K.lights, K.fog, {
|
color: {
|
value: new D(0)
|
},
|
opacity: {
|
value: 1
|
}
|
}]),
|
vertexShader: Q.shadow_vert,
|
fragmentShader: Q.shadow_frag
|
}
|
};
|
ib.physical = {
|
uniforms: za([ib.standard.uniforms, {
|
transparency: {
|
value: 0
|
},
|
clearcoat: {
|
value: 0
|
},
|
clearcoatRoughness: {
|
value: 0
|
},
|
sheen: {
|
value: new D(0)
|
},
|
clearcoatNormalScale: {
|
value: new z(1, 1)
|
},
|
clearcoatNormalMap: {
|
value: null
|
}
|
}]),
|
vertexShader: Q.meshphysical_vert,
|
fragmentShader: Q.meshphysical_frag
|
};
|
Td.prototype = Object.create(P.prototype);
|
Td.prototype.constructor = Td;
|
ic.prototype = Object.create(G.prototype);
|
ic.prototype.constructor = ic;
|
vb.prototype = Object.create(S.prototype);
|
vb.prototype.constructor = vb;
|
vb.prototype.isCubeTexture = !0;
|
Object.defineProperty(vb.prototype, "images", {
|
get: function () {
|
return this.image
|
},
|
set: function (a) {
|
this.image =
|
a
|
}
|
});
|
Rc.prototype = Object.create(S.prototype);
|
Rc.prototype.constructor = Rc;
|
Rc.prototype.isDataTexture2DArray = !0;
|
Sc.prototype = Object.create(S.prototype);
|
Sc.prototype.constructor = Sc;
|
Sc.prototype.isDataTexture3D = !0;
|
var gi = new S,
|
ok = new Rc,
|
qk = new Sc,
|
hi = new vb,
|
ai = [],
|
ci = [],
|
fi = new Float32Array(16),
|
ei = new Float32Array(9),
|
di = new Float32Array(4);
|
ii.prototype.updateCache = function (a) {
|
var b = this.cache;
|
a instanceof Float32Array && b.length !== a.length && (this.cache = new Float32Array(a.length));
|
Ja(b, a)
|
};
|
ji.prototype.setValue =
|
function (a, b, c) {
|
for (var d = this.seq, f = 0, g = d.length; f !== g; ++f) {
|
var k = d[f];
|
k.setValue(a, b[k.id], c)
|
}
|
};
|
var Ag = /([\w\d_]+)(\])?(\[|\.)?/g;
|
Jb.prototype.setValue = function (a, b, c, d) {
|
b = this.map[b];
|
void 0 !== b && b.setValue(a, c, d)
|
};
|
Jb.prototype.setOptional = function (a, b, c) {
|
b = b[c];
|
void 0 !== b && this.setValue(a, c, b)
|
};
|
Jb.upload = function (a, b, c, d) {
|
for (var f = 0, g = b.length; f !== g; ++f) {
|
var k = b[f],
|
m = c[k.id];
|
!1 !== m.needsUpdate && k.setValue(a, m.value, d)
|
}
|
};
|
Jb.seqWithValue = function (a, b) {
|
for (var c = [], d = 0, f = a.length; d !== f; ++d) {
|
var g =
|
a[d];
|
g.id in b && c.push(g)
|
}
|
return c
|
};
|
var Vk = 0,
|
Cg = /^[ \t]*#include +<([\w\d./]+)>/gm,
|
ri = /#pragma unroll_loop[\s]+?for \( int i = (\d+); i < (\d+); i \+\+ \) \{([\s\S]+?)(?=\})\}/g,
|
dl = 0;
|
Kb.prototype = Object.create(R.prototype);
|
Kb.prototype.constructor = Kb;
|
Kb.prototype.isMeshDepthMaterial = !0;
|
Kb.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.depthPacking = a.depthPacking;
|
this.skinning = a.skinning;
|
this.morphTargets = a.morphTargets;
|
this.map = a.map;
|
this.alphaMap = a.alphaMap;
|
this.displacementMap = a.displacementMap;
|
this.displacementScale = a.displacementScale;
|
this.displacementBias = a.displacementBias;
|
this.wireframe = a.wireframe;
|
this.wireframeLinewidth = a.wireframeLinewidth;
|
return this
|
};
|
Lb.prototype = Object.create(R.prototype);
|
Lb.prototype.constructor = Lb;
|
Lb.prototype.isMeshDistanceMaterial = !0;
|
Lb.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.referencePosition.copy(a.referencePosition);
|
this.nearDistance = a.nearDistance;
|
this.farDistance = a.farDistance;
|
this.skinning = a.skinning;
|
this.morphTargets = a.morphTargets;
|
this.map = a.map;
|
this.alphaMap = a.alphaMap;
|
this.displacementMap = a.displacementMap;
|
this.displacementScale = a.displacementScale;
|
this.displacementBias = a.displacementBias;
|
return this
|
};
|
Fg.prototype = Object.assign(Object.create(sa.prototype), {
|
constructor: Fg,
|
isWebGLMultiviewRenderTarget: !0,
|
copy: function (a) {
|
sa.prototype.copy.call(this, a);
|
this.numViews = a.numViews;
|
return this
|
},
|
setNumViews: function (a) {
|
this.numViews !== a && (this.numViews = a, this.dispose());
|
return this
|
}
|
});
|
Vc.prototype = Object.assign(Object.create(E.prototype), {
|
constructor: Vc,
|
isGroup: !0
|
});
|
Yd.prototype = Object.assign(Object.create(na.prototype), {
|
constructor: Yd,
|
isArrayCamera: !0
|
});
|
var yi = new q,
|
zi = new q;
|
Object.assign(Gg.prototype, Ra.prototype);
|
Object.assign(Ai.prototype, Ra.prototype);
|
Object.assign(cf.prototype, {
|
isFogExp2: !0,
|
clone: function () {
|
return new cf(this.color, this.density)
|
},
|
toJSON: function () {
|
return {
|
type: "FogExp2",
|
color: this.color.getHex(),
|
density: this.density
|
}
|
}
|
});
|
Object.assign(df.prototype, {
|
isFog: !0,
|
clone: function () {
|
return new df(this.color, this.near,
|
this.far)
|
},
|
toJSON: function () {
|
return {
|
type: "Fog",
|
color: this.color.getHex(),
|
near: this.near,
|
far: this.far
|
}
|
}
|
});
|
Object.defineProperty(wb.prototype, "needsUpdate", {
|
set: function (a) {
|
!0 === a && this.version++
|
}
|
});
|
Object.assign(wb.prototype, {
|
isInterleavedBuffer: !0,
|
onUploadCallback: function () {},
|
setUsage: function (a) {
|
this.usage = a;
|
return this
|
},
|
copy: function (a) {
|
this.array = new a.array.constructor(a.array);
|
this.count = a.count;
|
this.stride = a.stride;
|
this.usage = a.usage;
|
return this
|
},
|
copyAt: function (a, b, c) {
|
a *= this.stride;
|
c *= b.stride;
|
for (var d = 0, f = this.stride; d < f; d++) this.array[a + d] = b.array[c + d];
|
return this
|
},
|
set: function (a, b) {
|
void 0 === b && (b = 0);
|
this.array.set(a, b);
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
onUpload: function (a) {
|
this.onUploadCallback = a;
|
return this
|
}
|
});
|
Object.defineProperties(Zd.prototype, {
|
count: {
|
get: function () {
|
return this.data.count
|
}
|
},
|
array: {
|
get: function () {
|
return this.data.array
|
}
|
}
|
});
|
Object.assign(Zd.prototype, {
|
isInterleavedBufferAttribute: !0,
|
setX: function (a, b) {
|
this.data.array[a * this.data.stride +
|
this.offset] = b;
|
return this
|
},
|
setY: function (a, b) {
|
this.data.array[a * this.data.stride + this.offset + 1] = b;
|
return this
|
},
|
setZ: function (a, b) {
|
this.data.array[a * this.data.stride + this.offset + 2] = b;
|
return this
|
},
|
setW: function (a, b) {
|
this.data.array[a * this.data.stride + this.offset + 3] = b;
|
return this
|
},
|
getX: function (a) {
|
return this.data.array[a * this.data.stride + this.offset]
|
},
|
getY: function (a) {
|
return this.data.array[a * this.data.stride + this.offset + 1]
|
},
|
getZ: function (a) {
|
return this.data.array[a * this.data.stride + this.offset + 2]
|
},
|
getW: function (a) {
|
return this.data.array[a * this.data.stride + this.offset + 3]
|
},
|
setXY: function (a, b, c) {
|
a = a * this.data.stride + this.offset;
|
this.data.array[a + 0] = b;
|
this.data.array[a + 1] = c;
|
return this
|
},
|
setXYZ: function (a, b, c, d) {
|
a = a * this.data.stride + this.offset;
|
this.data.array[a + 0] = b;
|
this.data.array[a + 1] = c;
|
this.data.array[a + 2] = d;
|
return this
|
},
|
setXYZW: function (a, b, c, d, f) {
|
a = a * this.data.stride + this.offset;
|
this.data.array[a + 0] = b;
|
this.data.array[a + 1] = c;
|
this.data.array[a + 2] = d;
|
this.data.array[a + 3] = f;
|
return this
|
}
|
});
|
Nb.prototype =
|
Object.create(R.prototype);
|
Nb.prototype.constructor = Nb;
|
Nb.prototype.isSpriteMaterial = !0;
|
Nb.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.color.copy(a.color);
|
this.map = a.map;
|
this.alphaMap = a.alphaMap;
|
this.rotation = a.rotation;
|
this.sizeAttenuation = a.sizeAttenuation;
|
return this
|
};
|
var Wc, Qe = new q,
|
Id = new q,
|
Jd = new q,
|
Xc = new z,
|
ae = new z,
|
Ci = new I,
|
Zf = new q,
|
Re = new q,
|
$f = new q,
|
qj = new z,
|
Fh = new z,
|
rj = new z;
|
$d.prototype = Object.assign(Object.create(E.prototype), {
|
constructor: $d,
|
isSprite: !0,
|
raycast: function (a,
|
b) {
|
null === a.camera && console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.');
|
Id.setFromMatrixScale(this.matrixWorld);
|
Ci.copy(a.camera.matrixWorld);
|
this.modelViewMatrix.multiplyMatrices(a.camera.matrixWorldInverse, this.matrixWorld);
|
Jd.setFromMatrixPosition(this.modelViewMatrix);
|
a.camera.isPerspectiveCamera && !1 === this.material.sizeAttenuation && Id.multiplyScalar(-Jd.z);
|
var c = this.material.rotation;
|
if (0 !== c) {
|
var d = Math.cos(c);
|
var f = Math.sin(c)
|
}
|
c = this.center;
|
ef(Zf.set(-.5, -.5, 0), Jd, c, Id, f, d);
|
ef(Re.set(.5, -.5, 0), Jd, c, Id, f, d);
|
ef($f.set(.5, .5, 0), Jd, c, Id, f, d);
|
qj.set(0, 0);
|
Fh.set(1, 0);
|
rj.set(1, 1);
|
var g = a.ray.intersectTriangle(Zf, Re, $f, !1, Qe);
|
if (null === g && (ef(Re.set(-.5, .5, 0), Jd, c, Id, f, d), Fh.set(0, 1), g = a.ray.intersectTriangle(Zf, $f, Re, !1, Qe), null === g)) return;
|
f = a.ray.origin.distanceTo(Qe);
|
f < a.near || f > a.far || b.push({
|
distance: f,
|
point: Qe.clone(),
|
uv: va.getUV(Qe, Zf, Re, $f, qj, Fh, rj, new z),
|
face: null,
|
object: this
|
})
|
},
|
clone: function () {
|
return (new this.constructor(this.material)).copy(this)
|
},
|
copy: function (a) {
|
E.prototype.copy.call(this, a);
|
void 0 !== a.center && this.center.copy(a.center);
|
return this
|
}
|
});
|
var ag = new q,
|
sj = new q;
|
be.prototype = Object.assign(Object.create(E.prototype), {
|
constructor: be,
|
isLOD: !0,
|
copy: function (a) {
|
E.prototype.copy.call(this, a, !1);
|
a = a.levels;
|
for (var b = 0, c = a.length; b < c; b++) {
|
var d = a[b];
|
this.addLevel(d.object.clone(), d.distance)
|
}
|
return this
|
},
|
addLevel: function (a, b) {
|
void 0 === b && (b = 0);
|
b = Math.abs(b);
|
for (var c = this.levels, d = 0; d < c.length && !(b < c[d].distance); d++);
|
c.splice(d, 0, {
|
distance: b,
|
object: a
|
});
|
this.add(a);
|
return this
|
},
|
getObjectForDistance: function (a) {
|
for (var b = this.levels, c = 1, d = b.length; c < d && !(a < b[c].distance); c++);
|
return b[c - 1].object
|
},
|
raycast: function (a, b) {
|
ag.setFromMatrixPosition(this.matrixWorld);
|
var c = a.ray.origin.distanceTo(ag);
|
this.getObjectForDistance(c).raycast(a, b)
|
},
|
update: function (a) {
|
var b = this.levels;
|
if (1 < b.length) {
|
ag.setFromMatrixPosition(a.matrixWorld);
|
sj.setFromMatrixPosition(this.matrixWorld);
|
a = ag.distanceTo(sj);
|
b[0].object.visible = !0;
|
for (var c = 1, d = b.length; c <
|
d; c++)
|
if (a >= b[c].distance) b[c - 1].object.visible = !1, b[c].object.visible = !0;
|
else break;
|
for (; c < d; c++) b[c].object.visible = !1
|
}
|
},
|
toJSON: function (a) {
|
a = E.prototype.toJSON.call(this, a);
|
a.object.levels = [];
|
for (var b = this.levels, c = 0, d = b.length; c < d; c++) {
|
var f = b[c];
|
a.object.levels.push({
|
object: f.object.uuid,
|
distance: f.distance
|
})
|
}
|
return a
|
}
|
});
|
ce.prototype = Object.assign(Object.create(ia.prototype), {
|
constructor: ce,
|
isSkinnedMesh: !0,
|
bind: function (a, b) {
|
this.skeleton = a;
|
void 0 === b && (this.updateMatrixWorld(!0), this.skeleton.calculateInverses(),
|
b = this.matrixWorld);
|
this.bindMatrix.copy(b);
|
this.bindMatrixInverse.getInverse(b)
|
},
|
pose: function () {
|
this.skeleton.pose()
|
},
|
normalizeSkinWeights: function () {
|
for (var a = new ca, b = this.geometry.attributes.skinWeight, c = 0, d = b.count; c < d; c++) {
|
a.x = b.getX(c);
|
a.y = b.getY(c);
|
a.z = b.getZ(c);
|
a.w = b.getW(c);
|
var f = 1 / a.manhattanLength();
|
Infinity !== f ? a.multiplyScalar(f) : a.set(1, 0, 0, 0);
|
b.setXYZW(c, a.x, a.y, a.z, a.w)
|
}
|
},
|
updateMatrixWorld: function (a) {
|
ia.prototype.updateMatrixWorld.call(this, a);
|
"attached" === this.bindMode ? this.bindMatrixInverse.getInverse(this.matrixWorld) :
|
"detached" === this.bindMode ? this.bindMatrixInverse.getInverse(this.bindMatrix) : console.warn("THREE.SkinnedMesh: Unrecognized bindMode: " + this.bindMode)
|
},
|
clone: function () {
|
return (new this.constructor(this.geometry, this.material)).copy(this)
|
}
|
});
|
var tj = new I,
|
Ll = new I;
|
Object.assign(ff.prototype, {
|
calculateInverses: function () {
|
this.boneInverses = [];
|
for (var a = 0, b = this.bones.length; a < b; a++) {
|
var c = new I;
|
this.bones[a] && c.getInverse(this.bones[a].matrixWorld);
|
this.boneInverses.push(c)
|
}
|
},
|
pose: function () {
|
var a, b;
|
var c = 0;
|
for (b = this.bones.length; c < b; c++)(a = this.bones[c]) && a.matrixWorld.getInverse(this.boneInverses[c]);
|
c = 0;
|
for (b = this.bones.length; c < b; c++)
|
if (a = this.bones[c]) a.parent && a.parent.isBone ? (a.matrix.getInverse(a.parent.matrixWorld), a.matrix.multiply(a.matrixWorld)) : a.matrix.copy(a.matrixWorld), a.matrix.decompose(a.position, a.quaternion, a.scale)
|
},
|
update: function () {
|
for (var a = this.bones, b = this.boneInverses, c = this.boneMatrices, d = this.boneTexture, f = 0, g = a.length; f < g; f++) tj.multiplyMatrices(a[f] ? a[f].matrixWorld :
|
Ll, b[f]), tj.toArray(c, 16 * f);
|
void 0 !== d && (d.needsUpdate = !0)
|
},
|
clone: function () {
|
return new ff(this.bones, this.boneInverses)
|
},
|
getBoneByName: function (a) {
|
for (var b = 0, c = this.bones.length; b < c; b++) {
|
var d = this.bones[b];
|
if (d.name === a) return d
|
}
|
}
|
});
|
Ig.prototype = Object.assign(Object.create(E.prototype), {
|
constructor: Ig,
|
isBone: !0
|
});
|
gf.prototype = Object.assign(Object.create(ia.prototype), {
|
constructor: gf,
|
isInstancedMesh: !0,
|
raycast: function () {},
|
setMatrixAt: function (a, b) {
|
b.toArray(this.instanceMatrix.array, 16 * a)
|
},
|
updateMorphTargets: function () {}
|
});
|
T.prototype = Object.create(R.prototype);
|
T.prototype.constructor = T;
|
T.prototype.isLineBasicMaterial = !0;
|
T.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.color.copy(a.color);
|
this.linewidth = a.linewidth;
|
this.linecap = a.linecap;
|
this.linejoin = a.linejoin;
|
return this
|
};
|
var uj = new q,
|
vj = new q,
|
wj = new I,
|
bg = new ac,
|
Se = new ub;
|
pa.prototype = Object.assign(Object.create(E.prototype), {
|
constructor: pa,
|
isLine: !0,
|
computeLineDistances: function () {
|
var a = this.geometry;
|
if (a.isBufferGeometry)
|
if (null === a.index) {
|
for (var b =
|
a.attributes.position, c = [0], d = 1, f = b.count; d < f; d++) uj.fromBufferAttribute(b, d - 1), vj.fromBufferAttribute(b, d), c[d] = c[d - 1], c[d] += uj.distanceTo(vj);
|
a.setAttribute("lineDistance", new F(c, 1))
|
} else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");
|
else if (a.isGeometry)
|
for (b = a.vertices, c = a.lineDistances, c[0] = 0, d = 1, f = b.length; d < f; d++) c[d] = c[d - 1], c[d] += b[d - 1].distanceTo(b[d]);
|
return this
|
},
|
raycast: function (a, b) {
|
var c = a.linePrecision,
|
d = this.geometry,
|
f = this.matrixWorld;
|
null === d.boundingSphere && d.computeBoundingSphere();
|
Se.copy(d.boundingSphere);
|
Se.applyMatrix4(f);
|
Se.radius += c;
|
if (!1 !== a.ray.intersectsSphere(Se)) {
|
wj.getInverse(f);
|
bg.copy(a.ray).applyMatrix4(wj);
|
c /= (this.scale.x + this.scale.y + this.scale.z) / 3;
|
c *= c;
|
var g = new q,
|
k = new q;
|
f = new q;
|
var m = new q,
|
l = this && this.isLineSegments ? 2 : 1;
|
if (d.isBufferGeometry) {
|
var p = d.index,
|
y = d.attributes.position.array;
|
if (null !== p) {
|
p = p.array;
|
d = 0;
|
for (var t = p.length - 1; d < t; d += l) {
|
var r = p[d + 1];
|
g.fromArray(y, 3 * p[d]);
|
k.fromArray(y,
|
3 * r);
|
r = bg.distanceSqToSegment(g, k, m, f);
|
r > c || (m.applyMatrix4(this.matrixWorld), r = a.ray.origin.distanceTo(m), r < a.near || r > a.far || b.push({
|
distance: r,
|
point: f.clone().applyMatrix4(this.matrixWorld),
|
index: d,
|
face: null,
|
faceIndex: null,
|
object: this
|
}))
|
}
|
} else
|
for (d = 0, t = y.length / 3 - 1; d < t; d += l) g.fromArray(y, 3 * d), k.fromArray(y, 3 * d + 3), r = bg.distanceSqToSegment(g, k, m, f), r > c || (m.applyMatrix4(this.matrixWorld), r = a.ray.origin.distanceTo(m), r < a.near || r > a.far || b.push({
|
distance: r,
|
point: f.clone().applyMatrix4(this.matrixWorld),
|
index: d,
|
face: null,
|
faceIndex: null,
|
object: this
|
}))
|
} else if (d.isGeometry)
|
for (g = d.vertices, k = g.length, d = 0; d < k - 1; d += l) r = bg.distanceSqToSegment(g[d], g[d + 1], m, f), r > c || (m.applyMatrix4(this.matrixWorld), r = a.ray.origin.distanceTo(m), r < a.near || r > a.far || b.push({
|
distance: r,
|
point: f.clone().applyMatrix4(this.matrixWorld),
|
index: d,
|
face: null,
|
faceIndex: null,
|
object: this
|
}))
|
}
|
},
|
clone: function () {
|
return (new this.constructor(this.geometry, this.material)).copy(this)
|
}
|
});
|
var cg = new q,
|
dg = new q;
|
Z.prototype = Object.assign(Object.create(pa.prototype), {
|
constructor: Z,
|
isLineSegments: !0,
|
computeLineDistances: function () {
|
var a = this.geometry;
|
if (a.isBufferGeometry)
|
if (null === a.index) {
|
for (var b = a.attributes.position, c = [], d = 0, f = b.count; d < f; d += 2) cg.fromBufferAttribute(b, d), dg.fromBufferAttribute(b, d + 1), c[d] = 0 === d ? 0 : c[d - 1], c[d + 1] = c[d] + cg.distanceTo(dg);
|
a.setAttribute("lineDistance", new F(c, 1))
|
} else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");
|
else if (a.isGeometry)
|
for (b = a.vertices, c = a.lineDistances,
|
d = 0, f = b.length; d < f; d += 2) cg.copy(b[d]), dg.copy(b[d + 1]), c[d] = 0 === d ? 0 : c[d - 1], c[d + 1] = c[d] + cg.distanceTo(dg);
|
return this
|
}
|
});
|
hf.prototype = Object.assign(Object.create(pa.prototype), {
|
constructor: hf,
|
isLineLoop: !0
|
});
|
Va.prototype = Object.create(R.prototype);
|
Va.prototype.constructor = Va;
|
Va.prototype.isPointsMaterial = !0;
|
Va.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.color.copy(a.color);
|
this.map = a.map;
|
this.alphaMap = a.alphaMap;
|
this.size = a.size;
|
this.sizeAttenuation = a.sizeAttenuation;
|
this.morphTargets =
|
a.morphTargets;
|
return this
|
};
|
var xj = new I,
|
Kg = new ac,
|
Te = new ub,
|
eg = new q;
|
Yc.prototype = Object.assign(Object.create(E.prototype), {
|
constructor: Yc,
|
isPoints: !0,
|
raycast: function (a, b) {
|
var c = this.geometry,
|
d = this.matrixWorld,
|
f = a.params.Points.threshold;
|
null === c.boundingSphere && c.computeBoundingSphere();
|
Te.copy(c.boundingSphere);
|
Te.applyMatrix4(d);
|
Te.radius += f;
|
if (!1 !== a.ray.intersectsSphere(Te))
|
if (xj.getInverse(d), Kg.copy(a.ray).applyMatrix4(xj), f /= (this.scale.x + this.scale.y + this.scale.z) / 3, f *= f, c.isBufferGeometry) {
|
var g =
|
c.index;
|
c = c.attributes.position.array;
|
if (null !== g) {
|
var k = g.array;
|
g = 0;
|
for (var m = k.length; g < m; g++) {
|
var l = k[g];
|
eg.fromArray(c, 3 * l);
|
Jg(eg, l, f, d, a, b, this)
|
}
|
} else
|
for (g = 0, k = c.length / 3; g < k; g++) eg.fromArray(c, 3 * g), Jg(eg, g, f, d, a, b, this)
|
} else
|
for (c = c.vertices, g = 0, k = c.length; g < k; g++) Jg(c[g], g, f, d, a, b, this)
|
},
|
updateMorphTargets: function () {
|
var a = this.geometry;
|
if (a.isBufferGeometry) {
|
a = a.morphAttributes;
|
var b = Object.keys(a);
|
if (0 < b.length) {
|
var c = a[b[0]];
|
if (void 0 !== c)
|
for (this.morphTargetInfluences = [], this.morphTargetDictionary = {}, a = 0, b = c.length; a < b; a++) {
|
var d = c[a].name || String(a);
|
this.morphTargetInfluences.push(0);
|
this.morphTargetDictionary[d] = a
|
}
|
}
|
} else a = a.morphTargets, void 0 !== a && 0 < a.length && console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")
|
},
|
clone: function () {
|
return (new this.constructor(this.geometry, this.material)).copy(this)
|
}
|
});
|
Lg.prototype = Object.assign(Object.create(S.prototype), {
|
constructor: Lg,
|
isVideoTexture: !0,
|
update: function () {
|
var a = this.image;
|
a.readyState >=
|
a.HAVE_CURRENT_DATA && (this.needsUpdate = !0)
|
}
|
});
|
Zc.prototype = Object.create(S.prototype);
|
Zc.prototype.constructor = Zc;
|
Zc.prototype.isCompressedTexture = !0;
|
de.prototype = Object.create(S.prototype);
|
de.prototype.constructor = de;
|
de.prototype.isCanvasTexture = !0;
|
ee.prototype = Object.create(S.prototype);
|
ee.prototype.constructor = ee;
|
ee.prototype.isDepthTexture = !0;
|
$c.prototype = Object.create(G.prototype);
|
$c.prototype.constructor = $c;
|
fe.prototype = Object.create(P.prototype);
|
fe.prototype.constructor = fe;
|
ad.prototype = Object.create(G.prototype);
|
ad.prototype.constructor = ad;
|
ge.prototype = Object.create(P.prototype);
|
ge.prototype.constructor = ge;
|
Fa.prototype = Object.create(G.prototype);
|
Fa.prototype.constructor = Fa;
|
he.prototype = Object.create(P.prototype);
|
he.prototype.constructor = he;
|
bd.prototype = Object.create(Fa.prototype);
|
bd.prototype.constructor = bd;
|
ie.prototype = Object.create(P.prototype);
|
ie.prototype.constructor = ie;
|
lc.prototype = Object.create(Fa.prototype);
|
lc.prototype.constructor = lc;
|
je.prototype = Object.create(P.prototype);
|
je.prototype.constructor =
|
je;
|
cd.prototype = Object.create(Fa.prototype);
|
cd.prototype.constructor = cd;
|
ke.prototype = Object.create(P.prototype);
|
ke.prototype.constructor = ke;
|
dd.prototype = Object.create(Fa.prototype);
|
dd.prototype.constructor = dd;
|
le.prototype = Object.create(P.prototype);
|
le.prototype.constructor = le;
|
mc.prototype = Object.create(G.prototype);
|
mc.prototype.constructor = mc;
|
mc.prototype.toJSON = function () {
|
var a = G.prototype.toJSON.call(this);
|
a.path = this.parameters.path.toJSON();
|
return a
|
};
|
me.prototype = Object.create(P.prototype);
|
me.prototype.constructor =
|
me;
|
ed.prototype = Object.create(G.prototype);
|
ed.prototype.constructor = ed;
|
ne.prototype = Object.create(P.prototype);
|
ne.prototype.constructor = ne;
|
fd.prototype = Object.create(G.prototype);
|
fd.prototype.constructor = fd;
|
var Ml = {
|
triangulate: function (a, b, c) {
|
c = c || 2;
|
var d = b && b.length,
|
f = d ? b[0] * c : a.length,
|
g = Di(a, 0, f, c, !0),
|
k = [];
|
if (!g || g.next === g.prev) return k;
|
var m;
|
if (d) {
|
var l = c;
|
d = [];
|
var p;
|
var q = 0;
|
for (p = b.length; q < p; q++) {
|
var t = b[q] * l;
|
var r = q < p - 1 ? b[q + 1] * l : a.length;
|
t = Di(a, t, r, l, !1);
|
t === t.next && (t.steiner = !0);
|
d.push(ll(t))
|
}
|
d.sort(jl);
|
for (q = 0; q < d.length; q++) {
|
b = d[q];
|
l = g;
|
if (l = kl(b, l)) b = Gi(l, b), pe(b, b.next);
|
g = pe(g, g.next)
|
}
|
}
|
if (a.length > 80 * c) {
|
var u = m = a[0];
|
var v = d = a[1];
|
for (l = c; l < f; l += c) q = a[l], b = a[l + 1], q < u && (u = q), b < v && (v = b), q > m && (m = q), b > d && (d = b);
|
m = Math.max(m - u, d - v);
|
m = 0 !== m ? 1 / m : 0
|
}
|
qe(g, k, c, u, v, m);
|
return k
|
}
|
},
|
xb = {
|
area: function (a) {
|
for (var b = a.length, c = 0, d = b - 1, f = 0; f < b; d = f++) c += a[d].x * a[f].y - a[f].x * a[d].y;
|
return .5 * c
|
},
|
isClockWise: function (a) {
|
return 0 > xb.area(a)
|
},
|
triangulateShape: function (a, b) {
|
var c = [],
|
d = [],
|
f = [];
|
Hi(a);
|
Ii(c, a);
|
var g = a.length;
|
b.forEach(Hi);
|
for (a = 0; a < b.length; a++) d.push(g), g += b[a].length, Ii(c, b[a]);
|
b = Ml.triangulate(c, d);
|
for (a = 0; a < b.length; a += 3) f.push(b.slice(a, a + 3));
|
return f
|
}
|
};
|
oc.prototype = Object.create(P.prototype);
|
oc.prototype.constructor = oc;
|
oc.prototype.toJSON = function () {
|
var a = P.prototype.toJSON.call(this);
|
return Ji(this.parameters.shapes, this.parameters.options, a)
|
};
|
jb.prototype = Object.create(G.prototype);
|
jb.prototype.constructor = jb;
|
jb.prototype.toJSON = function () {
|
var a = G.prototype.toJSON.call(this);
|
return Ji(this.parameters.shapes,
|
this.parameters.options, a)
|
};
|
var ml = {
|
generateTopUV: function (a, b, c, d, f) {
|
a = b[3 * d];
|
d = b[3 * d + 1];
|
var g = b[3 * f];
|
f = b[3 * f + 1];
|
return [new z(b[3 * c], b[3 * c + 1]), new z(a, d), new z(g, f)]
|
},
|
generateSideWallUV: function (a, b, c, d, f, g) {
|
a = b[3 * c];
|
var k = b[3 * c + 1];
|
c = b[3 * c + 2];
|
var m = b[3 * d],
|
l = b[3 * d + 1];
|
d = b[3 * d + 2];
|
var p = b[3 * f],
|
q = b[3 * f + 1];
|
f = b[3 * f + 2];
|
var t = b[3 * g],
|
r = b[3 * g + 1];
|
b = b[3 * g + 2];
|
return .01 > Math.abs(k - l) ? [new z(a, 1 - c), new z(m, 1 - d), new z(p, 1 - f), new z(t, 1 - b)] : [new z(k, 1 - c), new z(l, 1 - d), new z(q, 1 - f), new z(r, 1 - b)]
|
}
|
};
|
se.prototype = Object.create(P.prototype);
|
se.prototype.constructor = se;
|
hd.prototype = Object.create(jb.prototype);
|
hd.prototype.constructor = hd;
|
te.prototype = Object.create(P.prototype);
|
te.prototype.constructor = te;
|
Ob.prototype = Object.create(G.prototype);
|
Ob.prototype.constructor = Ob;
|
ue.prototype = Object.create(P.prototype);
|
ue.prototype.constructor = ue;
|
id.prototype = Object.create(G.prototype);
|
id.prototype.constructor = id;
|
ve.prototype = Object.create(P.prototype);
|
ve.prototype.constructor = ve;
|
jd.prototype = Object.create(G.prototype);
|
jd.prototype.constructor =
|
jd;
|
pc.prototype = Object.create(P.prototype);
|
pc.prototype.constructor = pc;
|
pc.prototype.toJSON = function () {
|
var a = P.prototype.toJSON.call(this);
|
return Ki(this.parameters.shapes, a)
|
};
|
qc.prototype = Object.create(G.prototype);
|
qc.prototype.constructor = qc;
|
qc.prototype.toJSON = function () {
|
var a = G.prototype.toJSON.call(this);
|
return Ki(this.parameters.shapes, a)
|
};
|
kd.prototype = Object.create(G.prototype);
|
kd.prototype.constructor = kd;
|
rc.prototype = Object.create(P.prototype);
|
rc.prototype.constructor = rc;
|
yb.prototype = Object.create(G.prototype);
|
yb.prototype.constructor = yb;
|
we.prototype = Object.create(rc.prototype);
|
we.prototype.constructor = we;
|
xe.prototype = Object.create(yb.prototype);
|
xe.prototype.constructor = xe;
|
ye.prototype = Object.create(P.prototype);
|
ye.prototype.constructor = ye;
|
ld.prototype = Object.create(G.prototype);
|
ld.prototype.constructor = ld;
|
var Ba = Object.freeze({
|
__proto__: null,
|
WireframeGeometry: $c,
|
ParametricGeometry: fe,
|
ParametricBufferGeometry: ad,
|
TetrahedronGeometry: he,
|
TetrahedronBufferGeometry: bd,
|
OctahedronGeometry: ie,
|
OctahedronBufferGeometry: lc,
|
IcosahedronGeometry: je,
|
IcosahedronBufferGeometry: cd,
|
DodecahedronGeometry: ke,
|
DodecahedronBufferGeometry: dd,
|
PolyhedronGeometry: ge,
|
PolyhedronBufferGeometry: Fa,
|
TubeGeometry: le,
|
TubeBufferGeometry: mc,
|
TorusKnotGeometry: me,
|
TorusKnotBufferGeometry: ed,
|
TorusGeometry: ne,
|
TorusBufferGeometry: fd,
|
TextGeometry: se,
|
TextBufferGeometry: hd,
|
SphereGeometry: te,
|
SphereBufferGeometry: Ob,
|
RingGeometry: ue,
|
RingBufferGeometry: id,
|
PlaneGeometry: Td,
|
PlaneBufferGeometry: ic,
|
LatheGeometry: ve,
|
LatheBufferGeometry: jd,
|
ShapeGeometry: pc,
|
ShapeBufferGeometry: qc,
|
ExtrudeGeometry: oc,
|
ExtrudeBufferGeometry: jb,
|
EdgesGeometry: kd,
|
ConeGeometry: we,
|
ConeBufferGeometry: xe,
|
CylinderGeometry: rc,
|
CylinderBufferGeometry: yb,
|
CircleGeometry: ye,
|
CircleBufferGeometry: ld,
|
BoxGeometry: Eh,
|
BoxBufferGeometry: Ud
|
});
|
sc.prototype = Object.create(R.prototype);
|
sc.prototype.constructor = sc;
|
sc.prototype.isShadowMaterial = !0;
|
sc.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.color.copy(a.color);
|
return this
|
};
|
md.prototype = Object.create(Aa.prototype);
|
md.prototype.constructor = md;
|
md.prototype.isRawShaderMaterial = !0;
|
kb.prototype = Object.create(R.prototype);
|
kb.prototype.constructor = kb;
|
kb.prototype.isMeshStandardMaterial = !0;
|
kb.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.defines = {
|
STANDARD: ""
|
};
|
this.color.copy(a.color);
|
this.roughness = a.roughness;
|
this.metalness = a.metalness;
|
this.map = a.map;
|
this.lightMap = a.lightMap;
|
this.lightMapIntensity = a.lightMapIntensity;
|
this.aoMap = a.aoMap;
|
this.aoMapIntensity = a.aoMapIntensity;
|
this.emissive.copy(a.emissive);
|
this.emissiveMap = a.emissiveMap;
|
this.emissiveIntensity = a.emissiveIntensity;
|
this.bumpMap = a.bumpMap;
|
this.bumpScale = a.bumpScale;
|
this.normalMap = a.normalMap;
|
this.normalMapType = a.normalMapType;
|
this.normalScale.copy(a.normalScale);
|
this.displacementMap = a.displacementMap;
|
this.displacementScale = a.displacementScale;
|
this.displacementBias = a.displacementBias;
|
this.roughnessMap = a.roughnessMap;
|
this.metalnessMap = a.metalnessMap;
|
this.alphaMap = a.alphaMap;
|
this.envMap = a.envMap;
|
this.envMapIntensity = a.envMapIntensity;
|
this.refractionRatio = a.refractionRatio;
|
this.wireframe = a.wireframe;
|
this.wireframeLinewidth =
|
a.wireframeLinewidth;
|
this.wireframeLinecap = a.wireframeLinecap;
|
this.wireframeLinejoin = a.wireframeLinejoin;
|
this.skinning = a.skinning;
|
this.morphTargets = a.morphTargets;
|
this.morphNormals = a.morphNormals;
|
return this
|
};
|
tc.prototype = Object.create(kb.prototype);
|
tc.prototype.constructor = tc;
|
tc.prototype.isMeshPhysicalMaterial = !0;
|
tc.prototype.copy = function (a) {
|
kb.prototype.copy.call(this, a);
|
this.defines = {
|
STANDARD: "",
|
PHYSICAL: ""
|
};
|
this.reflectivity = a.reflectivity;
|
this.clearcoat = a.clearcoat;
|
this.clearcoatRoughness =
|
a.clearcoatRoughness;
|
this.sheen = a.sheen ? (this.sheen || new D).copy(a.sheen) : null;
|
this.clearcoatNormalMap = a.clearcoatNormalMap;
|
this.clearcoatNormalScale.copy(a.clearcoatNormalScale);
|
this.transparency = a.transparency;
|
return this
|
};
|
Wa.prototype = Object.create(R.prototype);
|
Wa.prototype.constructor = Wa;
|
Wa.prototype.isMeshPhongMaterial = !0;
|
Wa.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.color.copy(a.color);
|
this.specular.copy(a.specular);
|
this.shininess = a.shininess;
|
this.map = a.map;
|
this.lightMap =
|
a.lightMap;
|
this.lightMapIntensity = a.lightMapIntensity;
|
this.aoMap = a.aoMap;
|
this.aoMapIntensity = a.aoMapIntensity;
|
this.emissive.copy(a.emissive);
|
this.emissiveMap = a.emissiveMap;
|
this.emissiveIntensity = a.emissiveIntensity;
|
this.bumpMap = a.bumpMap;
|
this.bumpScale = a.bumpScale;
|
this.normalMap = a.normalMap;
|
this.normalMapType = a.normalMapType;
|
this.normalScale.copy(a.normalScale);
|
this.displacementMap = a.displacementMap;
|
this.displacementScale = a.displacementScale;
|
this.displacementBias = a.displacementBias;
|
this.specularMap =
|
a.specularMap;
|
this.alphaMap = a.alphaMap;
|
this.envMap = a.envMap;
|
this.combine = a.combine;
|
this.reflectivity = a.reflectivity;
|
this.refractionRatio = a.refractionRatio;
|
this.wireframe = a.wireframe;
|
this.wireframeLinewidth = a.wireframeLinewidth;
|
this.wireframeLinecap = a.wireframeLinecap;
|
this.wireframeLinejoin = a.wireframeLinejoin;
|
this.skinning = a.skinning;
|
this.morphTargets = a.morphTargets;
|
this.morphNormals = a.morphNormals;
|
return this
|
};
|
uc.prototype = Object.create(Wa.prototype);
|
uc.prototype.constructor = uc;
|
uc.prototype.isMeshToonMaterial = !0;
|
uc.prototype.copy = function (a) {
|
Wa.prototype.copy.call(this, a);
|
this.gradientMap = a.gradientMap;
|
return this
|
};
|
vc.prototype = Object.create(R.prototype);
|
vc.prototype.constructor = vc;
|
vc.prototype.isMeshNormalMaterial = !0;
|
vc.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.bumpMap = a.bumpMap;
|
this.bumpScale = a.bumpScale;
|
this.normalMap = a.normalMap;
|
this.normalMapType = a.normalMapType;
|
this.normalScale.copy(a.normalScale);
|
this.displacementMap = a.displacementMap;
|
this.displacementScale = a.displacementScale;
|
this.displacementBias = a.displacementBias;
|
this.wireframe = a.wireframe;
|
this.wireframeLinewidth = a.wireframeLinewidth;
|
this.skinning = a.skinning;
|
this.morphTargets = a.morphTargets;
|
this.morphNormals = a.morphNormals;
|
return this
|
};
|
wc.prototype = Object.create(R.prototype);
|
wc.prototype.constructor = wc;
|
wc.prototype.isMeshLambertMaterial = !0;
|
wc.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.color.copy(a.color);
|
this.map = a.map;
|
this.lightMap = a.lightMap;
|
this.lightMapIntensity = a.lightMapIntensity;
|
this.aoMap =
|
a.aoMap;
|
this.aoMapIntensity = a.aoMapIntensity;
|
this.emissive.copy(a.emissive);
|
this.emissiveMap = a.emissiveMap;
|
this.emissiveIntensity = a.emissiveIntensity;
|
this.specularMap = a.specularMap;
|
this.alphaMap = a.alphaMap;
|
this.envMap = a.envMap;
|
this.combine = a.combine;
|
this.reflectivity = a.reflectivity;
|
this.refractionRatio = a.refractionRatio;
|
this.wireframe = a.wireframe;
|
this.wireframeLinewidth = a.wireframeLinewidth;
|
this.wireframeLinecap = a.wireframeLinecap;
|
this.wireframeLinejoin = a.wireframeLinejoin;
|
this.skinning = a.skinning;
|
this.morphTargets = a.morphTargets;
|
this.morphNormals = a.morphNormals;
|
return this
|
};
|
xc.prototype = Object.create(R.prototype);
|
xc.prototype.constructor = xc;
|
xc.prototype.isMeshMatcapMaterial = !0;
|
xc.prototype.copy = function (a) {
|
R.prototype.copy.call(this, a);
|
this.defines = {
|
MATCAP: ""
|
};
|
this.color.copy(a.color);
|
this.matcap = a.matcap;
|
this.map = a.map;
|
this.bumpMap = a.bumpMap;
|
this.bumpScale = a.bumpScale;
|
this.normalMap = a.normalMap;
|
this.normalMapType = a.normalMapType;
|
this.normalScale.copy(a.normalScale);
|
this.displacementMap = a.displacementMap;
|
this.displacementScale = a.displacementScale;
|
this.displacementBias = a.displacementBias;
|
this.alphaMap = a.alphaMap;
|
this.skinning = a.skinning;
|
this.morphTargets = a.morphTargets;
|
this.morphNormals = a.morphNormals;
|
return this
|
};
|
yc.prototype = Object.create(T.prototype);
|
yc.prototype.constructor = yc;
|
yc.prototype.isLineDashedMaterial = !0;
|
yc.prototype.copy = function (a) {
|
T.prototype.copy.call(this, a);
|
this.scale = a.scale;
|
this.dashSize = a.dashSize;
|
this.gapSize = a.gapSize;
|
return this
|
};
|
var Nl = Object.freeze({
|
__proto__: null,
|
ShadowMaterial: sc,
|
SpriteMaterial: Nb,
|
RawShaderMaterial: md,
|
ShaderMaterial: Aa,
|
PointsMaterial: Va,
|
MeshPhysicalMaterial: tc,
|
MeshStandardMaterial: kb,
|
MeshPhongMaterial: Wa,
|
MeshToonMaterial: uc,
|
MeshNormalMaterial: vc,
|
MeshLambertMaterial: wc,
|
MeshDepthMaterial: Kb,
|
MeshDistanceMaterial: Lb,
|
MeshBasicMaterial: Ia,
|
MeshMatcapMaterial: xc,
|
LineDashedMaterial: yc,
|
LineBasicMaterial: T,
|
Material: R
|
}),
|
aa = {
|
arraySlice: function (a, b, c) {
|
return aa.isTypedArray(a) ? new a.constructor(a.subarray(b, void 0 !== c ? c : a.length)) : a.slice(b, c)
|
},
|
convertArray: function (a,
|
b, c) {
|
return !a || !c && a.constructor === b ? a : "number" === typeof b.BYTES_PER_ELEMENT ? new b(a) : Array.prototype.slice.call(a)
|
},
|
isTypedArray: function (a) {
|
return ArrayBuffer.isView(a) && !(a instanceof DataView)
|
},
|
getKeyframeOrder: function (a) {
|
for (var b = a.length, c = Array(b), d = 0; d !== b; ++d) c[d] = d;
|
c.sort(function (b, c) {
|
return a[b] - a[c]
|
});
|
return c
|
},
|
sortedArray: function (a, b, c) {
|
for (var d = a.length, f = new a.constructor(d), g = 0, k = 0; k !== d; ++g)
|
for (var m = c[g] * b, l = 0; l !== b; ++l) f[k++] = a[m + l];
|
return f
|
},
|
flattenJSON: function (a, b, c, d) {
|
for (var f =
|
1, g = a[0]; void 0 !== g && void 0 === g[d];) g = a[f++];
|
if (void 0 !== g) {
|
var k = g[d];
|
if (void 0 !== k)
|
if (Array.isArray(k)) {
|
do k = g[d], void 0 !== k && (b.push(g.time), c.push.apply(c, k)), g = a[f++]; while (void 0 !== g)
|
} else if (void 0 !== k.toArray) {
|
do k = g[d], void 0 !== k && (b.push(g.time), k.toArray(c, c.length)), g = a[f++]; while (void 0 !== g)
|
} else {
|
do k = g[d], void 0 !== k && (b.push(g.time), c.push(k)), g = a[f++]; while (void 0 !== g)
|
}
|
}
|
},
|
subclip: function (a, b, c, d, f) {
|
f = f || 30;
|
a = a.clone();
|
a.name = b;
|
var g = [];
|
for (b = 0; b < a.tracks.length; ++b) {
|
for (var k = a.tracks[b],
|
m = k.getValueSize(), l = [], p = [], q = 0; q < k.times.length; ++q) {
|
var t = k.times[q] * f;
|
if (!(t < c || t >= d))
|
for (l.push(k.times[q]), t = 0; t < m; ++t) p.push(k.values[q * m + t])
|
}
|
0 !== l.length && (k.times = aa.convertArray(l, k.times.constructor), k.values = aa.convertArray(p, k.values.constructor), g.push(k))
|
}
|
a.tracks = g;
|
c = Infinity;
|
for (b = 0; b < a.tracks.length; ++b) c > a.tracks[b].times[0] && (c = a.tracks[b].times[0]);
|
for (b = 0; b < a.tracks.length; ++b) a.tracks[b].shift(-1 * c);
|
a.resetDuration();
|
return a
|
}
|
};
|
Object.assign(La.prototype, {
|
evaluate: function (a) {
|
var b =
|
this.parameterPositions,
|
c = this._cachedIndex,
|
d = b[c],
|
f = b[c - 1];
|
a: {
|
b: {
|
c: {
|
d: if (!(a < d)) {
|
for (var g = c + 2;;) {
|
if (void 0 === d) {
|
if (a < f) break d;
|
this._cachedIndex = c = b.length;
|
return this.afterEnd_(c - 1, a, f)
|
}
|
if (c === g) break;
|
f = d;
|
d = b[++c];
|
if (a < d) break b
|
}
|
d = b.length;
|
break c
|
}if (a >= f) break a;
|
else {
|
g = b[1];
|
a < g && (c = 2, f = g);
|
for (g = c - 2;;) {
|
if (void 0 === f) return this._cachedIndex = 0, this.beforeStart_(0, a, d);
|
if (c === g) break;
|
d = f;
|
f = b[--c - 1];
|
if (a >= f) break b
|
}
|
d = c;
|
c = 0
|
}
|
}
|
for (; c < d;) f = c + d >>> 1,
|
a < b[f] ? d = f : c = f + 1;d = b[c];f = b[c - 1];
|
if (void 0 === f) return this._cachedIndex =
|
0,
|
this.beforeStart_(0, a, d);
|
if (void 0 === d) return this._cachedIndex = c = b.length,
|
this.afterEnd_(c - 1, f, a)
|
}
|
this._cachedIndex = c;this.intervalChanged_(c, f, d)
|
}
|
return this.interpolate_(c, f, a, d)
|
},
|
settings: null,
|
DefaultSettings_: {},
|
getSettings_: function () {
|
return this.settings || this.DefaultSettings_
|
},
|
copySampleValue_: function (a) {
|
var b = this.resultBuffer,
|
c = this.sampleValues,
|
d = this.valueSize;
|
a *= d;
|
for (var f = 0; f !== d; ++f) b[f] = c[a + f];
|
return b
|
},
|
interpolate_: function () {
|
throw Error("call to abstract method");
|
},
|
intervalChanged_: function () {}
|
});
|
Object.assign(La.prototype, {
|
beforeStart_: La.prototype.copySampleValue_,
|
afterEnd_: La.prototype.copySampleValue_
|
});
|
jf.prototype = Object.assign(Object.create(La.prototype), {
|
constructor: jf,
|
DefaultSettings_: {
|
endingStart: 2400,
|
endingEnd: 2400
|
},
|
intervalChanged_: function (a, b, c) {
|
var d = this.parameterPositions,
|
f = a - 2,
|
g = a + 1,
|
k = d[f],
|
m = d[g];
|
if (void 0 === k) switch (this.getSettings_().endingStart) {
|
case 2401:
|
f = a;
|
k = 2 * b - c;
|
break;
|
case 2402:
|
f = d.length - 2;
|
k = b + d[f] - d[f + 1];
|
break;
|
default:
|
f = a, k = c
|
}
|
if (void 0 === m) switch (this.getSettings_().endingEnd) {
|
case 2401:
|
g =
|
a;
|
m = 2 * c - b;
|
break;
|
case 2402:
|
g = 1;
|
m = c + d[1] - d[0];
|
break;
|
default:
|
g = a - 1, m = b
|
}
|
a = .5 * (c - b);
|
d = this.valueSize;
|
this._weightPrev = a / (b - k);
|
this._weightNext = a / (m - c);
|
this._offsetPrev = f * d;
|
this._offsetNext = g * d
|
},
|
interpolate_: function (a, b, c, d) {
|
var f = this.resultBuffer,
|
g = this.sampleValues,
|
k = this.valueSize;
|
a *= k;
|
var m = a - k,
|
l = this._offsetPrev,
|
p = this._offsetNext,
|
q = this._weightPrev,
|
t = this._weightNext,
|
r = (c - b) / (d - b);
|
c = r * r;
|
d = c * r;
|
b = -q * d + 2 * q * c - q * r;
|
q = (1 + q) * d + (-1.5 - 2 * q) * c + (-.5 + q) * r + 1;
|
r = (-1 - t) * d + (1.5 + t) * c + .5 * r;
|
t = t * d - t * c;
|
for (c = 0; c !== k; ++c) f[c] =
|
b * g[l + c] + q * g[m + c] + r * g[a + c] + t * g[p + c];
|
return f
|
}
|
});
|
ze.prototype = Object.assign(Object.create(La.prototype), {
|
constructor: ze,
|
interpolate_: function (a, b, c, d) {
|
var f = this.resultBuffer,
|
g = this.sampleValues,
|
k = this.valueSize;
|
a *= k;
|
var m = a - k;
|
b = (c - b) / (d - b);
|
c = 1 - b;
|
for (d = 0; d !== k; ++d) f[d] = g[m + d] * c + g[a + d] * b;
|
return f
|
}
|
});
|
kf.prototype = Object.assign(Object.create(La.prototype), {
|
constructor: kf,
|
interpolate_: function (a) {
|
return this.copySampleValue_(a - 1)
|
}
|
});
|
Object.assign(ua, {
|
toJSON: function (a) {
|
var b = a.constructor;
|
if (void 0 !==
|
b.toJSON) b = b.toJSON(a);
|
else {
|
b = {
|
name: a.name,
|
times: aa.convertArray(a.times, Array),
|
values: aa.convertArray(a.values, Array)
|
};
|
var c = a.getInterpolation();
|
c !== a.DefaultInterpolation && (b.interpolation = c)
|
}
|
b.type = a.ValueTypeName;
|
return b
|
}
|
});
|
Object.assign(ua.prototype, {
|
constructor: ua,
|
TimeBufferType: Float32Array,
|
ValueBufferType: Float32Array,
|
DefaultInterpolation: 2301,
|
InterpolantFactoryMethodDiscrete: function (a) {
|
return new kf(this.times, this.values, this.getValueSize(), a)
|
},
|
InterpolantFactoryMethodLinear: function (a) {
|
return new ze(this.times,
|
this.values, this.getValueSize(), a)
|
},
|
InterpolantFactoryMethodSmooth: function (a) {
|
return new jf(this.times, this.values, this.getValueSize(), a)
|
},
|
setInterpolation: function (a) {
|
switch (a) {
|
case 2300:
|
var b = this.InterpolantFactoryMethodDiscrete;
|
break;
|
case 2301:
|
b = this.InterpolantFactoryMethodLinear;
|
break;
|
case 2302:
|
b = this.InterpolantFactoryMethodSmooth
|
}
|
if (void 0 === b) {
|
b = "unsupported interpolation for " + this.ValueTypeName + " keyframe track named " + this.name;
|
if (void 0 === this.createInterpolant)
|
if (a !== this.DefaultInterpolation) this.setInterpolation(this.DefaultInterpolation);
|
else throw Error(b);
|
console.warn("THREE.KeyframeTrack:", b);
|
return this
|
}
|
this.createInterpolant = b;
|
return this
|
},
|
getInterpolation: function () {
|
switch (this.createInterpolant) {
|
case this.InterpolantFactoryMethodDiscrete:
|
return 2300;
|
case this.InterpolantFactoryMethodLinear:
|
return 2301;
|
case this.InterpolantFactoryMethodSmooth:
|
return 2302
|
}
|
},
|
getValueSize: function () {
|
return this.values.length / this.times.length
|
},
|
shift: function (a) {
|
if (0 !== a)
|
for (var b = this.times, c = 0, d = b.length; c !== d; ++c) b[c] += a;
|
return this
|
},
|
scale: function (a) {
|
if (1 !==
|
a)
|
for (var b = this.times, c = 0, d = b.length; c !== d; ++c) b[c] *= a;
|
return this
|
},
|
trim: function (a, b) {
|
for (var c = this.times, d = c.length, f = 0, g = d - 1; f !== d && c[f] < a;) ++f;
|
for (; - 1 !== g && c[g] > b;) --g;
|
++g;
|
if (0 !== f || g !== d) f >= g && (g = Math.max(g, 1), f = g - 1), a = this.getValueSize(), this.times = aa.arraySlice(c, f, g), this.values = aa.arraySlice(this.values, f * a, g * a);
|
return this
|
},
|
validate: function () {
|
var a = !0,
|
b = this.getValueSize();
|
0 !== b - Math.floor(b) && (console.error("THREE.KeyframeTrack: Invalid value size in track.", this), a = !1);
|
var c = this.times;
|
b = this.values;
|
var d = c.length;
|
0 === d && (console.error("THREE.KeyframeTrack: Track is empty.", this), a = !1);
|
for (var f = null, g = 0; g !== d; g++) {
|
var k = c[g];
|
if ("number" === typeof k && isNaN(k)) {
|
console.error("THREE.KeyframeTrack: Time is not a valid number.", this, g, k);
|
a = !1;
|
break
|
}
|
if (null !== f && f > k) {
|
console.error("THREE.KeyframeTrack: Out of order keys.", this, g, k, f);
|
a = !1;
|
break
|
}
|
f = k
|
}
|
if (void 0 !== b && aa.isTypedArray(b))
|
for (g = 0, c = b.length; g !== c; ++g)
|
if (d = b[g], isNaN(d)) {
|
console.error("THREE.KeyframeTrack: Value is not a valid number.",
|
this, g, d);
|
a = !1;
|
break
|
} return a
|
},
|
optimize: function () {
|
for (var a = this.times, b = this.values, c = this.getValueSize(), d = 2302 === this.getInterpolation(), f = 1, g = a.length - 1, k = 1; k < g; ++k) {
|
var m = !1,
|
l = a[k];
|
if (l !== a[k + 1] && (1 !== k || l !== l[0]))
|
if (d) m = !0;
|
else {
|
var p = k * c,
|
q = p - c,
|
t = p + c;
|
for (l = 0; l !== c; ++l) {
|
var r = b[p + l];
|
if (r !== b[q + l] || r !== b[t + l]) {
|
m = !0;
|
break
|
}
|
}
|
} if (m) {
|
if (k !== f)
|
for (a[f] = a[k], m = k * c, p = f * c, l = 0; l !== c; ++l) b[p + l] = b[m + l];
|
++f
|
}
|
}
|
if (0 < g) {
|
a[f] = a[g];
|
m = g * c;
|
p = f * c;
|
for (l = 0; l !== c; ++l) b[p + l] = b[m + l];
|
++f
|
}
|
f !== a.length && (this.times = aa.arraySlice(a,
|
0, f), this.values = aa.arraySlice(b, 0, f * c));
|
return this
|
},
|
clone: function () {
|
var a = aa.arraySlice(this.times, 0),
|
b = aa.arraySlice(this.values, 0);
|
a = new this.constructor(this.name, a, b);
|
a.createInterpolant = this.createInterpolant;
|
return a
|
}
|
});
|
lf.prototype = Object.assign(Object.create(ua.prototype), {
|
constructor: lf,
|
ValueTypeName: "bool",
|
ValueBufferType: Array,
|
DefaultInterpolation: 2300,
|
InterpolantFactoryMethodLinear: void 0,
|
InterpolantFactoryMethodSmooth: void 0
|
});
|
mf.prototype = Object.assign(Object.create(ua.prototype), {
|
constructor: mf,
|
ValueTypeName: "color"
|
});
|
nd.prototype = Object.assign(Object.create(ua.prototype), {
|
constructor: nd,
|
ValueTypeName: "number"
|
});
|
nf.prototype = Object.assign(Object.create(La.prototype), {
|
constructor: nf,
|
interpolate_: function (a, b, c, d) {
|
var f = this.resultBuffer,
|
g = this.sampleValues,
|
k = this.valueSize;
|
a *= k;
|
b = (c - b) / (d - b);
|
for (c = a + k; a !== c; a += 4) ya.slerpFlat(f, 0, g, a - k, g, a, b);
|
return f
|
}
|
});
|
Ae.prototype = Object.assign(Object.create(ua.prototype), {
|
constructor: Ae,
|
ValueTypeName: "quaternion",
|
DefaultInterpolation: 2301,
|
InterpolantFactoryMethodLinear: function (a) {
|
return new nf(this.times, this.values, this.getValueSize(), a)
|
},
|
InterpolantFactoryMethodSmooth: void 0
|
}); of .prototype = Object.assign(Object.create(ua.prototype), {
|
constructor: of ,
|
ValueTypeName: "string",
|
ValueBufferType: Array,
|
DefaultInterpolation: 2300,
|
InterpolantFactoryMethodLinear: void 0,
|
InterpolantFactoryMethodSmooth: void 0
|
});
|
od.prototype = Object.assign(Object.create(ua.prototype), {
|
constructor: od,
|
ValueTypeName: "vector"
|
});
|
Object.assign(Pa, {
|
parse: function (a) {
|
for (var b = [], c = a.tracks, d = 1 / (a.fps || 1), f = 0, g = c.length; f !== g; ++f) b.push(ol(c[f]).scale(d));
|
return new Pa(a.name, a.duration, b)
|
},
|
toJSON: function (a) {
|
var b = [],
|
c = a.tracks;
|
a = {
|
name: a.name,
|
duration: a.duration,
|
tracks: b,
|
uuid: a.uuid
|
};
|
for (var d = 0, f = c.length; d !== f; ++d) b.push(ua.toJSON(c[d]));
|
return a
|
},
|
CreateFromMorphTargetSequence: function (a, b, c, d) {
|
for (var f = b.length, g = [], k = 0; k < f; k++) {
|
var m = [],
|
l = [];
|
m.push((k + f - 1) % f, k, (k + 1) % f);
|
l.push(0, 1, 0);
|
var p = aa.getKeyframeOrder(m);
|
m = aa.sortedArray(m, 1, p);
|
l = aa.sortedArray(l, 1, p);
|
d || 0 !==
|
m[0] || (m.push(f), l.push(l[0]));
|
g.push((new nd(".morphTargetInfluences[" + b[k].name + "]", m, l)).scale(1 / c))
|
}
|
return new Pa(a, -1, g)
|
},
|
findByName: function (a, b) {
|
var c = a;
|
Array.isArray(a) || (c = a.geometry && a.geometry.animations || a.animations);
|
for (a = 0; a < c.length; a++)
|
if (c[a].name === b) return c[a];
|
return null
|
},
|
CreateClipsFromMorphTargetSequences: function (a, b, c) {
|
for (var d = {}, f = /^([\w-]*?)([\d]+)$/, g = 0, k = a.length; g < k; g++) {
|
var m = a[g],
|
l = m.name.match(f);
|
if (l && 1 < l.length) {
|
var p = l[1];
|
(l = d[p]) || (d[p] = l = []);
|
l.push(m)
|
}
|
}
|
a = [];
|
for (p in d) a.push(Pa.CreateFromMorphTargetSequence(p, d[p], b, c));
|
return a
|
},
|
parseAnimation: function (a, b) {
|
if (!a) return console.error("THREE.AnimationClip: No animation in JSONLoader data."), null;
|
var c = function (a, b, c, d, f) {
|
if (0 !== c.length) {
|
var g = [],
|
k = [];
|
aa.flattenJSON(c, g, k, d);
|
0 !== g.length && f.push(new a(b, g, k))
|
}
|
},
|
d = [],
|
f = a.name || "default",
|
g = a.length || -1,
|
k = a.fps || 30;
|
a = a.hierarchy || [];
|
for (var m = 0; m < a.length; m++) {
|
var l = a[m].keys;
|
if (l && 0 !== l.length)
|
if (l[0].morphTargets) {
|
g = {};
|
for (var p = 0; p < l.length; p++)
|
if (l[p].morphTargets)
|
for (var q =
|
0; q < l[p].morphTargets.length; q++) g[l[p].morphTargets[q]] = -1;
|
for (var t in g) {
|
var r = [],
|
u = [];
|
for (q = 0; q !== l[p].morphTargets.length; ++q) {
|
var v = l[p];
|
r.push(v.time);
|
u.push(v.morphTarget === t ? 1 : 0)
|
}
|
d.push(new nd(".morphTargetInfluence[" + t + "]", r, u))
|
}
|
g = g.length * (k || 1)
|
} else p = ".bones[" + b[m].name + "]", c(od, p + ".position", l, "pos", d), c(Ae, p + ".quaternion", l, "rot", d), c(od, p + ".scale", l, "scl", d)
|
}
|
return 0 === d.length ? null : new Pa(f, g, d)
|
}
|
});
|
Object.assign(Pa.prototype, {
|
resetDuration: function () {
|
for (var a = 0, b = 0, c = this.tracks.length; b !==
|
c; ++b) {
|
var d = this.tracks[b];
|
a = Math.max(a, d.times[d.times.length - 1])
|
}
|
this.duration = a;
|
return this
|
},
|
trim: function () {
|
for (var a = 0; a < this.tracks.length; a++) this.tracks[a].trim(0, this.duration);
|
return this
|
},
|
validate: function () {
|
for (var a = !0, b = 0; b < this.tracks.length; b++) a = a && this.tracks[b].validate();
|
return a
|
},
|
optimize: function () {
|
for (var a = 0; a < this.tracks.length; a++) this.tracks[a].optimize();
|
return this
|
},
|
clone: function () {
|
for (var a = [], b = 0; b < this.tracks.length; b++) a.push(this.tracks[b].clone());
|
return new Pa(this.name,
|
this.duration, a)
|
}
|
});
|
var Fc = {
|
enabled: !1,
|
files: {},
|
add: function (a, b) {
|
!1 !== this.enabled && (this.files[a] = b)
|
},
|
get: function (a) {
|
if (!1 !== this.enabled) return this.files[a]
|
},
|
remove: function (a) {
|
delete this.files[a]
|
},
|
clear: function () {
|
this.files = {}
|
}
|
},
|
Li = new Og;
|
Object.assign(X.prototype, {
|
load: function () {},
|
parse: function () {},
|
setCrossOrigin: function (a) {
|
this.crossOrigin = a;
|
return this
|
},
|
setPath: function (a) {
|
this.path = a;
|
return this
|
},
|
setResourcePath: function (a) {
|
this.resourcePath = a;
|
return this
|
}
|
});
|
var eb = {};
|
Qa.prototype =
|
Object.assign(Object.create(X.prototype), {
|
constructor: Qa,
|
load: function (a, b, c, d) {
|
void 0 === a && (a = "");
|
void 0 !== this.path && (a = this.path + a);
|
a = this.manager.resolveURL(a);
|
var f = this,
|
g = Fc.get(a);
|
if (void 0 !== g) return f.manager.itemStart(a), setTimeout(function () {
|
b && b(g);
|
f.manager.itemEnd(a)
|
}, 0), g;
|
if (void 0 !== eb[a]) eb[a].push({
|
onLoad: b,
|
onProgress: c,
|
onError: d
|
});
|
else {
|
var k = a.match(/^data:(.*?)(;base64)?,(.*)$/);
|
if (k) {
|
c = k[1];
|
var m = !!k[2];
|
k = k[3];
|
k = decodeURIComponent(k);
|
m && (k = atob(k));
|
try {
|
var l = (this.responseType ||
|
"").toLowerCase();
|
switch (l) {
|
case "arraybuffer":
|
case "blob":
|
var p = new Uint8Array(k.length);
|
for (m = 0; m < k.length; m++) p[m] = k.charCodeAt(m);
|
var q = "blob" === l ? new Blob([p.buffer], {
|
type: c
|
}) : p.buffer;
|
break;
|
case "document":
|
q = (new DOMParser).parseFromString(k, c);
|
break;
|
case "json":
|
q = JSON.parse(k);
|
break;
|
default:
|
q = k
|
}
|
setTimeout(function () {
|
b && b(q);
|
f.manager.itemEnd(a)
|
}, 0)
|
} catch (r) {
|
setTimeout(function () {
|
d && d(r);
|
f.manager.itemError(a);
|
f.manager.itemEnd(a)
|
}, 0)
|
}
|
} else {
|
eb[a] = [];
|
eb[a].push({
|
onLoad: b,
|
onProgress: c,
|
onError: d
|
});
|
var t = new Ac;
|
t.open("GET", a, !0);
|
t.addEventListener("load", function (b) {
|
var c = this.response,
|
d = eb[a];
|
delete eb[a];
|
if (200 === this.status || 0 === this.status) {
|
0 === this.status && console.warn("THREE.FileLoader: HTTP Status 0 received.");
|
Fc.add(a, c);
|
for (var g = 0, k = d.length; g < k; g++) {
|
var m = d[g];
|
if (m.onLoad) m.onLoad(c)
|
}
|
} else {
|
g = 0;
|
for (k = d.length; g < k; g++)
|
if (m = d[g], m.onError) m.onError(b);
|
f.manager.itemError(a)
|
}
|
f.manager.itemEnd(a)
|
}, !1);
|
t.addEventListener("progress", function (b) {
|
for (var c = eb[a], d = 0, f = c.length; d < f; d++) {
|
var g =
|
c[d];
|
if (g.onProgress) g.onProgress(b)
|
}
|
}, !1);
|
t.addEventListener("error", function (b) {
|
var c = eb[a];
|
delete eb[a];
|
for (var d = 0, g = c.length; d < g; d++) {
|
var k = c[d];
|
if (k.onError) k.onError(b)
|
}
|
f.manager.itemError(a);
|
f.manager.itemEnd(a)
|
}, !1);
|
t.addEventListener("abort", function (b) {
|
var c = eb[a];
|
delete eb[a];
|
for (var d = 0, g = c.length; d < g; d++) {
|
var k = c[d];
|
if (k.onError) k.onError(b)
|
}
|
f.manager.itemError(a);
|
f.manager.itemEnd(a)
|
}, !1);
|
void 0 !== this.responseType && (t.responseType = this.responseType);
|
void 0 !== this.withCredentials &&
|
(t.withCredentials = this.withCredentials);
|
t.overrideMimeType && t.overrideMimeType(void 0 !== this.mimeType ? this.mimeType : "text/plain");
|
for (m in this.requestHeader) t.setRequestHeader(m, this.requestHeader[m]);
|
t.send(null)
|
}
|
f.manager.itemStart(a);
|
return t
|
}
|
},
|
setResponseType: function (a) {
|
this.responseType = a;
|
return this
|
},
|
setWithCredentials: function (a) {
|
this.withCredentials = a;
|
return this
|
},
|
setMimeType: function (a) {
|
this.mimeType = a;
|
return this
|
},
|
setRequestHeader: function (a) {
|
this.requestHeader = a;
|
return this
|
}
|
});
|
Pg.prototype =
|
Object.assign(Object.create(X.prototype), {
|
constructor: Pg,
|
load: function (a, b, c, d) {
|
var f = this,
|
g = new Qa(f.manager);
|
g.setPath(f.path);
|
g.load(a, function (a) {
|
b(f.parse(JSON.parse(a)))
|
}, c, d)
|
},
|
parse: function (a) {
|
for (var b = [], c = 0; c < a.length; c++) {
|
var d = Pa.parse(a[c]);
|
b.push(d)
|
}
|
return b
|
}
|
});
|
Qg.prototype = Object.assign(Object.create(X.prototype), {
|
constructor: Qg,
|
load: function (a, b, c, d) {
|
function f(f) {
|
l.load(a[f], function (a) {
|
a = g.parse(a, !0);
|
k[f] = {
|
width: a.width,
|
height: a.height,
|
format: a.format,
|
mipmaps: a.mipmaps
|
};
|
p += 1;
|
6 ===
|
p && (1 === a.mipmapCount && (m.minFilter = 1006), m.format = a.format, m.needsUpdate = !0, b && b(m))
|
}, c, d)
|
}
|
var g = this,
|
k = [],
|
m = new Zc;
|
m.image = k;
|
var l = new Qa(this.manager);
|
l.setPath(this.path);
|
l.setResponseType("arraybuffer");
|
if (Array.isArray(a))
|
for (var p = 0, q = 0, t = a.length; q < t; ++q) f(q);
|
else l.load(a, function (a) {
|
a = g.parse(a, !0);
|
if (a.isCubemap)
|
for (var c = a.mipmaps.length / a.mipmapCount, d = 0; d < c; d++) {
|
k[d] = {
|
mipmaps: []
|
};
|
for (var f = 0; f < a.mipmapCount; f++) k[d].mipmaps.push(a.mipmaps[d * a.mipmapCount + f]), k[d].format = a.format, k[d].width =
|
a.width, k[d].height = a.height
|
} else m.image.width = a.width, m.image.height = a.height, m.mipmaps = a.mipmaps;
|
1 === a.mipmapCount && (m.minFilter = 1006);
|
m.format = a.format;
|
m.needsUpdate = !0;
|
b && b(m)
|
}, c, d);
|
return m
|
}
|
});
|
pf.prototype = Object.assign(Object.create(X.prototype), {
|
constructor: pf,
|
load: function (a, b, c, d) {
|
var f = this,
|
g = new hc,
|
k = new Qa(this.manager);
|
k.setResponseType("arraybuffer");
|
k.setPath(this.path);
|
k.load(a, function (a) {
|
if (a = f.parse(a)) void 0 !== a.image ? g.image = a.image : void 0 !== a.data && (g.image.width = a.width, g.image.height =
|
a.height, g.image.data = a.data), g.wrapS = void 0 !== a.wrapS ? a.wrapS : 1001, g.wrapT = void 0 !== a.wrapT ? a.wrapT : 1001, g.magFilter = void 0 !== a.magFilter ? a.magFilter : 1006, g.minFilter = void 0 !== a.minFilter ? a.minFilter : 1006, g.anisotropy = void 0 !== a.anisotropy ? a.anisotropy : 1, void 0 !== a.format && (g.format = a.format), void 0 !== a.type && (g.type = a.type), void 0 !== a.mipmaps && (g.mipmaps = a.mipmaps, g.minFilter = 1008), 1 === a.mipmapCount && (g.minFilter = 1006), g.needsUpdate = !0, b && b(g, a)
|
}, c, d);
|
return g
|
}
|
});
|
pd.prototype = Object.assign(Object.create(X.prototype), {
|
constructor: pd,
|
load: function (a, b, c, d) {
|
function f() {
|
l.removeEventListener("load", f, !1);
|
l.removeEventListener("error", g, !1);
|
Fc.add(a, this);
|
b && b(this);
|
k.manager.itemEnd(a)
|
}
|
|
function g(b) {
|
l.removeEventListener("load", f, !1);
|
l.removeEventListener("error", g, !1);
|
d && d(b);
|
k.manager.itemError(a);
|
k.manager.itemEnd(a)
|
}
|
void 0 !== this.path && (a = this.path + a);
|
a = this.manager.resolveURL(a);
|
var k = this,
|
m = Fc.get(a);
|
if (void 0 !== m) return k.manager.itemStart(a), setTimeout(function () {
|
b && b(m);
|
k.manager.itemEnd(a)
|
}, 0), m;
|
var l =
|
V.createElementNS("http://www.w3.org/1999/xhtml", "img");
|
l.addEventListener("load", f, !1);
|
l.addEventListener("error", g, !1);
|
"data:" !== a.substr(0, 5) && void 0 !== this.crossOrigin && (l.crossOrigin = this.crossOrigin);
|
k.manager.itemStart(a);
|
l.src = a;
|
return l
|
}
|
});
|
qf.prototype = Object.assign(Object.create(X.prototype), {
|
constructor: qf,
|
load: function (a, b, c, d) {
|
function f(c) {
|
k.load(a[c], function (a) {
|
g.images[c] = a;
|
m++;
|
6 === m && (g.needsUpdate = !0, b && b(g))
|
}, void 0, d)
|
}
|
var g = new vb,
|
k = new pd(this.manager);
|
k.setCrossOrigin(this.crossOrigin);
|
k.setPath(this.path);
|
var m = 0;
|
for (c = 0; c < a.length; ++c) f(c);
|
return g
|
}
|
});
|
rf.prototype = Object.assign(Object.create(X.prototype), {
|
constructor: rf,
|
load: function (a, b, c, d) {
|
var f = new S,
|
g = new pd(this.manager);
|
g.setCrossOrigin(this.crossOrigin);
|
g.setPath(this.path);
|
g.load(a, function (c) {
|
f.image = c;
|
c = 0 < a.search(/\.jpe?g($|\?)/i) || 0 === a.search(/^data:image\/jpeg/);
|
f.format = c ? 1022 : 1023;
|
f.needsUpdate = !0;
|
void 0 !== b && b(f)
|
}, c, d);
|
return f
|
}
|
});
|
Object.assign(M.prototype, {
|
getPoint: function () {
|
console.warn("THREE.Curve: .getPoint() not implemented.");
|
return null
|
},
|
getPointAt: function (a, b) {
|
a = this.getUtoTmapping(a);
|
return this.getPoint(a, b)
|
},
|
getPoints: function (a) {
|
void 0 === a && (a = 5);
|
for (var b = [], c = 0; c <= a; c++) b.push(this.getPoint(c / a));
|
return b
|
},
|
getSpacedPoints: function (a) {
|
void 0 === a && (a = 5);
|
for (var b = [], c = 0; c <= a; c++) b.push(this.getPointAt(c / a));
|
return b
|
},
|
getLength: function () {
|
var a = this.getLengths();
|
return a[a.length - 1]
|
},
|
getLengths: function (a) {
|
void 0 === a && (a = this.arcLengthDivisions);
|
if (this.cacheArcLengths && this.cacheArcLengths.length === a + 1 && !this.needsUpdate) return this.cacheArcLengths;
|
this.needsUpdate = !1;
|
var b = [],
|
c = this.getPoint(0),
|
d, f = 0;
|
b.push(0);
|
for (d = 1; d <= a; d++) {
|
var g = this.getPoint(d / a);
|
f += g.distanceTo(c);
|
b.push(f);
|
c = g
|
}
|
return this.cacheArcLengths = b
|
},
|
updateArcLengths: function () {
|
this.needsUpdate = !0;
|
this.getLengths()
|
},
|
getUtoTmapping: function (a, b) {
|
var c = this.getLengths(),
|
d = c.length;
|
b = b ? b : a * c[d - 1];
|
for (var f = 0, g = d - 1, k; f <= g;)
|
if (a = Math.floor(f + (g - f) / 2), k = c[a] - b, 0 > k) f = a + 1;
|
else if (0 < k) g = a - 1;
|
else {
|
g = a;
|
break
|
}
|
a = g;
|
if (c[a] === b) return a / (d - 1);
|
f = c[a];
|
return (a + (b - f) / (c[a + 1] - f)) / (d - 1)
|
},
|
getTangent: function (a) {
|
var b =
|
a - 1E-4;
|
a += 1E-4;
|
0 > b && (b = 0);
|
1 < a && (a = 1);
|
b = this.getPoint(b);
|
return this.getPoint(a).clone().sub(b).normalize()
|
},
|
getTangentAt: function (a) {
|
a = this.getUtoTmapping(a);
|
return this.getTangent(a)
|
},
|
computeFrenetFrames: function (a, b) {
|
var c = new q,
|
d = [],
|
f = [],
|
g = [],
|
k = new q,
|
m = new I,
|
l;
|
for (l = 0; l <= a; l++) {
|
var p = l / a;
|
d[l] = this.getTangentAt(p);
|
d[l].normalize()
|
}
|
f[0] = new q;
|
g[0] = new q;
|
l = Number.MAX_VALUE;
|
p = Math.abs(d[0].x);
|
var y = Math.abs(d[0].y),
|
t = Math.abs(d[0].z);
|
p <= l && (l = p, c.set(1, 0, 0));
|
y <= l && (l = y, c.set(0, 1, 0));
|
t <= l && c.set(0,
|
0, 1);
|
k.crossVectors(d[0], c).normalize();
|
f[0].crossVectors(d[0], k);
|
g[0].crossVectors(d[0], f[0]);
|
for (l = 1; l <= a; l++) f[l] = f[l - 1].clone(), g[l] = g[l - 1].clone(), k.crossVectors(d[l - 1], d[l]), k.length() > Number.EPSILON && (k.normalize(), c = Math.acos(N.clamp(d[l - 1].dot(d[l]), -1, 1)), f[l].applyMatrix4(m.makeRotationAxis(k, c))), g[l].crossVectors(d[l], f[l]);
|
if (!0 === b)
|
for (c = Math.acos(N.clamp(f[0].dot(f[a]), -1, 1)), c /= a, 0 < d[0].dot(k.crossVectors(f[0], f[a])) && (c = -c), l = 1; l <= a; l++) f[l].applyMatrix4(m.makeRotationAxis(d[l],
|
c * l)), g[l].crossVectors(d[l], f[l]);
|
return {
|
tangents: d,
|
normals: f,
|
binormals: g
|
}
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.arcLengthDivisions = a.arcLengthDivisions;
|
return this
|
},
|
toJSON: function () {
|
var a = {
|
metadata: {
|
version: 4.5,
|
type: "Curve",
|
generator: "Curve.toJSON"
|
}
|
};
|
a.arcLengthDivisions = this.arcLengthDivisions;
|
a.type = this.type;
|
return a
|
},
|
fromJSON: function (a) {
|
this.arcLengthDivisions = a.arcLengthDivisions;
|
return this
|
}
|
});
|
Ma.prototype = Object.create(M.prototype);
|
Ma.prototype.constructor =
|
Ma;
|
Ma.prototype.isEllipseCurve = !0;
|
Ma.prototype.getPoint = function (a, b) {
|
b = b || new z;
|
for (var c = 2 * Math.PI, d = this.aEndAngle - this.aStartAngle, f = Math.abs(d) < Number.EPSILON; 0 > d;) d += c;
|
for (; d > c;) d -= c;
|
d < Number.EPSILON && (d = f ? 0 : c);
|
!0 !== this.aClockwise || f || (d = d === c ? -c : d - c);
|
c = this.aStartAngle + a * d;
|
a = this.aX + this.xRadius * Math.cos(c);
|
var g = this.aY + this.yRadius * Math.sin(c);
|
0 !== this.aRotation && (c = Math.cos(this.aRotation), d = Math.sin(this.aRotation), f = a - this.aX, g -= this.aY, a = f * c - g * d + this.aX, g = f * d + g * c + this.aY);
|
return b.set(a,
|
g)
|
};
|
Ma.prototype.copy = function (a) {
|
M.prototype.copy.call(this, a);
|
this.aX = a.aX;
|
this.aY = a.aY;
|
this.xRadius = a.xRadius;
|
this.yRadius = a.yRadius;
|
this.aStartAngle = a.aStartAngle;
|
this.aEndAngle = a.aEndAngle;
|
this.aClockwise = a.aClockwise;
|
this.aRotation = a.aRotation;
|
return this
|
};
|
Ma.prototype.toJSON = function () {
|
var a = M.prototype.toJSON.call(this);
|
a.aX = this.aX;
|
a.aY = this.aY;
|
a.xRadius = this.xRadius;
|
a.yRadius = this.yRadius;
|
a.aStartAngle = this.aStartAngle;
|
a.aEndAngle = this.aEndAngle;
|
a.aClockwise = this.aClockwise;
|
a.aRotation =
|
this.aRotation;
|
return a
|
};
|
Ma.prototype.fromJSON = function (a) {
|
M.prototype.fromJSON.call(this, a);
|
this.aX = a.aX;
|
this.aY = a.aY;
|
this.xRadius = a.xRadius;
|
this.yRadius = a.yRadius;
|
this.aStartAngle = a.aStartAngle;
|
this.aEndAngle = a.aEndAngle;
|
this.aClockwise = a.aClockwise;
|
this.aRotation = a.aRotation;
|
return this
|
};
|
qd.prototype = Object.create(Ma.prototype);
|
qd.prototype.constructor = qd;
|
qd.prototype.isArcCurve = !0;
|
var fg = new q,
|
Gh = new Rg,
|
Hh = new Rg,
|
Ih = new Rg;
|
la.prototype = Object.create(M.prototype);
|
la.prototype.constructor = la;
|
la.prototype.isCatmullRomCurve3 = !0;
|
la.prototype.getPoint = function (a, b) {
|
b = b || new q;
|
var c = this.points,
|
d = c.length;
|
a *= d - (this.closed ? 0 : 1);
|
var f = Math.floor(a);
|
a -= f;
|
this.closed ? f += 0 < f ? 0 : (Math.floor(Math.abs(f) / d) + 1) * d : 0 === a && f === d - 1 && (f = d - 2, a = 1);
|
if (this.closed || 0 < f) var g = c[(f - 1) % d];
|
else fg.subVectors(c[0], c[1]).add(c[0]), g = fg;
|
var k = c[f % d];
|
var m = c[(f + 1) % d];
|
this.closed || f + 2 < d ? c = c[(f + 2) % d] : (fg.subVectors(c[d - 1], c[d - 2]).add(c[d - 1]), c = fg);
|
if ("centripetal" === this.curveType || "chordal" === this.curveType) {
|
var l = "chordal" === this.curveType ? .5 : .25;
|
d = Math.pow(g.distanceToSquared(k), l);
|
f = Math.pow(k.distanceToSquared(m), l);
|
l = Math.pow(m.distanceToSquared(c), l);
|
1E-4 > f && (f = 1);
|
1E-4 > d && (d = f);
|
1E-4 > l && (l = f);
|
Gh.initNonuniformCatmullRom(g.x, k.x, m.x, c.x, d, f, l);
|
Hh.initNonuniformCatmullRom(g.y, k.y, m.y, c.y, d, f, l);
|
Ih.initNonuniformCatmullRom(g.z, k.z, m.z, c.z, d, f, l)
|
} else "catmullrom" === this.curveType && (Gh.initCatmullRom(g.x, k.x, m.x, c.x, this.tension), Hh.initCatmullRom(g.y, k.y, m.y, c.y, this.tension), Ih.initCatmullRom(g.z, k.z, m.z, c.z, this.tension));
|
b.set(Gh.calc(a),
|
Hh.calc(a), Ih.calc(a));
|
return b
|
};
|
la.prototype.copy = function (a) {
|
M.prototype.copy.call(this, a);
|
this.points = [];
|
for (var b = 0, c = a.points.length; b < c; b++) this.points.push(a.points[b].clone());
|
this.closed = a.closed;
|
this.curveType = a.curveType;
|
this.tension = a.tension;
|
return this
|
};
|
la.prototype.toJSON = function () {
|
var a = M.prototype.toJSON.call(this);
|
a.points = [];
|
for (var b = 0, c = this.points.length; b < c; b++) a.points.push(this.points[b].toArray());
|
a.closed = this.closed;
|
a.curveType = this.curveType;
|
a.tension = this.tension;
|
return a
|
};
|
la.prototype.fromJSON = function (a) {
|
M.prototype.fromJSON.call(this, a);
|
this.points = [];
|
for (var b = 0, c = a.points.length; b < c; b++) {
|
var d = a.points[b];
|
this.points.push((new q).fromArray(d))
|
}
|
this.closed = a.closed;
|
this.curveType = a.curveType;
|
this.tension = a.tension;
|
return this
|
};
|
Xa.prototype = Object.create(M.prototype);
|
Xa.prototype.constructor = Xa;
|
Xa.prototype.isCubicBezierCurve = !0;
|
Xa.prototype.getPoint = function (a, b) {
|
b = b || new z;
|
var c = this.v0,
|
d = this.v1,
|
f = this.v2,
|
g = this.v3;
|
b.set(Ce(a, c.x, d.x, f.x, g.x), Ce(a, c.y, d.y, f.y,
|
g.y));
|
return b
|
};
|
Xa.prototype.copy = function (a) {
|
M.prototype.copy.call(this, a);
|
this.v0.copy(a.v0);
|
this.v1.copy(a.v1);
|
this.v2.copy(a.v2);
|
this.v3.copy(a.v3);
|
return this
|
};
|
Xa.prototype.toJSON = function () {
|
var a = M.prototype.toJSON.call(this);
|
a.v0 = this.v0.toArray();
|
a.v1 = this.v1.toArray();
|
a.v2 = this.v2.toArray();
|
a.v3 = this.v3.toArray();
|
return a
|
};
|
Xa.prototype.fromJSON = function (a) {
|
M.prototype.fromJSON.call(this, a);
|
this.v0.fromArray(a.v0);
|
this.v1.fromArray(a.v1);
|
this.v2.fromArray(a.v2);
|
this.v3.fromArray(a.v3);
|
return this
|
};
|
lb.prototype = Object.create(M.prototype);
|
lb.prototype.constructor = lb;
|
lb.prototype.isCubicBezierCurve3 = !0;
|
lb.prototype.getPoint = function (a, b) {
|
b = b || new q;
|
var c = this.v0,
|
d = this.v1,
|
f = this.v2,
|
g = this.v3;
|
b.set(Ce(a, c.x, d.x, f.x, g.x), Ce(a, c.y, d.y, f.y, g.y), Ce(a, c.z, d.z, f.z, g.z));
|
return b
|
};
|
lb.prototype.copy = function (a) {
|
M.prototype.copy.call(this, a);
|
this.v0.copy(a.v0);
|
this.v1.copy(a.v1);
|
this.v2.copy(a.v2);
|
this.v3.copy(a.v3);
|
return this
|
};
|
lb.prototype.toJSON = function () {
|
var a = M.prototype.toJSON.call(this);
|
a.v0 = this.v0.toArray();
|
a.v1 = this.v1.toArray();
|
a.v2 = this.v2.toArray();
|
a.v3 = this.v3.toArray();
|
return a
|
};
|
lb.prototype.fromJSON = function (a) {
|
M.prototype.fromJSON.call(this, a);
|
this.v0.fromArray(a.v0);
|
this.v1.fromArray(a.v1);
|
this.v2.fromArray(a.v2);
|
this.v3.fromArray(a.v3);
|
return this
|
};
|
Ga.prototype = Object.create(M.prototype);
|
Ga.prototype.constructor = Ga;
|
Ga.prototype.isLineCurve = !0;
|
Ga.prototype.getPoint = function (a, b) {
|
b = b || new z;
|
1 === a ? b.copy(this.v2) : (b.copy(this.v2).sub(this.v1), b.multiplyScalar(a).add(this.v1));
|
return b
|
};
|
Ga.prototype.getPointAt =
|
function (a, b) {
|
return this.getPoint(a, b)
|
};
|
Ga.prototype.getTangent = function () {
|
return this.v2.clone().sub(this.v1).normalize()
|
};
|
Ga.prototype.copy = function (a) {
|
M.prototype.copy.call(this, a);
|
this.v1.copy(a.v1);
|
this.v2.copy(a.v2);
|
return this
|
};
|
Ga.prototype.toJSON = function () {
|
var a = M.prototype.toJSON.call(this);
|
a.v1 = this.v1.toArray();
|
a.v2 = this.v2.toArray();
|
return a
|
};
|
Ga.prototype.fromJSON = function (a) {
|
M.prototype.fromJSON.call(this, a);
|
this.v1.fromArray(a.v1);
|
this.v2.fromArray(a.v2);
|
return this
|
};
|
Ya.prototype =
|
Object.create(M.prototype);
|
Ya.prototype.constructor = Ya;
|
Ya.prototype.isLineCurve3 = !0;
|
Ya.prototype.getPoint = function (a, b) {
|
b = b || new q;
|
1 === a ? b.copy(this.v2) : (b.copy(this.v2).sub(this.v1), b.multiplyScalar(a).add(this.v1));
|
return b
|
};
|
Ya.prototype.getPointAt = function (a, b) {
|
return this.getPoint(a, b)
|
};
|
Ya.prototype.copy = function (a) {
|
M.prototype.copy.call(this, a);
|
this.v1.copy(a.v1);
|
this.v2.copy(a.v2);
|
return this
|
};
|
Ya.prototype.toJSON = function () {
|
var a = M.prototype.toJSON.call(this);
|
a.v1 = this.v1.toArray();
|
a.v2 = this.v2.toArray();
|
return a
|
};
|
Ya.prototype.fromJSON = function (a) {
|
M.prototype.fromJSON.call(this, a);
|
this.v1.fromArray(a.v1);
|
this.v2.fromArray(a.v2);
|
return this
|
};
|
Za.prototype = Object.create(M.prototype);
|
Za.prototype.constructor = Za;
|
Za.prototype.isQuadraticBezierCurve = !0;
|
Za.prototype.getPoint = function (a, b) {
|
b = b || new z;
|
var c = this.v0,
|
d = this.v1,
|
f = this.v2;
|
b.set(Be(a, c.x, d.x, f.x), Be(a, c.y, d.y, f.y));
|
return b
|
};
|
Za.prototype.copy = function (a) {
|
M.prototype.copy.call(this, a);
|
this.v0.copy(a.v0);
|
this.v1.copy(a.v1);
|
this.v2.copy(a.v2);
|
return this
|
};
|
Za.prototype.toJSON = function () {
|
var a = M.prototype.toJSON.call(this);
|
a.v0 = this.v0.toArray();
|
a.v1 = this.v1.toArray();
|
a.v2 = this.v2.toArray();
|
return a
|
};
|
Za.prototype.fromJSON = function (a) {
|
M.prototype.fromJSON.call(this, a);
|
this.v0.fromArray(a.v0);
|
this.v1.fromArray(a.v1);
|
this.v2.fromArray(a.v2);
|
return this
|
};
|
mb.prototype = Object.create(M.prototype);
|
mb.prototype.constructor = mb;
|
mb.prototype.isQuadraticBezierCurve3 = !0;
|
mb.prototype.getPoint = function (a, b) {
|
b = b || new q;
|
var c = this.v0,
|
d = this.v1,
|
f = this.v2;
|
b.set(Be(a, c.x,
|
d.x, f.x), Be(a, c.y, d.y, f.y), Be(a, c.z, d.z, f.z));
|
return b
|
};
|
mb.prototype.copy = function (a) {
|
M.prototype.copy.call(this, a);
|
this.v0.copy(a.v0);
|
this.v1.copy(a.v1);
|
this.v2.copy(a.v2);
|
return this
|
};
|
mb.prototype.toJSON = function () {
|
var a = M.prototype.toJSON.call(this);
|
a.v0 = this.v0.toArray();
|
a.v1 = this.v1.toArray();
|
a.v2 = this.v2.toArray();
|
return a
|
};
|
mb.prototype.fromJSON = function (a) {
|
M.prototype.fromJSON.call(this, a);
|
this.v0.fromArray(a.v0);
|
this.v1.fromArray(a.v1);
|
this.v2.fromArray(a.v2);
|
return this
|
};
|
$a.prototype = Object.create(M.prototype);
|
$a.prototype.constructor = $a;
|
$a.prototype.isSplineCurve = !0;
|
$a.prototype.getPoint = function (a, b) {
|
b = b || new z;
|
var c = this.points,
|
d = (c.length - 1) * a;
|
a = Math.floor(d);
|
d -= a;
|
var f = c[0 === a ? a : a - 1],
|
g = c[a],
|
k = c[a > c.length - 2 ? c.length - 1 : a + 1];
|
c = c[a > c.length - 3 ? c.length - 1 : a + 2];
|
b.set(Mi(d, f.x, g.x, k.x, c.x), Mi(d, f.y, g.y, k.y, c.y));
|
return b
|
};
|
$a.prototype.copy = function (a) {
|
M.prototype.copy.call(this, a);
|
this.points = [];
|
for (var b = 0, c = a.points.length; b < c; b++) this.points.push(a.points[b].clone());
|
return this
|
};
|
$a.prototype.toJSON = function () {
|
var a =
|
M.prototype.toJSON.call(this);
|
a.points = [];
|
for (var b = 0, c = this.points.length; b < c; b++) a.points.push(this.points[b].toArray());
|
return a
|
};
|
$a.prototype.fromJSON = function (a) {
|
M.prototype.fromJSON.call(this, a);
|
this.points = [];
|
for (var b = 0, c = a.points.length; b < c; b++) {
|
var d = a.points[b];
|
this.points.push((new z).fromArray(d))
|
}
|
return this
|
};
|
var Jh = Object.freeze({
|
__proto__: null,
|
ArcCurve: qd,
|
CatmullRomCurve3: la,
|
CubicBezierCurve: Xa,
|
CubicBezierCurve3: lb,
|
EllipseCurve: Ma,
|
LineCurve: Ga,
|
LineCurve3: Ya,
|
QuadraticBezierCurve: Za,
|
QuadraticBezierCurve3: mb,
|
SplineCurve: $a
|
});
|
zb.prototype = Object.assign(Object.create(M.prototype), {
|
constructor: zb,
|
add: function (a) {
|
this.curves.push(a)
|
},
|
closePath: function () {
|
var a = this.curves[0].getPoint(0),
|
b = this.curves[this.curves.length - 1].getPoint(1);
|
a.equals(b) || this.curves.push(new Ga(b, a))
|
},
|
getPoint: function (a) {
|
var b = a * this.getLength(),
|
c = this.getCurveLengths();
|
for (a = 0; a < c.length;) {
|
if (c[a] >= b) return b = c[a] - b, a = this.curves[a], c = a.getLength(), a.getPointAt(0 === c ? 0 : 1 - b / c);
|
a++
|
}
|
return null
|
},
|
getLength: function () {
|
var a =
|
this.getCurveLengths();
|
return a[a.length - 1]
|
},
|
updateArcLengths: function () {
|
this.needsUpdate = !0;
|
this.cacheLengths = null;
|
this.getCurveLengths()
|
},
|
getCurveLengths: function () {
|
if (this.cacheLengths && this.cacheLengths.length === this.curves.length) return this.cacheLengths;
|
for (var a = [], b = 0, c = 0, d = this.curves.length; c < d; c++) b += this.curves[c].getLength(), a.push(b);
|
return this.cacheLengths = a
|
},
|
getSpacedPoints: function (a) {
|
void 0 === a && (a = 40);
|
for (var b = [], c = 0; c <= a; c++) b.push(this.getPoint(c / a));
|
this.autoClose && b.push(b[0]);
|
return b
|
},
|
getPoints: function (a) {
|
a = a || 12;
|
for (var b = [], c, d = 0, f = this.curves; d < f.length; d++) {
|
var g = f[d];
|
g = g.getPoints(g && g.isEllipseCurve ? 2 * a : g && (g.isLineCurve || g.isLineCurve3) ? 1 : g && g.isSplineCurve ? a * g.points.length : a);
|
for (var k = 0; k < g.length; k++) {
|
var m = g[k];
|
c && c.equals(m) || (b.push(m), c = m)
|
}
|
}
|
this.autoClose && 1 < b.length && !b[b.length - 1].equals(b[0]) && b.push(b[0]);
|
return b
|
},
|
copy: function (a) {
|
M.prototype.copy.call(this, a);
|
this.curves = [];
|
for (var b = 0, c = a.curves.length; b < c; b++) this.curves.push(a.curves[b].clone());
|
this.autoClose = a.autoClose;
|
return this
|
},
|
toJSON: function () {
|
var a = M.prototype.toJSON.call(this);
|
a.autoClose = this.autoClose;
|
a.curves = [];
|
for (var b = 0, c = this.curves.length; b < c; b++) a.curves.push(this.curves[b].toJSON());
|
return a
|
},
|
fromJSON: function (a) {
|
M.prototype.fromJSON.call(this, a);
|
this.autoClose = a.autoClose;
|
this.curves = [];
|
for (var b = 0, c = a.curves.length; b < c; b++) {
|
var d = a.curves[b];
|
this.curves.push((new Jh[d.type]).fromJSON(d))
|
}
|
return this
|
}
|
});
|
ab.prototype = Object.assign(Object.create(zb.prototype), {
|
constructor: ab,
|
setFromPoints: function (a) {
|
this.moveTo(a[0].x, a[0].y);
|
for (var b = 1, c = a.length; b < c; b++) this.lineTo(a[b].x, a[b].y);
|
return this
|
},
|
moveTo: function (a, b) {
|
this.currentPoint.set(a, b);
|
return this
|
},
|
lineTo: function (a, b) {
|
var c = new Ga(this.currentPoint.clone(), new z(a, b));
|
this.curves.push(c);
|
this.currentPoint.set(a, b);
|
return this
|
},
|
quadraticCurveTo: function (a, b, c, d) {
|
a = new Za(this.currentPoint.clone(), new z(a, b), new z(c, d));
|
this.curves.push(a);
|
this.currentPoint.set(c, d);
|
return this
|
},
|
bezierCurveTo: function (a, b, c, d,
|
f, g) {
|
a = new Xa(this.currentPoint.clone(), new z(a, b), new z(c, d), new z(f, g));
|
this.curves.push(a);
|
this.currentPoint.set(f, g);
|
return this
|
},
|
splineThru: function (a) {
|
var b = [this.currentPoint.clone()].concat(a);
|
b = new $a(b);
|
this.curves.push(b);
|
this.currentPoint.copy(a[a.length - 1]);
|
return this
|
},
|
arc: function (a, b, c, d, f, g) {
|
this.absarc(a + this.currentPoint.x, b + this.currentPoint.y, c, d, f, g);
|
return this
|
},
|
absarc: function (a, b, c, d, f, g) {
|
this.absellipse(a, b, c, c, d, f, g);
|
return this
|
},
|
ellipse: function (a, b, c, d, f, g, k, m) {
|
this.absellipse(a +
|
this.currentPoint.x, b + this.currentPoint.y, c, d, f, g, k, m);
|
return this
|
},
|
absellipse: function (a, b, c, d, f, g, k, m) {
|
a = new Ma(a, b, c, d, f, g, k, m);
|
0 < this.curves.length && (b = a.getPoint(0), b.equals(this.currentPoint) || this.lineTo(b.x, b.y));
|
this.curves.push(a);
|
a = a.getPoint(1);
|
this.currentPoint.copy(a);
|
return this
|
},
|
copy: function (a) {
|
zb.prototype.copy.call(this, a);
|
this.currentPoint.copy(a.currentPoint);
|
return this
|
},
|
toJSON: function () {
|
var a = zb.prototype.toJSON.call(this);
|
a.currentPoint = this.currentPoint.toArray();
|
return a
|
},
|
fromJSON: function (a) {
|
zb.prototype.fromJSON.call(this, a);
|
this.currentPoint.fromArray(a.currentPoint);
|
return this
|
}
|
});
|
Pb.prototype = Object.assign(Object.create(ab.prototype), {
|
constructor: Pb,
|
getPointsHoles: function (a) {
|
for (var b = [], c = 0, d = this.holes.length; c < d; c++) b[c] = this.holes[c].getPoints(a);
|
return b
|
},
|
extractPoints: function (a) {
|
return {
|
shape: this.getPoints(a),
|
holes: this.getPointsHoles(a)
|
}
|
},
|
copy: function (a) {
|
ab.prototype.copy.call(this, a);
|
this.holes = [];
|
for (var b = 0, c = a.holes.length; b < c; b++) this.holes.push(a.holes[b].clone());
|
return this
|
},
|
toJSON: function () {
|
var a = ab.prototype.toJSON.call(this);
|
a.uuid = this.uuid;
|
a.holes = [];
|
for (var b = 0, c = this.holes.length; b < c; b++) a.holes.push(this.holes[b].toJSON());
|
return a
|
},
|
fromJSON: function (a) {
|
ab.prototype.fromJSON.call(this, a);
|
this.uuid = a.uuid;
|
this.holes = [];
|
for (var b = 0, c = a.holes.length; b < c; b++) {
|
var d = a.holes[b];
|
this.holes.push((new ab).fromJSON(d))
|
}
|
return this
|
}
|
});
|
da.prototype = Object.assign(Object.create(E.prototype), {
|
constructor: da,
|
isLight: !0,
|
copy: function (a) {
|
E.prototype.copy.call(this,
|
a);
|
this.color.copy(a.color);
|
this.intensity = a.intensity;
|
return this
|
},
|
toJSON: function (a) {
|
a = E.prototype.toJSON.call(this, a);
|
a.object.color = this.color.getHex();
|
a.object.intensity = this.intensity;
|
void 0 !== this.groundColor && (a.object.groundColor = this.groundColor.getHex());
|
void 0 !== this.distance && (a.object.distance = this.distance);
|
void 0 !== this.angle && (a.object.angle = this.angle);
|
void 0 !== this.decay && (a.object.decay = this.decay);
|
void 0 !== this.penumbra && (a.object.penumbra = this.penumbra);
|
void 0 !== this.shadow &&
|
(a.object.shadow = this.shadow.toJSON());
|
return a
|
}
|
});
|
sf.prototype = Object.assign(Object.create(da.prototype), {
|
constructor: sf,
|
isHemisphereLight: !0,
|
copy: function (a) {
|
da.prototype.copy.call(this, a);
|
this.groundColor.copy(a.groundColor);
|
return this
|
}
|
});
|
Object.assign(nb.prototype, {
|
_projScreenMatrix: new I,
|
_lightPositionWorld: new q,
|
_lookTarget: new q,
|
getViewportCount: function () {
|
return this._viewportCount
|
},
|
getFrustum: function () {
|
return this._frustum
|
},
|
updateMatrices: function (a) {
|
var b = this.camera,
|
c = this.matrix,
|
d = this._projScreenMatrix,
|
f = this._lookTarget,
|
g = this._lightPositionWorld;
|
g.setFromMatrixPosition(a.matrixWorld);
|
b.position.copy(g);
|
f.setFromMatrixPosition(a.target.matrixWorld);
|
b.lookAt(f);
|
b.updateMatrixWorld();
|
d.multiplyMatrices(b.projectionMatrix, b.matrixWorldInverse);
|
this._frustum.setFromMatrix(d);
|
c.set(.5, 0, 0, .5, 0, .5, 0, .5, 0, 0, .5, .5, 0, 0, 0, 1);
|
c.multiply(b.projectionMatrix);
|
c.multiply(b.matrixWorldInverse)
|
},
|
getViewport: function (a) {
|
return this._viewports[a]
|
},
|
getFrameExtents: function () {
|
return this._frameExtents
|
},
|
copy: function (a) {
|
this.camera =
|
a.camera.clone();
|
this.bias = a.bias;
|
this.radius = a.radius;
|
this.mapSize.copy(a.mapSize);
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
toJSON: function () {
|
var a = {};
|
0 !== this.bias && (a.bias = this.bias);
|
1 !== this.radius && (a.radius = this.radius);
|
if (512 !== this.mapSize.x || 512 !== this.mapSize.y) a.mapSize = this.mapSize.toArray();
|
a.camera = this.camera.toJSON(!1).object;
|
delete a.camera.matrix;
|
return a
|
}
|
});
|
tf.prototype = Object.assign(Object.create(nb.prototype), {
|
constructor: tf,
|
isSpotLightShadow: !0,
|
updateMatrices: function (a) {
|
var b = this.camera,
|
c = 2 * N.RAD2DEG * a.angle,
|
d = this.mapSize.width / this.mapSize.height,
|
f = a.distance || b.far;
|
if (c !== b.fov || d !== b.aspect || f !== b.far) b.fov = c, b.aspect = d, b.far = f, b.updateProjectionMatrix();
|
nb.prototype.updateMatrices.call(this, a)
|
}
|
});
|
uf.prototype = Object.assign(Object.create(da.prototype), {
|
constructor: uf,
|
isSpotLight: !0,
|
copy: function (a) {
|
da.prototype.copy.call(this, a);
|
this.distance = a.distance;
|
this.angle = a.angle;
|
this.penumbra = a.penumbra;
|
this.decay = a.decay;
|
this.target = a.target.clone();
|
this.shadow = a.shadow.clone();
|
return this
|
}
|
});
|
Sg.prototype = Object.assign(Object.create(nb.prototype), {
|
constructor: Sg,
|
isPointLightShadow: !0,
|
updateMatrices: function (a, b) {
|
void 0 === b && (b = 0);
|
var c = this.camera,
|
d = this.matrix,
|
f = this._lightPositionWorld,
|
g = this._lookTarget,
|
k = this._projScreenMatrix;
|
f.setFromMatrixPosition(a.matrixWorld);
|
c.position.copy(f);
|
g.copy(c.position);
|
g.add(this._cubeDirections[b]);
|
c.up.copy(this._cubeUps[b]);
|
c.lookAt(g);
|
c.updateMatrixWorld();
|
d.makeTranslation(-f.x, -f.y, -f.z);
|
k.multiplyMatrices(c.projectionMatrix,
|
c.matrixWorldInverse);
|
this._frustum.setFromMatrix(k)
|
}
|
});
|
vf.prototype = Object.assign(Object.create(da.prototype), {
|
constructor: vf,
|
isPointLight: !0,
|
copy: function (a) {
|
da.prototype.copy.call(this, a);
|
this.distance = a.distance;
|
this.decay = a.decay;
|
this.shadow = a.shadow.clone();
|
return this
|
}
|
});
|
De.prototype = Object.assign(Object.create(hb.prototype), {
|
constructor: De,
|
isOrthographicCamera: !0,
|
copy: function (a, b) {
|
hb.prototype.copy.call(this, a, b);
|
this.left = a.left;
|
this.right = a.right;
|
this.top = a.top;
|
this.bottom = a.bottom;
|
this.near =
|
a.near;
|
this.far = a.far;
|
this.zoom = a.zoom;
|
this.view = null === a.view ? null : Object.assign({}, a.view);
|
return this
|
},
|
setViewOffset: function (a, b, c, d, f, g) {
|
null === this.view && (this.view = {
|
enabled: !0,
|
fullWidth: 1,
|
fullHeight: 1,
|
offsetX: 0,
|
offsetY: 0,
|
width: 1,
|
height: 1
|
});
|
this.view.enabled = !0;
|
this.view.fullWidth = a;
|
this.view.fullHeight = b;
|
this.view.offsetX = c;
|
this.view.offsetY = d;
|
this.view.width = f;
|
this.view.height = g;
|
this.updateProjectionMatrix()
|
},
|
clearViewOffset: function () {
|
null !== this.view && (this.view.enabled = !1);
|
this.updateProjectionMatrix()
|
},
|
updateProjectionMatrix: function () {
|
var a = (this.right - this.left) / (2 * this.zoom),
|
b = (this.top - this.bottom) / (2 * this.zoom),
|
c = (this.right + this.left) / 2,
|
d = (this.top + this.bottom) / 2,
|
f = c - a;
|
c += a;
|
a = d + b;
|
b = d - b;
|
if (null !== this.view && this.view.enabled) {
|
c = this.zoom / (this.view.width / this.view.fullWidth);
|
b = this.zoom / (this.view.height / this.view.fullHeight);
|
var g = (this.right - this.left) / this.view.width;
|
d = (this.top - this.bottom) / this.view.height;
|
f += this.view.offsetX / c * g;
|
c = f + this.view.width / c * g;
|
a -= this.view.offsetY / b * d;
|
b = a - this.view.height /
|
b * d
|
}
|
this.projectionMatrix.makeOrthographic(f, c, a, b, this.near, this.far);
|
this.projectionMatrixInverse.getInverse(this.projectionMatrix)
|
},
|
toJSON: function (a) {
|
a = E.prototype.toJSON.call(this, a);
|
a.object.zoom = this.zoom;
|
a.object.left = this.left;
|
a.object.right = this.right;
|
a.object.top = this.top;
|
a.object.bottom = this.bottom;
|
a.object.near = this.near;
|
a.object.far = this.far;
|
null !== this.view && (a.object.view = Object.assign({}, this.view));
|
return a
|
}
|
});
|
wf.prototype = Object.assign(Object.create(nb.prototype), {
|
constructor: wf,
|
isDirectionalLightShadow: !0,
|
updateMatrices: function (a) {
|
nb.prototype.updateMatrices.call(this, a)
|
}
|
});
|
xf.prototype = Object.assign(Object.create(da.prototype), {
|
constructor: xf,
|
isDirectionalLight: !0,
|
copy: function (a) {
|
da.prototype.copy.call(this, a);
|
this.target = a.target.clone();
|
this.shadow = a.shadow.clone();
|
return this
|
}
|
});
|
yf.prototype = Object.assign(Object.create(da.prototype), {
|
constructor: yf,
|
isAmbientLight: !0
|
});
|
zf.prototype = Object.assign(Object.create(da.prototype), {
|
constructor: zf,
|
isRectAreaLight: !0,
|
copy: function (a) {
|
da.prototype.copy.call(this,
|
a);
|
this.width = a.width;
|
this.height = a.height;
|
return this
|
},
|
toJSON: function (a) {
|
a = da.prototype.toJSON.call(this, a);
|
a.object.width = this.width;
|
a.object.height = this.height;
|
return a
|
}
|
});
|
Af.prototype = Object.assign(Object.create(X.prototype), {
|
constructor: Af,
|
load: function (a, b, c, d) {
|
var f = this,
|
g = new Qa(f.manager);
|
g.setPath(f.path);
|
g.load(a, function (a) {
|
b(f.parse(JSON.parse(a)))
|
}, c, d)
|
},
|
parse: function (a) {
|
function b(a) {
|
void 0 === c[a] && console.warn("THREE.MaterialLoader: Undefined texture", a);
|
return c[a]
|
}
|
var c = this.textures,
|
d = new Nl[a.type];
|
void 0 !== a.uuid && (d.uuid = a.uuid);
|
void 0 !== a.name && (d.name = a.name);
|
void 0 !== a.color && d.color.setHex(a.color);
|
void 0 !== a.roughness && (d.roughness = a.roughness);
|
void 0 !== a.metalness && (d.metalness = a.metalness);
|
void 0 !== a.sheen && (d.sheen = (new D).setHex(a.sheen));
|
void 0 !== a.emissive && d.emissive.setHex(a.emissive);
|
void 0 !== a.specular && d.specular.setHex(a.specular);
|
void 0 !== a.shininess && (d.shininess = a.shininess);
|
void 0 !== a.clearcoat && (d.clearcoat = a.clearcoat);
|
void 0 !== a.clearcoatRoughness &&
|
(d.clearcoatRoughness = a.clearcoatRoughness);
|
void 0 !== a.vertexColors && (d.vertexColors = a.vertexColors);
|
void 0 !== a.fog && (d.fog = a.fog);
|
void 0 !== a.flatShading && (d.flatShading = a.flatShading);
|
void 0 !== a.blending && (d.blending = a.blending);
|
void 0 !== a.combine && (d.combine = a.combine);
|
void 0 !== a.side && (d.side = a.side);
|
void 0 !== a.opacity && (d.opacity = a.opacity);
|
void 0 !== a.transparent && (d.transparent = a.transparent);
|
void 0 !== a.alphaTest && (d.alphaTest = a.alphaTest);
|
void 0 !== a.depthTest && (d.depthTest = a.depthTest);
|
void 0 !==
|
a.depthWrite && (d.depthWrite = a.depthWrite);
|
void 0 !== a.colorWrite && (d.colorWrite = a.colorWrite);
|
void 0 !== a.stencilWrite && (d.stencilWrite = a.stencilWrite);
|
void 0 !== a.stencilWriteMask && (d.stencilWriteMask = a.stencilWriteMask);
|
void 0 !== a.stencilFunc && (d.stencilFunc = a.stencilFunc);
|
void 0 !== a.stencilRef && (d.stencilRef = a.stencilRef);
|
void 0 !== a.stencilFuncMask && (d.stencilFuncMask = a.stencilFuncMask);
|
void 0 !== a.stencilFail && (d.stencilFail = a.stencilFail);
|
void 0 !== a.stencilZFail && (d.stencilZFail = a.stencilZFail);
|
void 0 !== a.stencilZPass && (d.stencilZPass = a.stencilZPass);
|
void 0 !== a.wireframe && (d.wireframe = a.wireframe);
|
void 0 !== a.wireframeLinewidth && (d.wireframeLinewidth = a.wireframeLinewidth);
|
void 0 !== a.wireframeLinecap && (d.wireframeLinecap = a.wireframeLinecap);
|
void 0 !== a.wireframeLinejoin && (d.wireframeLinejoin = a.wireframeLinejoin);
|
void 0 !== a.rotation && (d.rotation = a.rotation);
|
1 !== a.linewidth && (d.linewidth = a.linewidth);
|
void 0 !== a.dashSize && (d.dashSize = a.dashSize);
|
void 0 !== a.gapSize && (d.gapSize = a.gapSize);
|
void 0 !==
|
a.scale && (d.scale = a.scale);
|
void 0 !== a.polygonOffset && (d.polygonOffset = a.polygonOffset);
|
void 0 !== a.polygonOffsetFactor && (d.polygonOffsetFactor = a.polygonOffsetFactor);
|
void 0 !== a.polygonOffsetUnits && (d.polygonOffsetUnits = a.polygonOffsetUnits);
|
void 0 !== a.skinning && (d.skinning = a.skinning);
|
void 0 !== a.morphTargets && (d.morphTargets = a.morphTargets);
|
void 0 !== a.morphNormals && (d.morphNormals = a.morphNormals);
|
void 0 !== a.dithering && (d.dithering = a.dithering);
|
void 0 !== a.visible && (d.visible = a.visible);
|
void 0 !== a.toneMapped &&
|
(d.toneMapped = a.toneMapped);
|
void 0 !== a.userData && (d.userData = a.userData);
|
if (void 0 !== a.uniforms)
|
for (var f in a.uniforms) {
|
var g = a.uniforms[f];
|
d.uniforms[f] = {};
|
switch (g.type) {
|
case "t":
|
d.uniforms[f].value = b(g.value);
|
break;
|
case "c":
|
d.uniforms[f].value = (new D).setHex(g.value);
|
break;
|
case "v2":
|
d.uniforms[f].value = (new z).fromArray(g.value);
|
break;
|
case "v3":
|
d.uniforms[f].value = (new q).fromArray(g.value);
|
break;
|
case "v4":
|
d.uniforms[f].value = (new ca).fromArray(g.value);
|
break;
|
case "m3":
|
d.uniforms[f].value = (new ka).fromArray(g.value);
|
case "m4":
|
d.uniforms[f].value = (new I).fromArray(g.value);
|
break;
|
default:
|
d.uniforms[f].value = g.value
|
}
|
}
|
void 0 !== a.defines && (d.defines = a.defines);
|
void 0 !== a.vertexShader && (d.vertexShader = a.vertexShader);
|
void 0 !== a.fragmentShader && (d.fragmentShader = a.fragmentShader);
|
if (void 0 !== a.extensions)
|
for (var k in a.extensions) d.extensions[k] = a.extensions[k];
|
void 0 !== a.shading && (d.flatShading = 1 === a.shading);
|
void 0 !== a.size && (d.size = a.size);
|
void 0 !== a.sizeAttenuation && (d.sizeAttenuation = a.sizeAttenuation);
|
void 0 !==
|
a.map && (d.map = b(a.map));
|
void 0 !== a.matcap && (d.matcap = b(a.matcap));
|
void 0 !== a.alphaMap && (d.alphaMap = b(a.alphaMap), d.transparent = !0);
|
void 0 !== a.bumpMap && (d.bumpMap = b(a.bumpMap));
|
void 0 !== a.bumpScale && (d.bumpScale = a.bumpScale);
|
void 0 !== a.normalMap && (d.normalMap = b(a.normalMap));
|
void 0 !== a.normalMapType && (d.normalMapType = a.normalMapType);
|
void 0 !== a.normalScale && (f = a.normalScale, !1 === Array.isArray(f) && (f = [f, f]), d.normalScale = (new z).fromArray(f));
|
void 0 !== a.displacementMap && (d.displacementMap = b(a.displacementMap));
|
void 0 !== a.displacementScale && (d.displacementScale = a.displacementScale);
|
void 0 !== a.displacementBias && (d.displacementBias = a.displacementBias);
|
void 0 !== a.roughnessMap && (d.roughnessMap = b(a.roughnessMap));
|
void 0 !== a.metalnessMap && (d.metalnessMap = b(a.metalnessMap));
|
void 0 !== a.emissiveMap && (d.emissiveMap = b(a.emissiveMap));
|
void 0 !== a.emissiveIntensity && (d.emissiveIntensity = a.emissiveIntensity);
|
void 0 !== a.specularMap && (d.specularMap = b(a.specularMap));
|
void 0 !== a.envMap && (d.envMap = b(a.envMap));
|
void 0 !== a.envMapIntensity &&
|
(d.envMapIntensity = a.envMapIntensity);
|
void 0 !== a.reflectivity && (d.reflectivity = a.reflectivity);
|
void 0 !== a.refractionRatio && (d.refractionRatio = a.refractionRatio);
|
void 0 !== a.lightMap && (d.lightMap = b(a.lightMap));
|
void 0 !== a.lightMapIntensity && (d.lightMapIntensity = a.lightMapIntensity);
|
void 0 !== a.aoMap && (d.aoMap = b(a.aoMap));
|
void 0 !== a.aoMapIntensity && (d.aoMapIntensity = a.aoMapIntensity);
|
void 0 !== a.gradientMap && (d.gradientMap = b(a.gradientMap));
|
void 0 !== a.clearcoatNormalMap && (d.clearcoatNormalMap = b(a.clearcoatNormalMap));
|
void 0 !== a.clearcoatNormalScale && (d.clearcoatNormalScale = (new z).fromArray(a.clearcoatNormalScale));
|
return d
|
},
|
setTextures: function (a) {
|
this.textures = a;
|
return this
|
}
|
});
|
var Kh = {
|
decodeText: function (a) {
|
if ("undefined" !== typeof TextDecoder) return (new TextDecoder).decode(a);
|
for (var b = "", c = 0, d = a.length; c < d; c++) b += String.fromCharCode(a[c]);
|
try {
|
return decodeURIComponent(escape(b))
|
} catch (f) {
|
return b
|
}
|
},
|
extractUrlBase: function (a) {
|
var b = a.lastIndexOf("/");
|
return -1 === b ? "./" : a.substr(0, b + 1)
|
}
|
};
|
Bf.prototype = Object.assign(Object.create(G.prototype), {
|
constructor: Bf,
|
isInstancedBufferGeometry: !0,
|
copy: function (a) {
|
G.prototype.copy.call(this, a);
|
this.maxInstancedCount = a.maxInstancedCount;
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
toJSON: function () {
|
var a = G.prototype.toJSON.call(this);
|
a.maxInstancedCount = this.maxInstancedCount;
|
a.isInstancedBufferGeometry = !0;
|
return a
|
}
|
});
|
Cf.prototype = Object.assign(Object.create(O.prototype), {
|
constructor: Cf,
|
isInstancedBufferAttribute: !0,
|
copy: function (a) {
|
O.prototype.copy.call(this, a);
|
this.meshPerAttribute =
|
a.meshPerAttribute;
|
return this
|
},
|
toJSON: function () {
|
var a = O.prototype.toJSON.call(this);
|
a.meshPerAttribute = this.meshPerAttribute;
|
a.isInstancedBufferAttribute = !0;
|
return a
|
}
|
});
|
Df.prototype = Object.assign(Object.create(X.prototype), {
|
constructor: Df,
|
load: function (a, b, c, d) {
|
var f = this,
|
g = new Qa(f.manager);
|
g.setPath(f.path);
|
g.load(a, function (a) {
|
b(f.parse(JSON.parse(a)))
|
}, c, d)
|
},
|
parse: function (a) {
|
var b = a.isInstancedBufferGeometry ? new Bf : new G,
|
c = a.data.index;
|
if (void 0 !== c) {
|
var d = new Lh[c.type](c.array);
|
b.setIndex(new O(d,
|
1))
|
}
|
c = a.data.attributes;
|
for (var f in c) {
|
var g = c[f];
|
d = new Lh[g.type](g.array);
|
d = new(g.isInstancedBufferAttribute ? Cf : O)(d, g.itemSize, g.normalized);
|
void 0 !== g.name && (d.name = g.name);
|
b.setAttribute(f, d)
|
}
|
var k = a.data.morphAttributes;
|
if (k)
|
for (f in k) {
|
var m = k[f],
|
l = [];
|
c = 0;
|
for (var p = m.length; c < p; c++) g = m[c], d = new Lh[g.type](g.array), d = new O(d, g.itemSize, g.normalized), void 0 !== g.name && (d.name = g.name), l.push(d);
|
b.morphAttributes[f] = l
|
}
|
f = a.data.groups || a.data.drawcalls || a.data.offsets;
|
if (void 0 !== f)
|
for (c = 0, g = f.length; c !==
|
g; ++c) d = f[c], b.addGroup(d.start, d.count, d.materialIndex);
|
c = a.data.boundingSphere;
|
void 0 !== c && (f = new q, void 0 !== c.center && f.fromArray(c.center), b.boundingSphere = new ub(f, c.radius));
|
a.name && (b.name = a.name);
|
a.userData && (b.userData = a.userData);
|
return b
|
}
|
});
|
var Lh = {
|
Int8Array: Int8Array,
|
Uint8Array: Uint8Array,
|
Uint8ClampedArray: "undefined" !== typeof Uint8ClampedArray ? Uint8ClampedArray : Uint8Array,
|
Int16Array: Int16Array,
|
Uint16Array: Uint16Array,
|
Int32Array: Int32Array,
|
Uint32Array: Uint32Array,
|
Float32Array: Float32Array,
|
Float64Array: Float64Array
|
};
|
Ef.prototype = Object.assign(Object.create(X.prototype), {
|
constructor: Ef,
|
load: function (a, b, c, d) {
|
var f = this,
|
g = "" === this.path ? Kh.extractUrlBase(a) : this.path;
|
this.resourcePath = this.resourcePath || g;
|
g = new Qa(f.manager);
|
g.setPath(this.path);
|
g.load(a, function (c) {
|
var g = null;
|
try {
|
g = JSON.parse(c)
|
} catch (n) {
|
void 0 !== d && d(n);
|
console.error("THREE:ObjectLoader: Can't parse " + a + ".", n.message);
|
return
|
}
|
c = g.metadata;
|
void 0 === c || void 0 === c.type || "geometry" === c.type.toLowerCase() ? console.error("THREE.ObjectLoader: Can't load " +
|
a) : f.parse(g, b)
|
}, c, d)
|
},
|
parse: function (a, b) {
|
var c = this.parseShape(a.shapes);
|
c = this.parseGeometries(a.geometries, c);
|
var d = this.parseImages(a.images, function () {
|
void 0 !== b && b(f)
|
});
|
d = this.parseTextures(a.textures, d);
|
d = this.parseMaterials(a.materials, d);
|
var f = this.parseObject(a.object, c, d);
|
a.animations && (f.animations = this.parseAnimations(a.animations));
|
void 0 !== a.images && 0 !== a.images.length || void 0 === b || b(f);
|
return f
|
},
|
parseShape: function (a) {
|
var b = {};
|
if (void 0 !== a)
|
for (var c = 0, d = a.length; c < d; c++) {
|
var f = (new Pb).fromJSON(a[c]);
|
b[f.uuid] = f
|
}
|
return b
|
},
|
parseGeometries: function (a, b) {
|
var c = {};
|
if (void 0 !== a)
|
for (var d = new Df, f = 0, g = a.length; f < g; f++) {
|
var k = a[f];
|
switch (k.type) {
|
case "PlaneGeometry":
|
case "PlaneBufferGeometry":
|
var m = new Ba[k.type](k.width, k.height, k.widthSegments, k.heightSegments);
|
break;
|
case "BoxGeometry":
|
case "BoxBufferGeometry":
|
case "CubeGeometry":
|
m = new Ba[k.type](k.width, k.height, k.depth, k.widthSegments, k.heightSegments, k.depthSegments);
|
break;
|
case "CircleGeometry":
|
case "CircleBufferGeometry":
|
m = new Ba[k.type](k.radius,
|
k.segments, k.thetaStart, k.thetaLength);
|
break;
|
case "CylinderGeometry":
|
case "CylinderBufferGeometry":
|
m = new Ba[k.type](k.radiusTop, k.radiusBottom, k.height, k.radialSegments, k.heightSegments, k.openEnded, k.thetaStart, k.thetaLength);
|
break;
|
case "ConeGeometry":
|
case "ConeBufferGeometry":
|
m = new Ba[k.type](k.radius, k.height, k.radialSegments, k.heightSegments, k.openEnded, k.thetaStart, k.thetaLength);
|
break;
|
case "SphereGeometry":
|
case "SphereBufferGeometry":
|
m = new Ba[k.type](k.radius, k.widthSegments, k.heightSegments,
|
k.phiStart, k.phiLength, k.thetaStart, k.thetaLength);
|
break;
|
case "DodecahedronGeometry":
|
case "DodecahedronBufferGeometry":
|
case "IcosahedronGeometry":
|
case "IcosahedronBufferGeometry":
|
case "OctahedronGeometry":
|
case "OctahedronBufferGeometry":
|
case "TetrahedronGeometry":
|
case "TetrahedronBufferGeometry":
|
m = new Ba[k.type](k.radius, k.detail);
|
break;
|
case "RingGeometry":
|
case "RingBufferGeometry":
|
m = new Ba[k.type](k.innerRadius, k.outerRadius, k.thetaSegments, k.phiSegments, k.thetaStart, k.thetaLength);
|
break;
|
case "TorusGeometry":
|
case "TorusBufferGeometry":
|
m =
|
new Ba[k.type](k.radius, k.tube, k.radialSegments, k.tubularSegments, k.arc);
|
break;
|
case "TorusKnotGeometry":
|
case "TorusKnotBufferGeometry":
|
m = new Ba[k.type](k.radius, k.tube, k.tubularSegments, k.radialSegments, k.p, k.q);
|
break;
|
case "TubeGeometry":
|
case "TubeBufferGeometry":
|
m = new Ba[k.type]((new Jh[k.path.type]).fromJSON(k.path), k.tubularSegments, k.radius, k.radialSegments, k.closed);
|
break;
|
case "LatheGeometry":
|
case "LatheBufferGeometry":
|
m = new Ba[k.type](k.points, k.segments, k.phiStart, k.phiLength);
|
break;
|
case "PolyhedronGeometry":
|
case "PolyhedronBufferGeometry":
|
m =
|
new Ba[k.type](k.vertices, k.indices, k.radius, k.details);
|
break;
|
case "ShapeGeometry":
|
case "ShapeBufferGeometry":
|
m = [];
|
for (var l = 0, p = k.shapes.length; l < p; l++) {
|
var q = b[k.shapes[l]];
|
m.push(q)
|
}
|
m = new Ba[k.type](m, k.curveSegments);
|
break;
|
case "ExtrudeGeometry":
|
case "ExtrudeBufferGeometry":
|
m = [];
|
l = 0;
|
for (p = k.shapes.length; l < p; l++) q = b[k.shapes[l]], m.push(q);
|
l = k.options.extrudePath;
|
void 0 !== l && (k.options.extrudePath = (new Jh[l.type]).fromJSON(l));
|
m = new Ba[k.type](m, k.options);
|
break;
|
case "BufferGeometry":
|
case "InstancedBufferGeometry":
|
m =
|
d.parse(k);
|
break;
|
case "Geometry":
|
"THREE" in kc && "LegacyJSONLoader" in THREE ? m = (new THREE.LegacyJSONLoader).parse(k, this.resourcePath).geometry : console.error('THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type "Geometry".');
|
break;
|
default:
|
console.warn('THREE.ObjectLoader: Unsupported geometry type "' + k.type + '"');
|
continue
|
}
|
m.uuid = k.uuid;
|
void 0 !== k.name && (m.name = k.name);
|
!0 === m.isBufferGeometry && void 0 !== k.userData && (m.userData = k.userData);
|
c[k.uuid] = m
|
}
|
return c
|
},
|
parseMaterials: function (a,
|
b) {
|
var c = {},
|
d = {};
|
if (void 0 !== a) {
|
var f = new Af;
|
f.setTextures(b);
|
b = 0;
|
for (var g = a.length; b < g; b++) {
|
var k = a[b];
|
if ("MultiMaterial" === k.type) {
|
for (var m = [], l = 0; l < k.materials.length; l++) {
|
var p = k.materials[l];
|
void 0 === c[p.uuid] && (c[p.uuid] = f.parse(p));
|
m.push(c[p.uuid])
|
}
|
d[k.uuid] = m
|
} else void 0 === c[k.uuid] && (c[k.uuid] = f.parse(k)), d[k.uuid] = c[k.uuid]
|
}
|
}
|
return d
|
},
|
parseAnimations: function (a) {
|
for (var b = [], c = 0; c < a.length; c++) {
|
var d = a[c],
|
f = Pa.parse(d);
|
void 0 !== d.uuid && (f.uuid = d.uuid);
|
b.push(f)
|
}
|
return b
|
},
|
parseImages: function (a,
|
b) {
|
function c(a) {
|
d.manager.itemStart(a);
|
return g.load(a, function () {
|
d.manager.itemEnd(a)
|
}, void 0, function () {
|
d.manager.itemError(a);
|
d.manager.itemEnd(a)
|
})
|
}
|
var d = this,
|
f = {};
|
if (void 0 !== a && 0 < a.length) {
|
b = new Og(b);
|
var g = new pd(b);
|
g.setCrossOrigin(this.crossOrigin);
|
b = 0;
|
for (var k = a.length; b < k; b++) {
|
var m = a[b],
|
l = m.url;
|
if (Array.isArray(l)) {
|
f[m.uuid] = [];
|
for (var p = 0, q = l.length; p < q; p++) {
|
var t = l[p];
|
t = /^(\/\/)|([a-z]+:(\/\/)?)/i.test(t) ? t : d.resourcePath + t;
|
f[m.uuid].push(c(t))
|
}
|
} else t = /^(\/\/)|([a-z]+:(\/\/)?)/i.test(m.url) ?
|
m.url : d.resourcePath + m.url, f[m.uuid] = c(t)
|
}
|
}
|
return f
|
},
|
parseTextures: function (a, b) {
|
function c(a, b) {
|
if ("number" === typeof a) return a;
|
console.warn("THREE.ObjectLoader.parseTexture: Constant should be in numeric form.", a);
|
return b[a]
|
}
|
var d = {};
|
if (void 0 !== a)
|
for (var f = 0, g = a.length; f < g; f++) {
|
var k = a[f];
|
void 0 === k.image && console.warn('THREE.ObjectLoader: No "image" specified for', k.uuid);
|
void 0 === b[k.image] && console.warn("THREE.ObjectLoader: Undefined image", k.image);
|
var m = Array.isArray(b[k.image]) ? new vb(b[k.image]) :
|
new S(b[k.image]);
|
m.needsUpdate = !0;
|
m.uuid = k.uuid;
|
void 0 !== k.name && (m.name = k.name);
|
void 0 !== k.mapping && (m.mapping = c(k.mapping, Ol));
|
void 0 !== k.offset && m.offset.fromArray(k.offset);
|
void 0 !== k.repeat && m.repeat.fromArray(k.repeat);
|
void 0 !== k.center && m.center.fromArray(k.center);
|
void 0 !== k.rotation && (m.rotation = k.rotation);
|
void 0 !== k.wrap && (m.wrapS = c(k.wrap[0], yj), m.wrapT = c(k.wrap[1], yj));
|
void 0 !== k.format && (m.format = k.format);
|
void 0 !== k.type && (m.type = k.type);
|
void 0 !== k.encoding && (m.encoding = k.encoding);
|
void 0 !== k.minFilter && (m.minFilter = c(k.minFilter, zj));
|
void 0 !== k.magFilter && (m.magFilter = c(k.magFilter, zj));
|
void 0 !== k.anisotropy && (m.anisotropy = k.anisotropy);
|
void 0 !== k.flipY && (m.flipY = k.flipY);
|
void 0 !== k.premultiplyAlpha && (m.premultiplyAlpha = k.premultiplyAlpha);
|
void 0 !== k.unpackAlignment && (m.unpackAlignment = k.unpackAlignment);
|
d[k.uuid] = m
|
}
|
return d
|
},
|
parseObject: function (a, b, c) {
|
function d(a) {
|
void 0 === b[a] && console.warn("THREE.ObjectLoader: Undefined geometry", a);
|
return b[a]
|
}
|
|
function f(a) {
|
if (void 0 !==
|
a) {
|
if (Array.isArray(a)) {
|
for (var b = [], d = 0, f = a.length; d < f; d++) {
|
var g = a[d];
|
void 0 === c[g] && console.warn("THREE.ObjectLoader: Undefined material", g);
|
b.push(c[g])
|
}
|
return b
|
}
|
void 0 === c[a] && console.warn("THREE.ObjectLoader: Undefined material", a);
|
return c[a]
|
}
|
}
|
switch (a.type) {
|
case "Scene":
|
var g = new Kd;
|
void 0 !== a.background && Number.isInteger(a.background) && (g.background = new D(a.background));
|
void 0 !== a.fog && ("Fog" === a.fog.type ? g.fog = new df(a.fog.color, a.fog.near, a.fog.far) : "FogExp2" === a.fog.type && (g.fog = new cf(a.fog.color,
|
a.fog.density)));
|
break;
|
case "PerspectiveCamera":
|
g = new na(a.fov, a.aspect, a.near, a.far);
|
void 0 !== a.focus && (g.focus = a.focus);
|
void 0 !== a.zoom && (g.zoom = a.zoom);
|
void 0 !== a.filmGauge && (g.filmGauge = a.filmGauge);
|
void 0 !== a.filmOffset && (g.filmOffset = a.filmOffset);
|
void 0 !== a.view && (g.view = Object.assign({}, a.view));
|
break;
|
case "OrthographicCamera":
|
g = new De(a.left, a.right, a.top, a.bottom, a.near, a.far);
|
void 0 !== a.zoom && (g.zoom = a.zoom);
|
void 0 !== a.view && (g.view = Object.assign({}, a.view));
|
break;
|
case "AmbientLight":
|
g =
|
new yf(a.color, a.intensity);
|
break;
|
case "DirectionalLight":
|
g = new xf(a.color, a.intensity);
|
break;
|
case "PointLight":
|
g = new vf(a.color, a.intensity, a.distance, a.decay);
|
break;
|
case "RectAreaLight":
|
g = new zf(a.color, a.intensity, a.width, a.height);
|
break;
|
case "SpotLight":
|
g = new uf(a.color, a.intensity, a.distance, a.angle, a.penumbra, a.decay);
|
break;
|
case "HemisphereLight":
|
g = new sf(a.color, a.groundColor, a.intensity);
|
break;
|
case "SkinnedMesh":
|
console.warn("THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.");
|
case "Mesh":
|
g = d(a.geometry);
|
var k = f(a.material);
|
g = g.bones && 0 < g.bones.length ? new ce(g, k) : new ia(g, k);
|
break;
|
case "InstancedMesh":
|
g = d(a.geometry);
|
k = f(a.material);
|
var m = a.instanceMatrix;
|
g = new gf(g, k, a.count);
|
g.instanceMatrix = new O(new Float32Array(m.array), 16);
|
break;
|
case "LOD":
|
g = new be;
|
break;
|
case "Line":
|
g = new pa(d(a.geometry), f(a.material), a.mode);
|
break;
|
case "LineLoop":
|
g = new hf(d(a.geometry), f(a.material));
|
break;
|
case "LineSegments":
|
g = new Z(d(a.geometry), f(a.material));
|
break;
|
case "PointCloud":
|
case "Points":
|
g =
|
new Yc(d(a.geometry), f(a.material));
|
break;
|
case "Sprite":
|
g = new $d(f(a.material));
|
break;
|
case "Group":
|
g = new Vc;
|
break;
|
default:
|
g = new E
|
}
|
g.uuid = a.uuid;
|
void 0 !== a.name && (g.name = a.name);
|
void 0 !== a.matrix ? (g.matrix.fromArray(a.matrix), void 0 !== a.matrixAutoUpdate && (g.matrixAutoUpdate = a.matrixAutoUpdate), g.matrixAutoUpdate && g.matrix.decompose(g.position, g.quaternion, g.scale)) : (void 0 !== a.position && g.position.fromArray(a.position), void 0 !== a.rotation && g.rotation.fromArray(a.rotation), void 0 !== a.quaternion && g.quaternion.fromArray(a.quaternion),
|
void 0 !== a.scale && g.scale.fromArray(a.scale));
|
void 0 !== a.castShadow && (g.castShadow = a.castShadow);
|
void 0 !== a.receiveShadow && (g.receiveShadow = a.receiveShadow);
|
a.shadow && (void 0 !== a.shadow.bias && (g.shadow.bias = a.shadow.bias), void 0 !== a.shadow.radius && (g.shadow.radius = a.shadow.radius), void 0 !== a.shadow.mapSize && g.shadow.mapSize.fromArray(a.shadow.mapSize), void 0 !== a.shadow.camera && (g.shadow.camera = this.parseObject(a.shadow.camera)));
|
void 0 !== a.visible && (g.visible = a.visible);
|
void 0 !== a.frustumCulled &&
|
(g.frustumCulled = a.frustumCulled);
|
void 0 !== a.renderOrder && (g.renderOrder = a.renderOrder);
|
void 0 !== a.userData && (g.userData = a.userData);
|
void 0 !== a.layers && (g.layers.mask = a.layers);
|
void 0 !== a.drawMode && g.setDrawMode(a.drawMode);
|
if (void 0 !== a.children)
|
for (m = a.children, k = 0; k < m.length; k++) g.add(this.parseObject(m[k], b, c));
|
if ("LOD" === a.type)
|
for (a = a.levels, m = 0; m < a.length; m++) {
|
k = a[m];
|
var l = g.getObjectByProperty("uuid", k.object);
|
void 0 !== l && g.addLevel(l, k.distance)
|
}
|
return g
|
}
|
});
|
var Ol = {
|
UVMapping: 300,
|
CubeReflectionMapping: 301,
|
CubeRefractionMapping: 302,
|
EquirectangularReflectionMapping: 303,
|
EquirectangularRefractionMapping: 304,
|
SphericalReflectionMapping: 305,
|
CubeUVReflectionMapping: 306,
|
CubeUVRefractionMapping: 307
|
},
|
yj = {
|
RepeatWrapping: 1E3,
|
ClampToEdgeWrapping: 1001,
|
MirroredRepeatWrapping: 1002
|
},
|
zj = {
|
NearestFilter: 1003,
|
NearestMipmapNearestFilter: 1004,
|
NearestMipmapLinearFilter: 1005,
|
LinearFilter: 1006,
|
LinearMipmapNearestFilter: 1007,
|
LinearMipmapLinearFilter: 1008
|
};
|
Tg.prototype = Object.assign(Object.create(X.prototype), {
|
constructor: Tg,
|
setOptions: function (a) {
|
this.options = a;
|
return this
|
},
|
load: function (a, b, c, d) {
|
void 0 === a && (a = "");
|
void 0 !== this.path && (a = this.path + a);
|
a = this.manager.resolveURL(a);
|
var f = this,
|
g = Fc.get(a);
|
if (void 0 !== g) return f.manager.itemStart(a), setTimeout(function () {
|
b && b(g);
|
f.manager.itemEnd(a)
|
}, 0), g;
|
fetch(a).then(function (a) {
|
return a.blob()
|
}).then(function (a) {
|
return void 0 === f.options ? createImageBitmap(a) : createImageBitmap(a, f.options)
|
}).then(function (c) {
|
Fc.add(a, c);
|
b && b(c);
|
f.manager.itemEnd(a)
|
}).catch(function (b) {
|
d &&
|
d(b);
|
f.manager.itemError(a);
|
f.manager.itemEnd(a)
|
});
|
f.manager.itemStart(a)
|
}
|
});
|
Object.assign(Ug.prototype, {
|
moveTo: function (a, b) {
|
this.currentPath = new ab;
|
this.subPaths.push(this.currentPath);
|
this.currentPath.moveTo(a, b);
|
return this
|
},
|
lineTo: function (a, b) {
|
this.currentPath.lineTo(a, b);
|
return this
|
},
|
quadraticCurveTo: function (a, b, c, d) {
|
this.currentPath.quadraticCurveTo(a, b, c, d);
|
return this
|
},
|
bezierCurveTo: function (a, b, c, d, f, g) {
|
this.currentPath.bezierCurveTo(a, b, c, d, f, g);
|
return this
|
},
|
splineThru: function (a) {
|
this.currentPath.splineThru(a);
|
return this
|
},
|
toShapes: function (a, b) {
|
function c(a) {
|
for (var b = [], c = 0, d = a.length; c < d; c++) {
|
var f = a[c],
|
g = new Pb;
|
g.curves = f.curves;
|
b.push(g)
|
}
|
return b
|
}
|
|
function d(a, b) {
|
for (var c = b.length, d = !1, f = c - 1, g = 0; g < c; f = g++) {
|
var k = b[f],
|
m = b[g],
|
l = m.x - k.x,
|
n = m.y - k.y;
|
if (Math.abs(n) > Number.EPSILON) {
|
if (0 > n && (k = b[g], l = -l, m = b[f], n = -n), !(a.y < k.y || a.y > m.y))
|
if (a.y === k.y) {
|
if (a.x === k.x) return !0
|
} else {
|
f = n * (a.x - k.x) - l * (a.y - k.y);
|
if (0 === f) return !0;
|
0 > f || (d = !d)
|
}
|
} else if (a.y === k.y && (m.x <= a.x && a.x <= k.x || k.x <= a.x && a.x <= m.x)) return !0
|
}
|
return d
|
}
|
var f = xb.isClockWise,
|
g = this.subPaths;
|
if (0 === g.length) return [];
|
if (!0 === b) return c(g);
|
b = [];
|
if (1 === g.length) {
|
var k = g[0];
|
var m = new Pb;
|
m.curves = k.curves;
|
b.push(m);
|
return b
|
}
|
var l = !f(g[0].getPoints());
|
l = a ? !l : l;
|
m = [];
|
var p = [],
|
q = [],
|
t = 0;
|
p[t] = void 0;
|
q[t] = [];
|
for (var r = 0, u = g.length; r < u; r++) {
|
k = g[r];
|
var v = k.getPoints();
|
var w = f(v);
|
(w = a ? !w : w) ? (!l && p[t] && t++, p[t] = {
|
s: new Pb,
|
p: v
|
}, p[t].s.curves = k.curves, l && t++, q[t] = []) : q[t].push({
|
h: k,
|
p: v[0]
|
})
|
}
|
if (!p[0]) return c(g);
|
if (1 < p.length) {
|
r = !1;
|
a = [];
|
f = 0;
|
for (g = p.length; f < g; f++) m[f] = [];
|
f = 0;
|
for (g = p.length; f < g; f++)
|
for (k = q[f], w = 0; w < k.length; w++) {
|
l = k[w];
|
t = !0;
|
for (v = 0; v < p.length; v++) d(l.p, p[v].p) && (f !== v && a.push({
|
froms: f,
|
tos: v,
|
hole: w
|
}), t ? (t = !1, m[v].push(l)) : r = !0);
|
t && m[f].push(l)
|
}
|
0 < a.length && (r || (q = m))
|
}
|
r = 0;
|
for (f = p.length; r < f; r++)
|
for (m = p[r].s, b.push(m), a = q[r], g = 0, k = a.length; g < k; g++) m.holes.push(a[g].h);
|
return b
|
}
|
});
|
Object.assign(Vg.prototype, {
|
isFont: !0,
|
generateShapes: function (a, b) {
|
void 0 === b && (b = 100);
|
var c = [],
|
d = b;
|
b = this.data;
|
var f = Array.from ? Array.from(a) : String(a).split("");
|
d /= b.resolution;
|
var g = (b.boundingBox.yMax - b.boundingBox.yMin + b.underlineThickness) * d;
|
a = [];
|
for (var k = 0, m = 0, l = 0; l < f.length; l++) {
|
var p = f[l];
|
if ("\n" === p) k = 0, m -= g;
|
else {
|
var q = p;
|
p = d;
|
var t = k,
|
r = m,
|
u = b,
|
v = u.glyphs[q] || u.glyphs["?"];
|
if (v) {
|
q = new Ug;
|
if (v.o) {
|
u = v._cachedOutline || (v._cachedOutline = v.o.split(" "));
|
for (var w = 0, x = u.length; w < x;) switch (u[w++]) {
|
case "m":
|
var B = u[w++] * p + t;
|
var z = u[w++] * p + r;
|
q.moveTo(B, z);
|
break;
|
case "l":
|
B = u[w++] * p + t;
|
z = u[w++] * p + r;
|
q.lineTo(B, z);
|
break;
|
case "q":
|
var A = u[w++] * p + t;
|
var D = u[w++] * p + r;
|
var E = u[w++] * p + t;
|
var F = u[w++] * p + r;
|
q.quadraticCurveTo(E, F, A, D);
|
break;
|
case "b":
|
A = u[w++] * p + t, D = u[w++] * p + r, E = u[w++] * p + t, F = u[w++] * p + r, B = u[w++] * p + t, z = u[w++] * p + r, q.bezierCurveTo(E, F, B, z, A, D)
|
}
|
}
|
p = {
|
offsetX: v.ha * p,
|
path: q
|
}
|
} else console.error('THREE.Font: character "' + q + '" does not exists in font family ' + u.familyName + "."), p = void 0;
|
k += p.offsetX;
|
a.push(p.path)
|
}
|
}
|
b = 0;
|
for (f = a.length; b < f; b++) Array.prototype.push.apply(c, a[b].toShapes());
|
return c
|
}
|
});
|
Wg.prototype = Object.assign(Object.create(X.prototype), {
|
constructor: Wg,
|
load: function (a,
|
b, c, d) {
|
var f = this,
|
g = new Qa(this.manager);
|
g.setPath(this.path);
|
g.load(a, function (a) {
|
try {
|
var c = JSON.parse(a)
|
} catch (n) {
|
console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."), c = JSON.parse(a.substring(65, a.length - 2))
|
}
|
a = f.parse(c);
|
b && b(a)
|
}, c, d)
|
},
|
parse: function (a) {
|
return new Vg(a)
|
}
|
});
|
var gg, ah = {
|
getContext: function () {
|
void 0 === gg && (gg = new null);
|
return gg
|
},
|
setContext: function (a) {
|
gg = a
|
}
|
};
|
Ff.prototype = Object.assign(Object.create(X.prototype), {
|
constructor: Ff,
|
load: function (a,
|
b, c, d) {
|
var f = new Qa(this.manager);
|
f.setResponseType("arraybuffer");
|
f.setPath(this.path);
|
f.load(a, function (a) {
|
a = a.slice(0);
|
ah.getContext().decodeAudioData(a, function (a) {
|
b(a)
|
})
|
}, c, d)
|
}
|
});
|
Object.assign(Gf.prototype, {
|
isSphericalHarmonics3: !0,
|
set: function (a) {
|
for (var b = 0; 9 > b; b++) this.coefficients[b].copy(a[b]);
|
return this
|
},
|
zero: function () {
|
for (var a = 0; 9 > a; a++) this.coefficients[a].set(0, 0, 0);
|
return this
|
},
|
getAt: function (a, b) {
|
var c = a.x,
|
d = a.y;
|
a = a.z;
|
var f = this.coefficients;
|
b.copy(f[0]).multiplyScalar(.282095);
|
b.addScale(f[1], .488603 * d);
|
b.addScale(f[2], .488603 * a);
|
b.addScale(f[3], .488603 * c);
|
b.addScale(f[4], 1.092548 * c * d);
|
b.addScale(f[5], 1.092548 * d * a);
|
b.addScale(f[6], .315392 * (3 * a * a - 1));
|
b.addScale(f[7], 1.092548 * c * a);
|
b.addScale(f[8], .546274 * (c * c - d * d));
|
return b
|
},
|
getIrradianceAt: function (a, b) {
|
var c = a.x,
|
d = a.y;
|
a = a.z;
|
var f = this.coefficients;
|
b.copy(f[0]).multiplyScalar(.886227);
|
b.addScale(f[1], 1.023328 * d);
|
b.addScale(f[2], 1.023328 * a);
|
b.addScale(f[3], 1.023328 * c);
|
b.addScale(f[4], .858086 * c * d);
|
b.addScale(f[5], .858086 *
|
d * a);
|
b.addScale(f[6], .743125 * a * a - .247708);
|
b.addScale(f[7], .858086 * c * a);
|
b.addScale(f[8], .429043 * (c * c - d * d));
|
return b
|
},
|
add: function (a) {
|
for (var b = 0; 9 > b; b++) this.coefficients[b].add(a.coefficients[b]);
|
return this
|
},
|
scale: function (a) {
|
for (var b = 0; 9 > b; b++) this.coefficients[b].multiplyScalar(a);
|
return this
|
},
|
lerp: function (a, b) {
|
for (var c = 0; 9 > c; c++) this.coefficients[c].lerp(a.coefficients[c], b);
|
return this
|
},
|
equals: function (a) {
|
for (var b = 0; 9 > b; b++)
|
if (!this.coefficients[b].equals(a.coefficients[b])) return !1;
|
return !0
|
},
|
copy: function (a) {
|
return this.set(a.coefficients)
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
fromArray: function (a, b) {
|
void 0 === b && (b = 0);
|
for (var c = this.coefficients, d = 0; 9 > d; d++) c[d].fromArray(a, b + 3 * d);
|
return this
|
},
|
toArray: function (a, b) {
|
void 0 === a && (a = []);
|
void 0 === b && (b = 0);
|
for (var c = this.coefficients, d = 0; 9 > d; d++) c[d].toArray(a, b + 3 * d);
|
return a
|
}
|
});
|
Object.assign(Gf, {
|
getBasisAt: function (a, b) {
|
var c = a.x,
|
d = a.y;
|
a = a.z;
|
b[0] = .282095;
|
b[1] = .488603 * d;
|
b[2] = .488603 * a;
|
b[3] = .488603 * c;
|
b[4] = 1.092548 * c * d;
|
b[5] = 1.092548 * d * a;
|
b[6] = .315392 * (3 * a * a - 1);
|
b[7] = 1.092548 * c * a;
|
b[8] = .546274 * (c * c - d * d)
|
}
|
});
|
bb.prototype = Object.assign(Object.create(da.prototype), {
|
constructor: bb,
|
isLightProbe: !0,
|
copy: function (a) {
|
da.prototype.copy.call(this, a);
|
this.sh.copy(a.sh);
|
this.intensity = a.intensity;
|
return this
|
},
|
toJSON: function (a) {
|
return da.prototype.toJSON.call(this, a)
|
}
|
});
|
Xg.prototype = Object.assign(Object.create(bb.prototype), {
|
constructor: Xg,
|
isHemisphereLightProbe: !0,
|
copy: function (a) {
|
bb.prototype.copy.call(this, a);
|
return this
|
},
|
toJSON: function (a) {
|
return bb.prototype.toJSON.call(this,
|
a)
|
}
|
});
|
Yg.prototype = Object.assign(Object.create(bb.prototype), {
|
constructor: Yg,
|
isAmbientLightProbe: !0,
|
copy: function (a) {
|
bb.prototype.copy.call(this, a);
|
return this
|
},
|
toJSON: function (a) {
|
return bb.prototype.toJSON.call(this, a)
|
}
|
});
|
var Aj = new I,
|
Bj = new I;
|
Object.assign(Ni.prototype, {
|
update: function (a) {
|
var b = this._cache;
|
if (b.focus !== a.focus || b.fov !== a.fov || b.aspect !== a.aspect * this.aspect || b.near !== a.near || b.far !== a.far || b.zoom !== a.zoom || b.eyeSep !== this.eyeSep) {
|
b.focus = a.focus;
|
b.fov = a.fov;
|
b.aspect = a.aspect * this.aspect;
|
b.near = a.near;
|
b.far = a.far;
|
b.zoom = a.zoom;
|
b.eyeSep = this.eyeSep;
|
var c = a.projectionMatrix.clone(),
|
d = b.eyeSep / 2,
|
f = d * b.near / b.focus,
|
g = b.near * Math.tan(N.DEG2RAD * b.fov * .5) / b.zoom;
|
Bj.elements[12] = -d;
|
Aj.elements[12] = d;
|
d = -g * b.aspect + f;
|
var k = g * b.aspect + f;
|
c.elements[0] = 2 * b.near / (k - d);
|
c.elements[8] = (k + d) / (k - d);
|
this.cameraL.projectionMatrix.copy(c);
|
d = -g * b.aspect - f;
|
k = g * b.aspect - f;
|
c.elements[0] = 2 * b.near / (k - d);
|
c.elements[8] = (k + d) / (k - d);
|
this.cameraR.projectionMatrix.copy(c)
|
}
|
this.cameraL.matrixWorld.copy(a.matrixWorld).multiply(Bj);
|
this.cameraR.matrixWorld.copy(a.matrixWorld).multiply(Aj)
|
}
|
});
|
Object.assign(Zg.prototype, {
|
start: function () {
|
this.oldTime = this.startTime = ("undefined" === typeof performance ? Date : performance).now();
|
this.elapsedTime = 0;
|
this.running = !0
|
},
|
stop: function () {
|
this.getElapsedTime();
|
this.autoStart = this.running = !1
|
},
|
getElapsedTime: function () {
|
this.getDelta();
|
return this.elapsedTime
|
},
|
getDelta: function () {
|
var a = 0;
|
if (this.autoStart && !this.running) return this.start(), 0;
|
if (this.running) {
|
var b = ("undefined" === typeof performance ?
|
Date : performance).now();
|
a = (b - this.oldTime) / 1E3;
|
this.oldTime = b;
|
this.elapsedTime += a
|
}
|
return a
|
}
|
});
|
var Gc = new q,
|
Cj = new ya,
|
Pl = new q,
|
Hc = new q;
|
$g.prototype = Object.assign(Object.create(E.prototype), {
|
constructor: $g,
|
getInput: function () {
|
return this.gain
|
},
|
removeFilter: function () {
|
null !== this.filter && (this.gain.disconnect(this.filter), this.filter.disconnect(this.context.destination), this.gain.connect(this.context.destination), this.filter = null);
|
return this
|
},
|
getFilter: function () {
|
return this.filter
|
},
|
setFilter: function (a) {
|
null !==
|
this.filter ? (this.gain.disconnect(this.filter), this.filter.disconnect(this.context.destination)) : this.gain.disconnect(this.context.destination);
|
this.filter = a;
|
this.gain.connect(this.filter);
|
this.filter.connect(this.context.destination);
|
return this
|
},
|
getMasterVolume: function () {
|
return this.gain.gain.value
|
},
|
setMasterVolume: function (a) {
|
this.gain.gain.setTargetAtTime(a, this.context.currentTime, .01);
|
return this
|
},
|
updateMatrixWorld: function (a) {
|
E.prototype.updateMatrixWorld.call(this, a);
|
a = this.context.listener;
|
var b = this.up;
|
this.timeDelta = this._clock.getDelta();
|
this.matrixWorld.decompose(Gc, Cj, Pl);
|
Hc.set(0, 0, -1).applyQuaternion(Cj);
|
if (a.positionX) {
|
var c = this.context.currentTime + this.timeDelta;
|
a.positionX.linearRampToValueAtTime(Gc.x, c);
|
a.positionY.linearRampToValueAtTime(Gc.y, c);
|
a.positionZ.linearRampToValueAtTime(Gc.z, c);
|
a.forwardX.linearRampToValueAtTime(Hc.x, c);
|
a.forwardY.linearRampToValueAtTime(Hc.y, c);
|
a.forwardZ.linearRampToValueAtTime(Hc.z, c);
|
a.upX.linearRampToValueAtTime(b.x, c);
|
a.upY.linearRampToValueAtTime(b.y,
|
c);
|
a.upZ.linearRampToValueAtTime(b.z, c)
|
} else a.setPosition(Gc.x, Gc.y, Gc.z), a.setOrientation(Hc.x, Hc.y, Hc.z, b.x, b.y, b.z)
|
}
|
});
|
rd.prototype = Object.assign(Object.create(E.prototype), {
|
constructor: rd,
|
getOutput: function () {
|
return this.gain
|
},
|
setNodeSource: function (a) {
|
this.hasPlaybackControl = !1;
|
this.sourceType = "audioNode";
|
this.source = a;
|
this.connect();
|
return this
|
},
|
setMediaElementSource: function (a) {
|
this.hasPlaybackControl = !1;
|
this.sourceType = "mediaNode";
|
this.source = this.context.createMediaElementSource(a);
|
this.connect();
|
return this
|
},
|
setMediaStreamSource: function (a) {
|
this.hasPlaybackControl = !1;
|
this.sourceType = "mediaStreamNode";
|
this.source = this.context.createMediaStreamSource(a);
|
this.connect();
|
return this
|
},
|
setBuffer: function (a) {
|
this.buffer = a;
|
this.sourceType = "buffer";
|
this.autoplay && this.play();
|
return this
|
},
|
play: function (a) {
|
void 0 === a && (a = 0);
|
if (!0 === this.isPlaying) console.warn("THREE.Audio: Audio is already playing.");
|
else if (!1 === this.hasPlaybackControl) console.warn("THREE.Audio: this Audio has no playback control.");
|
else return this._startedAt = this.context.currentTime + a, a = this.context.createBufferSource(), a.buffer = this.buffer, a.loop = this.loop, a.loopStart = this.loopStart, a.loopEnd = this.loopEnd, a.onended = this.onEnded.bind(this), a.start(this._startedAt, this._pausedAt + this.offset, this.duration), this.isPlaying = !0, this.source = a, this.setDetune(this.detune), this.setPlaybackRate(this.playbackRate), this.connect()
|
},
|
pause: function () {
|
if (!1 === this.hasPlaybackControl) console.warn("THREE.Audio: this Audio has no playback control.");
|
else return !0 === this.isPlaying && (this._pausedAt = (this.context.currentTime - this._startedAt) * this.playbackRate, this.source.stop(), this.source.onended = null, this.isPlaying = !1), this
|
},
|
stop: function () {
|
if (!1 === this.hasPlaybackControl) console.warn("THREE.Audio: this Audio has no playback control.");
|
else return this._pausedAt = 0, this.source.stop(), this.source.onended = null, this.isPlaying = !1, this
|
},
|
connect: function () {
|
if (0 < this.filters.length) {
|
this.source.connect(this.filters[0]);
|
for (var a = 1, b = this.filters.length; a <
|
b; a++) this.filters[a - 1].connect(this.filters[a]);
|
this.filters[this.filters.length - 1].connect(this.getOutput())
|
} else this.source.connect(this.getOutput());
|
return this
|
},
|
disconnect: function () {
|
if (0 < this.filters.length) {
|
this.source.disconnect(this.filters[0]);
|
for (var a = 1, b = this.filters.length; a < b; a++) this.filters[a - 1].disconnect(this.filters[a]);
|
this.filters[this.filters.length - 1].disconnect(this.getOutput())
|
} else this.source.disconnect(this.getOutput());
|
return this
|
},
|
getFilters: function () {
|
return this.filters
|
},
|
setFilters: function (a) {
|
a || (a = []);
|
!0 === this.isPlaying ? (this.disconnect(), this.filters = a, this.connect()) : this.filters = a;
|
return this
|
},
|
setDetune: function (a) {
|
this.detune = a;
|
if (void 0 !== this.source.detune) return !0 === this.isPlaying && this.source.detune.setTargetAtTime(this.detune, this.context.currentTime, .01), this
|
},
|
getDetune: function () {
|
return this.detune
|
},
|
getFilter: function () {
|
return this.getFilters()[0]
|
},
|
setFilter: function (a) {
|
return this.setFilters(a ? [a] : [])
|
},
|
setPlaybackRate: function (a) {
|
if (!1 === this.hasPlaybackControl) console.warn("THREE.Audio: this Audio has no playback control.");
|
else return this.playbackRate = a, !0 === this.isPlaying && this.source.playbackRate.setTargetAtTime(this.playbackRate, this.context.currentTime, .01), this
|
},
|
getPlaybackRate: function () {
|
return this.playbackRate
|
},
|
onEnded: function () {
|
this.isPlaying = !1
|
},
|
getLoop: function () {
|
return !1 === this.hasPlaybackControl ? (console.warn("THREE.Audio: this Audio has no playback control."), !1) : this.loop
|
},
|
setLoop: function (a) {
|
if (!1 === this.hasPlaybackControl) console.warn("THREE.Audio: this Audio has no playback control.");
|
else return this.loop =
|
a, !0 === this.isPlaying && (this.source.loop = this.loop), this
|
},
|
setLoopStart: function (a) {
|
this.loopStart = a;
|
return this
|
},
|
setLoopEnd: function (a) {
|
this.loopEnd = a;
|
return this
|
},
|
getVolume: function () {
|
return this.gain.gain.value
|
},
|
setVolume: function (a) {
|
this.gain.gain.setTargetAtTime(a, this.context.currentTime, .01);
|
return this
|
}
|
});
|
var Ic = new q,
|
Dj = new ya,
|
Ql = new q,
|
Jc = new q;
|
bh.prototype = Object.assign(Object.create(rd.prototype), {
|
constructor: bh,
|
getOutput: function () {
|
return this.panner
|
},
|
getRefDistance: function () {
|
return this.panner.refDistance
|
},
|
setRefDistance: function (a) {
|
this.panner.refDistance = a;
|
return this
|
},
|
getRolloffFactor: function () {
|
return this.panner.rolloffFactor
|
},
|
setRolloffFactor: function (a) {
|
this.panner.rolloffFactor = a;
|
return this
|
},
|
getDistanceModel: function () {
|
return this.panner.distanceModel
|
},
|
setDistanceModel: function (a) {
|
this.panner.distanceModel = a;
|
return this
|
},
|
getMaxDistance: function () {
|
return this.panner.maxDistance
|
},
|
setMaxDistance: function (a) {
|
this.panner.maxDistance = a;
|
return this
|
},
|
setDirectionalCone: function (a, b, c) {
|
this.panner.coneInnerAngle =
|
a;
|
this.panner.coneOuterAngle = b;
|
this.panner.coneOuterGain = c;
|
return this
|
},
|
updateMatrixWorld: function (a) {
|
E.prototype.updateMatrixWorld.call(this, a);
|
if (!0 !== this.hasPlaybackControl || !1 !== this.isPlaying)
|
if (this.matrixWorld.decompose(Ic, Dj, Ql), Jc.set(0, 0, 1).applyQuaternion(Dj), a = this.panner, a.positionX) {
|
var b = this.context.currentTime + this.listener.timeDelta;
|
a.positionX.linearRampToValueAtTime(Ic.x, b);
|
a.positionY.linearRampToValueAtTime(Ic.y, b);
|
a.positionZ.linearRampToValueAtTime(Ic.z, b);
|
a.orientationX.linearRampToValueAtTime(Jc.x,
|
b);
|
a.orientationY.linearRampToValueAtTime(Jc.y, b);
|
a.orientationZ.linearRampToValueAtTime(Jc.z, b)
|
} else a.setPosition(Ic.x, Ic.y, Ic.z), a.setOrientation(Jc.x, Jc.y, Jc.z)
|
}
|
});
|
Object.assign(ch.prototype, {
|
getFrequencyData: function () {
|
this.analyser.getByteFrequencyData(this.data);
|
return this.data
|
},
|
getAverageFrequency: function () {
|
for (var a = 0, b = this.getFrequencyData(), c = 0; c < b.length; c++) a += b[c];
|
return a / b.length
|
}
|
});
|
Object.assign(dh.prototype, {
|
accumulate: function (a, b) {
|
var c = this.buffer,
|
d = this.valueSize;
|
a = a * d + d;
|
var f = this.cumulativeWeight;
|
if (0 === f) {
|
for (f = 0; f !== d; ++f) c[a + f] = c[f];
|
f = b
|
} else f += b, this._mixBufferRegion(c, a, 0, b / f, d);
|
this.cumulativeWeight = f
|
},
|
apply: function (a) {
|
var b = this.valueSize,
|
c = this.buffer;
|
a = a * b + b;
|
var d = this.cumulativeWeight,
|
f = this.binding;
|
this.cumulativeWeight = 0;
|
1 > d && this._mixBufferRegion(c, a, 3 * b, 1 - d, b);
|
d = b;
|
for (var g = b + b; d !== g; ++d)
|
if (c[d] !== c[d + b]) {
|
f.setValue(c, a);
|
break
|
}
|
},
|
saveOriginalState: function () {
|
var a = this.buffer,
|
b = this.valueSize,
|
c = 3 * b;
|
this.binding.getValue(a, c);
|
for (var d = b; d !== c; ++d) a[d] =
|
a[c + d % b];
|
this.cumulativeWeight = 0
|
},
|
restoreOriginalState: function () {
|
this.binding.setValue(this.buffer, 3 * this.valueSize)
|
},
|
_select: function (a, b, c, d, f) {
|
if (.5 <= d)
|
for (d = 0; d !== f; ++d) a[b + d] = a[c + d]
|
},
|
_slerp: function (a, b, c, d) {
|
ya.slerpFlat(a, b, a, b, a, c, d)
|
},
|
_lerp: function (a, b, c, d, f) {
|
for (var g = 1 - d, k = 0; k !== f; ++k) {
|
var m = b + k;
|
a[m] = a[m] * g + a[c + k] * d
|
}
|
}
|
});
|
var Rl = /[\[\]\.:\/]/g,
|
Sl = "[^" + "\\[\\]\\.:\\/".replace("\\.", "") + "]",
|
Tl = /((?:WC+[\/:])*)/.source.replace("WC", "[^\\[\\]\\.:\\/]"),
|
Ul = /(WCOD+)?/.source.replace("WCOD", Sl),
|
Vl = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC", "[^\\[\\]\\.:\\/]"),
|
Wl = /\.(WC+)(?:\[(.+)\])?/.source.replace("WC", "[^\\[\\]\\.:\\/]"),
|
Xl = new RegExp("^" + Tl + Ul + Vl + Wl + "$"),
|
Yl = ["material", "materials", "bones"];
|
Object.assign(Oi.prototype, {
|
getValue: function (a, b) {
|
this.bind();
|
var c = this._bindings[this._targetGroup.nCachedObjects_];
|
void 0 !== c && c.getValue(a, b)
|
},
|
setValue: function (a, b) {
|
for (var c = this._bindings, d = this._targetGroup.nCachedObjects_, f = c.length; d !== f; ++d) c[d].setValue(a, b)
|
},
|
bind: function () {
|
for (var a =
|
this._bindings, b = this._targetGroup.nCachedObjects_, c = a.length; b !== c; ++b) a[b].bind()
|
},
|
unbind: function () {
|
for (var a = this._bindings, b = this._targetGroup.nCachedObjects_, c = a.length; b !== c; ++b) a[b].unbind()
|
}
|
});
|
Object.assign(ja, {
|
Composite: Oi,
|
create: function (a, b, c) {
|
return a && a.isAnimationObjectGroup ? new ja.Composite(a, b, c) : new ja(a, b, c)
|
},
|
sanitizeNodeName: function (a) {
|
return a.replace(/\s/g, "_").replace(Rl, "")
|
},
|
parseTrackName: function (a) {
|
var b = Xl.exec(a);
|
if (!b) throw Error("PropertyBinding: Cannot parse trackName: " +
|
a);
|
b = {
|
nodeName: b[2],
|
objectName: b[3],
|
objectIndex: b[4],
|
propertyName: b[5],
|
propertyIndex: b[6]
|
};
|
var c = b.nodeName && b.nodeName.lastIndexOf(".");
|
if (void 0 !== c && -1 !== c) {
|
var d = b.nodeName.substring(c + 1); - 1 !== Yl.indexOf(d) && (b.nodeName = b.nodeName.substring(0, c), b.objectName = d)
|
}
|
if (null === b.propertyName || 0 === b.propertyName.length) throw Error("PropertyBinding: can not parse propertyName from trackName: " + a);
|
return b
|
},
|
findNode: function (a, b) {
|
if (!b || "" === b || "root" === b || "." === b || -1 === b || b === a.name || b === a.uuid) return a;
|
if (a.skeleton) {
|
var c = a.skeleton.getBoneByName(b);
|
if (void 0 !== c) return c
|
}
|
if (a.children) {
|
var d = function (a) {
|
for (var c = 0; c < a.length; c++) {
|
var f = a[c];
|
if (f.name === b || f.uuid === b || (f = d(f.children))) return f
|
}
|
return null
|
};
|
if (a = d(a.children)) return a
|
}
|
return null
|
}
|
});
|
Object.assign(ja.prototype, {
|
_getValue_unavailable: function () {},
|
_setValue_unavailable: function () {},
|
BindingType: {
|
Direct: 0,
|
EntireArray: 1,
|
ArrayElement: 2,
|
HasFromToArray: 3
|
},
|
Versioning: {
|
None: 0,
|
NeedsUpdate: 1,
|
MatrixWorldNeedsUpdate: 2
|
},
|
GetterByBindingType: [function (a,
|
b) {
|
a[b] = this.node[this.propertyName]
|
}, function (a, b) {
|
for (var c = this.resolvedProperty, d = 0, f = c.length; d !== f; ++d) a[b++] = c[d]
|
}, function (a, b) {
|
a[b] = this.resolvedProperty[this.propertyIndex]
|
}, function (a, b) {
|
this.resolvedProperty.toArray(a, b)
|
}],
|
SetterByBindingTypeAndVersioning: [
|
[function (a, b) {
|
this.targetObject[this.propertyName] = a[b]
|
}, function (a, b) {
|
this.targetObject[this.propertyName] = a[b];
|
this.targetObject.needsUpdate = !0
|
}, function (a, b) {
|
this.targetObject[this.propertyName] = a[b];
|
this.targetObject.matrixWorldNeedsUpdate = !0
|
}],
|
[function (a, b) {
|
for (var c = this.resolvedProperty, d = 0, f = c.length; d !== f; ++d) c[d] = a[b++]
|
}, function (a, b) {
|
for (var c = this.resolvedProperty, d = 0, f = c.length; d !== f; ++d) c[d] = a[b++];
|
this.targetObject.needsUpdate = !0
|
}, function (a, b) {
|
for (var c = this.resolvedProperty, d = 0, f = c.length; d !== f; ++d) c[d] = a[b++];
|
this.targetObject.matrixWorldNeedsUpdate = !0
|
}],
|
[function (a, b) {
|
this.resolvedProperty[this.propertyIndex] = a[b]
|
}, function (a, b) {
|
this.resolvedProperty[this.propertyIndex] = a[b];
|
this.targetObject.needsUpdate = !0
|
}, function (a,
|
b) {
|
this.resolvedProperty[this.propertyIndex] = a[b];
|
this.targetObject.matrixWorldNeedsUpdate = !0
|
}],
|
[function (a, b) {
|
this.resolvedProperty.fromArray(a, b)
|
}, function (a, b) {
|
this.resolvedProperty.fromArray(a, b);
|
this.targetObject.needsUpdate = !0
|
}, function (a, b) {
|
this.resolvedProperty.fromArray(a, b);
|
this.targetObject.matrixWorldNeedsUpdate = !0
|
}]
|
],
|
getValue: function (a, b) {
|
this.bind();
|
this.getValue(a, b)
|
},
|
setValue: function (a, b) {
|
this.bind();
|
this.setValue(a, b)
|
},
|
bind: function () {
|
var a = this.node,
|
b = this.parsedPath,
|
c = b.objectName,
|
d = b.propertyName,
|
f = b.propertyIndex;
|
a || (this.node = a = ja.findNode(this.rootNode, b.nodeName) || this.rootNode);
|
this.getValue = this._getValue_unavailable;
|
this.setValue = this._setValue_unavailable;
|
if (a) {
|
if (c) {
|
var g = b.objectIndex;
|
switch (c) {
|
case "materials":
|
if (!a.material) {
|
console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.", this);
|
return
|
}
|
if (!a.material.materials) {
|
console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",
|
this);
|
return
|
}
|
a = a.material.materials;
|
break;
|
case "bones":
|
if (!a.skeleton) {
|
console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.", this);
|
return
|
}
|
a = a.skeleton.bones;
|
for (c = 0; c < a.length; c++)
|
if (a[c].name === g) {
|
g = c;
|
break
|
} break;
|
default:
|
if (void 0 === a[c]) {
|
console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.", this);
|
return
|
}
|
a = a[c]
|
}
|
if (void 0 !== g) {
|
if (void 0 === a[g]) {
|
console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",
|
this, a);
|
return
|
}
|
a = a[g]
|
}
|
}
|
g = a[d];
|
if (void 0 === g) console.error("THREE.PropertyBinding: Trying to update property for track: " + b.nodeName + "." + d + " but it wasn't found.", a);
|
else {
|
b = this.Versioning.None;
|
this.targetObject = a;
|
void 0 !== a.needsUpdate ? b = this.Versioning.NeedsUpdate : void 0 !== a.matrixWorldNeedsUpdate && (b = this.Versioning.MatrixWorldNeedsUpdate);
|
c = this.BindingType.Direct;
|
if (void 0 !== f) {
|
if ("morphTargetInfluences" === d) {
|
if (!a.geometry) {
|
console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",
|
this);
|
return
|
}
|
if (a.geometry.isBufferGeometry) {
|
if (!a.geometry.morphAttributes) {
|
console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.", this);
|
return
|
}
|
for (c = 0; c < this.node.geometry.morphAttributes.position.length; c++)
|
if (a.geometry.morphAttributes.position[c].name === f) {
|
f = c;
|
break
|
}
|
} else {
|
if (!a.geometry.morphTargets) {
|
console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.",
|
this);
|
return
|
}
|
for (c = 0; c < this.node.geometry.morphTargets.length; c++)
|
if (a.geometry.morphTargets[c].name === f) {
|
f = c;
|
break
|
}
|
}
|
}
|
c = this.BindingType.ArrayElement;
|
this.resolvedProperty = g;
|
this.propertyIndex = f
|
} else void 0 !== g.fromArray && void 0 !== g.toArray ? (c = this.BindingType.HasFromToArray, this.resolvedProperty = g) : Array.isArray(g) ? (c = this.BindingType.EntireArray, this.resolvedProperty = g) : this.propertyName = d;
|
this.getValue = this.GetterByBindingType[c];
|
this.setValue = this.SetterByBindingTypeAndVersioning[c][b]
|
}
|
} else console.error("THREE.PropertyBinding: Trying to update node for track: " +
|
this.path + " but it wasn't found.")
|
},
|
unbind: function () {
|
this.node = null;
|
this.getValue = this._getValue_unbound;
|
this.setValue = this._setValue_unbound
|
}
|
});
|
Object.assign(ja.prototype, {
|
_getValue_unbound: ja.prototype.getValue,
|
_setValue_unbound: ja.prototype.setValue
|
});
|
Object.assign(Pi.prototype, {
|
isAnimationObjectGroup: !0,
|
add: function () {
|
for (var a = this._objects, b = a.length, c = this.nCachedObjects_, d = this._indicesByUUID, f = this._paths, g = this._parsedPaths, k = this._bindings, m = k.length, l = void 0, p = 0, q = arguments.length; p !==
|
q; ++p) {
|
var t = arguments[p],
|
r = t.uuid,
|
u = d[r];
|
if (void 0 === u) {
|
u = b++;
|
d[r] = u;
|
a.push(t);
|
r = 0;
|
for (var v = m; r !== v; ++r) k[r].push(new ja(t, f[r], g[r]))
|
} else if (u < c) {
|
l = a[u];
|
var w = --c;
|
v = a[w];
|
d[v.uuid] = u;
|
a[u] = v;
|
d[r] = w;
|
a[w] = t;
|
r = 0;
|
for (v = m; r !== v; ++r) {
|
var x = k[r],
|
B = x[u];
|
x[u] = x[w];
|
void 0 === B && (B = new ja(t, f[r], g[r]));
|
x[w] = B
|
}
|
} else a[u] !== l && console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")
|
}
|
this.nCachedObjects_ =
|
c
|
},
|
remove: function () {
|
for (var a = this._objects, b = this.nCachedObjects_, c = this._indicesByUUID, d = this._bindings, f = d.length, g = 0, k = arguments.length; g !== k; ++g) {
|
var m = arguments[g],
|
l = m.uuid,
|
p = c[l];
|
if (void 0 !== p && p >= b) {
|
var q = b++,
|
t = a[q];
|
c[t.uuid] = p;
|
a[p] = t;
|
c[l] = q;
|
a[q] = m;
|
m = 0;
|
for (l = f; m !== l; ++m) {
|
t = d[m];
|
var r = t[p];
|
t[p] = t[q];
|
t[q] = r
|
}
|
}
|
}
|
this.nCachedObjects_ = b
|
},
|
uncache: function () {
|
for (var a = this._objects, b = a.length, c = this.nCachedObjects_, d = this._indicesByUUID, f = this._bindings, g = f.length, k = 0, l = arguments.length; k !== l; ++k) {
|
var n =
|
arguments[k].uuid,
|
p = d[n];
|
if (void 0 !== p)
|
if (delete d[n], p < c) {
|
n = --c;
|
var q = a[n],
|
t = --b,
|
r = a[t];
|
d[q.uuid] = p;
|
a[p] = q;
|
d[r.uuid] = n;
|
a[n] = r;
|
a.pop();
|
q = 0;
|
for (r = g; q !== r; ++q) {
|
var u = f[q],
|
v = u[t];
|
u[p] = u[n];
|
u[n] = v;
|
u.pop()
|
}
|
} else
|
for (t = --b, r = a[t], d[r.uuid] = p, a[p] = r, a.pop(), q = 0, r = g; q !== r; ++q) u = f[q], u[p] = u[t], u.pop()
|
}
|
this.nCachedObjects_ = c
|
},
|
subscribe_: function (a, b) {
|
var c = this._bindingsIndicesByPath,
|
d = c[a],
|
f = this._bindings;
|
if (void 0 !== d) return f[d];
|
var g = this._paths,
|
k = this._parsedPaths,
|
l = this._objects,
|
n = this.nCachedObjects_,
|
p = Array(l.length);
|
d = f.length;
|
c[a] = d;
|
g.push(a);
|
k.push(b);
|
f.push(p);
|
c = n;
|
for (d = l.length; c !== d; ++c) p[c] = new ja(l[c], a, b);
|
return p
|
},
|
unsubscribe_: function (a) {
|
var b = this._bindingsIndicesByPath,
|
c = b[a];
|
if (void 0 !== c) {
|
var d = this._paths,
|
f = this._parsedPaths,
|
g = this._bindings,
|
k = g.length - 1,
|
l = g[k];
|
b[a[k]] = c;
|
g[c] = l;
|
g.pop();
|
f[c] = f[k];
|
f.pop();
|
d[c] = d[k];
|
d.pop()
|
}
|
}
|
});
|
Object.assign(Qi.prototype, {
|
play: function () {
|
this._mixer._activateAction(this);
|
return this
|
},
|
stop: function () {
|
this._mixer._deactivateAction(this);
|
return this.reset()
|
},
|
reset: function () {
|
this.paused = !1;
|
this.enabled = !0;
|
this.time = 0;
|
this._loopCount = -1;
|
this._startTime = null;
|
return this.stopFading().stopWarping()
|
},
|
isRunning: function () {
|
return this.enabled && !this.paused && 0 !== this.timeScale && null === this._startTime && this._mixer._isActiveAction(this)
|
},
|
isScheduled: function () {
|
return this._mixer._isActiveAction(this)
|
},
|
startAt: function (a) {
|
this._startTime = a;
|
return this
|
},
|
setLoop: function (a, b) {
|
this.loop = a;
|
this.repetitions = b;
|
return this
|
},
|
setEffectiveWeight: function (a) {
|
this.weight = a;
|
this._effectiveWeight = this.enabled ? a : 0;
|
return this.stopFading()
|
},
|
getEffectiveWeight: function () {
|
return this._effectiveWeight
|
},
|
fadeIn: function (a) {
|
return this._scheduleFading(a, 0, 1)
|
},
|
fadeOut: function (a) {
|
return this._scheduleFading(a, 1, 0)
|
},
|
crossFadeFrom: function (a, b, c) {
|
a.fadeOut(b);
|
this.fadeIn(b);
|
if (c) {
|
c = this._clip.duration;
|
var d = a._clip.duration,
|
f = c / d;
|
a.warp(1, d / c, b);
|
this.warp(f, 1, b)
|
}
|
return this
|
},
|
crossFadeTo: function (a, b, c) {
|
return a.crossFadeFrom(this, b, c)
|
},
|
stopFading: function () {
|
var a = this._weightInterpolant;
|
null !== a && (this._weightInterpolant = null, this._mixer._takeBackControlInterpolant(a));
|
return this
|
},
|
setEffectiveTimeScale: function (a) {
|
this.timeScale = a;
|
this._effectiveTimeScale = this.paused ? 0 : a;
|
return this.stopWarping()
|
},
|
getEffectiveTimeScale: function () {
|
return this._effectiveTimeScale
|
},
|
setDuration: function (a) {
|
this.timeScale = this._clip.duration / a;
|
return this.stopWarping()
|
},
|
syncWith: function (a) {
|
this.time = a.time;
|
this.timeScale = a.timeScale;
|
return this.stopWarping()
|
},
|
halt: function (a) {
|
return this.warp(this._effectiveTimeScale,
|
0, a)
|
},
|
warp: function (a, b, c) {
|
var d = this._mixer,
|
f = d.time,
|
g = this._timeScaleInterpolant,
|
k = this.timeScale;
|
null === g && (this._timeScaleInterpolant = g = d._lendControlInterpolant());
|
d = g.parameterPositions;
|
g = g.sampleValues;
|
d[0] = f;
|
d[1] = f + c;
|
g[0] = a / k;
|
g[1] = b / k;
|
return this
|
},
|
stopWarping: function () {
|
var a = this._timeScaleInterpolant;
|
null !== a && (this._timeScaleInterpolant = null, this._mixer._takeBackControlInterpolant(a));
|
return this
|
},
|
getMixer: function () {
|
return this._mixer
|
},
|
getClip: function () {
|
return this._clip
|
},
|
getRoot: function () {
|
return this._localRoot ||
|
this._mixer._root
|
},
|
_update: function (a, b, c, d) {
|
if (this.enabled) {
|
var f = this._startTime;
|
if (null !== f) {
|
b = (a - f) * c;
|
if (0 > b || 0 === c) return;
|
this._startTime = null;
|
b *= c
|
}
|
b *= this._updateTimeScale(a);
|
c = this._updateTime(b);
|
a = this._updateWeight(a);
|
if (0 < a) {
|
b = this._interpolants;
|
f = this._propertyBindings;
|
for (var g = 0, k = b.length; g !== k; ++g) b[g].evaluate(c), f[g].accumulate(d, a)
|
}
|
} else this._updateWeight(a)
|
},
|
_updateWeight: function (a) {
|
var b = 0;
|
if (this.enabled) {
|
b = this.weight;
|
var c = this._weightInterpolant;
|
if (null !== c) {
|
var d = c.evaluate(a)[0];
|
b *= d;
|
a > c.parameterPositions[1] && (this.stopFading(), 0 === d && (this.enabled = !1))
|
}
|
}
|
return this._effectiveWeight = b
|
},
|
_updateTimeScale: function (a) {
|
var b = 0;
|
if (!this.paused) {
|
b = this.timeScale;
|
var c = this._timeScaleInterpolant;
|
if (null !== c) {
|
var d = c.evaluate(a)[0];
|
b *= d;
|
a > c.parameterPositions[1] && (this.stopWarping(), 0 === b ? this.paused = !0 : this.timeScale = b)
|
}
|
}
|
return this._effectiveTimeScale = b
|
},
|
_updateTime: function (a) {
|
var b = this.time + a,
|
c = this._clip.duration,
|
d = this.loop,
|
f = this._loopCount,
|
g = 2202 === d;
|
if (0 === a) return -1 ===
|
f ? b : g && 1 === (f & 1) ? c - b : b;
|
if (2200 === d) a: {
|
if (-1 === f && (this._loopCount = 0, this._setEndings(!0, !0, !1)), b >= c) b = c;
|
else if (0 > b) b = 0;
|
else {
|
this.time = b;
|
break a
|
}
|
this.clampWhenFinished ? this.paused = !0 : this.enabled = !1;this.time = b;this._mixer.dispatchEvent({
|
type: "finished",
|
action: this,
|
direction: 0 > a ? -1 : 1
|
})
|
}
|
else {
|
-1 === f && (0 <= a ? (f = 0, this._setEndings(!0, 0 === this.repetitions, g)) : this._setEndings(0 === this.repetitions, !0, g));
|
if (b >= c || 0 > b) {
|
d = Math.floor(b / c);
|
b -= c * d;
|
f += Math.abs(d);
|
var k = this.repetitions - f;
|
0 >= k ? (this.clampWhenFinished ?
|
this.paused = !0 : this.enabled = !1, this.time = b = 0 < a ? c : 0, this._mixer.dispatchEvent({
|
type: "finished",
|
action: this,
|
direction: 0 < a ? 1 : -1
|
})) : (1 === k ? (a = 0 > a, this._setEndings(a, !a, g)) : this._setEndings(!1, !1, g), this._loopCount = f, this.time = b, this._mixer.dispatchEvent({
|
type: "loop",
|
action: this,
|
loopDelta: d
|
}))
|
} else this.time = b;
|
if (g && 1 === (f & 1)) return c - b
|
}
|
return b
|
},
|
_setEndings: function (a, b, c) {
|
var d = this._interpolantSettings;
|
c ? (d.endingStart = 2401, d.endingEnd = 2401) : (d.endingStart = a ? this.zeroSlopeAtStart ? 2401 : 2400 : 2402, d.endingEnd =
|
b ? this.zeroSlopeAtEnd ? 2401 : 2400 : 2402)
|
},
|
_scheduleFading: function (a, b, c) {
|
var d = this._mixer,
|
f = d.time,
|
g = this._weightInterpolant;
|
null === g && (this._weightInterpolant = g = d._lendControlInterpolant());
|
d = g.parameterPositions;
|
g = g.sampleValues;
|
d[0] = f;
|
g[0] = b;
|
d[1] = f + a;
|
g[1] = c;
|
return this
|
}
|
});
|
eh.prototype = Object.assign(Object.create(Ra.prototype), {
|
constructor: eh,
|
_bindAction: function (a, b) {
|
var c = a._localRoot || this._root,
|
d = a._clip.tracks,
|
f = d.length,
|
g = a._propertyBindings;
|
a = a._interpolants;
|
var k = c.uuid,
|
l = this._bindingsByRootAndName,
|
n = l[k];
|
void 0 === n && (n = {}, l[k] = n);
|
for (l = 0; l !== f; ++l) {
|
var p = d[l],
|
q = p.name,
|
t = n[q];
|
if (void 0 === t) {
|
t = g[l];
|
if (void 0 !== t) {
|
null === t._cacheIndex && (++t.referenceCount, this._addInactiveBinding(t, k, q));
|
continue
|
}
|
t = new dh(ja.create(c, q, b && b._propertyBindings[l].binding.parsedPath), p.ValueTypeName, p.getValueSize());
|
++t.referenceCount;
|
this._addInactiveBinding(t, k, q)
|
}
|
g[l] = t;
|
a[l].resultBuffer = t.buffer
|
}
|
},
|
_activateAction: function (a) {
|
if (!this._isActiveAction(a)) {
|
if (null === a._cacheIndex) {
|
var b = (a._localRoot || this._root).uuid,
|
c = a._clip.uuid,
|
d = this._actionsByClip[c];
|
this._bindAction(a, d && d.knownActions[0]);
|
this._addInactiveAction(a, c, b)
|
}
|
b = a._propertyBindings;
|
c = 0;
|
for (d = b.length; c !== d; ++c) {
|
var f = b[c];
|
0 === f.useCount++ && (this._lendBinding(f), f.saveOriginalState())
|
}
|
this._lendAction(a)
|
}
|
},
|
_deactivateAction: function (a) {
|
if (this._isActiveAction(a)) {
|
for (var b = a._propertyBindings, c = 0, d = b.length; c !== d; ++c) {
|
var f = b[c];
|
0 === --f.useCount && (f.restoreOriginalState(), this._takeBackBinding(f))
|
}
|
this._takeBackAction(a)
|
}
|
},
|
_initMemoryManager: function () {
|
this._actions = [];
|
this._nActiveActions = 0;
|
this._actionsByClip = {};
|
this._bindings = [];
|
this._nActiveBindings = 0;
|
this._bindingsByRootAndName = {};
|
this._controlInterpolants = [];
|
this._nActiveControlInterpolants = 0;
|
var a = this;
|
this.stats = {
|
actions: {
|
get total() {
|
return a._actions.length
|
},
|
get inUse() {
|
return a._nActiveActions
|
}
|
},
|
bindings: {
|
get total() {
|
return a._bindings.length
|
},
|
get inUse() {
|
return a._nActiveBindings
|
}
|
},
|
controlInterpolants: {
|
get total() {
|
return a._controlInterpolants.length
|
},
|
get inUse() {
|
return a._nActiveControlInterpolants
|
}
|
}
|
}
|
},
|
_isActiveAction: function (a) {
|
a = a._cacheIndex;
|
return null !== a && a < this._nActiveActions
|
},
|
_addInactiveAction: function (a, b, c) {
|
var d = this._actions,
|
f = this._actionsByClip,
|
g = f[b];
|
void 0 === g ? (g = {
|
knownActions: [a],
|
actionByRoot: {}
|
}, a._byClipCacheIndex = 0, f[b] = g) : (b = g.knownActions, a._byClipCacheIndex = b.length, b.push(a));
|
a._cacheIndex = d.length;
|
d.push(a);
|
g.actionByRoot[c] = a
|
},
|
_removeInactiveAction: function (a) {
|
var b = this._actions,
|
c = b[b.length - 1],
|
d = a._cacheIndex;
|
c._cacheIndex = d;
|
b[d] = c;
|
b.pop();
|
a._cacheIndex = null;
|
b = a._clip.uuid;
|
c = this._actionsByClip;
|
d = c[b];
|
var f = d.knownActions,
|
g = f[f.length - 1],
|
k = a._byClipCacheIndex;
|
g._byClipCacheIndex = k;
|
f[k] = g;
|
f.pop();
|
a._byClipCacheIndex = null;
|
delete d.actionByRoot[(a._localRoot || this._root).uuid];
|
0 === f.length && delete c[b];
|
this._removeInactiveBindingsForAction(a)
|
},
|
_removeInactiveBindingsForAction: function (a) {
|
a = a._propertyBindings;
|
for (var b = 0, c = a.length; b !== c; ++b) {
|
var d = a[b];
|
0 === --d.referenceCount && this._removeInactiveBinding(d)
|
}
|
},
|
_lendAction: function (a) {
|
var b = this._actions,
|
c = a._cacheIndex,
|
d = this._nActiveActions++,
|
f = b[d];
|
a._cacheIndex = d;
|
b[d] = a;
|
f._cacheIndex = c;
|
b[c] = f
|
},
|
_takeBackAction: function (a) {
|
var b = this._actions,
|
c = a._cacheIndex,
|
d = --this._nActiveActions,
|
f = b[d];
|
a._cacheIndex = d;
|
b[d] = a;
|
f._cacheIndex = c;
|
b[c] = f
|
},
|
_addInactiveBinding: function (a, b, c) {
|
var d = this._bindingsByRootAndName,
|
f = d[b],
|
g = this._bindings;
|
void 0 === f && (f = {}, d[b] = f);
|
f[c] = a;
|
a._cacheIndex = g.length;
|
g.push(a)
|
},
|
_removeInactiveBinding: function (a) {
|
var b = this._bindings,
|
c = a.binding,
|
d = c.rootNode.uuid;
|
c = c.path;
|
var f = this._bindingsByRootAndName,
|
g = f[d],
|
k = b[b.length - 1];
|
a = a._cacheIndex;
|
k._cacheIndex = a;
|
b[a] = k;
|
b.pop();
|
delete g[c];
|
0 === Object.keys(g).length && delete f[d]
|
},
|
_lendBinding: function (a) {
|
var b = this._bindings,
|
c = a._cacheIndex,
|
d = this._nActiveBindings++,
|
f = b[d];
|
a._cacheIndex = d;
|
b[d] = a;
|
f._cacheIndex = c;
|
b[c] = f
|
},
|
_takeBackBinding: function (a) {
|
var b = this._bindings,
|
c = a._cacheIndex,
|
d = --this._nActiveBindings,
|
f = b[d];
|
a._cacheIndex = d;
|
b[d] = a;
|
f._cacheIndex = c;
|
b[c] = f
|
},
|
_lendControlInterpolant: function () {
|
var a = this._controlInterpolants,
|
b = this._nActiveControlInterpolants++,
|
c = a[b];
|
void 0 === c && (c = new ze(new Float32Array(2), new Float32Array(2), 1, this._controlInterpolantsResultBuffer), c.__cacheIndex = b, a[b] = c);
|
return c
|
},
|
_takeBackControlInterpolant: function (a) {
|
var b = this._controlInterpolants,
|
c = a.__cacheIndex,
|
d = --this._nActiveControlInterpolants,
|
f = b[d];
|
a.__cacheIndex = d;
|
b[d] = a;
|
f.__cacheIndex = c;
|
b[c] = f
|
},
|
_controlInterpolantsResultBuffer: new Float32Array(1),
|
clipAction: function (a, b) {
|
var c = b || this._root,
|
d = c.uuid;
|
c = "string" === typeof a ? Pa.findByName(c, a) : a;
|
a = null !== c ? c.uuid : a;
|
var f =
|
this._actionsByClip[a],
|
g = null;
|
if (void 0 !== f) {
|
g = f.actionByRoot[d];
|
if (void 0 !== g) return g;
|
g = f.knownActions[0];
|
null === c && (c = g._clip)
|
}
|
if (null === c) return null;
|
b = new Qi(this, c, b);
|
this._bindAction(b, g);
|
this._addInactiveAction(b, a, d);
|
return b
|
},
|
existingAction: function (a, b) {
|
var c = b || this._root;
|
b = c.uuid;
|
c = "string" === typeof a ? Pa.findByName(c, a) : a;
|
a = this._actionsByClip[c ? c.uuid : a];
|
return void 0 !== a ? a.actionByRoot[b] || null : null
|
},
|
stopAllAction: function () {
|
for (var a = this._actions, b = this._nActiveActions, c = this._bindings,
|
d = this._nActiveBindings, f = this._nActiveBindings = this._nActiveActions = 0; f !== b; ++f) a[f].reset();
|
for (f = 0; f !== d; ++f) c[f].useCount = 0;
|
return this
|
},
|
update: function (a) {
|
a *= this.timeScale;
|
for (var b = this._actions, c = this._nActiveActions, d = this.time += a, f = Math.sign(a), g = this._accuIndex ^= 1, k = 0; k !== c; ++k) b[k]._update(d, a, f, g);
|
a = this._bindings;
|
b = this._nActiveBindings;
|
for (k = 0; k !== b; ++k) a[k].apply(g);
|
return this
|
},
|
setTime: function (a) {
|
for (var b = this.time = 0; b < this._actions.length; b++) this._actions[b].time = 0;
|
return this.update(a)
|
},
|
getRoot: function () {
|
return this._root
|
},
|
uncacheClip: function (a) {
|
var b = this._actions;
|
a = a.uuid;
|
var c = this._actionsByClip,
|
d = c[a];
|
if (void 0 !== d) {
|
d = d.knownActions;
|
for (var f = 0, g = d.length; f !== g; ++f) {
|
var k = d[f];
|
this._deactivateAction(k);
|
var l = k._cacheIndex,
|
n = b[b.length - 1];
|
k._cacheIndex = null;
|
k._byClipCacheIndex = null;
|
n._cacheIndex = l;
|
b[l] = n;
|
b.pop();
|
this._removeInactiveBindingsForAction(k)
|
}
|
delete c[a]
|
}
|
},
|
uncacheRoot: function (a) {
|
a = a.uuid;
|
var b = this._actionsByClip;
|
for (d in b) {
|
var c = b[d].actionByRoot[a];
|
void 0 !== c &&
|
(this._deactivateAction(c), this._removeInactiveAction(c))
|
}
|
var d = this._bindingsByRootAndName[a];
|
if (void 0 !== d)
|
for (var f in d) a = d[f], a.restoreOriginalState(), this._removeInactiveBinding(a)
|
},
|
uncacheAction: function (a, b) {
|
a = this.existingAction(a, b);
|
null !== a && (this._deactivateAction(a), this._removeInactiveAction(a))
|
}
|
});
|
Hf.prototype.clone = function () {
|
return new Hf(void 0 === this.value.clone ? this.value : this.value.clone())
|
};
|
fh.prototype = Object.assign(Object.create(wb.prototype), {
|
constructor: fh,
|
isInstancedInterleavedBuffer: !0,
|
copy: function (a) {
|
wb.prototype.copy.call(this, a);
|
this.meshPerAttribute = a.meshPerAttribute;
|
return this
|
}
|
});
|
Object.assign(Ri.prototype, {
|
linePrecision: 1,
|
set: function (a, b) {
|
this.ray.set(a, b)
|
},
|
setFromCamera: function (a, b) {
|
b && b.isPerspectiveCamera ? (this.ray.origin.setFromMatrixPosition(b.matrixWorld), this.ray.direction.set(a.x, a.y, .5).unproject(b).sub(this.ray.origin).normalize(), this.camera = b) : b && b.isOrthographicCamera ? (this.ray.origin.set(a.x, a.y, (b.near + b.far) / (b.near - b.far)).unproject(b), this.ray.direction.set(0,
|
0, -1).transformDirection(b.matrixWorld), this.camera = b) : console.error("THREE.Raycaster: Unsupported camera type.")
|
},
|
intersectObject: function (a, b, c) {
|
c = c || [];
|
gh(a, this, c, b);
|
c.sort(Si);
|
return c
|
},
|
intersectObjects: function (a, b, c) {
|
c = c || [];
|
if (!1 === Array.isArray(a)) return console.warn("THREE.Raycaster.intersectObjects: objects is not an Array."), c;
|
for (var d = 0, f = a.length; d < f; d++) gh(a[d], this, c, b);
|
c.sort(Si);
|
return c
|
}
|
});
|
Object.assign(Ti.prototype, {
|
set: function (a, b, c) {
|
this.radius = a;
|
this.phi = b;
|
this.theta = c;
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.radius = a.radius;
|
this.phi = a.phi;
|
this.theta = a.theta;
|
return this
|
},
|
makeSafe: function () {
|
this.phi = Math.max(1E-6, Math.min(Math.PI - 1E-6, this.phi));
|
return this
|
},
|
setFromVector3: function (a) {
|
return this.setFromCartesianCoords(a.x, a.y, a.z)
|
},
|
setFromCartesianCoords: function (a, b, c) {
|
this.radius = Math.sqrt(a * a + b * b + c * c);
|
0 === this.radius ? this.phi = this.theta = 0 : (this.theta = Math.atan2(a, c), this.phi = Math.acos(N.clamp(b / this.radius, -1, 1)));
|
return this
|
}
|
});
|
Object.assign(Ui.prototype, {
|
set: function (a, b, c) {
|
this.radius = a;
|
this.theta = b;
|
this.y = c;
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.radius = a.radius;
|
this.theta = a.theta;
|
this.y = a.y;
|
return this
|
},
|
setFromVector3: function (a) {
|
return this.setFromCartesianCoords(a.x, a.y, a.z)
|
},
|
setFromCartesianCoords: function (a, b, c) {
|
this.radius = Math.sqrt(a * a + c * c);
|
this.theta = Math.atan2(a, c);
|
this.y = b;
|
return this
|
}
|
});
|
var Ej = new z;
|
Object.assign(hh.prototype, {
|
set: function (a, b) {
|
this.min.copy(a);
|
this.max.copy(b);
|
return this
|
},
|
setFromPoints: function (a) {
|
this.makeEmpty();
|
for (var b = 0, c = a.length; b < c; b++) this.expandByPoint(a[b]);
|
return this
|
},
|
setFromCenterAndSize: function (a, b) {
|
b = Ej.copy(b).multiplyScalar(.5);
|
this.min.copy(a).sub(b);
|
this.max.copy(a).add(b);
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.min.copy(a.min);
|
this.max.copy(a.max);
|
return this
|
},
|
makeEmpty: function () {
|
this.min.x = this.min.y = Infinity;
|
this.max.x = this.max.y = -Infinity;
|
return this
|
},
|
isEmpty: function () {
|
return this.max.x <
|
this.min.x || this.max.y < this.min.y
|
},
|
getCenter: function (a) {
|
void 0 === a && (console.warn("THREE.Box2: .getCenter() target is now required"), a = new z);
|
return this.isEmpty() ? a.set(0, 0) : a.addVectors(this.min, this.max).multiplyScalar(.5)
|
},
|
getSize: function (a) {
|
void 0 === a && (console.warn("THREE.Box2: .getSize() target is now required"), a = new z);
|
return this.isEmpty() ? a.set(0, 0) : a.subVectors(this.max, this.min)
|
},
|
expandByPoint: function (a) {
|
this.min.min(a);
|
this.max.max(a);
|
return this
|
},
|
expandByVector: function (a) {
|
this.min.sub(a);
|
this.max.add(a);
|
return this
|
},
|
expandByScalar: function (a) {
|
this.min.addScalar(-a);
|
this.max.addScalar(a);
|
return this
|
},
|
containsPoint: function (a) {
|
return a.x < this.min.x || a.x > this.max.x || a.y < this.min.y || a.y > this.max.y ? !1 : !0
|
},
|
containsBox: function (a) {
|
return this.min.x <= a.min.x && a.max.x <= this.max.x && this.min.y <= a.min.y && a.max.y <= this.max.y
|
},
|
getParameter: function (a, b) {
|
void 0 === b && (console.warn("THREE.Box2: .getParameter() target is now required"), b = new z);
|
return b.set((a.x - this.min.x) / (this.max.x - this.min.x),
|
(a.y - this.min.y) / (this.max.y - this.min.y))
|
},
|
intersectsBox: function (a) {
|
return a.max.x < this.min.x || a.min.x > this.max.x || a.max.y < this.min.y || a.min.y > this.max.y ? !1 : !0
|
},
|
clampPoint: function (a, b) {
|
void 0 === b && (console.warn("THREE.Box2: .clampPoint() target is now required"), b = new z);
|
return b.copy(a).clamp(this.min, this.max)
|
},
|
distanceToPoint: function (a) {
|
return Ej.copy(a).clamp(this.min, this.max).sub(a).length()
|
},
|
intersect: function (a) {
|
this.min.max(a.min);
|
this.max.min(a.max);
|
return this
|
},
|
union: function (a) {
|
this.min.min(a.min);
|
this.max.max(a.max);
|
return this
|
},
|
translate: function (a) {
|
this.min.add(a);
|
this.max.add(a);
|
return this
|
},
|
equals: function (a) {
|
return a.min.equals(this.min) && a.max.equals(this.max)
|
}
|
});
|
var Fj = new q,
|
hg = new q;
|
Object.assign(ih.prototype, {
|
set: function (a, b) {
|
this.start.copy(a);
|
this.end.copy(b);
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
},
|
copy: function (a) {
|
this.start.copy(a.start);
|
this.end.copy(a.end);
|
return this
|
},
|
getCenter: function (a) {
|
void 0 === a && (console.warn("THREE.Line3: .getCenter() target is now required"),
|
a = new q);
|
return a.addVectors(this.start, this.end).multiplyScalar(.5)
|
},
|
delta: function (a) {
|
void 0 === a && (console.warn("THREE.Line3: .delta() target is now required"), a = new q);
|
return a.subVectors(this.end, this.start)
|
},
|
distanceSq: function () {
|
return this.start.distanceToSquared(this.end)
|
},
|
distance: function () {
|
return this.start.distanceTo(this.end)
|
},
|
at: function (a, b) {
|
void 0 === b && (console.warn("THREE.Line3: .at() target is now required"), b = new q);
|
return this.delta(b).multiplyScalar(a).add(this.start)
|
},
|
closestPointToPointParameter: function (a,
|
b) {
|
Fj.subVectors(a, this.start);
|
hg.subVectors(this.end, this.start);
|
a = hg.dot(hg);
|
a = hg.dot(Fj) / a;
|
b && (a = N.clamp(a, 0, 1));
|
return a
|
},
|
closestPointToPoint: function (a, b, c) {
|
a = this.closestPointToPointParameter(a, b);
|
void 0 === c && (console.warn("THREE.Line3: .closestPointToPoint() target is now required"), c = new q);
|
return this.delta(c).multiplyScalar(a).add(this.start)
|
},
|
applyMatrix4: function (a) {
|
this.start.applyMatrix4(a);
|
this.end.applyMatrix4(a);
|
return this
|
},
|
equals: function (a) {
|
return a.start.equals(this.start) && a.end.equals(this.end)
|
}
|
});
|
Ee.prototype = Object.create(E.prototype);
|
Ee.prototype.constructor = Ee;
|
Ee.prototype.isImmediateRenderObject = !0;
|
var rb = new q,
|
Hb = new q,
|
Mh = new ka,
|
Zl = ["a", "b", "c"];
|
Fe.prototype = Object.create(Z.prototype);
|
Fe.prototype.constructor = Fe;
|
Fe.prototype.update = function () {
|
this.object.updateMatrixWorld(!0);
|
Mh.getNormalMatrix(this.object.matrixWorld);
|
var a = this.object.matrixWorld,
|
b = this.geometry.attributes.position,
|
c = this.object.geometry;
|
if (c && c.isGeometry)
|
for (var d = c.vertices, f = c.faces, g = c = 0, k = f.length; g < k; g++)
|
for (var l =
|
f[g], n = 0, p = l.vertexNormals.length; n < p; n++) {
|
var q = l.vertexNormals[n];
|
rb.copy(d[l[Zl[n]]]).applyMatrix4(a);
|
Hb.copy(q).applyMatrix3(Mh).normalize().multiplyScalar(this.size).add(rb);
|
b.setXYZ(c, rb.x, rb.y, rb.z);
|
c += 1;
|
b.setXYZ(c, Hb.x, Hb.y, Hb.z);
|
c += 1
|
} else if (c && c.isBufferGeometry)
|
for (d = c.attributes.position, f = c.attributes.normal, n = c = 0, p = d.count; n < p; n++) rb.set(d.getX(n), d.getY(n), d.getZ(n)).applyMatrix4(a), Hb.set(f.getX(n), f.getY(n), f.getZ(n)), Hb.applyMatrix3(Mh).normalize().multiplyScalar(this.size).add(rb),
|
b.setXYZ(c, rb.x, rb.y, rb.z), c += 1, b.setXYZ(c, Hb.x, Hb.y, Hb.z), c += 1;
|
b.needsUpdate = !0
|
};
|
var Gj = new q;
|
sd.prototype = Object.create(E.prototype);
|
sd.prototype.constructor = sd;
|
sd.prototype.dispose = function () {
|
this.cone.geometry.dispose();
|
this.cone.material.dispose()
|
};
|
sd.prototype.update = function () {
|
this.light.updateMatrixWorld();
|
var a = this.light.distance ? this.light.distance : 1E3,
|
b = a * Math.tan(this.light.angle);
|
this.cone.scale.set(b, b, a);
|
Gj.setFromMatrixPosition(this.light.target.matrixWorld);
|
this.cone.lookAt(Gj);
|
void 0 !== this.color ? this.cone.material.color.set(this.color) : this.cone.material.color.copy(this.light.color)
|
};
|
var Vb = new q,
|
ig = new I,
|
Nh = new I;
|
td.prototype = Object.create(Z.prototype);
|
td.prototype.constructor = td;
|
td.prototype.updateMatrixWorld = function (a) {
|
var b = this.bones,
|
c = this.geometry,
|
d = c.getAttribute("position");
|
Nh.getInverse(this.root.matrixWorld);
|
for (var f = 0, g = 0; f < b.length; f++) {
|
var k = b[f];
|
k.parent && k.parent.isBone && (ig.multiplyMatrices(Nh, k.matrixWorld), Vb.setFromMatrixPosition(ig), d.setXYZ(g, Vb.x,
|
Vb.y, Vb.z), ig.multiplyMatrices(Nh, k.parent.matrixWorld), Vb.setFromMatrixPosition(ig), d.setXYZ(g + 1, Vb.x, Vb.y, Vb.z), g += 2)
|
}
|
c.getAttribute("position").needsUpdate = !0;
|
E.prototype.updateMatrixWorld.call(this, a)
|
};
|
ud.prototype = Object.create(ia.prototype);
|
ud.prototype.constructor = ud;
|
ud.prototype.dispose = function () {
|
this.geometry.dispose();
|
this.material.dispose()
|
};
|
ud.prototype.update = function () {
|
void 0 !== this.color ? this.material.color.set(this.color) : this.material.color.copy(this.light.color)
|
};
|
vd.prototype = Object.create(pa.prototype);
|
vd.prototype.constructor = vd;
|
vd.prototype.update = function () {
|
this.scale.set(.5 * this.light.width, .5 * this.light.height, 1);
|
if (void 0 !== this.color) this.material.color.set(this.color), this.children[0].material.color.set(this.color);
|
else {
|
this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity);
|
var a = this.material.color,
|
b = Math.max(a.r, a.g, a.b);
|
1 < b && a.multiplyScalar(1 / b);
|
this.children[0].material.color.copy(this.material.color)
|
}
|
};
|
vd.prototype.dispose = function () {
|
this.geometry.dispose();
|
this.material.dispose();
|
this.children[0].geometry.dispose();
|
this.children[0].material.dispose()
|
};
|
var $l = new q,
|
Hj = new D,
|
Ij = new D;
|
wd.prototype = Object.create(E.prototype);
|
wd.prototype.constructor = wd;
|
wd.prototype.dispose = function () {
|
this.children[0].geometry.dispose();
|
this.children[0].material.dispose()
|
};
|
wd.prototype.update = function () {
|
var a = this.children[0];
|
if (void 0 !== this.color) this.material.color.set(this.color);
|
else {
|
var b = a.geometry.getAttribute("color");
|
Hj.copy(this.light.color);
|
Ij.copy(this.light.groundColor);
|
for (var c = 0, d = b.count; c < d; c++) {
|
var f = c < d / 2 ? Hj : Ij;
|
b.setXYZ(c, f.r, f.g, f.b)
|
}
|
b.needsUpdate = !0
|
}
|
a.lookAt($l.setFromMatrixPosition(this.light.matrixWorld).negate())
|
};
|
xd.prototype = Object.create(ia.prototype);
|
xd.prototype.constructor = xd;
|
xd.prototype.dispose = function () {
|
this.geometry.dispose();
|
this.material.dispose()
|
};
|
xd.prototype.onBeforeRender = function () {
|
this.position.copy(this.lightProbe.position);
|
this.scale.set(1, 1, 1).multiplyScalar(this.size);
|
this.material.uniforms.intensity.value = this.lightProbe.intensity
|
};
|
If.prototype = Object.assign(Object.create(Z.prototype), {
|
constructor: If,
|
copy: function (a) {
|
Z.prototype.copy.call(this, a);
|
this.geometry.copy(a.geometry);
|
this.material.copy(a.material);
|
return this
|
},
|
clone: function () {
|
return (new this.constructor).copy(this)
|
}
|
});
|
Jf.prototype = Object.create(Z.prototype);
|
Jf.prototype.constructor = Jf;
|
yd.prototype = Object.create(pa.prototype);
|
yd.prototype.constructor = yd;
|
yd.prototype.update = function () {
|
function a(a, b, d, f) {
|
d = (b - a) / d;
|
u.setXYZ(n, 0, 0, 0);
|
p++;
|
for (q = a; q < b; q += d) t = n + p, u.setXYZ(t,
|
Math.sin(q) * c, 0, Math.cos(q) * c), u.setXYZ(t + 1, Math.sin(Math.min(q + d, b)) * c, 0, Math.cos(Math.min(q + d, b)) * c), u.setXYZ(t + 2, 0, 0, 0), p += 3;
|
r.addGroup(n, p, f);
|
n += p;
|
p = 0
|
}
|
var b = this.audio,
|
c = this.range,
|
d = this.divisionsInnerAngle,
|
f = this.divisionsOuterAngle,
|
g = N.degToRad(b.panner.coneInnerAngle);
|
b = N.degToRad(b.panner.coneOuterAngle);
|
var k = g / 2,
|
l = b / 2,
|
n = 0,
|
p = 0,
|
q, t, r = this.geometry,
|
u = r.attributes.position;
|
r.clearGroups();
|
a(-l, -k, f, 0);
|
a(-k, k, d, 1);
|
a(k, l, f, 0);
|
u.needsUpdate = !0;
|
g === b && (this.material[0].visible = !1)
|
};
|
yd.prototype.dispose =
|
function () {
|
this.geometry.dispose();
|
this.material[0].dispose();
|
this.material[1].dispose()
|
};
|
var Ue = new q,
|
jg = new q,
|
Jj = new ka;
|
Ge.prototype = Object.create(Z.prototype);
|
Ge.prototype.constructor = Ge;
|
Ge.prototype.update = function () {
|
this.object.updateMatrixWorld(!0);
|
Jj.getNormalMatrix(this.object.matrixWorld);
|
var a = this.object.matrixWorld,
|
b = this.geometry.attributes.position,
|
c = this.object.geometry,
|
d = c.vertices;
|
c = c.faces;
|
for (var f = 0, g = 0, k = c.length; g < k; g++) {
|
var l = c[g],
|
n = l.normal;
|
Ue.copy(d[l.a]).add(d[l.b]).add(d[l.c]).divideScalar(3).applyMatrix4(a);
|
jg.copy(n).applyMatrix3(Jj).normalize().multiplyScalar(this.size).add(Ue);
|
b.setXYZ(f, Ue.x, Ue.y, Ue.z);
|
f += 1;
|
b.setXYZ(f, jg.x, jg.y, jg.z);
|
f += 1
|
}
|
b.needsUpdate = !0
|
};
|
var Kj = new q,
|
kg = new q,
|
Lj = new q;
|
zd.prototype = Object.create(E.prototype);
|
zd.prototype.constructor = zd;
|
zd.prototype.dispose = function () {
|
this.lightPlane.geometry.dispose();
|
this.lightPlane.material.dispose();
|
this.targetLine.geometry.dispose();
|
this.targetLine.material.dispose()
|
};
|
zd.prototype.update = function () {
|
Kj.setFromMatrixPosition(this.light.matrixWorld);
|
kg.setFromMatrixPosition(this.light.target.matrixWorld);
|
Lj.subVectors(kg, Kj);
|
this.lightPlane.lookAt(kg);
|
void 0 !== this.color ? (this.lightPlane.material.color.set(this.color), this.targetLine.material.color.set(this.color)) : (this.lightPlane.material.color.copy(this.light.color), this.targetLine.material.color.copy(this.light.color));
|
this.targetLine.lookAt(kg);
|
this.targetLine.scale.z = Lj.length()
|
};
|
var Kf = new q,
|
U = new hb;
|
He.prototype = Object.create(Z.prototype);
|
He.prototype.constructor = He;
|
He.prototype.update =
|
function () {
|
var a = this.geometry,
|
b = this.pointMap;
|
U.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse);
|
qa("c", b, a, U, 0, 0, -1);
|
qa("t", b, a, U, 0, 0, 1);
|
qa("n1", b, a, U, -1, -1, -1);
|
qa("n2", b, a, U, 1, -1, -1);
|
qa("n3", b, a, U, -1, 1, -1);
|
qa("n4", b, a, U, 1, 1, -1);
|
qa("f1", b, a, U, -1, -1, 1);
|
qa("f2", b, a, U, 1, -1, 1);
|
qa("f3", b, a, U, -1, 1, 1);
|
qa("f4", b, a, U, 1, 1, 1);
|
qa("u1", b, a, U, .7, 1.1, -1);
|
qa("u2", b, a, U, -.7, 1.1, -1);
|
qa("u3", b, a, U, 0, 2, -1);
|
qa("cf1", b, a, U, -1, 0, 1);
|
qa("cf2", b, a, U, 1, 0, 1);
|
qa("cf3", b, a, U, 0, -1, 1);
|
qa("cf4", b, a, U, 0, 1, 1);
|
qa("cn1",
|
b, a, U, -1, 0, -1);
|
qa("cn2", b, a, U, 1, 0, -1);
|
qa("cn3", b, a, U, 0, -1, -1);
|
qa("cn4", b, a, U, 0, 1, -1);
|
a.getAttribute("position").needsUpdate = !0
|
};
|
var lg = new gb;
|
Ab.prototype = Object.create(Z.prototype);
|
Ab.prototype.constructor = Ab;
|
Ab.prototype.update = function (a) {
|
void 0 !== a && console.warn("THREE.BoxHelper: .update() has no longer arguments.");
|
void 0 !== this.object && lg.setFromObject(this.object);
|
if (!lg.isEmpty()) {
|
a = lg.min;
|
var b = lg.max,
|
c = this.geometry.attributes.position,
|
d = c.array;
|
d[0] = b.x;
|
d[1] = b.y;
|
d[2] = b.z;
|
d[3] = a.x;
|
d[4] =
|
b.y;
|
d[5] = b.z;
|
d[6] = a.x;
|
d[7] = a.y;
|
d[8] = b.z;
|
d[9] = b.x;
|
d[10] = a.y;
|
d[11] = b.z;
|
d[12] = b.x;
|
d[13] = b.y;
|
d[14] = a.z;
|
d[15] = a.x;
|
d[16] = b.y;
|
d[17] = a.z;
|
d[18] = a.x;
|
d[19] = a.y;
|
d[20] = a.z;
|
d[21] = b.x;
|
d[22] = a.y;
|
d[23] = a.z;
|
c.needsUpdate = !0;
|
this.geometry.computeBoundingSphere()
|
}
|
};
|
Ab.prototype.setFromObject = function (a) {
|
this.object = a;
|
this.update();
|
return this
|
};
|
Ab.prototype.copy = function (a) {
|
Z.prototype.copy.call(this, a);
|
this.object = a.object;
|
return this
|
};
|
Ab.prototype.clone = function () {
|
return (new this.constructor).copy(this)
|
};
|
Ie.prototype =
|
Object.create(Z.prototype);
|
Ie.prototype.constructor = Ie;
|
Ie.prototype.updateMatrixWorld = function (a) {
|
var b = this.box;
|
b.isEmpty() || (b.getCenter(this.position), b.getSize(this.scale), this.scale.multiplyScalar(.5), E.prototype.updateMatrixWorld.call(this, a))
|
};
|
Je.prototype = Object.create(pa.prototype);
|
Je.prototype.constructor = Je;
|
Je.prototype.updateMatrixWorld = function (a) {
|
var b = -this.plane.constant;
|
1E-8 > Math.abs(b) && (b = 1E-8);
|
this.scale.set(.5 * this.size, .5 * this.size, b);
|
this.children[0].material.side = 0 > b ? 1 : 0;
|
this.lookAt(this.plane.normal);
|
E.prototype.updateMatrixWorld.call(this, a)
|
};
|
var Mj = new q,
|
Lf, jh;
|
Bb.prototype = Object.create(E.prototype);
|
Bb.prototype.constructor = Bb;
|
Bb.prototype.setDirection = function (a) {
|
.99999 < a.y ? this.quaternion.set(0, 0, 0, 1) : -.99999 > a.y ? this.quaternion.set(1, 0, 0, 0) : (Mj.set(a.z, 0, -a.x).normalize(), this.quaternion.setFromAxisAngle(Mj, Math.acos(a.y)))
|
};
|
Bb.prototype.setLength = function (a, b, c) {
|
void 0 === b && (b = .2 * a);
|
void 0 === c && (c = .2 * b);
|
this.line.scale.set(1, Math.max(1E-4, a - b), 1);
|
this.line.updateMatrix();
|
this.cone.scale.set(c,
|
b, c);
|
this.cone.position.y = a;
|
this.cone.updateMatrix()
|
};
|
Bb.prototype.setColor = function (a) {
|
this.line.material.color.set(a);
|
this.cone.material.color.set(a)
|
};
|
Bb.prototype.copy = function (a) {
|
E.prototype.copy.call(this, a, !1);
|
this.line.copy(a.line);
|
this.cone.copy(a.cone);
|
return this
|
};
|
Bb.prototype.clone = function () {
|
return (new this.constructor).copy(this)
|
};
|
Ke.prototype = Object.create(Z.prototype);
|
Ke.prototype.constructor = Ke;
|
M.create = function (a, b) {
|
console.log("THREE.Curve.create() has been deprecated");
|
a.prototype =
|
Object.create(M.prototype);
|
a.prototype.constructor = a;
|
a.prototype.getPoint = b;
|
return a
|
};
|
Object.assign(zb.prototype, {
|
createPointsGeometry: function (a) {
|
console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");
|
a = this.getPoints(a);
|
return this.createGeometry(a)
|
},
|
createSpacedPointsGeometry: function (a) {
|
console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");
|
a = this.getSpacedPoints(a);
|
return this.createGeometry(a)
|
},
|
createGeometry: function (a) {
|
console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");
|
for (var b = new P, c = 0, d = a.length; c < d; c++) {
|
var f = a[c];
|
b.vertices.push(new q(f.x, f.y, f.z || 0))
|
}
|
return b
|
}
|
});
|
Object.assign(ab.prototype, {
|
fromPoints: function (a) {
|
console.warn("THREE.Path: .fromPoints() has been renamed to .setFromPoints().");
|
return this.setFromPoints(a)
|
}
|
});
|
Wi.prototype = Object.create(la.prototype);
|
Xi.prototype = Object.create(la.prototype);
|
kh.prototype = Object.create(la.prototype);
|
Object.assign(kh.prototype, {
|
initFromArray: function () {
|
console.error("THREE.Spline: .initFromArray() has been removed.")
|
},
|
getControlPointsArray: function () {
|
console.error("THREE.Spline: .getControlPointsArray() has been removed.")
|
},
|
reparametrizeByArcLength: function () {
|
console.error("THREE.Spline: .reparametrizeByArcLength() has been removed.")
|
}
|
});
|
If.prototype.setColors = function () {
|
console.error("THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.")
|
};
|
td.prototype.update = function () {
|
console.error("THREE.SkeletonHelper: update() no longer needs to be called.")
|
};
|
Object.assign(X.prototype, {
|
extractUrlBase: function (a) {
|
console.warn("THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.");
|
return Kh.extractUrlBase(a)
|
}
|
});
|
X.Handlers = {
|
add: function () {
|
console.error("THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.")
|
},
|
get: function () {
|
console.error("THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.")
|
}
|
};
|
Object.assign(Ef.prototype, {
|
setTexturePath: function (a) {
|
console.warn("THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().");
|
return this.setResourcePath(a)
|
}
|
});
|
Object.assign(hh.prototype, {
|
center: function (a) {
|
console.warn("THREE.Box2: .center() has been renamed to .getCenter().");
|
return this.getCenter(a)
|
},
|
empty: function () {
|
console.warn("THREE.Box2: .empty() has been renamed to .isEmpty().");
|
return this.isEmpty()
|
},
|
isIntersectionBox: function (a) {
|
console.warn("THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().");
|
return this.intersectsBox(a)
|
},
|
size: function (a) {
|
console.warn("THREE.Box2: .size() has been renamed to .getSize().");
|
return this.getSize(a)
|
}
|
});
|
Object.assign(gb.prototype, {
|
center: function (a) {
|
console.warn("THREE.Box3: .center() has been renamed to .getCenter().");
|
return this.getCenter(a)
|
},
|
empty: function () {
|
console.warn("THREE.Box3: .empty() has been renamed to .isEmpty().");
|
return this.isEmpty()
|
},
|
isIntersectionBox: function (a) {
|
console.warn("THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().");
|
return this.intersectsBox(a)
|
},
|
isIntersectionSphere: function (a) {
|
console.warn("THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().");
|
return this.intersectsSphere(a)
|
},
|
size: function (a) {
|
console.warn("THREE.Box3: .size() has been renamed to .getSize().");
|
return this.getSize(a)
|
}
|
});
|
ih.prototype.center = function (a) {
|
console.warn("THREE.Line3: .center() has been renamed to .getCenter().");
|
return this.getCenter(a)
|
};
|
Object.assign(N, {
|
random16: function () {
|
console.warn("THREE.Math: .random16() has been deprecated. Use Math.random() instead.");
|
return Math.random()
|
},
|
nearestPowerOfTwo: function (a) {
|
console.warn("THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().");
|
return N.floorPowerOfTwo(a)
|
},
|
nextPowerOfTwo: function (a) {
|
console.warn("THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().");
|
return N.ceilPowerOfTwo(a)
|
}
|
});
|
Object.assign(ka.prototype, {
|
flattenToArrayOffset: function (a, b) {
|
console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.");
|
return this.toArray(a, b)
|
},
|
multiplyVector3: function (a) {
|
console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.");
|
return a.applyMatrix3(this)
|
},
|
multiplyVector3Array: function () {
|
console.error("THREE.Matrix3: .multiplyVector3Array() has been removed.")
|
},
|
applyToBuffer: function (a) {
|
console.warn("THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.");
|
return this.applyToBufferAttribute(a)
|
},
|
applyToVector3Array: function () {
|
console.error("THREE.Matrix3: .applyToVector3Array() has been removed.")
|
}
|
});
|
Object.assign(I.prototype, {
|
extractPosition: function (a) {
|
console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().");
|
return this.copyPosition(a)
|
},
|
flattenToArrayOffset: function (a, b) {
|
console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.");
|
return this.toArray(a, b)
|
},
|
getPosition: function () {
|
console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.");
|
return (new q).setFromMatrixColumn(this,
|
3)
|
},
|
setRotationFromQuaternion: function (a) {
|
console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().");
|
return this.makeRotationFromQuaternion(a)
|
},
|
multiplyToArray: function () {
|
console.warn("THREE.Matrix4: .multiplyToArray() has been removed.")
|
},
|
multiplyVector3: function (a) {
|
console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.");
|
return a.applyMatrix4(this)
|
},
|
multiplyVector4: function (a) {
|
console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.");
|
return a.applyMatrix4(this)
|
},
|
multiplyVector3Array: function () {
|
console.error("THREE.Matrix4: .multiplyVector3Array() has been removed.")
|
},
|
rotateAxis: function (a) {
|
console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.");
|
a.transformDirection(this)
|
},
|
crossVector: function (a) {
|
console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.");
|
return a.applyMatrix4(this)
|
},
|
translate: function () {
|
console.error("THREE.Matrix4: .translate() has been removed.")
|
},
|
rotateX: function () {
|
console.error("THREE.Matrix4: .rotateX() has been removed.")
|
},
|
rotateY: function () {
|
console.error("THREE.Matrix4: .rotateY() has been removed.")
|
},
|
rotateZ: function () {
|
console.error("THREE.Matrix4: .rotateZ() has been removed.")
|
},
|
rotateByAxis: function () {
|
console.error("THREE.Matrix4: .rotateByAxis() has been removed.")
|
},
|
applyToBuffer: function (a) {
|
console.warn("THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.");
|
return this.applyToBufferAttribute(a)
|
},
|
applyToVector3Array: function () {
|
console.error("THREE.Matrix4: .applyToVector3Array() has been removed.")
|
},
|
makeFrustum: function (a, b, c, d, f, g) {
|
console.warn("THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.");
|
return this.makePerspective(a, b, d, c, f, g)
|
}
|
});
|
Sa.prototype.isIntersectionLine = function (a) {
|
console.warn("THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().");
|
return this.intersectsLine(a)
|
};
|
ya.prototype.multiplyVector3 =
|
function (a) {
|
console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.");
|
return a.applyQuaternion(this)
|
};
|
Object.assign(ac.prototype, {
|
isIntersectionBox: function (a) {
|
console.warn("THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().");
|
return this.intersectsBox(a)
|
},
|
isIntersectionPlane: function (a) {
|
console.warn("THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().");
|
return this.intersectsPlane(a)
|
},
|
isIntersectionSphere: function (a) {
|
console.warn("THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().");
|
return this.intersectsSphere(a)
|
}
|
});
|
Object.assign(va.prototype, {
|
area: function () {
|
console.warn("THREE.Triangle: .area() has been renamed to .getArea().");
|
return this.getArea()
|
},
|
barycoordFromPoint: function (a, b) {
|
console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().");
|
return this.getBarycoord(a, b)
|
},
|
midpoint: function (a) {
|
console.warn("THREE.Triangle: .midpoint() has been renamed to .getMidpoint().");
|
return this.getMidpoint(a)
|
},
|
normal: function (a) {
|
console.warn("THREE.Triangle: .normal() has been renamed to .getNormal().");
|
return this.getNormal(a)
|
},
|
plane: function (a) {
|
console.warn("THREE.Triangle: .plane() has been renamed to .getPlane().");
|
return this.getPlane(a)
|
}
|
});
|
Object.assign(va, {
|
barycoordFromPoint: function (a, b, c, d, f) {
|
console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().");
|
return va.getBarycoord(a, b, c, d, f)
|
},
|
normal: function (a, b, c, d) {
|
console.warn("THREE.Triangle: .normal() has been renamed to .getNormal().");
|
return va.getNormal(a, b, c, d)
|
}
|
});
|
Object.assign(Pb.prototype, {
|
extractAllPoints: function (a) {
|
console.warn("THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.");
|
return this.extractPoints(a)
|
},
|
extrude: function (a) {
|
console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.");
|
return new oc(this, a)
|
},
|
makeGeometry: function (a) {
|
console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.");
|
return new pc(this, a)
|
}
|
});
|
Object.assign(z.prototype, {
|
fromAttribute: function (a, b, c) {
|
console.warn("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().");
|
return this.fromBufferAttribute(a, b, c)
|
},
|
distanceToManhattan: function (a) {
|
console.warn("THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().");
|
return this.manhattanDistanceTo(a)
|
},
|
lengthManhattan: function () {
|
console.warn("THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().");
|
return this.manhattanLength()
|
}
|
});
|
Object.assign(q.prototype, {
|
setEulerFromRotationMatrix: function () {
|
console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")
|
},
|
setEulerFromQuaternion: function () {
|
console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")
|
},
|
getPositionFromMatrix: function (a) {
|
console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().");
|
return this.setFromMatrixPosition(a)
|
},
|
getScaleFromMatrix: function (a) {
|
console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().");
|
return this.setFromMatrixScale(a)
|
},
|
getColumnFromMatrix: function (a, b) {
|
console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().");
|
return this.setFromMatrixColumn(b,
|
a)
|
},
|
applyProjection: function (a) {
|
console.warn("THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.");
|
return this.applyMatrix4(a)
|
},
|
fromAttribute: function (a, b, c) {
|
console.warn("THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().");
|
return this.fromBufferAttribute(a, b, c)
|
},
|
distanceToManhattan: function (a) {
|
console.warn("THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().");
|
return this.manhattanDistanceTo(a)
|
},
|
lengthManhattan: function () {
|
console.warn("THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().");
|
return this.manhattanLength()
|
}
|
});
|
Object.assign(ca.prototype, {
|
fromAttribute: function (a, b, c) {
|
console.warn("THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().");
|
return this.fromBufferAttribute(a, b, c)
|
},
|
lengthManhattan: function () {
|
console.warn("THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().");
|
return this.manhattanLength()
|
}
|
});
|
Object.assign(P.prototype, {
|
computeTangents: function () {
|
console.error("THREE.Geometry: .computeTangents() has been removed.")
|
},
|
computeLineDistances: function () {
|
console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")
|
}
|
});
|
Object.assign(E.prototype, {
|
getChildByName: function (a) {
|
console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().");
|
return this.getObjectByName(a)
|
},
|
renderDepth: function () {
|
console.warn("THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.")
|
},
|
translate: function (a, b) {
|
console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.");
|
return this.translateOnAxis(b, a)
|
},
|
getWorldRotation: function () {
|
console.error("THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.")
|
}
|
});
|
Object.defineProperties(E.prototype, {
|
eulerOrder: {
|
get: function () {
|
console.warn("THREE.Object3D: .eulerOrder is now .rotation.order.");
|
return this.rotation.order
|
},
|
set: function (a) {
|
console.warn("THREE.Object3D: .eulerOrder is now .rotation.order.");
|
this.rotation.order = a
|
}
|
},
|
useQuaternion: {
|
get: function () {
|
console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")
|
},
|
set: function () {
|
console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")
|
}
|
}
|
});
|
Object.defineProperties(be.prototype, {
|
objects: {
|
get: function () {
|
console.warn("THREE.LOD: .objects has been renamed to .levels.");
|
return this.levels
|
}
|
}
|
});
|
Object.defineProperty(ff.prototype, "useVertexTexture", {
|
get: function () {
|
console.warn("THREE.Skeleton: useVertexTexture has been removed.")
|
},
|
set: function () {
|
console.warn("THREE.Skeleton: useVertexTexture has been removed.")
|
}
|
});
|
ce.prototype.initBones = function () {
|
console.error("THREE.SkinnedMesh: initBones() has been removed.")
|
};
|
Object.defineProperty(M.prototype,
|
"__arcLengthDivisions", {
|
get: function () {
|
console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.");
|
return this.arcLengthDivisions
|
},
|
set: function (a) {
|
console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.");
|
this.arcLengthDivisions = a
|
}
|
});
|
na.prototype.setLens = function (a, b) {
|
console.warn("THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup.");
|
void 0 !== b && (this.filmGauge = b);
|
this.setFocalLength(a)
|
};
|
Object.defineProperties(da.prototype, {
|
onlyShadow: {
|
set: function () {
|
console.warn("THREE.Light: .onlyShadow has been removed.")
|
}
|
},
|
shadowCameraFov: {
|
set: function (a) {
|
console.warn("THREE.Light: .shadowCameraFov is now .shadow.camera.fov.");
|
this.shadow.camera.fov = a
|
}
|
},
|
shadowCameraLeft: {
|
set: function (a) {
|
console.warn("THREE.Light: .shadowCameraLeft is now .shadow.camera.left.");
|
this.shadow.camera.left = a
|
}
|
},
|
shadowCameraRight: {
|
set: function (a) {
|
console.warn("THREE.Light: .shadowCameraRight is now .shadow.camera.right.");
|
this.shadow.camera.right = a
|
}
|
},
|
shadowCameraTop: {
|
set: function (a) {
|
console.warn("THREE.Light: .shadowCameraTop is now .shadow.camera.top.");
|
this.shadow.camera.top = a
|
}
|
},
|
shadowCameraBottom: {
|
set: function (a) {
|
console.warn("THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.");
|
this.shadow.camera.bottom = a
|
}
|
},
|
shadowCameraNear: {
|
set: function (a) {
|
console.warn("THREE.Light: .shadowCameraNear is now .shadow.camera.near.");
|
this.shadow.camera.near = a
|
}
|
},
|
shadowCameraFar: {
|
set: function (a) {
|
console.warn("THREE.Light: .shadowCameraFar is now .shadow.camera.far.");
|
this.shadow.camera.far = a
|
}
|
},
|
shadowCameraVisible: {
|
set: function () {
|
console.warn("THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.")
|
}
|
},
|
shadowBias: {
|
set: function (a) {
|
console.warn("THREE.Light: .shadowBias is now .shadow.bias.");
|
this.shadow.bias = a
|
}
|
},
|
shadowDarkness: {
|
set: function () {
|
console.warn("THREE.Light: .shadowDarkness has been removed.")
|
}
|
},
|
shadowMapWidth: {
|
set: function (a) {
|
console.warn("THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.");
|
this.shadow.mapSize.width = a
|
}
|
},
|
shadowMapHeight: {
|
set: function (a) {
|
console.warn("THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.");
|
this.shadow.mapSize.height = a
|
}
|
}
|
});
|
Object.defineProperties(O.prototype, {
|
length: {
|
get: function () {
|
console.warn("THREE.BufferAttribute: .length has been deprecated. Use .count instead.");
|
return this.array.length
|
}
|
},
|
dynamic: {
|
get: function () {
|
console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.");
|
return 35048 === this.usage
|
},
|
set: function () {
|
console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.");
|
this.setUsage(35048)
|
}
|
}
|
});
|
Object.assign(O.prototype, {
|
setDynamic: function (a) {
|
console.warn("THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.");
|
this.setUsage(!0 === a ? 35048 : 35044);
|
return this
|
},
|
copyIndicesArray: function () {
|
console.error("THREE.BufferAttribute: .copyIndicesArray() has been removed.")
|
},
|
setArray: function () {
|
console.error("THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")
|
}
|
});
|
Object.assign(G.prototype, {
|
addIndex: function (a) {
|
console.warn("THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().");
|
this.setIndex(a)
|
},
|
addAttribute: function (a, b, c) {
|
console.warn("THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().");
|
return b && b.isBufferAttribute || b && b.isInterleavedBufferAttribute ? "index" === a ? (console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."), this.setIndex(b), this) : this.setAttribute(a, b) : (console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."), this.setAttribute(a, new O(b, c)))
|
},
|
addDrawCall: function (a, b, c) {
|
void 0 !== c && console.warn("THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.");
|
console.warn("THREE.BufferGeometry: .addDrawCall() is now .addGroup().");
|
this.addGroup(a, b)
|
},
|
clearDrawCalls: function () {
|
console.warn("THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().");
|
this.clearGroups()
|
},
|
computeTangents: function () {
|
console.warn("THREE.BufferGeometry: .computeTangents() has been removed.")
|
},
|
computeOffsets: function () {
|
console.warn("THREE.BufferGeometry: .computeOffsets() has been removed.")
|
},
|
removeAttribute: function (a) {
|
console.warn("THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().");
|
return this.deleteAttribute(a)
|
}
|
});
|
Object.defineProperties(G.prototype, {
|
drawcalls: {
|
get: function () {
|
console.error("THREE.BufferGeometry: .drawcalls has been renamed to .groups.");
|
return this.groups
|
}
|
},
|
offsets: {
|
get: function () {
|
console.warn("THREE.BufferGeometry: .offsets has been renamed to .groups.");
|
return this.groups
|
}
|
}
|
});
|
Object.defineProperties(wb.prototype, {
|
dynamic: {
|
get: function () {
|
console.warn("THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.");
|
return 35048 === this.usage
|
},
|
set: function (a) {
|
console.warn("THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.");
|
this.setUsage(a)
|
}
|
}
|
});
|
Object.assign(wb.prototype, {
|
setDynamic: function (a) {
|
console.warn("THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.");
|
this.setUsage(!0 === a ? 35048 : 35044);
|
return this
|
},
|
setArray: function () {
|
console.error("THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")
|
}
|
});
|
Object.assign(jb.prototype, {
|
getArrays: function () {
|
console.error("THREE.ExtrudeBufferGeometry: .getArrays() has been removed.")
|
},
|
addShapeList: function () {
|
console.error("THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.")
|
},
|
addShape: function () {
|
console.error("THREE.ExtrudeBufferGeometry: .addShape() has been removed.")
|
}
|
});
|
Object.defineProperties(Hf.prototype, {
|
dynamic: {
|
set: function () {
|
console.warn("THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.")
|
}
|
},
|
onUpdate: {
|
value: function () {
|
console.warn("THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.");
|
return this
|
}
|
}
|
});
|
Object.defineProperties(R.prototype, {
|
wrapAround: {
|
get: function () {
|
console.warn("THREE.Material: .wrapAround has been removed.")
|
},
|
set: function () {
|
console.warn("THREE.Material: .wrapAround has been removed.")
|
}
|
},
|
overdraw: {
|
get: function () {
|
console.warn("THREE.Material: .overdraw has been removed.")
|
},
|
set: function () {
|
console.warn("THREE.Material: .overdraw has been removed.")
|
}
|
},
|
wrapRGB: {
|
get: function () {
|
console.warn("THREE.Material: .wrapRGB has been removed.");
|
return new D
|
}
|
},
|
shading: {
|
get: function () {
|
console.error("THREE." +
|
this.type + ": .shading has been removed. Use the boolean .flatShading instead.")
|
},
|
set: function (a) {
|
console.warn("THREE." + this.type + ": .shading has been removed. Use the boolean .flatShading instead.");
|
this.flatShading = 1 === a
|
}
|
},
|
stencilMask: {
|
get: function () {
|
console.warn("THREE." + this.type + ": .stencilMask has been removed. Use .stencilFuncMask instead.");
|
return this.stencilFuncMask
|
},
|
set: function (a) {
|
console.warn("THREE." + this.type + ": .stencilMask has been removed. Use .stencilFuncMask instead.");
|
this.stencilFuncMask =
|
a
|
}
|
}
|
});
|
Object.defineProperties(Wa.prototype, {
|
metal: {
|
get: function () {
|
console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.");
|
return !1
|
},
|
set: function () {
|
console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead")
|
}
|
}
|
});
|
Object.defineProperties(Aa.prototype, {
|
derivatives: {
|
get: function () {
|
console.warn("THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.");
|
return this.extensions.derivatives
|
},
|
set: function (a) {
|
console.warn("THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.");
|
this.extensions.derivatives = a
|
}
|
}
|
});
|
Object.assign(Hg.prototype, {
|
clearTarget: function (a, b, c, d) {
|
console.warn("THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.");
|
this.setRenderTarget(a);
|
this.clear(b, c, d)
|
},
|
animate: function (a) {
|
console.warn("THREE.WebGLRenderer: .animate() is now .setAnimationLoop().");
|
this.setAnimationLoop(a)
|
},
|
getCurrentRenderTarget: function () {
|
console.warn("THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().");
|
return this.getRenderTarget()
|
},
|
getMaxAnisotropy: function () {
|
console.warn("THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().");
|
return this.capabilities.getMaxAnisotropy()
|
},
|
getPrecision: function () {
|
console.warn("THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.");
|
return this.capabilities.precision
|
},
|
resetGLState: function () {
|
console.warn("THREE.WebGLRenderer: .resetGLState() is now .state.reset().");
|
return this.state.reset()
|
},
|
supportsFloatTextures: function () {
|
console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' ).");
|
return this.extensions.get("OES_texture_float")
|
},
|
supportsHalfFloatTextures: function () {
|
console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' ).");
|
return this.extensions.get("OES_texture_half_float")
|
},
|
supportsStandardDerivatives: function () {
|
console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' ).");
|
return this.extensions.get("OES_standard_derivatives")
|
},
|
supportsCompressedTextureS3TC: function () {
|
console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' ).");
|
return this.extensions.get("WEBGL_compressed_texture_s3tc")
|
},
|
supportsCompressedTexturePVRTC: function () {
|
console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' ).");
|
return this.extensions.get("WEBGL_compressed_texture_pvrtc")
|
},
|
supportsBlendMinMax: function () {
|
console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' ).");
|
return this.extensions.get("EXT_blend_minmax")
|
},
|
supportsVertexTextures: function () {
|
console.warn("THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.");
|
return this.capabilities.vertexTextures
|
},
|
supportsInstancedArrays: function () {
|
console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' ).");
|
return this.extensions.get("ANGLE_instanced_arrays")
|
},
|
enableScissorTest: function (a) {
|
console.warn("THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().");
|
this.setScissorTest(a)
|
},
|
initMaterial: function () {
|
console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")
|
},
|
addPrePlugin: function () {
|
console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")
|
},
|
addPostPlugin: function () {
|
console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")
|
},
|
updateShadowMap: function () {
|
console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")
|
},
|
setFaceCulling: function () {
|
console.warn("THREE.WebGLRenderer: .setFaceCulling() has been removed.")
|
},
|
allocTextureUnit: function () {
|
console.warn("THREE.WebGLRenderer: .allocTextureUnit() has been removed.")
|
},
|
setTexture: function () {
|
console.warn("THREE.WebGLRenderer: .setTexture() has been removed.")
|
},
|
setTexture2D: function () {
|
console.warn("THREE.WebGLRenderer: .setTexture2D() has been removed.")
|
},
|
setTextureCube: function () {
|
console.warn("THREE.WebGLRenderer: .setTextureCube() has been removed.")
|
},
|
getActiveMipMapLevel: function () {
|
console.warn("THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().");
|
return this.getActiveMipmapLevel()
|
}
|
});
|
Object.defineProperties(Hg.prototype, {
|
shadowMapEnabled: {
|
get: function () {
|
return this.shadowMap.enabled
|
},
|
set: function (a) {
|
console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");
|
this.shadowMap.enabled = a
|
}
|
},
|
shadowMapType: {
|
get: function () {
|
return this.shadowMap.type
|
},
|
set: function (a) {
|
console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");
|
this.shadowMap.type = a
|
}
|
},
|
shadowMapCullFace: {
|
get: function () {
|
console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")
|
},
|
set: function () {
|
console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")
|
}
|
},
|
context: {
|
get: function () {
|
console.warn("THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.");
|
return this.getContext()
|
}
|
}
|
});
|
Object.defineProperties(ui.prototype, {
|
cullFace: {
|
get: function () {
|
console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")
|
},
|
set: function () {
|
console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")
|
}
|
},
|
renderReverseSided: {
|
get: function () {
|
console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")
|
},
|
set: function () {
|
console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")
|
}
|
},
|
renderSingleSided: {
|
get: function () {
|
console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")
|
},
|
set: function () {
|
console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")
|
}
|
}
|
});
|
Object.defineProperties(Ib.prototype, {
|
activeCubeFace: {
|
set: function () {
|
console.warn("THREE.WebGLRenderTargetCube: .activeCubeFace has been removed. It is now the second parameter of WebGLRenderer.setRenderTarget().")
|
}
|
},
|
activeMipMapLevel: {
|
set: function () {
|
console.warn("THREE.WebGLRenderTargetCube: .activeMipMapLevel has been removed. It is now the third parameter of WebGLRenderer.setRenderTarget().")
|
}
|
}
|
});
|
Object.defineProperties(sa.prototype, {
|
wrapS: {
|
get: function () {
|
console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.");
|
return this.texture.wrapS
|
},
|
set: function (a) {
|
console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.");
|
this.texture.wrapS = a
|
}
|
},
|
wrapT: {
|
get: function () {
|
console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.");
|
return this.texture.wrapT
|
},
|
set: function (a) {
|
console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.");
|
this.texture.wrapT = a
|
}
|
},
|
magFilter: {
|
get: function () {
|
console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.");
|
return this.texture.magFilter
|
},
|
set: function (a) {
|
console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.");
|
this.texture.magFilter = a
|
}
|
},
|
minFilter: {
|
get: function () {
|
console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.");
|
return this.texture.minFilter
|
},
|
set: function (a) {
|
console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.");
|
this.texture.minFilter = a
|
}
|
},
|
anisotropy: {
|
get: function () {
|
console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.");
|
return this.texture.anisotropy
|
},
|
set: function (a) {
|
console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.");
|
this.texture.anisotropy = a
|
}
|
},
|
offset: {
|
get: function () {
|
console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset.");
|
return this.texture.offset
|
},
|
set: function (a) {
|
console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset.");
|
this.texture.offset = a
|
}
|
},
|
repeat: {
|
get: function () {
|
console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat.");
|
return this.texture.repeat
|
},
|
set: function (a) {
|
console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat.");
|
this.texture.repeat = a
|
}
|
},
|
format: {
|
get: function () {
|
console.warn("THREE.WebGLRenderTarget: .format is now .texture.format.");
|
return this.texture.format
|
},
|
set: function (a) {
|
console.warn("THREE.WebGLRenderTarget: .format is now .texture.format.");
|
this.texture.format = a
|
}
|
},
|
type: {
|
get: function () {
|
console.warn("THREE.WebGLRenderTarget: .type is now .texture.type.");
|
return this.texture.type
|
},
|
set: function (a) {
|
console.warn("THREE.WebGLRenderTarget: .type is now .texture.type.");
|
this.texture.type = a
|
}
|
},
|
generateMipmaps: {
|
get: function () {
|
console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.");
|
return this.texture.generateMipmaps
|
},
|
set: function (a) {
|
console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.");
|
this.texture.generateMipmaps = a
|
}
|
}
|
});
|
Object.defineProperties(Gg.prototype, {
|
standing: {
|
set: function () {
|
console.warn("THREE.WebVRManager: .standing has been removed.")
|
}
|
},
|
userHeight: {
|
set: function () {
|
console.warn("THREE.WebVRManager: .userHeight has been removed.")
|
}
|
}
|
});
|
Object.defineProperties(rd.prototype, {
|
load: {
|
value: function (a) {
|
console.warn("THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.");
|
var b = this;
|
(new Ff).load(a, function (a) {
|
b.setBuffer(a)
|
});
|
return this
|
}
|
},
|
startTime: {
|
set: function () {
|
console.warn("THREE.Audio: .startTime is now .play( delay ).")
|
}
|
}
|
});
|
ch.prototype.getData = function () {
|
console.warn("THREE.AudioAnalyser: .getData() is now .getFrequencyData().");
|
return this.getFrequencyData()
|
};
|
Qc.prototype.updateCubeMap = function (a, b) {
|
console.warn("THREE.CubeCamera: .updateCubeMap() is now .update().");
|
return this.update(a, b)
|
};
|
Qb.crossOrigin = void 0;
|
Qb.loadTexture = function (a, b, c, d) {
|
console.warn("THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.");
|
var f = new rf;
|
f.setCrossOrigin(this.crossOrigin);
|
a = f.load(a, c, void 0, d);
|
b && (a.mapping = b);
|
return a
|
};
|
Qb.loadTextureCube = function (a, b, c, d) {
|
console.warn("THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.");
|
var f = new qf;
|
f.setCrossOrigin(this.crossOrigin);
|
a = f.load(a, c, void 0, d);
|
b && (a.mapping = b);
|
return a
|
};
|
Qb.loadCompressedTexture = function () {
|
console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")
|
};
|
Qb.loadCompressedTextureCube = function () {
|
console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")
|
};
|
var am = kc;
|
"undefined" !== typeof __THREE_DEVTOOLS__ && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register", {
|
detail: {
|
revision: "110"
|
}
|
}));
|
l.ACESFilmicToneMapping = 5;
|
l.AddEquation = 100;
|
l.AddOperation = 2;
|
l.AdditiveBlending = 2;
|
l.AlphaFormat = 1021;
|
l.AlwaysDepth = 1;
|
l.AlwaysStencilFunc = 519;
|
l.AmbientLight = yf;
|
l.AmbientLightProbe = Yg;
|
l.AnimationClip = Pa;
|
l.AnimationLoader = Pg;
|
l.AnimationMixer = eh;
|
l.AnimationObjectGroup = Pi;
|
l.AnimationUtils = aa;
|
l.ArcCurve = qd;
|
l.ArrayCamera = Yd;
|
l.ArrowHelper = Bb;
|
l.Audio = rd;
|
l.AudioAnalyser =
|
ch;
|
l.AudioContext = ah;
|
l.AudioListener = $g;
|
l.AudioLoader = Ff;
|
l.AxesHelper = Ke;
|
l.AxisHelper = function (a) {
|
console.warn("THREE.AxisHelper has been renamed to THREE.AxesHelper.");
|
return new Ke(a)
|
};
|
l.BackSide = 1;
|
l.BasicDepthPacking = 3200;
|
l.BasicShadowMap = 0;
|
l.BinaryTextureLoader = function (a) {
|
console.warn("THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.");
|
return new pf(a)
|
};
|
l.Bone = Ig;
|
l.BooleanKeyframeTrack = lf;
|
l.BoundingBoxHelper = function (a, b) {
|
console.warn("THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.");
|
return new Ab(a, b)
|
};
|
l.Box2 = hh;
|
l.Box3 = gb;
|
l.Box3Helper = Ie;
|
l.BoxBufferGeometry = Ud;
|
l.BoxGeometry = Eh;
|
l.BoxHelper = Ab;
|
l.BufferAttribute = O;
|
l.BufferGeometry = G;
|
l.BufferGeometryLoader = Df;
|
l.ByteType = 1010;
|
l.Cache = Fc;
|
l.Camera = hb;
|
l.CameraHelper = He;
|
l.CanvasRenderer = function () {
|
console.error("THREE.CanvasRenderer has been removed")
|
};
|
l.CanvasTexture = de;
|
l.CatmullRomCurve3 = la;
|
l.CineonToneMapping = 4;
|
l.CircleBufferGeometry = ld;
|
l.CircleGeometry = ye;
|
l.ClampToEdgeWrapping = 1001;
|
l.Clock = Zg;
|
l.ClosedSplineCurve3 = Wi;
|
l.Color = D;
|
l.ColorKeyframeTrack =
|
mf;
|
l.CompressedTexture = Zc;
|
l.CompressedTextureLoader = Qg;
|
l.ConeBufferGeometry = xe;
|
l.ConeGeometry = we;
|
l.CubeCamera = Qc;
|
l.CubeGeometry = Eh;
|
l.CubeReflectionMapping = 301;
|
l.CubeRefractionMapping = 302;
|
l.CubeTexture = vb;
|
l.CubeTextureLoader = qf;
|
l.CubeUVReflectionMapping = 306;
|
l.CubeUVRefractionMapping = 307;
|
l.CubicBezierCurve = Xa;
|
l.CubicBezierCurve3 = lb;
|
l.CubicInterpolant = jf;
|
l.CullFaceBack = 1;
|
l.CullFaceFront = 2;
|
l.CullFaceFrontBack = 3;
|
l.CullFaceNone = 0;
|
l.Curve = M;
|
l.CurvePath = zb;
|
l.CustomBlending = 5;
|
l.CylinderBufferGeometry = yb;
|
l.CylinderGeometry =
|
rc;
|
l.Cylindrical = Ui;
|
l.DataTexture = hc;
|
l.DataTexture2DArray = Rc;
|
l.DataTexture3D = Sc;
|
l.DataTextureLoader = pf;
|
l.DecrementStencilOp = 7683;
|
l.DecrementWrapStencilOp = 34056;
|
l.DefaultLoadingManager = Li;
|
l.DepthFormat = 1026;
|
l.DepthStencilFormat = 1027;
|
l.DepthTexture = ee;
|
l.DirectionalLight = xf;
|
l.DirectionalLightHelper = zd;
|
l.DirectionalLightShadow = wf;
|
l.DiscreteInterpolant = kf;
|
l.DodecahedronBufferGeometry = dd;
|
l.DodecahedronGeometry = ke;
|
l.DoubleSide = 2;
|
l.DstAlphaFactor = 206;
|
l.DstColorFactor = 208;
|
l.DynamicBufferAttribute = function (a,
|
b) {
|
console.warn("THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.");
|
return (new O(a, b)).setDynamic(!0)
|
};
|
l.DynamicCopyUsage = 35050;
|
l.DynamicDrawUsage = 35048;
|
l.DynamicReadUsage = 35049;
|
l.EdgesGeometry = kd;
|
l.EdgesHelper = function (a, b) {
|
console.warn("THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.");
|
return new Z(new kd(a.geometry), new T({
|
color: void 0 !== b ? b : 16777215
|
}))
|
};
|
l.EllipseCurve = Ma;
|
l.EqualDepth = 4;
|
l.EqualStencilFunc = 514;
|
l.EquirectangularReflectionMapping =
|
303;
|
l.EquirectangularRefractionMapping = 304;
|
l.Euler = Zb;
|
l.EventDispatcher = Ra;
|
l.ExtrudeBufferGeometry = jb;
|
l.ExtrudeGeometry = oc;
|
l.Face3 = Mc;
|
l.Face4 = function (a, b, c, d, f, g, k) {
|
console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead.");
|
return new Mc(a, b, c, f, g, k)
|
};
|
l.FaceColors = 1;
|
l.FaceNormalsHelper = Ge;
|
l.FileLoader = Qa;
|
l.FlatShading = 1;
|
l.Float32Attribute = function (a, b) {
|
console.warn("THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.");
|
return new F(a,
|
b)
|
};
|
l.Float32BufferAttribute = F;
|
l.Float64Attribute = function (a, b) {
|
console.warn("THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.");
|
return new Qd(a, b)
|
};
|
l.Float64BufferAttribute = Qd;
|
l.FloatType = 1015;
|
l.Fog = df;
|
l.FogExp2 = cf;
|
l.Font = Vg;
|
l.FontLoader = Wg;
|
l.FrontFaceDirectionCCW = 1;
|
l.FrontFaceDirectionCW = 0;
|
l.FrontSide = 0;
|
l.Frustum = Sd;
|
l.GammaEncoding = 3007;
|
l.Geometry = P;
|
l.GeometryUtils = {
|
merge: function (a, b, c) {
|
console.warn("THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.");
|
if (b.isMesh) {
|
b.matrixAutoUpdate && b.updateMatrix();
|
var d = b.matrix;
|
b = b.geometry
|
}
|
a.merge(b, d, c)
|
},
|
center: function (a) {
|
console.warn("THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.");
|
return a.center()
|
}
|
};
|
l.GreaterDepth = 6;
|
l.GreaterEqualDepth = 5;
|
l.GreaterEqualStencilFunc = 518;
|
l.GreaterStencilFunc = 516;
|
l.GridHelper = If;
|
l.Group = Vc;
|
l.HalfFloatType = 1016;
|
l.HemisphereLight = sf;
|
l.HemisphereLightHelper = wd;
|
l.HemisphereLightProbe = Xg;
|
l.IcosahedronBufferGeometry = cd;
|
l.IcosahedronGeometry =
|
je;
|
l.ImageBitmapLoader = Tg;
|
l.ImageLoader = pd;
|
l.ImageUtils = Qb;
|
l.ImmediateRenderObject = Ee;
|
l.IncrementStencilOp = 7682;
|
l.IncrementWrapStencilOp = 34055;
|
l.InstancedBufferAttribute = Cf;
|
l.InstancedBufferGeometry = Bf;
|
l.InstancedInterleavedBuffer = fh;
|
l.InstancedMesh = gf;
|
l.Int16Attribute = function (a, b) {
|
console.warn("THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.");
|
return new Od(a, b)
|
};
|
l.Int16BufferAttribute = Od;
|
l.Int32Attribute = function (a, b) {
|
console.warn("THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.");
|
return new Pd(a, b)
|
};
|
l.Int32BufferAttribute = Pd;
|
l.Int8Attribute = function (a, b) {
|
console.warn("THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.");
|
return new Ld(a, b)
|
};
|
l.Int8BufferAttribute = Ld;
|
l.IntType = 1013;
|
l.InterleavedBuffer = wb;
|
l.InterleavedBufferAttribute = Zd;
|
l.Interpolant = La;
|
l.InterpolateDiscrete = 2300;
|
l.InterpolateLinear = 2301;
|
l.InterpolateSmooth = 2302;
|
l.InvertStencilOp = 5386;
|
l.JSONLoader = function () {
|
console.error("THREE.JSONLoader has been removed.")
|
};
|
l.KeepStencilOp = 7680;
|
l.KeyframeTrack = ua;
|
l.LOD = be;
|
l.LatheBufferGeometry = jd;
|
l.LatheGeometry = ve;
|
l.Layers = rg;
|
l.LensFlare = function () {
|
console.error("THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js")
|
};
|
l.LessDepth = 2;
|
l.LessEqualDepth = 3;
|
l.LessEqualStencilFunc = 515;
|
l.LessStencilFunc = 513;
|
l.Light = da;
|
l.LightProbe = bb;
|
l.LightProbeHelper = xd;
|
l.LightShadow = nb;
|
l.Line = pa;
|
l.Line3 = ih;
|
l.LineBasicMaterial = T;
|
l.LineCurve = Ga;
|
l.LineCurve3 = Ya;
|
l.LineDashedMaterial = yc;
|
l.LineLoop = hf;
|
l.LinePieces = 1;
|
l.LineSegments = Z;
|
l.LineStrip = 0;
|
l.LinearEncoding =
|
3E3;
|
l.LinearFilter = 1006;
|
l.LinearInterpolant = ze;
|
l.LinearMipMapLinearFilter = 1008;
|
l.LinearMipMapNearestFilter = 1007;
|
l.LinearMipmapLinearFilter = 1008;
|
l.LinearMipmapNearestFilter = 1007;
|
l.LinearToneMapping = 1;
|
l.Loader = X;
|
l.LoaderUtils = Kh;
|
l.LoadingManager = Og;
|
l.LogLuvEncoding = 3003;
|
l.LoopOnce = 2200;
|
l.LoopPingPong = 2202;
|
l.LoopRepeat = 2201;
|
l.LuminanceAlphaFormat = 1025;
|
l.LuminanceFormat = 1024;
|
l.MOUSE = {
|
LEFT: 0,
|
MIDDLE: 1,
|
RIGHT: 2,
|
ROTATE: 0,
|
DOLLY: 1,
|
PAN: 2
|
};
|
l.Material = R;
|
l.MaterialLoader = Af;
|
l.Math = N;
|
l.Matrix3 = ka;
|
l.Matrix4 = I;
|
l.MaxEquation =
|
104;
|
l.Mesh = ia;
|
l.MeshBasicMaterial = Ia;
|
l.MeshDepthMaterial = Kb;
|
l.MeshDistanceMaterial = Lb;
|
l.MeshFaceMaterial = function (a) {
|
console.warn("THREE.MeshFaceMaterial has been removed. Use an Array instead.");
|
return a
|
};
|
l.MeshLambertMaterial = wc;
|
l.MeshMatcapMaterial = xc;
|
l.MeshNormalMaterial = vc;
|
l.MeshPhongMaterial = Wa;
|
l.MeshPhysicalMaterial = tc;
|
l.MeshStandardMaterial = kb;
|
l.MeshToonMaterial = uc;
|
l.MinEquation = 103;
|
l.MirroredRepeatWrapping = 1002;
|
l.MixOperation = 1;
|
l.MultiMaterial = function (a) {
|
void 0 === a && (a = []);
|
console.warn("THREE.MultiMaterial has been removed. Use an Array instead.");
|
a.isMultiMaterial = !0;
|
a.materials = a;
|
a.clone = function () {
|
return a.slice()
|
};
|
return a
|
};
|
l.MultiplyBlending = 4;
|
l.MultiplyOperation = 0;
|
l.NearestFilter = 1003;
|
l.NearestMipMapLinearFilter = 1005;
|
l.NearestMipMapNearestFilter = 1004;
|
l.NearestMipmapLinearFilter = 1005;
|
l.NearestMipmapNearestFilter = 1004;
|
l.NeverDepth = 0;
|
l.NeverStencilFunc = 512;
|
l.NoBlending = 0;
|
l.NoColors = 0;
|
l.NoToneMapping = 0;
|
l.NormalBlending = 1;
|
l.NotEqualDepth = 7;
|
l.NotEqualStencilFunc = 517;
|
l.NumberKeyframeTrack = nd;
|
l.Object3D = E;
|
l.ObjectLoader = Ef;
|
l.ObjectSpaceNormalMap =
|
1;
|
l.OctahedronBufferGeometry = lc;
|
l.OctahedronGeometry = ie;
|
l.OneFactor = 201;
|
l.OneMinusDstAlphaFactor = 207;
|
l.OneMinusDstColorFactor = 209;
|
l.OneMinusSrcAlphaFactor = 205;
|
l.OneMinusSrcColorFactor = 203;
|
l.OrthographicCamera = De;
|
l.PCFShadowMap = 1;
|
l.PCFSoftShadowMap = 2;
|
l.ParametricBufferGeometry = ad;
|
l.ParametricGeometry = fe;
|
l.Particle = function (a) {
|
console.warn("THREE.Particle has been renamed to THREE.Sprite.");
|
return new $d(a)
|
};
|
l.ParticleBasicMaterial = function (a) {
|
console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.");
|
return new Va(a)
|
};
|
l.ParticleSystem = function (a, b) {
|
console.warn("THREE.ParticleSystem has been renamed to THREE.Points.");
|
return new Yc(a, b)
|
};
|
l.ParticleSystemMaterial = function (a) {
|
console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.");
|
return new Va(a)
|
};
|
l.Path = ab;
|
l.PerspectiveCamera = na;
|
l.Plane = Sa;
|
l.PlaneBufferGeometry = ic;
|
l.PlaneGeometry = Td;
|
l.PlaneHelper = Je;
|
l.PointCloud = function (a, b) {
|
console.warn("THREE.PointCloud has been renamed to THREE.Points.");
|
return new Yc(a, b)
|
};
|
l.PointCloudMaterial = function (a) {
|
console.warn("THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.");
|
return new Va(a)
|
};
|
l.PointLight = vf;
|
l.PointLightHelper = ud;
|
l.Points = Yc;
|
l.PointsMaterial = Va;
|
l.PolarGridHelper = Jf;
|
l.PolyhedronBufferGeometry = Fa;
|
l.PolyhedronGeometry = ge;
|
l.PositionalAudio = bh;
|
l.PositionalAudioHelper = yd;
|
l.PropertyBinding = ja;
|
l.PropertyMixer = dh;
|
l.QuadraticBezierCurve = Za;
|
l.QuadraticBezierCurve3 = mb;
|
l.Quaternion = ya;
|
l.QuaternionKeyframeTrack = Ae;
|
l.QuaternionLinearInterpolant = nf;
|
l.REVISION =
|
"110";
|
l.RGBADepthPacking = 3201;
|
l.RGBAFormat = 1023;
|
l.RGBA_ASTC_10x10_Format = 37819;
|
l.RGBA_ASTC_10x5_Format = 37816;
|
l.RGBA_ASTC_10x6_Format = 37817;
|
l.RGBA_ASTC_10x8_Format = 37818;
|
l.RGBA_ASTC_12x10_Format = 37820;
|
l.RGBA_ASTC_12x12_Format = 37821;
|
l.RGBA_ASTC_4x4_Format = 37808;
|
l.RGBA_ASTC_5x4_Format = 37809;
|
l.RGBA_ASTC_5x5_Format = 37810;
|
l.RGBA_ASTC_6x5_Format = 37811;
|
l.RGBA_ASTC_6x6_Format = 37812;
|
l.RGBA_ASTC_8x5_Format = 37813;
|
l.RGBA_ASTC_8x6_Format = 37814;
|
l.RGBA_ASTC_8x8_Format = 37815;
|
l.RGBA_PVRTC_2BPPV1_Format = 35843;
|
l.RGBA_PVRTC_4BPPV1_Format =
|
35842;
|
l.RGBA_S3TC_DXT1_Format = 33777;
|
l.RGBA_S3TC_DXT3_Format = 33778;
|
l.RGBA_S3TC_DXT5_Format = 33779;
|
l.RGBDEncoding = 3006;
|
l.RGBEEncoding = 3002;
|
l.RGBEFormat = 1023;
|
l.RGBFormat = 1022;
|
l.RGBM16Encoding = 3005;
|
l.RGBM7Encoding = 3004;
|
l.RGB_ETC1_Format = 36196;
|
l.RGB_PVRTC_2BPPV1_Format = 35841;
|
l.RGB_PVRTC_4BPPV1_Format = 35840;
|
l.RGB_S3TC_DXT1_Format = 33776;
|
l.RawShaderMaterial = md;
|
l.Ray = ac;
|
l.Raycaster = Ri;
|
l.RectAreaLight = zf;
|
l.RectAreaLightHelper = vd;
|
l.RedFormat = 1028;
|
l.ReinhardToneMapping = 2;
|
l.RepeatWrapping = 1E3;
|
l.ReplaceStencilOp =
|
7681;
|
l.ReverseSubtractEquation = 102;
|
l.RingBufferGeometry = id;
|
l.RingGeometry = ue;
|
l.Scene = Kd;
|
l.SceneUtils = {
|
createMultiMaterialObject: function () {
|
console.error("THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js")
|
},
|
detach: function () {
|
console.error("THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js")
|
},
|
attach: function () {
|
console.error("THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js")
|
}
|
};
|
l.ShaderChunk = Q;
|
l.ShaderLib = ib;
|
l.ShaderMaterial = Aa;
|
l.ShadowMaterial =
|
sc;
|
l.Shape = Pb;
|
l.ShapeBufferGeometry = qc;
|
l.ShapeGeometry = pc;
|
l.ShapePath = Ug;
|
l.ShapeUtils = xb;
|
l.ShortType = 1011;
|
l.Skeleton = ff;
|
l.SkeletonHelper = td;
|
l.SkinnedMesh = ce;
|
l.SmoothShading = 2;
|
l.Sphere = ub;
|
l.SphereBufferGeometry = Ob;
|
l.SphereGeometry = te;
|
l.Spherical = Ti;
|
l.SphericalHarmonics3 = Gf;
|
l.SphericalReflectionMapping = 305;
|
l.Spline = kh;
|
l.SplineCurve = $a;
|
l.SplineCurve3 = Xi;
|
l.SpotLight = uf;
|
l.SpotLightHelper = sd;
|
l.SpotLightShadow = tf;
|
l.Sprite = $d;
|
l.SpriteMaterial = Nb;
|
l.SrcAlphaFactor = 204;
|
l.SrcAlphaSaturateFactor = 210;
|
l.SrcColorFactor =
|
202;
|
l.StaticCopyUsage = 35046;
|
l.StaticDrawUsage = 35044;
|
l.StaticReadUsage = 35045;
|
l.StereoCamera = Ni;
|
l.StreamCopyUsage = 35042;
|
l.StreamDrawUsage = 35040;
|
l.StreamReadUsage = 35041;
|
l.StringKeyframeTrack = of ;
|
l.SubtractEquation = 101;
|
l.SubtractiveBlending = 3;
|
l.TOUCH = {
|
ROTATE: 0,
|
PAN: 1,
|
DOLLY_PAN: 2,
|
DOLLY_ROTATE: 3
|
};
|
l.TangentSpaceNormalMap = 0;
|
l.TetrahedronBufferGeometry = bd;
|
l.TetrahedronGeometry = he;
|
l.TextBufferGeometry = hd;
|
l.TextGeometry = se;
|
l.Texture = S;
|
l.TextureLoader = rf;
|
l.TorusBufferGeometry = fd;
|
l.TorusGeometry = ne;
|
l.TorusKnotBufferGeometry =
|
ed;
|
l.TorusKnotGeometry = me;
|
l.Triangle = va;
|
l.TriangleFanDrawMode = 2;
|
l.TriangleStripDrawMode = 1;
|
l.TrianglesDrawMode = 0;
|
l.TubeBufferGeometry = mc;
|
l.TubeGeometry = le;
|
l.UVMapping = 300;
|
l.Uint16Attribute = function (a, b) {
|
console.warn("THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.");
|
return new bc(a, b)
|
};
|
l.Uint16BufferAttribute = bc;
|
l.Uint32Attribute = function (a, b) {
|
console.warn("THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.");
|
return new cc(a,
|
b)
|
};
|
l.Uint32BufferAttribute = cc;
|
l.Uint8Attribute = function (a, b) {
|
console.warn("THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.");
|
return new Md(a, b)
|
};
|
l.Uint8BufferAttribute = Md;
|
l.Uint8ClampedAttribute = function (a, b) {
|
console.warn("THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.");
|
return new Nd(a, b)
|
};
|
l.Uint8ClampedBufferAttribute = Nd;
|
l.Uncharted2ToneMapping = 3;
|
l.Uniform = Hf;
|
l.UniformsLib = K;
|
l.UniformsUtils = Kl;
|
l.UnsignedByteType =
|
1009;
|
l.UnsignedInt248Type = 1020;
|
l.UnsignedIntType = 1014;
|
l.UnsignedShort4444Type = 1017;
|
l.UnsignedShort5551Type = 1018;
|
l.UnsignedShort565Type = 1019;
|
l.UnsignedShortType = 1012;
|
l.VSMShadowMap = 3;
|
l.Vector2 = z;
|
l.Vector3 = q;
|
l.Vector4 = ca;
|
l.VectorKeyframeTrack = od;
|
l.Vertex = function (a, b, c) {
|
console.warn("THREE.Vertex has been removed. Use THREE.Vector3 instead.");
|
return new q(a, b, c)
|
};
|
l.VertexColors = 2;
|
l.VertexNormalsHelper = Fe;
|
l.VideoTexture = Lg;
|
l.WebGLMultisampleRenderTarget = qg;
|
l.WebGLRenderTarget = sa;
|
l.WebGLRenderTargetCube =
|
Ib;
|
l.WebGLRenderer = Hg;
|
l.WebGLUtils = wi;
|
l.WireframeGeometry = $c;
|
l.WireframeHelper = function (a, b) {
|
console.warn("THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.");
|
return new Z(new $c(a.geometry), new T({
|
color: void 0 !== b ? b : 16777215
|
}))
|
};
|
l.WrapAroundEnding = 2402;
|
l.XHRLoader = function (a) {
|
console.warn("THREE.XHRLoader has been renamed to THREE.FileLoader.");
|
return new Qa(a)
|
};
|
l.ZeroCurvatureEnding = 2400;
|
l.ZeroFactor = 200;
|
l.ZeroSlopeEnding = 2401;
|
l.ZeroStencilOp = 0;
|
l.global = am;
|
l.sRGBEncoding =
|
3001;
|
Object.defineProperty(l, "__esModule", {
|
value: !0
|
})
|
});
|