!(function () { if (('performance' in window == 0 && (window.performance = {}), 'now' in window.performance == 0)) { var e = Date.now() performance.timing && performance.timing.navigationStart && (e = performance.timing.navigationStart), (window.performance.now = function () { return Date.now() - e }) } })(), (THREE.WebGLRenderer.prototype.paramThreeToGL = function (e) { var t, i = this.extensions, r = this.getContext() // this.context if (e === THREE.RepeatWrapping) return r.REPEAT if (e === THREE.ClampToEdgeWrapping) return r.CLAMP_TO_EDGE if (e === THREE.MirroredRepeatWrapping) return r.MIRRORED_REPEAT if (e === THREE.NearestFilter) return r.NEAREST if (e === THREE.NearestMipMapNearestFilter) return r.NEAREST_MIPMAP_NEAREST if (e === THREE.NearestMipMapLinearFilter) return r.NEAREST_MIPMAP_LINEAR if (e === THREE.LinearFilter) return r.LINEAR if (e === THREE.LinearMipMapNearestFilter) return r.LINEAR_MIPMAP_NEAREST if (e === THREE.LinearMipMapLinearFilter) return r.LINEAR_MIPMAP_LINEAR if (e === THREE.UnsignedByteType) return r.UNSIGNED_BYTE if (e === THREE.UnsignedShort4444Type) return r.UNSIGNED_SHORT_4_4_4_4 if (e === THREE.UnsignedShort5551Type) return r.UNSIGNED_SHORT_5_5_5_1 if (e === THREE.UnsignedShort565Type) return r.UNSIGNED_SHORT_5_6_5 if (e === THREE.ByteType) return r.BYTE if (e === THREE.ShortType) return r.SHORT if (e === THREE.UnsignedShortType) return r.UNSIGNED_SHORT if (e === THREE.IntType) return r.INT if (e === THREE.UnsignedIntType) return r.UNSIGNED_INT if (e === THREE.FloatType) return r.FLOAT if (e === THREE.HalfFloatType && i.get('OES_texture_half_float') !== null) return t.HALF_FLOAT_OES if (e === THREE.AlphaFormat) return r.ALPHA if (e === THREE.RGBFormat) return r.RGB if (e === THREE.RGBAFormat) return r.RGBA if (e === THREE.LuminanceFormat) return r.LUMINANCE if (e === THREE.LuminanceAlphaFormat) return r.LUMINANCE_ALPHA if (e === THREE.AddEquation) return r.FUNC_ADD if (e === THREE.SubtractEquation) return r.FUNC_SUBTRACT if (e === THREE.ReverseSubtractEquation) return r.FUNC_REVERSE_SUBTRACT if (e === THREE.ZeroFactor) return r.ZERO if (e === THREE.OneFactor) return r.ONE if (e === THREE.SrcColorFactor) return r.SRC_COLOR if (e === THREE.OneMinusSrcColorFactor) return r.ONE_MINUS_SRC_COLOR if (e === THREE.SrcAlphaFactor) return r.SRC_ALPHA if (e === THREE.OneMinusSrcAlphaFactor) return r.ONE_MINUS_SRC_ALPHA if (e === THREE.DstAlphaFactor) return r.DST_ALPHA if (e === THREE.OneMinusDstAlphaFactor) return r.ONE_MINUS_DST_ALPHA if (e === THREE.DstColorFactor) return r.DST_COLOR if (e === THREE.OneMinusDstColorFactor) return r.ONE_MINUS_DST_COLOR if (e === THREE.SrcAlphaSaturateFactor) return r.SRC_ALPHA_SATURATE if (((t = i.get('WEBGL_compressed_texture_s3tc')), null !== t)) { if (e === THREE.RGB_S3TC_DXT1_Format) return t.COMPRESSED_RGB_S3TC_DXT1_EXT if (e === THREE.RGBA_S3TC_DXT1_Format) return t.COMPRESSED_RGBA_S3TC_DXT1_EXT if (e === THREE.RGBA_S3TC_DXT3_Format) return t.COMPRESSED_RGBA_S3TC_DXT3_EXT if (e === THREE.RGBA_S3TC_DXT5_Format) return t.COMPRESSED_RGBA_S3TC_DXT5_EXT } if (((t = i.get('WEBGL_compressed_texture_pvrtc')), null !== t)) { if (e === THREE.RGB_PVRTC_4BPPV1_Format) return t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG if (e === THREE.RGB_PVRTC_2BPPV1_Format) return t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG if (e === THREE.RGBA_PVRTC_4BPPV1_Format) return t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG if (e === THREE.RGBA_PVRTC_2BPPV1_Format) return t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG } if (((t = i.get('WEBGL_compressed_texture_etc1')), null !== t && e === THREE.RGB_ETC1_Format)) return t.COMPRESSED_RGB_ETC1_WEBGL if (((t = i.get('EXT_blend_minmax')), null !== t)) { if (e === THREE.MinEquation) return t.MIN_EXT if (e === THREE.MaxEquation) return t.MAX_EXT } return 0 }), (THREE.WebGLState = function (e, t, i) { var r = this, o = new THREE.Vector4(), a = e.getParameter(e.MAX_VERTEX_ATTRIBS), s = new Uint8Array(a), l = new Uint8Array(a), c = new Uint8Array(a), h = {}, u = null, d = null, p = null, f = null, g = null, m = null, v = null, A = null, y = !1, C = null, I = null, E = null, b = null, w = null, _ = null, T = null, x = null, S = null, M = null, R = null, P = null, O = null, L = null, D = null, N = e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS), B = void 0, F = {}, V = new THREE.Vector4(), U = null, k = null, H = new THREE.Vector4(), G = new THREE.Vector4() ;(this.init = function () { this.clearColor(0, 0, 0, 1), this.clearDepth(1), this.clearStencil(0), this.enable(e.DEPTH_TEST), e.depthFunc(e.LEQUAL), e.frontFace(e.CCW), e.cullFace(e.BACK), this.enable(e.CULL_FACE), this.enable(e.BLEND), e.blendEquation(e.FUNC_ADD), e.blendFunc(e.SRC_ALPHA, e.ONE_MINUS_SRC_ALPHA) }), (this.initAttributes = function () { for (var e = 0, t = s.length; e < t; e++) s[e] = 0 }), (this.enableAttribute = function (i) { if (((s[i] = 1), 0 === l[i] && (e.enableVertexAttribArray(i), (l[i] = 1)), 0 !== c[i])) { var n = t.get('ANGLE_instanced_arrays') n.vertexAttribDivisorANGLE(i, 0), (c[i] = 0) } }), (this.enableAttributeAndDivisor = function (t, i, n) { ;(s[t] = 1), 0 === l[t] && (e.enableVertexAttribArray(t), (l[t] = 1)), c[t] !== i && (n.vertexAttribDivisorANGLE(t, i), (c[t] = i)) }), (this.disableUnusedAttributes = function () { for (var t = 0, i = l.length; t < i; t++) l[t] !== s[t] && (e.disableVertexAttribArray(t), (l[t] = 0)) }), (this.enable = function (t) { h[t] !== !0 && (e.enable(t), (h[t] = !0)) }), (this.disable = function (t) { h[t] !== !1 && (e.disable(t), (h[t] = !1)) }), (this.getCompressedTextureFormats = function () { if (null === u && ((u = []), t.get('WEBGL_compressed_texture_pvrtc') || t.get('WEBGL_compressed_texture_s3tc') || t.get('WEBGL_compressed_texture_etc1'))) for (var i = e.getParameter(e.COMPRESSED_TEXTURE_FORMATS), n = 0; n < i.length; n++) u.push(i[n]) return u }), (this.setBlending = function (t, r, o, a, s, l, c, h) { t === THREE.NoBlending ? this.disable(e.BLEND) : this.enable(e.BLEND), (t === d && h === y) || (t === THREE.AdditiveBlending ? h ? (e.blendEquationSeparate(e.FUNC_ADD, e.FUNC_ADD), e.blendFuncSeparate(e.ONE, e.ONE, e.ONE, e.ONE)) : (e.blendEquation(e.FUNC_ADD), e.blendFunc(e.SRC_ALPHA, e.ONE)) : t === THREE.SubtractiveBlending ? h ? (e.blendEquationSeparate(e.FUNC_ADD, e.FUNC_ADD), e.blendFuncSeparate(e.ZERO, e.ZERO, e.ONE_MINUS_SRC_COLOR, e.ONE_MINUS_SRC_ALPHA)) : (e.blendEquation(e.FUNC_ADD), e.blendFunc(e.ZERO, e.ONE_MINUS_SRC_COLOR)) : t === THREE.MultiplyBlending ? h ? (e.blendEquationSeparate(e.FUNC_ADD, e.FUNC_ADD), e.blendFuncSeparate(e.ZERO, e.ZERO, e.SRC_COLOR, e.SRC_ALPHA)) : (e.blendEquation(e.FUNC_ADD), e.blendFunc(e.ZERO, e.SRC_COLOR)) : h ? (e.blendEquationSeparate(e.FUNC_ADD, e.FUNC_ADD), e.blendFuncSeparate(e.ONE, e.ONE_MINUS_SRC_ALPHA, e.ONE, e.ONE_MINUS_SRC_ALPHA)) : (e.blendEquationSeparate(e.FUNC_ADD, e.FUNC_ADD), e.blendFuncSeparate(e.SRC_ALPHA, e.ONE_MINUS_SRC_ALPHA, e.ONE, e.ONE_MINUS_SRC_ALPHA)), (d = t), (y = h)), t === THREE.CustomBlending ? ((s = s || r), (l = l || o), (c = c || a), (r === p && s === m) || (e.blendEquationSeparate(i(r), i(s)), (p = r), (m = s)), (o === f && a === g && l === v && c === A) || (e.blendFuncSeparate(i(o), i(a), i(l), i(c)), (f = o), (g = a), (v = l), (A = c))) : ((p = null), (f = null), (g = null), (m = null), (v = null), (A = null)) }), (this.setDepthFunc = function (t) { if (C !== t) { if (t) switch (t) { case THREE.NeverDepth: e.depthFunc(e.NEVER) break case THREE.AlwaysDepth: e.depthFunc(e.ALWAYS) break case THREE.LessDepth: e.depthFunc(e.LESS) break case THREE.LessEqualDepth: e.depthFunc(e.LEQUAL) break case THREE.EqualDepth: e.depthFunc(e.EQUAL) break case THREE.GreaterEqualDepth: e.depthFunc(e.GEQUAL) break case THREE.GreaterDepth: e.depthFunc(e.GREATER) break case THREE.NotEqualDepth: e.depthFunc(e.NOTEQUAL) break default: e.depthFunc(e.LEQUAL) } else e.depthFunc(e.LEQUAL) C = t } }), (this.setDepthTest = function (t) { t ? this.enable(e.DEPTH_TEST) : this.disable(e.DEPTH_TEST) }), (this.setDepthWrite = function (t) { I !== t && (e.depthMask(t), (I = t)) }), (this.setColorWrite = function (t) { E !== t && (e.colorMask(t, t, t, t), (E = t)) }), (this.setStencilFunc = function (t, i, n) { ;(w === t && _ === i && T === n) || (e.stencilFunc(t, i, n), (w = t), (_ = i), (T = n)) }), (this.setStencilOp = function (t, i, n) { ;(x === t && S === i && M === n) || (e.stencilOp(t, i, n), (x = t), (S = i), (M = n)) }), (this.setStencilTest = function (t) { t ? this.enable(e.STENCIL_TEST) : this.disable(e.STENCIL_TEST) }), (this.setStencilWrite = function (t) { b !== t && (e.stencilMask(t), (b = t)) }), (this.setFlipSided = function (t) { R !== t && (t ? e.frontFace(e.CW) : e.frontFace(e.CCW), (R = t)) }), (this.setLineWidth = function (t) { t !== P && (e.lineWidth(t), (P = t)) }), (this.setPolygonOffset = function (t, i, n) { t ? this.enable(e.POLYGON_OFFSET_FILL) : this.disable(e.POLYGON_OFFSET_FILL), !t || (O === i && L === n) || (e.polygonOffset(i, n), (O = i), (L = n)) }), (this.getScissorTest = function () { return D }), (this.setScissorTest = function (t) { ;(D = t), t ? this.enable(e.SCISSOR_TEST) : this.disable(e.SCISSOR_TEST) }), (this.activeTexture = function (t) { void 0 === t && (t = e.TEXTURE0 + N - 1), B !== t && (e.activeTexture(t), (B = t)) }), (this.bindTexture = function (t, i) { void 0 === B && r.activeTexture() var n = F[B] void 0 === n && ((n = { type: void 0, texture: void 0, }), (F[B] = n)), (n.type === t && n.texture === i) || (e.bindTexture(t, i), (n.type = t), (n.texture = i)) }), (this.compressedTexImage2D = function () { try { e.compressedTexImage2D.apply(e, arguments) } catch (e) { console.error(e) } }), (this.texImage2D = function () { try { e.texImage2D.apply(e, arguments) } catch (e) { console.error(e) } }), (this.clearColor = function (t, i, n, r) { o.set(t, i, n, r), V.equals(o) === !1 && (e.clearColor(t, i, n, r), V.copy(o)) }), (this.clearDepth = function (t) { U !== t && (e.clearDepth(t), (U = t)) }), (this.clearStencil = function (t) { k !== t && (e.clearStencil(t), (k = t)) }), (this.scissor = function (t) { H.equals(t) === !1 && (e.scissor(t.x, t.y, t.z, t.w), H.copy(t)) }), (this.viewport = function (t) { G.equals(t) === !1 && (e.viewport(t.x, t.y, t.z, t.w), G.copy(t)) }), (this.reset = function () { for (var t = 0; t < l.length; t++) 1 === l[t] && (e.disableVertexAttribArray(t), (l[t] = 0)) ;(h = {}), (u = null), (B = void 0), (F = {}), (d = null), (E = null), (I = null), (b = null), (R = null) }) })