mirror of
https://github.com/troisjs/trois.git
synced 2024-11-24 04:12:02 +08:00
1 line
3.2 MiB
1 line
3.2 MiB
{"version":3,"file":"trois.js","sources":["../node_modules/three/build/three.module.js","../node_modules/three/examples/jsm/controls/OrbitControls.js","../src/core/useThree.js","../src/core/Renderer.js","../src/tools.js","../src/use/useBindProp.js","../src/core/OrthographicCamera.js","../src/core/PerspectiveCamera.js","../src/core/Group.js","../src/core/Scene.js","../src/geometries/Geometry.js","../src/geometries/BoxGeometry.js","../src/geometries/CircleGeometry.js","../src/geometries/ConeGeometry.js","../src/geometries/CylinderGeometry.js","../src/geometries/DodecahedronGeometry.js","../src/geometries/IcosahedronGeometry.js","../src/geometries/LatheGeometry.js","../src/geometries/OctahedronGeometry.js","../src/geometries/PolyhedronGeometry.js","../src/geometries/RingGeometry.js","../src/geometries/SphereGeometry.js","../src/geometries/TetrahedronGeometry.js","../src/geometries/TorusGeometry.js","../src/geometries/TorusKnotGeometry.js","../src/geometries/TubeGeometry.js","../src/lights/Light.js","../src/lights/AmbientLight.js","../src/lights/DirectionalLight.js","../src/lights/PointLight.js","../src/lights/SpotLight.js","../src/materials/Material.js","../src/materials/BasicMaterial.js","../src/materials/LambertMaterial.js","../src/materials/MatcapMaterial.js","../src/materials/PhongMaterial.js","../src/materials/StandardMaterial.js","../src/materials/PhysicalMaterial.js","../src/materials/SubsurfaceScatteringShader.js","../src/materials/ShaderMaterial.js","../src/materials/SubSurfaceMaterial.js","../src/materials/ToonMaterial.js","../src/materials/Texture.js","../src/materials/CubeTexture.js","../src/meshes/Mesh.js","../src/meshes/Box.js","../src/meshes/Circle.js","../src/meshes/Cone.js","../src/meshes/Cylinder.js","../src/meshes/Dodecahedron.js","../src/meshes/Icosahedron.js","../src/meshes/Lathe.js","../src/meshes/Octahedron.js","../src/meshes/Plane.js","../src/meshes/Polyhedron.js","../src/meshes/Ring.js","../src/meshes/Sphere.js","../src/meshes/Tetrahedron.js","../src/meshes/TextProps.js","../src/meshes/Text.js","../src/meshes/Torus.js","../src/meshes/TorusKnot.js","../src/meshes/Tube.js","../src/meshes/Gem.js","../src/meshes/Image.js","../src/meshes/InstancedMesh.js","../src/meshes/MirrorMesh.js","../src/meshes/RefractionMesh.js","../src/meshes/Sprite.js","../node_modules/three/examples/jsm/shaders/CopyShader.js","../node_modules/three/examples/jsm/postprocessing/Pass.js","../node_modules/three/examples/jsm/postprocessing/ShaderPass.js","../node_modules/three/examples/jsm/postprocessing/MaskPass.js","../node_modules/three/examples/jsm/postprocessing/EffectComposer.js","../src/effects/EffectComposer.js","../node_modules/three/examples/jsm/postprocessing/RenderPass.js","../src/effects/EffectPass.js","../src/effects/RenderPass.js","../node_modules/three/examples/jsm/shaders/BokehShader.js","../node_modules/three/examples/jsm/postprocessing/BokehPass.js","../src/effects/BokehPass.js","../node_modules/three/examples/jsm/shaders/FilmShader.js","../node_modules/three/examples/jsm/postprocessing/FilmPass.js","../src/effects/FilmPass.js","../node_modules/three/examples/jsm/shaders/FXAAShader.js","../src/effects/FXAAPass.js","../node_modules/three/examples/jsm/shaders/HalftoneShader.js","../node_modules/three/examples/jsm/postprocessing/HalftonePass.js","../src/effects/HalftonePass.js","../node_modules/three/examples/jsm/shaders/SMAAShader.js","../node_modules/three/examples/jsm/postprocessing/SMAAPass.js","../src/effects/SMAAPass.js","../src/shaders/default.js","../src/shaders/TiltShift.js","../src/use/useBindPropValue.js","../src/effects/TiltShiftPass.js","../node_modules/three/examples/jsm/shaders/LuminosityHighPassShader.js","../node_modules/three/examples/jsm/postprocessing/UnrealBloomPass.js","../src/effects/UnrealBloomPass.js","../src/shaders/ZoomBlur.js","../src/effects/ZoomBlurPass.js","../src/glsl/snoise2.glsl.js","../src/components/noisy/NoisyImage.js","../src/glsl/snoise3.glsl.js","../src/components/noisy/NoisyPlane.js","../src/glsl/snoise4.glsl.js","../src/components/noisy/NoisySphere.js","../src/components/noisy/NoisyText.js","../node_modules/three/examples/jsm/deprecated/Geometry.js","../src/components/sliders/AnimatedPlane.js","../src/use/useTextures.js","../src/components/sliders/Slider1.vue","../src/components/sliders/Slider1.vue?vue&type=template&id=23f29a93&lang.js","../node_modules/three/examples/jsm/loaders/GLTFLoader.js","../src/components/viewers/GLTFViewer.vue","../src/components/viewers/GLTFViewer.vue?vue&type=template&id=683b03c7&lang.js","../src/plugin.js"],"sourcesContent":["// threejs.org/license\nconst REVISION = '125';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst LogLuvEncoding = 3003;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\nconst MathUtils = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tconst d0 = Math.random() * 0xffffffff | 0;\n\t\tconst d1 = Math.random() * 0xffffffff | 0;\n\t\tconst d2 = Math.random() * 0xffffffff | 0;\n\t\tconst d3 = Math.random() * 0xffffffff | 0;\n\t\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\treturn uuid.toUpperCase();\n\n\t},\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range <a1, a2> to range <b1, b2>\n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\n\n\tdamp: function ( x, y, lambda, dt ) {\n\n\t\treturn MathUtils.lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n\t},\n\n\t// https://www.desmos.com/calculator/vcsjnyz7x4\n\n\tpingpong: function ( x, length = 1 ) {\n\n\t\treturn length - Math.abs( MathUtils.euclideanModulo( x, length * 2 ) - length );\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from <low, high> interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from <low, high> interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\t// Deterministic pseudo-random float in the interval [ 0, 1 ]\n\n\tseededRandom: function ( s ) {\n\n\t\tif ( s !== undefined ) _seed = s % 2147483647;\n\n\t\t// Park-Miller algorithm\n\n\t\t_seed = _seed * 16807 % 2147483647;\n\n\t\treturn ( _seed - 1 ) / 2147483646;\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * MathUtils.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * MathUtils.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\n\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c2 = cos( b / 2 );\n\t\tconst s2 = sin( b / 2 );\n\n\t\tconst c13 = cos( ( a + c ) / 2 );\n\t\tconst s13 = sin( ( a + c ) / 2 );\n\n\t\tconst c1_3 = cos( ( a - c ) / 2 );\n\t\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\t\tconst c3_1 = cos( ( c - a ) / 2 );\n\t\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYX':\n\t\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZY':\n\t\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXZ':\n\t\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZX':\n\t\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXY':\n\t\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYZ':\n\t\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t}\n\n};\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tObject.defineProperty( this, 'isVector2', { value: true } );\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor() {\n\n\t\tObject.defineProperty( this, 'isMatrix3', { value: true } );\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).copy( this ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tscale( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nlet _canvas;\n\nconst ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\nlet textureId = 0;\n\nfunction Texture( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping;\n\n\tthis.wrapS = wrapS;\n\tthis.wrapT = wrapT;\n\n\tthis.magFilter = magFilter;\n\tthis.minFilter = minFilter;\n\n\tthis.anisotropy = anisotropy;\n\n\tthis.format = format;\n\tthis.internalFormat = null;\n\tthis.type = type;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = MathUtils.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t// check cube texture with data textures\n\n\t\t\t\t\t\tif ( image[ i ].isDataTexture ) {\n\n\t\t\t\t\t\t\turl.push( serializeImage( image[ i ].image ) );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\turl.push( serializeImage( image[ i ] ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = serializeImage( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.prototype.slice.call( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tObject.defineProperty( this, 'isVector4', { value: true } );\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width, height, options ) {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'isWebGLRenderTarget', { value: true } );\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\toptions = options || {};\n\n\t\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\t\tthis.texture.image = {};\n\t\tthis.texture.image.width = width;\n\t\tthis.texture.image.height = height;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, options ) {\n\n\t\tsuper( width, height, options );\n\n\t\tObject.defineProperty( this, 'isWebGLMultisampleRenderTarget', { value: true } );\n\n\t\tthis.samples = 4;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tObject.defineProperty( this, 'isQuaternion', { value: true } );\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerp( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tconst EPS = 0.000001;\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tObject.defineProperty( this, 'isVector3', { value: true } );\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min, max ) {\n\n\t\tObject.defineProperty( this, 'isBox3', { value: true } );\n\n\t\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\t\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$1.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box.copy( geometry.boundingBox );\n\t\t\t_box.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box );\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$1 );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1, _v0 );\n\t\t_f1.subVectors( _v2, _v1 );\n\t\t_f2.subVectors( _v0, _v2 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0, _v1, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0, _v1, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0, _v1, _v2, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t}\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\n\nconst _box = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nconst _box$1 = /*@__PURE__*/ new Box3();\n\nclass Sphere {\n\n\tconstructor( center, radius ) {\n\n\t\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\t\tthis.radius = ( radius !== undefined ) ? radius : - 1;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$1.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin, direction ) {\n\n\t\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\t\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$2.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$2.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$2.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$2.dot( this.direction );\n\t\tconst d2 = _vector$2.dot( _vector$2 ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tObject.defineProperty( this, 'isMatrix4', { value: true } );\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$1.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tObject.defineProperty( this, 'isEuler', { value: true } );\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order, update ) {\n\n\t\tconst clamp = MathUtils.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t}\n\n\tsetFromVector3( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$1.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\ttoVector3( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nconst _matrix = /*@__PURE__*/ new Matrix4();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$2 = new Vector3();\nconst _q1 = new Quaternion();\nconst _m1$1 = new Matrix4();\nconst _target = new Vector3();\n\nconst _position = new Vector3();\nconst _scale = new Vector3();\nconst _quaternion$2 = new Quaternion();\n\nconst _xAxis = new Vector3( 1, 0, 0 );\nconst _yAxis = new Vector3( 0, 1, 0 );\nconst _zAxis = new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tconst position = new Vector3();\n\tconst rotation = new Euler();\n\tconst quaternion = new Quaternion();\n\tconst scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.animations = [];\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateOnWorldAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t},\n\n\ttranslateOnAxis: function ( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$2.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$2.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t},\n\n\ttranslateX: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t},\n\n\ttranslateY: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t},\n\n\ttranslateZ: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t},\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t},\n\n\tlookAt: function ( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t},\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclear: function () {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t},\n\n\tattach: function ( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\ttarget = new Quaternion();\n\n\t\t}\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldScale: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal, constant ) {\n\n\t\tObject.defineProperty( this, 'isPlane', { value: true } );\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\t\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n}\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a, b, c ) {\n\n\t\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\t\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\t\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$1.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$1 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$1 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3 );\n\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3.x );\n\t\ttarget.addScaledVector( uv2, _v3.y );\n\t\ttarget.addScaledVector( uv3, _v3.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Plane();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tObject.defineProperty( this, 'isColor', { value: true } );\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tl = MathUtils.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopyGammaToLinear( color, gammaFactor = 2.0 ) {\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToGamma( color, gammaFactor = 2.0 ) {\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t}\n\n\tconvertGammaToLinear( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToGamma( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex() {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t}\n\n\tgetHexString() {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle() {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = MathUtils.lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\nColor.prototype.r = 1;\nColor.prototype.g = 1;\nColor.prototype.b = 1;\n\nclass Face3 {\n\n\tconstructor( a, b, c, normal, color, materialIndex = 0 ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\t\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\t\tthis.color = ( color && color.isColor ) ? color : new Color();\n\t\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\t\tthis.materialIndex = materialIndex;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( let i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( let i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexColors = false;\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.stencilWriteMask = 0xff;\n\tthis.stencilFunc = AlwaysStencilFunc;\n\tthis.stencilRef = 0;\n\tthis.stencilFuncMask = 0xff;\n\tthis.stencilFail = KeepStencilOp;\n\tthis.stencilZFail = KeepStencilOp;\n\tthis.stencilZPass = KeepStencilOp;\n\tthis.stencilWrite = false;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.toneMapped = true;\n\n\tthis.userData = {};\n\n\tthis.version = 0;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function ( /* shaderobject, renderer */ ) {},\n\n\tcustomProgramCacheKey: function () {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Material: \\'' + key + '\\' parameter is undefined.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': \\'' + key + '\\' is not a property of this material.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen && this.sheen.isColor ) data.sheen = this.sheen.getHex();\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nObject.defineProperty( Material.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n * map: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * specularMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: <float>,\n * refractionRatio: <float>,\n *\n * depthTest: <bool>,\n * depthWrite: <bool>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>\n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _vector$3 = new Vector3();\nconst _vector2$1 = new Vector2();\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$3.fromBufferAttribute( this, i );\n\t\t\t\t_vector$3.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\nfunction Float16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nFloat16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat16BufferAttribute.prototype.constructor = Float16BufferAttribute;\nFloat16BufferAttribute.prototype.isFloat16BufferAttribute = true;\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nlet _id = 0;\n\nconst _m1$2 = new Matrix4();\nconst _obj = new Object3D();\nconst _offset = new Vector3();\nconst _box$2 = new Box3();\nconst _boxMorphTargets = new Box3();\nconst _vector$4 = new Vector3();\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\tthis.morphTargetsRelative = false;\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tsetAttribute: function ( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tdeleteAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\thasAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$4.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$4.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$4.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeTangents: function () {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( attributes.tangent === undefined ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = attributes.tangent.array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$4.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$4.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z );\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _inverseMatrix = new Matrix4();\nconst _ray = new Ray();\nconst _sphere = new Sphere();\n\nconst _vA = new Vector3();\nconst _vB = new Vector3();\nconst _vC = new Vector3();\n\nconst _tempA = new Vector3();\nconst _tempB = new Vector3();\nconst _tempC = new Vector3();\n\nconst _morphA = new Vector3();\nconst _morphB = new Vector3();\nconst _morphC = new Vector3();\n\nconst _uvA = new Vector2();\nconst _uvB = new Vector2();\nconst _uvC = new Vector2();\n\nconst _intersectionPoint = new Vector3();\nconst _intersectionPointWorld = new Vector3();\n\nfunction Mesh( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry;\n\tthis.material = material;\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n} );\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA.fromBufferAttribute( position, a );\n\t_vB.fromBufferAttribute( position, b );\n\t_vC.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA.add( _morphA );\n\t\t_vB.add( _morphB );\n\t\t_vC.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA );\n\t\tobject.boneTransform( b, _vB );\n\t\tobject.boneTransform( c, _vC );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv, a );\n\t\t\t_uvB.fromBufferAttribute( uv, b );\n\t\t\t_uvC.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv2, a );\n\t\t\t_uvB.fromBufferAttribute( uv2, b );\n\t\t\t_uvC.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tconst face = new Face3( a, b, c );\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: <string>,\n * vertexShader: <string>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * lights: <bool>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tthis.glslVersion = null;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = Object.assign( {}, source.extensions );\n\n\tthis.glslVersion = source.glslVersion;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tconst data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.glslVersion = this.glslVersion;\n\tdata.uniforms = {};\n\n\tfor ( const name in this.uniforms ) {\n\n\t\tconst uniform = this.uniforms[ name ];\n\t\tconst value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tconst extensions = {};\n\n\tfor ( const key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\nfunction PerspectiveCamera( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov;\n\tthis.zoom = 1;\n\n\tthis.near = near;\n\tthis.far = far;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = MathUtils.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tconst vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn MathUtils.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, renderTarget ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\treturn;\n\n\t}\n\n\tthis.renderTarget = renderTarget;\n\n\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.layers = this.layers;\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.layers = this.layers;\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.layers = this.layers;\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.layers = this.layers;\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.layers = this.layers;\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.layers = this.layers;\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n\t// Why CubeTexture._needsFlipEnvMap is necessary:\n\t//\n\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t// and the flag _needsFlipEnvMap controls this conversion. The flip is not required (and thus _needsFlipEnvMap is set to false)\n\t// when using WebGLCubeRenderTarget.texture as a cube texture.\n\n\tthis._needsFlipEnvMap = true;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size, options, dummy ) {\n\n\t\tif ( Number.isInteger( options ) ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\t\toptions = dummy;\n\n\t\t}\n\n\t\tsuper( size, size, options );\n\n\t\tObject.defineProperty( this, 'isWebGLCubeRenderTarget', { value: true } );\n\n\t\toptions = options || {};\n\n\t\tthis.texture = new CubeTexture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\t\tthis.texture._needsFlipEnvMap = false;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.format = RGBAFormat; // see #18859\n\t\tthis.texture.encoding = texture.encoding;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include <begin_vertex>\n\t\t\t\t\t#include <project_vertex>\n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include <common>\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tthis.planes = [\n\n\t\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t\t];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$1.center.set( 0, 0, 0 );\n\t\t_sphere$1.radius = 0.7071067811865476;\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = 5131;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = 5123;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n}\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\nvar 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\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar 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\";\n\nvar 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\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor.xyz *= color.xyz;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\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\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_maxMipLevel 8.0\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_maxTileSize 256.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\\n\\t\\tvec2 f = fract( uv );\\n\\t\\tuv += 0.5 - f;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tif ( mipInt < cubeUV_maxMipLevel ) {\\n\\t\\t\\tuv.y += 2.0 * cubeUV_maxTileSize;\\n\\t\\t}\\n\\t\\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n\\t\\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\\n\\t\\tuv *= texelSize;\\n\\t\\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x += texelSize;\\n\\t\\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.y += texelSize;\\n\\t\\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x -= texelSize;\\n\\t\\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tvec3 tm = mix( tl, tr, f.x );\\n\\t\\tvec3 bm = mix( bl, br, f.x );\\n\\t\\treturn mix( tm, bm, f.y );\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar 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 = clamp( floor( D ) / 255.0, 0.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}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\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_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifndef ENVMAP_TYPE_CUBE_UV\\n\\t\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#endif\\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\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\nvar 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\";\n\nvar 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\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar 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;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\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\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\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\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\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\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\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\\t#pragma unroll_loop_end\\n#endif\";\n\nvar 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};\\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};\\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};\\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\";\n\nvar 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\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 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\\tvec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t\\tvec3 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\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial 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\\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)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\\nmaterial.specularRoughness = min( material.specularRoughness, 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 = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheen;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularRoughness;\\n\\tvec3 specularColor;\\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}\";\n\nvar 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#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\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\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\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\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\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\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\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\\t#pragma unroll_loop_end\\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_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar 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\";\n\nvar 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\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifndef USE_MORPHNORMALS\\n\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\n\nvar 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\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar 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\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\";\n\nvar 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, vec3 mapN ) {\\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\\tmat3 tsn = mat3( S, T, N );\\n\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\treturn normalize( tsn * mapN );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar 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 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\\n}\\nvec2 unpackRGBATo2Half( 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}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar 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;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar 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\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar 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\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ 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\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ 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\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ 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 unpackRGBATo2Half( 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 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 dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\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\";\n\nvar 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\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ 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\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ 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\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\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}\\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 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmissionmap_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\\n#endif\";\n\nvar transmissionmap_pars_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\tuniform sampler2D transmissionMap;\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar 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\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar 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\";\n\nvar 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}\";\n\nvar 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}\";\n\nvar cube_frag = \"#include <envmap_common_pars_fragment>\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include <cube_uv_reflection_fragment>\\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nvar 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}\";\n\nvar 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>\\nvarying vec2 vHighPrecisionZW;\\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\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nvar 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>\\nvarying vec2 vHighPrecisionZW;\\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\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nvar 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}\";\n\nvar 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}\";\n\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nvar 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}\";\n\nvar 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 <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nvar 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 <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include <color_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\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 <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_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\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * 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 <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar 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}\";\n\nvar 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 <cube_uv_reflection_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\\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}\";\n\nvar 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}\";\n\nvar 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 <dithering_pars_fragment>\\n#include <color_pars_fragment>\\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 <color_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 <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar 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 <color_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 <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#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}\";\n\nvar meshtoon_frag = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\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 <gradientmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <lights_toon_pars_fragment>\\n#include <shadowmap_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\\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 <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_toon_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 + totalEmissiveRadiance;\\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}\";\n\nvar meshtoon_vert = \"#define TOON\\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 <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 <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar 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 <cube_uv_reflection_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}\";\n\nvar 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}\";\n\nvar meshphysical_frag = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define REFLECTIVITY\\n\\t#define CLEARCOAT\\n\\t#define TRANSMISSION\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef TRANSMISSION\\n\\tuniform float transmission;\\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 <transmissionmap_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_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#ifdef TRANSMISSION\\n\\t\\tfloat totalTransmission = transmission;\\n\\t#endif\\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 <transmissionmap_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 TRANSMISSION\\n\\t\\tdiffuseColor.a *= mix( saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) ), 1.0, metalness );\\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}\";\n\nvar 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}\";\n\nvar 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}\";\n\nvar 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}\";\n\nvar 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 <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nvar 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}\";\n\nvar 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 <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nvar shadow_vert = \"#include <common>\\n#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 <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 <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar 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}\";\n\nvar 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}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmissionmap_fragment: transmissionmap_fragment,\n\ttransmissionmap_pars_fragment: transmissionmap_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshtoon_frag: meshtoon_frag,\n\tmeshtoon_vert: meshtoon_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: new Color( 0x000000 ) },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, cubemaps, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tbackground = cubemaps.get( background );\n\n\t\t}\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tif ( background.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t// TODO Deprecate\n\n\t\t\t\tbackground = background.texture;\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background._needsFlipEnvMap ) ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry, index );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\tattributesNum ++;\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t\tattributesNum ++;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tconst geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( name === 'instanceMatrix' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceMatrix );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 0, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 1, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 2, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 3, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\n\n\t\t\t\t} else if ( name === 'instanceColor' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceColor );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute, 3, type, false, 12, 0 );\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst currentRenderList = renderer.getRenderList();\n\t\t\t\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\trenderer.setRenderTarget( currentRenderTarget );\n\t\t\t\t\t\trenderer.setRenderList( currentRenderList );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\tlet influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tworkInfluences.sort( numericalSort );\n\n\t\tconst morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tconst morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tconst influence = workInfluences[ i ];\n\t\t\tconst index = influence[ 0 ];\n\t\t\tconst value = influence[ 1 ];\n\n\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t} else {\n\n\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nfunction DataTexture2DArray( data = null, width = 1, height = 1, depth = 1 ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data, width, height, depth };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\nfunction DataTexture3D( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data, width, height, depth };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// uint\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tconst cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tcase LogLuvEncoding:\n\t\t\treturn [ 'LogLuv', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tconst source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tconst parameterNames = [\n\t\t'precision', 'isWebGL2', 'supportsVertexTextures', 'outputEncoding', 'instancing', 'instancingColor',\n\t\t'map', 'mapEncoding', 'matcap', 'matcapEncoding', 'envMap', 'envMapMode', 'envMapEncoding', 'envMapCubeUV',\n\t\t'lightMap', 'lightMapEncoding', 'aoMap', 'emissiveMap', 'emissiveMapEncoding', 'bumpMap', 'normalMap', 'objectSpaceNormalMap', 'tangentSpaceNormalMap', 'clearcoatMap', 'clearcoatRoughnessMap', 'clearcoatNormalMap', 'displacementMap', 'specularMap',\n\t\t'roughnessMap', 'metalnessMap', 'gradientMap',\n\t\t'alphaMap', 'combine', 'vertexColors', 'vertexTangents', 'vertexUvs', 'uvsVertexOnly', 'fog', 'useFog', 'fogExp2',\n\t\t'flatShading', 'sizeAttenuation', 'logarithmicDepthBuffer', 'skinning',\n\t\t'maxBones', 'useVertexTexture', 'morphTargets', 'morphNormals',\n\t\t'maxMorphTargets', 'maxMorphNormals', 'premultipliedAlpha',\n\t\t'numDirLights', 'numPointLights', 'numSpotLights', 'numHemiLights', 'numRectAreaLights',\n\t\t'numDirLightShadows', 'numPointLightShadows', 'numSpotLightShadows',\n\t\t'shadowMapEnabled', 'shadowMapType', 'toneMapping', 'physicallyCorrectLights',\n\t\t'alphaTest', 'doubleSided', 'flipSided', 'numClippingPlanes', 'numClipIntersection', 'depthPacking', 'dithering',\n\t\t'sheen', 'transmissionMap'\n\t];\n\n\tfunction getMaxBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( map && map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map && map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLPrograms.getTextureEncodingFromMap: don\\'t use render targets as textures. Use their .texture property instead.' );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t} else {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = cubemaps.get( material.envMap || environment );\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? getMaxBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet vertexShader, fragmentShader;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\tclearcoatMap: !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: !! material.sheen,\n\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap || !! material.transmissionMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || !! material.transmissionMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.fragmentShader );\n\t\t\tarray.push( parameters.vertexShader );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList( properties ) {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: materialProperties.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = materialProperties.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists( properties ) {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, camera ) {\n\n\t\tconst cameras = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList( properties );\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\n\n\t\t} else {\n\n\t\t\tlist = cameras.get( camera );\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList( properties );\n\t\t\t\tcameras.set( camera, list );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights() {\n\n\t\tlights.setup( lightsArray );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [] );\n\t\t\trenderStates.get( scene ).push( renderState );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStates.get( scene ).length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStates.get( scene ).push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * parameters = {\n *\n * opacity: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>\n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n *\n * referencePosition: <float>,\n * nearDistance: <float>,\n * farDistance: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>\n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include <packing>\\nvoid main() {\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n\\tfor ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean * HALF_SAMPLE_RATE;\\n\\tsquared_mean = squared_mean * HALF_SAMPLE_RATE;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterials = [],\n\t\t_distanceMaterials = [],\n\n\t\t_materialCache = {};\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\n\t\tdefines: {\n\t\t\tSAMPLE_RATE: 2.0 / 8.0,\n\t\t\tHALF_SAMPLE_RATE: 1.0 / 8.0\n\t\t},\n\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vsm_vert,\n\n\t\tfragmentShader: vsm_frag\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _depthMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDepthMaterial( {\n\n\t\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_depthMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _distanceMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDistanceMaterial( {\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tlet getMaterialVariant = getDepthMaterialVariant;\n\t\tlet customMaterial = object.customDepthMaterial;\n\n\t\tif ( light.isPointLight === true ) {\n\n\t\t\tgetMaterialVariant = getDistanceMaterialVariant;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( customMaterial === undefined ) {\n\n\t\t\tlet useMorphing = false;\n\n\t\t\tif ( material.morphTargets === true ) {\n\n\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t}\n\n\t\t\tlet useSkinning = false;\n\n\t\t\tif ( object.isSkinnedMesh === true ) {\n\n\t\t\t\tif ( material.skinning === true ) {\n\n\t\t\t\t\tuseSkinning = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst useInstancing = object.isInstancedMesh === true;\n\n\t\t\tresult = getMaterialVariant( useMorphing, useSkinning, useInstancing );\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = null;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst currentScissor = new Vector4();\n\tconst currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = null;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\tconst cubeImage = [];\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t} else {\n\n\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst image = cubeImage[ 0 ],\n\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\tglType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\tlet mipmaps;\n\n\t\tif ( isCompressed ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else {\n\n\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t// We assume images for cube map have the same size.\n\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && renderTarget.texture.format === RGBFormat && ( renderTarget.texture.type === FloatType || renderTarget.texture.type === HalfFloatType ) ) {\n\n\t\t\trenderTarget.texture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); // see #18905\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLTextures.safeSetTexture2D: don\\'t use render targets as textures. Use their .texture property instead.' );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLTextures.safeSetTextureCube: don\\'t use cube render targets as textures. Use their .texture property instead.' );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\n\t\tsetTextureCube( texture, slot );\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nfunction ArrayCamera( array = [] ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array;\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\nfunction WebXRController() {\n\n\tthis._targetRay = null;\n\tthis._grip = null;\n\tthis._hand = null;\n\n}\n\nObject.assign( WebXRController.prototype, {\n\n\tconstructor: WebXRController,\n\n\tgetHandSpace: function () {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t},\n\n\tgetTargetRaySpace: function () {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t},\n\n\tgetGripSpace: function () {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function ( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function ( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\t\tconst joint = new Group();\n\t\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\t\t\t\t\t\t// ??\n\t\t\t\t\t\thand.add( joint );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst joint = hand.joints[ inputjoint.jointName ];\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction WebXRManager( renderer, gl ) {\n\n\tconst scope = this;\n\n\tlet session = null;\n\n\tlet framebufferScaleFactor = 1.0;\n\n\tlet referenceSpace = null;\n\tlet referenceSpaceType = 'local-floor';\n\n\tlet pose = null;\n\n\tconst controllers = [];\n\tconst inputSourcesMap = new Map();\n\n\t//\n\n\tconst cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tconst cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tconst cameras = [ cameraL, cameraR ];\n\n\tconst cameraVR = new ArrayCamera();\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\tlet _currentDepthNear = null;\n\tlet _currentDepthFar = null;\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.isPresenting = false;\n\n\tthis.getController = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getTargetRaySpace();\n\n\t};\n\n\tthis.getControllerGrip = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getGripSpace();\n\n\t};\n\n\tthis.getHand = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getHandSpace();\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\tif ( controller ) {\n\n\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\tcontroller.disconnect( inputSource );\n\n\t\t} );\n\n\t\tinputSourcesMap.clear();\n\n\t\t_currentDepthNear = null;\n\t\t_currentDepthFar = null;\n\n\t\t//\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.isPresenting = false;\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.getReferenceSpace = function () {\n\n\t\treturn referenceSpace;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = async function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tconst attributes = gl.getContextAttributes();\n\n\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t}\n\n\t\t\tconst layerInit = {\n\t\t\t\tantialias: attributes.antialias,\n\t\t\t\talpha: attributes.alpha,\n\t\t\t\tdepth: attributes.depth,\n\t\t\t\tstencil: attributes.stencil,\n\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t};\n\n\t\t\t// eslint-disable-next-line no-undef\n\t\t\tconst baseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\n\n\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\tanimation.setContext( session );\n\t\t\tanimation.start();\n\n\t\t\tscope.isPresenting = true;\n\n\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t}\n\n\t};\n\n\tfunction onInputSourcesChange( event ) {\n\n\t\tconst inputSources = session.inputSources;\n\n\t\t// Assign inputSources to available controllers\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t}\n\n\t\t// Notify disconnected\n\n\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\tconst inputSource = event.removed[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Notify connected\n\n\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\tconst inputSource = event.added[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst cameraLPos = new Vector3();\n\tconst cameraRPos = new Vector3();\n\n\t/**\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t * the cameras' projection and world matrices have already been set.\n\t * And that near and far planes are identical for both cameras.\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t */\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t// VR systems will have identical far and near planes, and\n\t\t// most likely identical top and bottom frustum extents.\n\t\t// Use the left camera for these values.\n\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\tconst left = near * leftFov;\n\t\tconst right = near * rightFov;\n\n\t\t// Calculate the new camera's position offset from the\n\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t// TODO: Better way to apply this offset?\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.translateX( xOffset );\n\t\tcamera.translateZ( zOffset );\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t// Find the union of the frustum values of the cameras and scale\n\t\t// the values so that the near plane's position does not change in world space,\n\t\t// although must now be relative to the new union camera.\n\t\tconst near2 = near + zOffset;\n\t\tconst far2 = far + zOffset;\n\t\tconst left2 = left - xOffset;\n\t\tconst right2 = right + ( ipd - xOffset );\n\t\tconst top2 = topFov * far / far2 * near2;\n\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t}\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\tsession.updateRenderState( {\n\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\tdepthFar: cameraVR.far\n\t\t\t} );\n\n\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t}\n\n\t\tconst parent = camera.parent;\n\t\tconst cameras = cameraVR.cameras;\n\n\t\tupdateCamera( cameraVR, parent );\n\n\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t}\n\n\t\t// update camera and its children\n\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\t\tcamera.matrix.copy( cameraVR.matrix );\n\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\n\t\tconst children = camera.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t\t// update projection matrix for proper view frustum culling\n\n\t\tif ( cameras.length === 2 ) {\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t} else {\n\n\t\t\t// assume single camera setup (AR)\n\n\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t}\n\n\t\treturn cameraVR;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tconst views = pose.views;\n\t\t\tconst baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tconst view = views[ i ];\n\t\t\t\tconst viewport = baseLayer.getViewport( view );\n\n\t\t\t\tconst camera = cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst inputSources = session.inputSources;\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tconst controller = controllers[ i ];\n\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap._needsFlipEnvMap ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tconst maxMipLevel = properties.get( envMap ).__maxMipLevel;\n\n\t\t\tif ( maxMipLevel !== undefined ) {\n\n\t\t\t\tuniforms.maxMipLevel.value = maxMipLevel;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. displacementMap map\n\t\t// 4. normal map\n\t\t// 5. bump map\n\t\t// 6. roughnessMap map\n\t\t// 7. metalnessMap map\n\t\t// 8. alphaMap map\n\t\t// 9. emissiveMap map\n\t\t// 10. clearcoat map\n\t\t// 11. clearcoat normal map\n\t\t// 12. clearcoat roughnessMap map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t} else if ( material.clearcoatMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatMap;\n\n\t\t} else if ( material.clearcoatNormalMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\n\t\t} else if ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material ) {\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\n\n\t\tif ( material.clearcoatMap ) {\n\n\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.transmission.value = material.transmission;\n\n\t\tif ( material.transmissionMap ) {\n\n\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// render() can be called from within a callback triggered by another render.\n\t// We track this so that the nested render call gets its state isolated from the parent render call.\n\n\tconst renderStateStack = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _framebuffer = null;\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentFramebuffer = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, cubemaps, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates, clipping;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\textensions.init( capabilities );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tclipping = new WebGLClipping( properties );\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, extensions, capabilities, bindingStates, clipping );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists( properties );\n\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\tbackground = new WebGLBackground( _this, cubemaps, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// shadow map\n\n\tconst shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getClearColor() now requires a Color as an argument' );\n\n\t\t\ttarget = new Color();\n\n\t\t}\n\n\t\treturn target.copy( background.getClearColor() );\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tcubemaps.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tconst programInfo = properties.get( material ).program;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tbindingStates.initAttributes();\n\n\t\tconst buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tbindingStates.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tif ( material.morphTargets || material.morphNormals ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights();\n\n\t\tconst compiled = new WeakMap();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\tif ( compiled.has( material2 ) === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( material2, scene, object );\n\t\t\t\t\t\t\tcompiled.set( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( compiled.has( material ) === false ) {\n\n\t\t\t\t\tinitMaterial( material, scene, object );\n\t\t\t\t\tcompiled.set( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( xr.isPresenting ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tlet renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// reset caching for this frame\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tcamera = xr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights();\n\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\t// _gl.finish();\n\n\t\trenderStateStack.pop();\n\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderState = null;\n\n\t\t}\n\n\t\tcurrentRenderList = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLightsView( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tbindingStates.reset();\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t}\n\n\tfunction initMaterial( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet program = materialProperties.program;\n\t\tlet programChange = true;\n\n\t\t// always update environment and fog - changing these trigger an initMaterial call, but it's possible that the program doesn't change\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\t\tmaterialProperties.envMap = cubemaps.get( material.envMap || materialProperties.environment );\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t}\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = materialProperties.program.getUniforms();\n\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, scene, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\t\tconst envMap = cubemaps.get( material.envMap || environment );\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.environment !== environment ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tinitMaterial( material, scene, object );\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// otherwise textures used for skinning can take over texture units reserved for other material textures\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tconst bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tlet size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = MathUtils.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height );\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderList = function () {\n\n\t\treturn currentRenderList;\n\n\t};\n\n\tthis.setRenderList = function ( renderList ) {\n\n\t\tcurrentRenderList = renderList;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tlet framebuffer = _framebuffer;\n\t\tlet isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tlet restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\t\tconst glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.resetState = function () {\n\n\t\tstate.reset();\n\t\tbindingStates.reset();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nfunction WebGL1Renderer( parameters ) {\n\n\tWebGLRenderer.call( this, parameters );\n\n}\n\nWebGL1Renderer.prototype = Object.assign( Object.create( WebGLRenderer.prototype ), {\n\n\tconstructor: WebGL1Renderer,\n\n\tisWebGL1Renderer: true\n\n} );\n\nclass FogExp2 {\n\n\tconstructor( color, density ) {\n\n\t\tObject.defineProperty( this, 'isFogExp2', { value: true } );\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near, far ) {\n\n\t\tObject.defineProperty( this, 'isFog', { value: true } );\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = ( near !== undefined ) ? near : 1;\n\t\tthis.far = ( far !== undefined ) ? far : 1000;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'isScene', { value: true } );\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new InterleavedBuffer( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n} );\n\nconst _vector$6 = new Vector3();\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.name = '';\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t},\n\n\tneedsUpdate: {\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.data.needsUpdate = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: <hex>,\n * map: new THREE.Texture( <Image> ),\n * alphaMap: new THREE.Texture( <Image> ),\n * rotation: <float>,\n * sizeAttenuation: <bool>\n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\nlet _geometry;\n\nconst _intersectPoint = new Vector3();\nconst _worldScale = new Vector3();\nconst _mvPosition = new Vector3();\n\nconst _alignedPosition = new Vector2();\nconst _rotatedPosition = new Vector2();\nconst _viewWorldMatrix = new Matrix4();\n\nconst _vA$1 = new Vector3();\nconst _vB$1 = new Vector3();\nconst _vC$1 = new Vector3();\n\nconst _uvA$1 = new Vector2();\nconst _uvB$1 = new Vector2();\nconst _uvC$1 = new Vector2();\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( _geometry === undefined ) {\n\n\t\t_geometry = new BufferGeometry();\n\n\t\tconst float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = _geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA$1.set( 0, 0 );\n\t\t_uvB$1.set( 1, 0 );\n\t\t_uvC$1.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB$1.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$4 = new Vector3();\nconst _v2$2 = new Vector3();\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis._currentLevel = 0;\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetCurrentLevel: function () {\n\n\t\treturn this._currentLevel;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$4 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t},\n\n\tupdate: function ( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$4.distanceTo( _v2$2 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst _basePosition = new Vector3();\n\nconst _skinIndex = new Vector4();\nconst _skinWeight = new Vector4();\n\nconst _vector$7 = new Vector3();\nconst _matrix$1 = new Matrix4();\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t},\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tboneTransform: function ( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix$1.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector$7.copy( _basePosition ).applyMatrix4( _matrix$1 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n} );\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\nconst _offsetMatrix = new Matrix4();\nconst _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones = [], boneInverses = [] ) {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneInverses = boneInverses;\n\tthis.boneMatrices = null;\n\n\tthis.boneTexture = null;\n\tthis.boneTextureSize = 0;\n\n\tthis.frame = - 1;\n\n\tthis.init();\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tinit: function () {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: function () {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tdispose: function ( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t},\n\n\tfromJSON: function ( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst _instanceLocalMatrix = new Matrix4();\nconst _instanceWorldMatrix = new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = new Mesh();\n\nfunction InstancedMesh( geometry, material, count ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\n\tthis.instanceColor = null;\n\n\tthis.count = count;\n\n\tthis.frustumCulled = false;\n\n}\n\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: InstancedMesh,\n\n\tisInstancedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t},\n\n\tgetColorAt: function ( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t},\n\n\tgetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t},\n\n\tsetColorAt: function ( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new BufferAttribute( new Float32Array( this.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t},\n\n\tsetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n *\n * linewidth: <float>,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _start = new Vector3();\nconst _end = new Vector3();\nconst _inverseMatrix$1 = new Matrix4();\nconst _ray$1 = new Ray();\nconst _sphere$2 = new Sphere();\n\nfunction Line( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry;\n\tthis.material = material;\n\n\tthis.updateMorphTargets();\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\t\t_sphere$2.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\t\t\t\t\tconst b = indices[ i + 1 ];\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nconst _start$1 = new Vector3();\nconst _end$1 = new Vector3();\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n * map: new THREE.Texture( <Image> ),\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * size: <float>,\n * sizeAttenuation: <bool>\n *\n * morphTargets: <bool>\n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\nconst _inverseMatrix$2 = new Matrix4();\nconst _ray$2 = new Ray();\nconst _sphere$3 = new Sphere();\nconst _position$1 = new Vector3();\n\nfunction Points( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry;\n\tthis.material = material;\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\t\t_sphere$3.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\n\t\t\t\t\t_position$1.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n\tconst scope = this;\n\n\tfunction updateVideo() {\n\n\t\tscope.needsUpdate = true;\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t}\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t},\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps = false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices, indices, radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n}\n\nconst _v0$2 = new Vector3();\nconst _v1$5 = new Vector3();\nconst _normal$1 = new Vector3();\nconst _triangle = new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry, thresholdAngle ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t\tif ( geometry.isGeometry === true ) {\n\n\t\t\tconsole.error( 'THREE.EdgesGeometry no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst precisionPoints = 4;\n\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\tconst thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\n\t\tconst indexAttr = geometry.getIndex();\n\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\tconst indexArr = [ 0, 0, 0 ];\n\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\tconst hashes = new Array( 3 );\n\n\t\tconst edgeData = {};\n\t\tconst vertices = [];\n\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\tif ( indexAttr ) {\n\n\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t} else {\n\n\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t}\n\n\t\t\tconst { a, b, c } = _triangle;\n\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t_triangle.getNormal( _normal$1 );\n\n\t\t\t// create hashes for the edge from the vertices\n\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t// skip degenerate triangles\n\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// iterate over every edge\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\tif ( _normal$1.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\tnormal: _normal$1.clone(),\n\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\tfor ( const key in edgeData ) {\n\n\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t_v0$2.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t_v1$5.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\tvertices.push( _v0$2.x, _v0$2.y, _v0$2.z );\n\t\t\t\tvertices.push( _v1$5.x, _v1$5.y, _v1$5.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode;\n\tconst hx = hole.x;\n\tconst hy = hole.y;\n\tlet qx = - Infinity, m;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nconst ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: <int>, // number of points on the curves\n * steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: <float>, // Depth to extrude the shape\n *\n * bevelEnabled: <bool>, // turn on bevel\n * bevelThickness: <float>, // how deep into the original shape bevel goes\n * bevelSize: <float>, // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: <float>, // how far from shape outline does bevel start\n * bevelSegments: <int>, // number of bevel layers\n *\n * extrudePath: <THREE.Curve> // curve to extrude shape along\n *\n * UVGenerator: <Object> // object that provides UV generator functions\n *\n * }\n */\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes, options ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tlet depth = options.depth !== undefined ? options.depth : 100;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t// deprecated options\n\n\t\t\tif ( options.amount !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\t\tdepth = options.amount;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON( shapes, options, data );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points, segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices and uvs\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// generate normals\n\n\t\tthis.computeVertexNormals();\n\n\t\t// if the geometry is closed, we need to average the normals along the seam.\n\t\t// because the corresponding vertices are identical (but still have different UVs).\n\n\t\tif ( phiLength === Math.PI * 2 ) {\n\n\t\t\tconst normals = this.attributes.normal.array;\n\t\t\tconst n1 = new Vector3();\n\t\t\tconst n2 = new Vector3();\n\t\t\tconst n = new Vector3();\n\n\t\t\t// this is the buffer offset for the last line of vertices\n\n\t\t\tconst base = segments * points.length * 3;\n\n\t\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t\t// select the normal of the vertex in the first line\n\n\t\t\t\tn1.x = normals[ j + 0 ];\n\t\t\t\tn1.y = normals[ j + 1 ];\n\t\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t\t// select the normal of the vertex in the last line\n\n\t\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t\t// average normals\n\n\t\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t\t// assign the new values to both normals\n\n\t\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n}\n\n/**\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n */\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\tconst EPS = 0.00001;\n\n\tconst normal = new Vector3();\n\n\tconst p0 = new Vector3(), p1 = new Vector3();\n\tconst pu = new Vector3(), pv = new Vector3();\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tconst sliceCount = slices + 1;\n\n\tfor ( let i = 0; i <= stacks; i ++ ) {\n\n\t\tconst v = i / stacks;\n\n\t\tfor ( let j = 0; j <= slices; j ++ ) {\n\n\t\t\tconst u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( let j = 0; j < slices; j ++ ) {\n\n\t\t\tconst a = i * sliceCount + j;\n\t\t\tconst b = i * sliceCount + j + 1;\n\t\t\tconst c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tconst d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes, curveSegments = 12 ) {\n\n\t\tsuper();\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// incides\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON$1( shapes, data );\n\n\t}\n\n}\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 8, heightSegments = 6, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n}\n\n/**\n * Text = 3D Text\n *\n * parameters = {\n * font: <THREE.Font>, // font\n *\n * size: <float>, // size of the text\n * height: <float>, // thickness to extrude text\n * curveSegments: <int>, // number of points on the curves\n *\n * bevelEnabled: <bool>, // turn on bevel\n * bevelThickness: <float>, // how deep into text bevel goes\n * bevelSize: <float>, // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: <float> // how far from text outline does bevel start\n * }\n */\n\nclass TextGeometry extends ExtrudeGeometry {\n\n\tconstructor( text, parameters = {} ) {\n\n\t\tconst font = parameters.font;\n\n\t\tif ( ! ( font && font.isFont ) ) {\n\n\t\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\t\treturn new BufferGeometry();\n\n\t\t}\n\n\t\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t\t// translate parameters to ExtrudeGeometry API\n\n\t\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t\t// defaults\n\n\t\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\t\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\t\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\t\tsuper( shapes, parameters );\n\n\t\tthis.type = 'TextGeometry';\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path, tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\ttoJSON() {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry ) {\n\n\t\tsuper();\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tif ( geometry.isGeometry === true ) {\n\n\t\t\tconsole.error( 'THREE.WireframeGeometry no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\n\t\t// helper variables\n\n\t\tconst edge = [ 0, 0 ], edges = {};\n\n\t\tconst vertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst indices = geometry.index;\n\t\t\tlet groups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tconst edge1 = indices.getX( i + j );\n\t\t\t\t\t\tconst edge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( const key in edges ) {\n\n\t\t\t\tconst e = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\n/**\n * parameters = {\n * color: <THREE.Color>\n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * parameters = {\n * color: <hex>,\n * roughness: <float>,\n * metalness: <float>,\n * opacity: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * emissive: <hex>,\n * emissiveIntensity: <float>\n * emissiveMap: new THREE.Texture( <Image> ),\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * roughnessMap: new THREE.Texture( <Image> ),\n *\n * metalnessMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: <float>\n *\n * refractionRatio: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 1.0;\n\tthis.metalness = 0.0;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.vertexTangents = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.vertexTangents = source.vertexTangents;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * clearcoat: <float>,\n * clearcoatMap: new THREE.Texture( <Image> ),\n * clearcoatRoughness: <float>,\n * clearcoatRoughnessMap: new THREE.Texture( <Image> ),\n * clearcoatNormalScale: <Vector2>,\n * clearcoatNormalMap: new THREE.Texture( <Image> ),\n *\n * reflectivity: <float>,\n * ior: <float>,\n *\n * sheen: <Color>,\n *\n * transmission: <float>,\n * transmissionMap: new THREE.Texture( <Image> )\n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.clearcoat = 0.0;\n\tthis.clearcoatMap = null;\n\tthis.clearcoatRoughness = 0.0;\n\tthis.clearcoatRoughnessMap = null;\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\tthis.clearcoatNormalMap = null;\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tObject.defineProperty( this, 'ior', {\n\t\tget: function () {\n\n\t\t\treturn ( 1 + 0.4 * this.reflectivity ) / ( 1 - 0.4 * this.reflectivity );\n\n\t\t},\n\t\tset: function ( ior ) {\n\n\t\t\tthis.reflectivity = MathUtils.clamp( 2.5 * ( ior - 1 ) / ( ior + 1 ), 0, 1 );\n\n\t\t}\n\t} );\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.transmission = 0.0;\n\tthis.transmissionMap = null;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.clearcoat = source.clearcoat;\n\tthis.clearcoatMap = source.clearcoatMap;\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\tthis.reflectivity = source.reflectivity;\n\n\tif ( source.sheen ) {\n\n\t\tthis.sheen = ( this.sheen || new Color() ).copy( source.sheen );\n\n\t} else {\n\n\t\tthis.sheen = null;\n\n\t}\n\n\tthis.transmission = source.transmission;\n\tthis.transmissionMap = source.transmissionMap;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: <hex>,\n * specular: <hex>,\n * shininess: <float>,\n * opacity: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * emissive: <hex>,\n * emissiveIntensity: <float>\n * emissiveMap: new THREE.Texture( <Image> ),\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * specularMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: <float>,\n * refractionRatio: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: <hex>,\n *\n * map: new THREE.Texture( <Image> ),\n * gradientMap: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * emissive: <hex>,\n * emissiveIntensity: <float>\n * emissiveMap: new THREE.Texture( <Image> ),\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\tthis.gradientMap = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( Material.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\tthis.gradientMap = source.gradientMap;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * opacity: <float>,\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * emissive: <hex>,\n * emissiveIntensity: <float>\n * emissiveMap: new THREE.Texture( <Image> ),\n *\n * specularMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: <float>,\n * refractionRatio: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n *\n * matcap: new THREE.Texture( <Image> ),\n *\n * map: new THREE.Texture( <Image> ),\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n *\n * linewidth: <float>,\n *\n * scale: <float>,\n * dashSize: <float>,\n * gapSize: <float>\n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\t\tif ( fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = referenceClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tlet referenceOffset = 0;\n\t\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t\t}\n\n\t\t\tlet targetOffset = 0;\n\t\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t\t}\n\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function ( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n * A Track of Boolean keyframe values.\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n * A Track of keyframe values that represent color.\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n * A Track of numeric keyframe values.\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * A Track of quaternion keyframe values.\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n * A Track that interpolates Strings\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n * A Track of vectored keyframe values.\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\nfunction AnimationClip( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = duration;\n\tthis.blendMode = blendMode;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new AnimationClip( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new AnimationClip( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks, this.blendMode );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn AnimationClip.toJSON( this );\n\n\t}\n\n} );\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tconst scope = this;\n\n\tlet isLoading = false;\n\tlet itemsLoaded = 0;\n\tlet itemsTotal = 0;\n\tlet urlModifier = undefined;\n\tconst handlers = [];\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\n\t\treturn this;\n\n\t};\n\n\tthis.addHandler = function ( regex, loader ) {\n\n\t\thandlers.push( regex, loader );\n\n\t\treturn this;\n\n\t};\n\n\tthis.removeHandler = function ( regex ) {\n\n\t\tconst index = handlers.indexOf( regex );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\thandlers.splice( index, 2 );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\tthis.getHandler = function ( file ) {\n\n\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tconst regex = handlers[ i ];\n\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t};\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.withCredentials = false;\n\tthis.path = '';\n\tthis.resourcePath = '';\n\tthis.requestHeader = {};\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tloadAsync: function ( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t},\n\n\tparse: function ( /* data */ ) {},\n\n\tsetCrossOrigin: function ( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n} );\n\nconst loading = {};\n\nfunction FileLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FileLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tconst dataUriRegexResult = url.match( dataUriRegex );\n\t\tlet request;\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tconst mimeType = dataUriRegexResult[ 1 ];\n\t\t\tconst isBase64 = !! dataUriRegexResult[ 2 ];\n\n\t\t\tlet data = dataUriRegexResult[ 3 ];\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tlet response;\n\t\t\t\tconst responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tconst view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\trequest = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tconst response = this.response;\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( const header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AnimationLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AnimationLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n} );\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CompressedTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\nfunction ImageLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n} );\n\nfunction CubeTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CubeTextureLoader,\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DataTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\nfunction TextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tconst isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t},\n\n\tgetTangentAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst twoPi = Math.PI * 2;\n\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tconst angle = this.aStartAngle + t * deltaAngle;\n\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tconst cos = Math.cos( this.aRotation );\n\t\tconst sin = Math.sin( this.aRotation );\n\n\t\tconst tx = x - this.aX;\n\t\tconst ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points;\n\tthis.closed = closed;\n\tthis.curveType = curveType;\n\tthis.tension = tension;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget = new Vector3() ) {\n\n\tconst point = optionalTarget;\n\n\tconst points = this.points;\n\tconst l = points.length;\n\n\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tlet intPoint = Math.floor( p );\n\tlet weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tconst p1 = points[ intPoint % l ];\n\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\tthis.v3 = v3;\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget = new Vector2() ) {\n\n\tconst point = optionalTarget;\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\tthis.v3 = v3;\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget = new Vector3() ) {\n\n\tconst point = optionalTarget;\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget = new Vector2() ) {\n\n\tconst point = optionalTarget;\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( t, optionalTarget ) {\n\n\tconst tangent = optionalTarget || new Vector2();\n\n\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\treturn tangent;\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget = new Vector3() ) {\n\n\tconst point = optionalTarget;\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget = new Vector2() ) {\n\n\tconst point = optionalTarget;\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0;\n\tthis.v1 = v1;\n\tthis.v2 = v2;\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget = new Vector3() ) {\n\n\tconst point = optionalTarget;\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points = [] ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points;\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget = new Vector2() ) {\n\n\tconst point = optionalTarget;\n\n\tconst points = this.points;\n\tconst p = ( points.length - 1 ) * t;\n\n\tconst intPoint = Math.floor( p );\n\tconst weight = p - intPoint;\n\n\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tconst p1 = points[ intPoint ];\n\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 <d\n\n\t},\n\n\t// We cannot use the default THREE.Curve getPoint() with getLength() because in\n\t// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n\t// getPoint() depends on getLength\n\n\tgetLength: function () {\n\n\t\tconst lens = this.getCurveLengths();\n\t\treturn lens[ lens.length - 1 ];\n\n\t},\n\n\t// cacheLengths must be recalculated.\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.cacheLengths = null;\n\t\tthis.getCurveLengths();\n\n\t},\n\n\t// Compute lengths and cache them\n\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\n\tgetCurveLengths: function () {\n\n\t\t// We use cache values if curves and cache array are same length\n\n\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\treturn this.cacheLengths;\n\n\t\t}\n\n\t\t// Get length of sub-curve\n\t\t// Push sums into cached array\n\n\t\tconst lengths = [];\n\t\tlet sums = 0;\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tsums += this.curves[ i ].getLength();\n\t\t\tlengths.push( sums );\n\n\t\t}\n\n\t\tthis.cacheLengths = lengths;\n\n\t\treturn lengths;\n\n\t},\n\n\tgetSpacedPoints: function ( divisions = 40 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let i = 0; i <= divisions; i ++ ) {\n\n\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t}\n\n\t\tif ( this.autoClose ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tgetPoints: function ( divisions = 12 ) {\n\n\t\tconst points = [];\n\t\tlet last;\n\n\t\tfor ( let i = 0, curves = this.curves; i < curves.length; i ++ ) {\n\n\t\t\tconst curve = curves[ i ];\n\t\t\tconst resolution = ( curve && curve.isEllipseCurve ) ? divisions * 2\n\t\t\t\t: ( curve && ( curve.isLineCurve || curve.isLineCurve3 ) ) ? 1\n\t\t\t\t\t: ( curve && curve.isSplineCurve ) ? divisions * curve.points.length\n\t\t\t\t\t\t: divisions;\n\n\t\t\tconst pts = curve.getPoints( resolution );\n\n\t\t\tfor ( let j = 0; j < pts.length; j ++ ) {\n\n\t\t\t\tconst point = pts[ j ];\n\n\t\t\t\tif ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates\n\n\t\t\t\tpoints.push( point );\n\t\t\t\tlast = point;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction Light( color, intensity = 1 ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.normalBias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.mapPass = null;\n\tthis.matrix = new Matrix4();\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis._frustum = new Frustum();\n\tthis._frameExtents = new Vector2( 1, 1 );\n\n\tthis._viewportCount = 1;\n\n\tthis._viewports = [\n\n\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t];\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\t_projScreenMatrix: new Matrix4(),\n\n\t_lightPositionWorld: new Vector3(),\n\n\t_lookTarget: new Vector3(),\n\n\tgetViewportCount: function () {\n\n\t\treturn this._viewportCount;\n\n\t},\n\n\tgetFrustum: function () {\n\n\t\treturn this._frustum;\n\n\t},\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst shadowCamera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tprojScreenMatrix = this._projScreenMatrix,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tlightPositionWorld = this._lightPositionWorld;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\tprojScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t},\n\n\tgetViewport: function ( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t},\n\n\tgetFrameExtents: function () {\n\n\t\treturn this._frameExtents;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\tthis.focus = 1;\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = MathUtils.RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction PointLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\tthis._frameExtents = new Vector2( 4, 2 );\n\n\tthis._viewportCount = 6;\n\n\tthis._viewports = [\n\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t// following orientation:\n\t\t//\n\t\t// xzXZ\n\t\t// y Y\n\t\t//\n\t\t// X - Positive x direction\n\t\t// x - Negative x direction\n\t\t// Y - Positive y direction\n\t\t// y - Negative y direction\n\t\t// Z - Positive z direction\n\t\t// z - Negative z direction\n\n\t\t// positive X\n\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t// negative X\n\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t// positive Z\n\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t// negative Z\n\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t// positive Y\n\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t// negative Y\n\t\tnew Vector4( 1, 0, 1, 1 )\n\t];\n\n\tthis._cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tthis._cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n}\n\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: PointLightShadow,\n\n\tisPointLightShadow: true,\n\n\tupdateMatrices: function ( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tlightPositionWorld = this._lightPositionWorld,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.copy( camera.position );\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\n\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t}\n\n} );\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new PointLightShadow();\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction OrthographicCamera( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = left;\n\tthis.right = right;\n\tthis.top = top;\n\tthis.bottom = bottom;\n\n\tthis.near = near;\n\tthis.far = far;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction DirectionalLightShadow() {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow,\n\n\tisDirectionalLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tObject.defineProperty( this, 'isSphericalHarmonics3', { value: true } );\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.type = 'LightProbe';\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction MaterialLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.textures = {};\n\n}\n\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: MaterialLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.vertexTangents !== undefined ) material.vertexTangents = json.vertexTangents;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\n\t\treturn material;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nconst LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.instanceCount = Infinity;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tconst data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction BufferGeometryLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: BufferGeometryLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ] instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\t\tlet geometryShapes;\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Loading \"Geometry\" is not supported anymore.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\n\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\timages[ image.uuid ] = deserializedImage;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tlet texture;\n\t\t\t\tconst image = images[ data.image ];\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( image );\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture( image.data, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/* DEPRECATED */\n\n\tsetTexturePath( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tLoader.call( this, manager );\n\n\tthis.options = { premultiplyAlpha: 'none' };\n\n}\n\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageBitmapLoader,\n\n\tisImageBitmapLoader: true,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\n\t\tfetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n} );\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tconst toChange = [];\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nclass Font {\n\n\tconstructor( data ) {\n\n\t\tObject.defineProperty( this, 'isFont', { value: true } );\n\n\t\tthis.type = 'Font';\n\n\t\tthis.data = data;\n\n\t}\n\n\tgenerateShapes( text, size = 100 ) {\n\n\t\tconst shapes = [];\n\t\tconst paths = createPaths( text, size, this.data );\n\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nfunction createPaths( text, size, data ) {\n\n\tconst chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\n\tconst scale = size / data.resolution;\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tconst paths = [];\n\n\tlet offsetX = 0, offsetY = 0;\n\n\tfor ( let i = 0; i < chars.length; i ++ ) {\n\n\t\tconst char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tconst path = new ShapePath();\n\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\n\n\t\t\tconst action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\nfunction FontLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FontLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tconst font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nfunction AudioLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AudioLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( skyColor );\n\tconst color2 = new Color().set( groundColor );\n\n\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tconst c0 = Math.sqrt( Math.PI );\n\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst _eyeRight = new Matrix4();\nconst _eyeLeft = new Matrix4();\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n\tthis._cache = {\n\t\tfocus: null,\n\t\tfov: null,\n\t\taspect: null,\n\t\tnear: null,\n\t\tfar: null,\n\t\tzoom: null,\n\t\teyeSep: null\n\t};\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: function ( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\tconst projectionMatrix = camera.projectionMatrix.clone();\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n} );\n\nclass Clock {\n\n\tconstructor( autoStart ) {\n\n\t\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 );\n\n\t\t_orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\n\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tlet mixFunction,\n\t\tmixFunctionAdditive,\n\t\tsetIdentity;\n\n\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\t//\n\t// 'add' is used for additive cumulative results\n\t//\n\t// 'work' is optional and is only present for quaternion types. It is used\n\t// to store intermediate quaternion multiplication results\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\tthis._workIndex = 5;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tmixFunction = this._select;\n\n\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t// additive is not relevant for non-numeric types\n\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t}\n\n\tthis._mixBufferRegion = mixFunction;\n\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\tthis._setIdentity = setIdentity;\n\tthis._origIndex = 3;\n\tthis._addIndex = 4;\n\n\tthis.cumulativeWeight = 0;\n\tthis.cumulativeWeightAdditive = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu<i>'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive: function ( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t},\n\n\t// apply the state of 'accu<i>' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\t_setAdditiveIdentityNumeric: function () {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t},\n\n\t_setAdditiveIdentityQuaternion: function () {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t},\n\n\t_setAdditiveIdentityOther: function () {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_slerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t},\n\n\t_lerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: function ( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t},\n\n\tparseTrackName: function ( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t},\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tconst source = this.resolvedProperty;\n\n\t\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tconst indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tconst scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime: function ( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tif ( typeof value === 'string' ) {\n\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\t\tvalue = arguments[ 1 ];\n\n\t\t}\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tconst ib = InterleavedBuffer.prototype.clone.call( this, data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tconst json = InterleavedBuffer.prototype.toJSON.call( this, data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n} );\n\nfunction GLBufferAttribute( buffer, type, itemSize, elementSize, count ) {\n\n\tthis.buffer = buffer;\n\tthis.type = type;\n\tthis.itemSize = itemSize;\n\tthis.elementSize = elementSize;\n\tthis.count = count;\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( GLBufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( GLBufferAttribute.prototype, {\n\n\tisGLBufferAttribute: true,\n\n\tsetBuffer: function ( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t},\n\n\tsetType: function ( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t},\n\n\tsetItemSize: function ( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t},\n\n\tsetCount: function ( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t},\n\n} );\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\tthis.camera = null;\n\tthis.layers = new Layers();\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: { threshold: 1 },\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( camera && camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera && camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius, theta, y ) {\n\n\t\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector$8 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min, max ) {\n\n\t\tObject.defineProperty( this, 'isBox2', { value: true } );\n\n\t\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\t\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$8.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$8.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start, end ) {\n\n\t\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\t\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n}\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n\tthis.hasPositions = false;\n\tthis.hasNormals = false;\n\tthis.hasColors = false;\n\tthis.hasUvs = false;\n\n\tthis.positionArray = null;\n\tthis.normalArray = null;\n\tthis.colorArray = null;\n\tthis.uvArray = null;\n\n\tthis.count = 0;\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$9.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$9 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkeletonHelper';\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$a.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$a.x, _vector$a.y, _vector$a.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$a.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$a.x, _vector$a.y, _vector$a.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( _vector$b.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the radials\n\n\t\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( x, 0, z );\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t\t// create the circles\n\n\t\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / circles * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n}\n\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\t_v1$6.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3$1.subVectors( _v2$3, _v1$6 );\n\n\t\tthis.lightPlane.lookAt( _v2$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2$3 );\n\t\tthis.targetLine.scale.z = _v3$1.length();\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2', colorFrustum );\n\t\taddLine( 'n2', 'n4', colorFrustum );\n\t\taddLine( 'n4', 'n3', colorFrustum );\n\t\taddLine( 'n3', 'n1', colorFrustum );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2', colorFrustum );\n\t\taddLine( 'f2', 'f4', colorFrustum );\n\t\taddLine( 'f4', 'f3', colorFrustum );\n\t\taddLine( 'f3', 'f1', colorFrustum );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1', colorFrustum );\n\t\taddLine( 'n2', 'f2', colorFrustum );\n\t\taddLine( 'n3', 'f3', colorFrustum );\n\t\taddLine( 'n4', 'f4', colorFrustum );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1', colorCone );\n\t\taddLine( 'p', 'n2', colorCone );\n\t\taddLine( 'p', 'n3', colorCone );\n\t\taddLine( 'p', 'n4', colorCone );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2', colorUp );\n\t\taddLine( 'u2', 'u3', colorUp );\n\t\taddLine( 'u3', 'u1', colorUp );\n\n\t\t// target\n\n\t\taddLine( 'c', 't', colorTarget );\n\t\taddLine( 'p', 'c', colorCross );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2', colorCross );\n\t\taddLine( 'cn3', 'cn4', colorCross );\n\n\t\taddLine( 'cf1', 'cf2', colorCross );\n\t\taddLine( 'cf3', 'cf4', colorCross );\n\n\t\tfunction addLine( a, b, color ) {\n\n\t\t\taddPoint( a, color );\n\t\t\taddPoint( b, color );\n\n\t\t}\n\n\t\tfunction addPoint( id, color ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$c.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector$c.x, _vector$c.y, _vector$c.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box$3 = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = 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 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box$3.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box$3.isEmpty() ) return;\n\n\t\tconst min = _box$3.min;\n\t\tconst max = _box$3.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = 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 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 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 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tlet scale = - this.plane.constant;\n\n\t\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\t\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\tconstructor( dir, origin, length, color, headLength, headWidth ) {\n\n\t\tsuper();\n\t\t// dir is assumed to be normalized\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\t\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\t\tif ( length === undefined ) length = 1;\n\t\tif ( color === undefined ) color = 0xffff00;\n\t\tif ( headLength === undefined ) headLength = 0.2 * length;\n\t\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength, headWidth ) {\n\n\t\tif ( headLength === undefined ) headLength = 0.2 * length;\n\t\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n}\n\nconst _floatView = new Float32Array( 1 );\nconst _int32View = new Int32Array( _floatView.buffer );\n\nconst DataUtils = {\n\n\t// Converts float32 to float16 (stored as uint16 value).\n\n\ttoHalfFloat: function ( val ) {\n\n\t\t// Source: http://gamedev.stackexchange.com/questions/17326/conversion-of-a-number-from-single-precision-floating-point-representation-to-a/17410#17410\n\n\t\t/* This method is faster than the OpenEXR implementation (very often\n\t\t* used, eg. in Ogre), with the additional benefit of rounding, inspired\n\t\t* by James Tursa?s half-precision code. */\n\n\t\t_floatView[ 0 ] = val;\n\t\tconst x = _int32View[ 0 ];\n\n\t\tlet bits = ( x >> 16 ) & 0x8000; /* Get the sign */\n\t\tlet m = ( x >> 12 ) & 0x07ff; /* Keep one extra bit for rounding */\n\t\tconst e = ( x >> 23 ) & 0xff; /* Using int is faster here */\n\n\t\t/* If zero, or denormal, or exponent underflows too much for a denormal\n\t\t\t* half, return signed zero. */\n\t\tif ( e < 103 ) return bits;\n\n\t\t/* If NaN, return NaN. If Inf or exponent overflow, return Inf. */\n\t\tif ( e > 142 ) {\n\n\t\t\tbits |= 0x7c00;\n\t\t\t/* If exponent was 0xff and one mantissa bit was set, it means NaN,\n\t\t\t\t\t\t* not Inf, so make sure we set one mantissa bit too. */\n\t\t\tbits |= ( ( e == 255 ) ? 0 : 1 ) && ( x & 0x007fffff );\n\t\t\treturn bits;\n\n\t\t}\n\n\t\t/* If exponent underflows but not too much, return a denormal */\n\t\tif ( e < 113 ) {\n\n\t\t\tm |= 0x0800;\n\t\t\t/* Extra rounding may overflow and set mantissa to 0 and exponent\n\t\t\t\t* to 1, which is OK. */\n\t\t\tbits |= ( m >> ( 114 - e ) ) + ( ( m >> ( 113 - e ) ) & 1 );\n\t\t\treturn bits;\n\n\t\t}\n\n\t\tbits |= ( ( e - 112 ) << 10 ) | ( m >> 1 );\n\t\t/* Extra rounding. An overflow will set mantissa to 0 and increment\n\t\t\t* the exponent, which is OK. */\n\t\tbits += m & 1;\n\t\treturn bits;\n\n\t}\n\n};\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst backgroundMaterial = new MeshBasicMaterial( {\n\tside: BackSide,\n\tdepthWrite: false,\n\tdepthTest: false,\n} );\nconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = /*@__PURE__*/ _createPlanes();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n */\n\nfunction convertLinearToRGBE( color ) {\n\n\tconst maxComponent = Math.max( color.r, color.g, color.b );\n\tconst fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\tcolor.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\n\tconst alpha = ( fExp + 128.0 ) / 255.0;\n\treturn alpha;\n\n}\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\t\tthis._equirectShader = null;\n\t\tthis._cubemapShader = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t// private interface\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\t\trenderer.autoClear = false;\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background ).convertSRGBToLinear();\n\t\t\t\tscene.background = null;\n\n\t\t\t\tconst alpha = convertLinearToRGBE( backgroundMaterial.color );\n\t\t\t\tbackgroundMaterial.opacity = alpha;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor ).convertSRGBToLinear();\n\n\t\t\tconst alpha = convertLinearToRGBE( backgroundMaterial.color );\n\t\t\tbackgroundMaterial.opacity = alpha;\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.autoClear = originalAutoClear;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! texture.isCubeTexture ) {\n\n\t\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\n\n\t\t}\n\n\t\tuniforms[ 'inputEncoding' ].value = ENCODINGS[ texture.encoding ];\n\t\tuniforms[ 'outputEncoding' ].value = ENCODINGS[ cubeUVRenderTarget.texture.encoding ];\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i == 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\t\tblurUniforms[ 'inputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\t\tblurUniforms[ 'outputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t${ _getEncodings() }\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn /* glsl */`\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include <encodings_pars_fragment>\n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t`;\n\n}\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials = [] ) {\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\treturn this.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Sphere.prototype, {\n\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\n} );\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( MathUtils, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn MathUtils.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn MathUtils.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\t\treturn attribute.applyMatrix3( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t},\n\tgetInverse: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\t\treturn this.copy( matrix ).invert();\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\t\treturn attribute.applyMatrix4( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t},\n\tgetInverse: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\t\treturn this.copy( matrix ).invert();\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nObject.assign( Quaternion.prototype, {\n\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\t\treturn vector.applyQuaternion( this );\n\n\t},\n\tinverse: function ( ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: .inverse() has been renamed to invert().' );\n\t\treturn this.invert();\n\n\t}\n\n} );\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( Mesh.prototype, {\n\n\tsetDrawMode: function () {\n\n\t\tconsole.error( 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t},\n\n} );\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( 'THREE.PerspectiveCamera.setLens is deprecated. ' +\n\t\t\t'Use .setFocalLength and .filmGauge for a photographic setup.' );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddAttribute: function ( name, attribute ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\treturn this.setAttribute( name, attribute );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t},\n\tremoveAttribute: function ( name ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\t\treturn this.deleteAttribute( name );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InstancedBufferGeometry.prototype, {\n\n\tmaxInstancedCount: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\treturn this.instanceCount;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\tthis.instanceCount = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( Raycaster.prototype, {\n\n\tlinePrecision: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\treturn this.params.Line.threshold;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\tthis.params.Line.threshold = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Scene.prototype, {\n\n\tdispose: function () {\n\n\t\tconsole.error( 'THREE.Scene: .dispose() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhysicalMaterial.prototype, {\n\n\ttransparency: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\treturn this.transmission;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\n\t\t\tthis.transmission = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Audio.prototype, {\n\n\tload: {\n\t\tvalue: function ( file ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\t\t\tconst scope = this;\n\t\t\tconst audioLoader = new AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\t\tscope.setBuffer( buffer );\n\n\t\t\t} );\n\t\t\treturn this;\n\n\t\t}\n\t},\n\tstartTime: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\n\n\t\t}\n\t}\n\n} );\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\nCubeCamera.prototype.clear = function ( renderer, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .clear() is now .renderTarget.clear().' );\n\treturn this.renderTarget.clear( renderer, color, depth, stencil );\n\n};\n\n//\n\nconst GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tlet matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxGeometry as BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleGeometry as CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeGeometry as ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry as CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry as DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry as ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FileLoader, FlatShading, Float16BufferAttribute, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GammaEncoding, GeometryUtils, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronGeometry as IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry as LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry as OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricGeometry as ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneGeometry as PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry as PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry as RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry as ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereGeometry as SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry as TetrahedronBufferGeometry, TetrahedronGeometry, TextGeometry as TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusGeometry as TorusBufferGeometry, TorusGeometry, TorusKnotGeometry as TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry as TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGLCubeRenderTarget, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\n","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3\n} from '../../../build/three.module.js';\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nvar OrbitControls = function ( object, domElement ) {\n\n\tif ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.' );\n\tif ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\tthis.object = object;\n\tthis.domElement = domElement;\n\n\t// Set to false to disable this control\n\tthis.enabled = true;\n\n\t// \"target\" sets the location of focus, where the object orbits around\n\tthis.target = new Vector3();\n\n\t// How far you can dolly in and out ( PerspectiveCamera only )\n\tthis.minDistance = 0;\n\tthis.maxDistance = Infinity;\n\n\t// How far you can zoom in and out ( OrthographicCamera only )\n\tthis.minZoom = 0;\n\tthis.maxZoom = Infinity;\n\n\t// How far you can orbit vertically, upper and lower limits.\n\t// Range is 0 to Math.PI radians.\n\tthis.minPolarAngle = 0; // radians\n\tthis.maxPolarAngle = Math.PI; // radians\n\n\t// How far you can orbit horizontally, upper and lower limits.\n\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\tthis.minAzimuthAngle = - Infinity; // radians\n\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t// Set to true to enable damping (inertia)\n\t// If damping is enabled, you must call controls.update() in your animation loop\n\tthis.enableDamping = false;\n\tthis.dampingFactor = 0.05;\n\n\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t// Set to false to disable zooming\n\tthis.enableZoom = true;\n\tthis.zoomSpeed = 1.0;\n\n\t// Set to false to disable rotating\n\tthis.enableRotate = true;\n\tthis.rotateSpeed = 1.0;\n\n\t// Set to false to disable panning\n\tthis.enablePan = true;\n\tthis.panSpeed = 1.0;\n\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t// Set to true to automatically rotate around the target\n\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\tthis.autoRotate = false;\n\tthis.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n\n\t// The four arrow keys\n\tthis.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n\t// Mouse buttons\n\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t// Touch fingers\n\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t// for reset\n\tthis.target0 = this.target.clone();\n\tthis.position0 = this.object.position.clone();\n\tthis.zoom0 = this.object.zoom;\n\n\t// the target DOM element for key events\n\tthis._domElementKeyEvents = null;\n\n\t//\n\t// public methods\n\t//\n\n\tthis.getPolarAngle = function () {\n\n\t\treturn spherical.phi;\n\n\t};\n\n\tthis.getAzimuthalAngle = function () {\n\n\t\treturn spherical.theta;\n\n\t};\n\n\tthis.listenToKeyEvents = function ( domElement ) {\n\n\t\tdomElement.addEventListener( 'keydown', onKeyDown );\n\t\tthis._domElementKeyEvents = domElement;\n\n\t};\n\n\tthis.saveState = function () {\n\n\t\tscope.target0.copy( scope.target );\n\t\tscope.position0.copy( scope.object.position );\n\t\tscope.zoom0 = scope.object.zoom;\n\n\t};\n\n\tthis.reset = function () {\n\n\t\tscope.target.copy( scope.target0 );\n\t\tscope.object.position.copy( scope.position0 );\n\t\tscope.object.zoom = scope.zoom0;\n\n\t\tscope.object.updateProjectionMatrix();\n\t\tscope.dispatchEvent( changeEvent );\n\n\t\tscope.update();\n\n\t\tstate = STATE.NONE;\n\n\t};\n\n\t// this method is exposed, but perhaps it would be better if we can make it private...\n\tthis.update = function () {\n\n\t\tvar offset = new Vector3();\n\n\t\t// so camera.up is the orbit axis\n\t\tvar quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\tvar quatInverse = quat.clone().invert();\n\n\t\tvar lastPosition = new Vector3();\n\t\tvar lastQuaternion = new Quaternion();\n\n\t\tvar twoPI = 2 * Math.PI;\n\n\t\treturn function update() {\n\n\t\t\tvar position = scope.object.position;\n\n\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t// angle from z-axis around y-axis\n\t\t\tspherical.setFromVector3( offset );\n\n\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t}\n\n\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t} else {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t}\n\n\t\t\t// restrict theta to be between desired limits\n\n\t\t\tvar min = scope.minAzimuthAngle;\n\t\t\tvar max = scope.maxAzimuthAngle;\n\n\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\tif ( min <= max ) {\n\n\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// restrict phi to be between desired limits\n\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\tspherical.makeSafe();\n\n\n\t\t\tspherical.radius *= scale;\n\n\t\t\t// restrict radius to be between desired limits\n\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t// move target to panned location\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t}\n\n\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t\tscale = 1;\n\n\t\t\t// update condition is:\n\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\tif ( zoomChanged ||\n\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\tzoomChanged = false;\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t};\n\n\t}();\n\n\tthis.dispose = function () {\n\n\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu );\n\n\t\tscope.domElement.removeEventListener( 'pointerdown', onPointerDown );\n\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel );\n\n\t\tscope.domElement.removeEventListener( 'touchstart', onTouchStart );\n\t\tscope.domElement.removeEventListener( 'touchend', onTouchEnd );\n\t\tscope.domElement.removeEventListener( 'touchmove', onTouchMove );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp );\n\n\n\t\tif ( scope._domElementKeyEvents !== null ) {\n\n\t\t\tscope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );\n\n\t\t}\n\n\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t};\n\n\t//\n\t// internals\n\t//\n\n\tvar scope = this;\n\n\tvar changeEvent = { type: 'change' };\n\tvar startEvent = { type: 'start' };\n\tvar endEvent = { type: 'end' };\n\n\tvar STATE = {\n\t\tNONE: - 1,\n\t\tROTATE: 0,\n\t\tDOLLY: 1,\n\t\tPAN: 2,\n\t\tTOUCH_ROTATE: 3,\n\t\tTOUCH_PAN: 4,\n\t\tTOUCH_DOLLY_PAN: 5,\n\t\tTOUCH_DOLLY_ROTATE: 6\n\t};\n\n\tvar state = STATE.NONE;\n\n\tvar EPS = 0.000001;\n\n\t// current position in spherical coordinates\n\tvar spherical = new Spherical();\n\tvar sphericalDelta = new Spherical();\n\n\tvar scale = 1;\n\tvar panOffset = new Vector3();\n\tvar zoomChanged = false;\n\n\tvar rotateStart = new Vector2();\n\tvar rotateEnd = new Vector2();\n\tvar rotateDelta = new Vector2();\n\n\tvar panStart = new Vector2();\n\tvar panEnd = new Vector2();\n\tvar panDelta = new Vector2();\n\n\tvar dollyStart = new Vector2();\n\tvar dollyEnd = new Vector2();\n\tvar dollyDelta = new Vector2();\n\n\tfunction getAutoRotationAngle() {\n\n\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t}\n\n\tfunction getZoomScale() {\n\n\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t}\n\n\tfunction rotateLeft( angle ) {\n\n\t\tsphericalDelta.theta -= angle;\n\n\t}\n\n\tfunction rotateUp( angle ) {\n\n\t\tsphericalDelta.phi -= angle;\n\n\t}\n\n\tvar panLeft = function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\tv.multiplyScalar( - distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\tvar panUp = function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t} else {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t}\n\n\t\t\tv.multiplyScalar( distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\t// deltaX and deltaY are in pixels; right and down are positive\n\tvar pan = function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\tvar element = scope.domElement;\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t// perspective\n\t\t\t\tvar position = scope.object.position;\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\tvar targetDistance = offset.length();\n\n\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t// orthographic\n\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else {\n\n\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\tscope.enablePan = false;\n\n\t\t\t}\n\n\t\t};\n\n\t}();\n\n\tfunction dollyOut( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale /= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\tfunction dollyIn( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale *= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\t//\n\t// event callbacks - update the object state\n\t//\n\n\tfunction handleMouseDownRotate( event ) {\n\n\t\trotateStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownDolly( event ) {\n\n\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownPan( event ) {\n\n\t\tpanStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseMoveRotate( event ) {\n\n\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMoveDolly( event ) {\n\n\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t}\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMovePan( event ) {\n\n\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseUp( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\tfunction handleMouseWheel( event ) {\n\n\t\tif ( event.deltaY < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t}\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleKeyDown( event ) {\n\n\t\tvar needsUpdate = false;\n\n\t\tswitch ( event.keyCode ) {\n\n\t\t\tcase scope.keys.UP:\n\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.LEFT:\n\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.RIGHT:\n\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.update();\n\n\t\t}\n\n\n\t}\n\n\tfunction handleTouchStartRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartPan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyStart.set( 0, distance );\n\n\t}\n\n\tfunction handleTouchStartDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchStartPan( event );\n\n\t}\n\n\tfunction handleTouchStartDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchStartRotate( event );\n\n\t}\n\n\tfunction handleTouchMoveRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateEnd.set( x, y );\n\n\t\t}\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t}\n\n\tfunction handleTouchMovePan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanEnd.set( x, y );\n\n\t\t}\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t}\n\n\tfunction handleTouchMoveDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyEnd.set( 0, distance );\n\n\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\tdollyOut( dollyDelta.y );\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t}\n\n\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t}\n\n\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t}\n\n\tfunction handleTouchEnd( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\t//\n\t// event handlers - FSM: listen for events and reset state\n\t//\n\n\tfunction onPointerDown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tswitch ( event.pointerType ) {\n\n\t\t\tcase 'mouse':\n\t\t\tcase 'pen':\n\t\t\t\tonMouseDown( event );\n\t\t\t\tbreak;\n\n\t\t\t// TODO touch\n\n\t\t}\n\n\t}\n\n\tfunction onPointerMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tswitch ( event.pointerType ) {\n\n\t\t\tcase 'mouse':\n\t\t\tcase 'pen':\n\t\t\t\tonMouseMove( event );\n\t\t\t\tbreak;\n\n\t\t\t// TODO touch\n\n\t\t}\n\n\t}\n\n\tfunction onPointerUp( event ) {\n\n\t\tswitch ( event.pointerType ) {\n\n\t\t\tcase 'mouse':\n\t\t\tcase 'pen':\n\t\t\t\tonMouseUp( event );\n\t\t\t\tbreak;\n\n\t\t\t// TODO touch\n\n\t\t}\n\n\t}\n\n\tfunction onMouseDown( event ) {\n\n\t\t// Prevent the browser from scrolling.\n\t\tevent.preventDefault();\n\n\t\t// Manually set the focus since calling preventDefault above\n\t\t// prevents the browser from setting it automatically.\n\n\t\tscope.domElement.focus ? scope.domElement.focus() : window.focus();\n\n\t\tvar mouseAction;\n\n\t\tswitch ( event.button ) {\n\n\t\t\tcase 0:\n\n\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\n\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tmouseAction = - 1;\n\n\t\t}\n\n\t\tswitch ( mouseAction ) {\n\n\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\tbreak;\n\n\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase MOUSE.PAN:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'pointermove', onPointerMove );\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'pointerup', onPointerUp );\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onMouseMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction onMouseUp( event ) {\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp );\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleMouseUp( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onMouseWheel( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tscope.dispatchEvent( startEvent );\n\n\t\thandleMouseWheel( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction onKeyDown( event ) {\n\n\t\tif ( scope.enabled === false || scope.enablePan === false ) return;\n\n\t\thandleKeyDown( event );\n\n\t}\n\n\tfunction onTouchStart( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\n\n\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onTouchMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\t\tevent.stopPropagation();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t}\n\n\tfunction onTouchEnd( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleTouchEnd( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onContextMenu( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t}\n\n\t//\n\n\tscope.domElement.addEventListener( 'contextmenu', onContextMenu );\n\n\tscope.domElement.addEventListener( 'pointerdown', onPointerDown );\n\tscope.domElement.addEventListener( 'wheel', onMouseWheel );\n\n\tscope.domElement.addEventListener( 'touchstart', onTouchStart );\n\tscope.domElement.addEventListener( 'touchend', onTouchEnd );\n\tscope.domElement.addEventListener( 'touchmove', onTouchMove );\n\n\t// force an update at start\n\n\tthis.update();\n\n};\n\nOrbitControls.prototype = Object.create( EventDispatcher.prototype );\nOrbitControls.prototype.constructor = OrbitControls;\n\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - left mouse, or arrow keys / touch: one-finger move\n\nvar MapControls = function ( object, domElement ) {\n\n\tOrbitControls.call( this, object, domElement );\n\n\tthis.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n\tthis.mouseButtons.LEFT = MOUSE.PAN;\n\tthis.mouseButtons.RIGHT = MOUSE.ROTATE;\n\n\tthis.touches.ONE = TOUCH.PAN;\n\tthis.touches.TWO = TOUCH.DOLLY_ROTATE;\n\n};\n\nMapControls.prototype = Object.create( EventDispatcher.prototype );\nMapControls.prototype.constructor = MapControls;\n\nexport { OrbitControls, MapControls };\n","import {\n Plane,\n Raycaster,\n Vector2,\n Vector3,\n WebGLRenderer,\n} from 'three';\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\n\n/**\n * Three.js helper\n */\nexport default function useThree() {\n // default conf\n const conf = {\n canvas: null,\n antialias: true,\n alpha: false,\n autoClear: true,\n orbit_ctrl: false,\n mouse_move: false,\n mouse_raycast: false,\n mouse_over: false,\n click: false,\n resize: true,\n width: 0,\n height: 0,\n };\n\n // size\n const size = {\n width: 1, height: 1,\n wWidth: 1, wHeight: 1,\n ratio: 1,\n };\n\n // handlers\n const afterInitCallbacks = [];\n let afterResizeCallbacks = [];\n let beforeRenderCallbacks = [];\n\n // mouse tracking\n const mouse = new Vector2();\n const mouseV3 = new Vector3();\n const mousePlane = new Plane(new Vector3(0, 0, 1), 0);\n const raycaster = new Raycaster();\n\n // raycast objects\n const intersectObjects = [];\n\n // returned object\n const obj = {\n conf,\n renderer: null,\n camera: null,\n cameraCtrl: null,\n materials: {},\n scene: null,\n size,\n mouse, mouseV3,\n init,\n dispose,\n render,\n renderC,\n setSize,\n onAfterInit,\n onAfterResize, offAfterResize,\n onBeforeRender, offBeforeRender,\n addIntersectObject, removeIntersectObject,\n };\n\n /**\n * init three\n */\n function init(params) {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n conf[key] = value;\n });\n }\n\n if (!obj.scene) {\n console.error('Missing Scene');\n return;\n }\n\n if (!obj.camera) {\n console.error('Missing Camera');\n return;\n }\n\n obj.renderer = new WebGLRenderer({ canvas: conf.canvas, antialias: conf.antialias, alpha: conf.alpha });\n obj.renderer.autoClear = conf.autoClear;\n\n if (conf.orbit_ctrl) {\n obj.orbitCtrl = new OrbitControls(obj.camera, obj.renderer.domElement);\n if (conf.orbit_ctrl instanceof Object) {\n Object.entries(conf.orbit_ctrl).forEach(([key, value]) => {\n obj.orbitCtrl[key] = value;\n });\n }\n }\n\n if (conf.width && conf.height) {\n setSize(conf.width, conf.height);\n } else if (conf.resize) {\n onResize();\n window.addEventListener('resize', onResize);\n }\n\n conf.mouse_move = conf.mouse_move || conf.mouse_over;\n if (conf.mouse_move) {\n if (conf.mouse_move === 'body') {\n obj.mouse_move_element = document.body;\n } else {\n obj.mouse_move_element = obj.renderer.domElement;\n }\n obj.mouse_move_element.addEventListener('mousemove', onMousemove);\n obj.mouse_move_element.addEventListener('mouseleave', onMouseleave);\n }\n\n if (conf.click) {\n obj.renderer.domElement.addEventListener('click', onClick);\n }\n\n afterInitCallbacks.forEach(c => c());\n\n return true;\n };\n\n /**\n * add after init callback\n */\n function onAfterInit(callback) {\n afterInitCallbacks.push(callback);\n }\n\n /**\n * add after resize callback\n */\n function onAfterResize(callback) {\n afterResizeCallbacks.push(callback);\n }\n\n /**\n * remove after resize callback\n */\n function offAfterResize(callback) {\n afterResizeCallbacks = afterResizeCallbacks.filter(c => c !== callback);\n }\n\n /**\n * add before render callback\n */\n function onBeforeRender(callback) {\n beforeRenderCallbacks.push(callback);\n }\n\n /**\n * remove before render callback\n */\n function offBeforeRender(callback) {\n beforeRenderCallbacks = beforeRenderCallbacks.filter(c => c !== callback);\n }\n\n /**\n * default render\n */\n function render() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.renderer.render(obj.scene, obj.camera);\n }\n\n /**\n * composer render\n */\n function renderC() {\n if (obj.orbitCtrl) obj.orbitCtrl.update();\n beforeRenderCallbacks.forEach(c => c());\n obj.composer.render();\n }\n\n /**\n * add intersect object\n */\n function addIntersectObject(o) {\n if (intersectObjects.indexOf(o) === -1) {\n intersectObjects.push(o);\n }\n }\n\n /**\n * remove intersect object\n */\n function removeIntersectObject(o) {\n const i = intersectObjects.indexOf(o);\n if (i !== -1) {\n intersectObjects.splice(i, 1);\n }\n }\n\n /**\n * remove listeners\n */\n function dispose() {\n beforeRenderCallbacks = [];\n window.removeEventListener('resize', onResize);\n if (obj.mouse_move_element) {\n obj.mouse_move_element.removeEventListener('mousemove', onMousemove);\n obj.mouse_move_element.removeEventListener('mouseleave', onMouseleave);\n }\n obj.renderer.domElement.removeEventListener('click', onClick);\n if (obj.orbitCtrl) obj.orbitCtrl.dispose();\n this.renderer.dispose();\n }\n\n /**\n * click listener\n */\n function onClick(e) {\n mouse.x = (e.clientX / size.width) * 2 - 1;\n mouse.y = -(e.clientY / size.height) * 2 + 1;\n raycaster.setFromCamera(mouse, obj.camera);\n const objects = raycaster.intersectObjects(intersectObjects);\n for (let i = 0; i < objects.length; i++) {\n const o = objects[i].object;\n if (o.onClick) o.onClick(e);\n }\n }\n\n /**\n * mousemove listener\n */\n function onMousemove(e) {\n mouse.x = (e.clientX / size.width) * 2 - 1;\n mouse.y = -(e.clientY / size.height) * 2 + 1;\n onMousechange(e);\n }\n\n /**\n * mouseleave listener\n */\n function onMouseleave(e) {\n // mouse.x = 0;\n // mouse.y = 0;\n onMousechange(e);\n }\n\n /**\n * mouse change\n */\n function onMousechange(e) {\n if (conf.mouse_over || conf.mouse_raycast) {\n raycaster.setFromCamera(mouse, obj.camera);\n\n if (conf.mouse_raycast) {\n // get mouse 3d position\n obj.camera.getWorldDirection(mousePlane.normal);\n mousePlane.normal.normalize();\n raycaster.ray.intersectPlane(mousePlane, mouseV3);\n }\n\n if (conf.mouse_over) {\n const onObjects = raycaster.intersectObjects(intersectObjects);\n const offObjects = [...intersectObjects];\n for (let i = 0; i < onObjects.length; i++) {\n const o = onObjects[i].object;\n if (!o.hover && o.onHover) {\n o.hover = true;\n o.onHover(true);\n }\n offObjects.splice(offObjects.indexOf(o), 1);\n }\n for (let i = 0; i < offObjects.length; i++) {\n const o = offObjects[i];\n if (o.hover && o.onHover) {\n o.hover = false;\n o.onHover(false);\n }\n }\n }\n }\n }\n\n /**\n * resize listener\n */\n function onResize() {\n if (conf.resize === 'window') {\n setSize(window.innerWidth, window.innerHeight);\n } else {\n const elt = obj.renderer.domElement.parentNode;\n setSize(elt.clientWidth, elt.clientHeight);\n }\n afterResizeCallbacks.forEach(c => c());\n }\n\n /**\n * update renderer size and camera\n */\n function setSize(width, height) {\n size.width = width;\n size.height = height;\n size.ratio = width / height;\n\n obj.renderer.setSize(width, height, false);\n obj.camera.aspect = size.ratio;\n obj.camera.updateProjectionMatrix();\n\n if (obj.composer) {\n obj.composer.setSize(width, height);\n }\n\n if (obj.camera.type === 'OrthographicCamera') {\n size.wWidth = obj.camera.right - obj.camera.left;\n size.wHeight = obj.camera.top - obj.camera.bottom;\n } else {\n const wsize = getCameraSize();\n size.wWidth = wsize[0]; size.wHeight = wsize[1];\n }\n }\n\n /**\n * calculate camera visible area size\n */\n function getCameraSize() {\n const vFOV = (obj.camera.fov * Math.PI) / 180;\n const h = 2 * Math.tan(vFOV / 2) * Math.abs(obj.camera.position.z);\n const w = h * obj.camera.aspect;\n return [w, h];\n }\n\n return obj;\n}\n","import { h } from 'vue';\nimport useThree from './useThree';\n\nexport default {\n props: {\n antialias: Boolean,\n alpha: Boolean,\n autoClear: { type: Boolean, default: true },\n mouseMove: { type: [Boolean, String], default: false },\n mouseRaycast: { type: Boolean, default: false },\n mouseOver: { type: Boolean, default: false },\n click: { type: Boolean, default: false },\n orbitCtrl: { type: [Boolean, Object], default: false },\n resize: { type: [Boolean, String], default: true },\n shadow: Boolean,\n width: String,\n height: String,\n },\n setup() {\n return {\n three: useThree(),\n raf: true,\n onMountedCallbacks: [],\n };\n },\n provide() {\n return {\n three: this.three,\n // renderer: this.three.renderer,\n rendererComponent: this,\n };\n },\n mounted() {\n const params = {\n canvas: this.$el,\n antialias: this.antialias,\n alpha: this.alpha,\n autoClear: this.autoClear,\n orbit_ctrl: this.orbitCtrl,\n mouse_move: this.mouseMove,\n mouse_raycast: this.mouseRaycast,\n mouse_over: this.mouseOver,\n click: this.click,\n resize: this.resize,\n width: this.width,\n height: this.height,\n };\n\n if (this.three.init(params)) {\n this.three.renderer.shadowMap.enabled = this.shadow;\n if (this.three.composer) this.animateC();\n else this.animate();\n };\n\n this.onMountedCallbacks.forEach(c => c());\n },\n beforeUnmount() {\n this.raf = false;\n this.three.dispose();\n },\n methods: {\n onMounted(callback) {\n this.onMountedCallbacks.push(callback);\n },\n onBeforeRender(callback) {\n this.three.onBeforeRender(callback);\n },\n onAfterResize(callback) {\n this.three.onAfterResize(callback);\n },\n animate() {\n if (this.raf) requestAnimationFrame(this.animate);\n this.three.render();\n },\n animateC() {\n if (this.raf) requestAnimationFrame(this.animateC);\n this.three.renderC();\n },\n },\n render() {\n return h('canvas', {}, this.$slots.default());\n },\n};\n","export function setFromProp(o, prop) {\n if (prop instanceof Object) {\n Object.entries(prop).forEach(([key, value]) => {\n o[key] = value;\n });\n }\n};\n\nexport function propsValues(props, exclude) {\n const values = {};\n Object.entries(props).forEach(([key, value]) => {\n if (!exclude || (exclude && !exclude.includes(key))) {\n values[key] = value;\n }\n });\n return values;\n};\n\nexport function lerp(value1, value2, amount) {\n amount = amount < 0 ? 0 : amount;\n amount = amount > 1 ? 1 : amount;\n return value1 + (value2 - value1) * amount;\n};\n\nexport function lerpv2(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n};\n\nexport function lerpv3(v1, v2, amount) {\n v1.x = lerp(v1.x, v2.x, amount);\n v1.y = lerp(v1.y, v2.y, amount);\n v1.z = lerp(v1.z, v2.z, amount);\n};\n\nexport function limit(val, min, max) {\n return val < min ? min : (val > max ? max : val);\n};\n\n// from https://github.com/pmndrs/drei/blob/master/src/useMatcapTexture.tsx\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function getMatcapUrl(hash, format = 1024) {\n const fileName = `${hash}${getMatcapFormatString(format)}.png`;\n return `${MATCAP_ROOT}/${format}/${fileName}`;\n};\n\nfunction getMatcapFormatString(format) {\n switch (format) {\n case 64:\n return '-64px';\n case 128:\n return '-128px';\n case 256:\n return '-256px';\n case 512:\n return '-512px';\n default:\n return '';\n }\n}\n","import { toRef, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\n\nexport default function useBindProp(comp, prop, object) {\n if (comp[prop]) {\n const ref = toRef(comp, prop);\n setFromProp(object, ref.value);\n watch(ref, () => {\n setFromProp(object, ref.value);\n }, { deep: true });\n }\n};\n","import { OrthographicCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n left: { type: Number, default: -1 },\n right: { type: Number, default: 1 },\n top: { type: Number, default: 1 },\n bottom: { type: Number, default: -1 },\n near: { type: Number, default: 0.1 },\n far: { type: Number, default: 2000 },\n zoom: { type: Number, default: 1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new OrthographicCamera(this.left, this.right, this.top, this.bottom, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['left', 'right', 'top', 'bottom', 'near', 'far', 'zoom'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'OrthographicCamera',\n};\n","import { PerspectiveCamera, Vector3 } from 'three';\nimport { watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three'],\n props: {\n aspect: { type: Number, default: 1 },\n far: { type: Number, default: 2000 },\n fov: { type: Number, default: 50 },\n near: { type: Number, default: 0.1 },\n position: { type: [Object, Vector3], default: { x: 0, y: 0, z: 0 } },\n },\n created() {\n this.camera = new PerspectiveCamera(this.fov, this.aspect, this.near, this.far);\n useBindProp(this, 'position', this.camera.position);\n\n ['aspect', 'far', 'fov', 'near'].forEach(p => {\n watch(() => this[p], () => {\n this.camera[p] = this[p];\n this.camera.updateProjectionMatrix();\n });\n });\n\n this.three.camera = this.camera;\n },\n render() {\n return [];\n },\n __hmrId: 'PerspectiveCamera',\n};\n","import { Group } from 'three';\r\nimport { inject } from 'vue';\r\nimport useBindProp from '../use/useBindProp.js';\r\n\r\nexport default {\r\n inject: ['three', 'scene'],\r\n props: {\r\n position: Object,\r\n rotation: Object,\r\n scale: Object,\r\n },\r\n setup(props) {\r\n const parent = inject('group', inject('scene'));\r\n const group = new Group();\r\n useBindProp(props, 'position', group.position);\r\n useBindProp(props, 'rotation', group.rotation);\r\n useBindProp(props, 'scale', group.scale);\r\n return { parent, group };\r\n },\r\n provide() {\r\n return {\r\n group: this.group,\r\n };\r\n },\r\n created() {\r\n this.parent.add(this.group);\r\n },\r\n unmounted() {\r\n this.parent.remove(this.group);\r\n },\r\n render() {\r\n if (this.$slots.default) {\r\n return this.$slots.default();\r\n }\r\n return [];\r\n },\r\n __hmrId: 'Group',\r\n};\r\n","import { Scene, Color } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['three'],\n props: {\n id: String,\n background: [String, Number],\n },\n setup(props) {\n const scene = new Scene();\n if (props.background) scene.background = new Color(props.background);\n watch(() => props.background, (value) => { scene.background = new Color(value); });\n return { scene };\n },\n provide() {\n return {\n scene: this.scene,\n };\n },\n mounted() {\n if (!this.three.scene) {\n this.three.scene = this.scene;\n }\n },\n methods: {\n // add(o) {\n // this.scene.add(o);\n // },\n // remove(o) {\n // this.scene.remove(o);\n // },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n};\n","import { watch } from 'vue';\n\nexport default {\n emits: ['ready'],\n inject: ['mesh'],\n props: {\n rotateX: Number,\n rotateY: Number,\n rotateZ: Number,\n },\n created() {\n if (!this.mesh) {\n console.error('Missing parent Mesh');\n }\n this.watchProps = [];\n Object.entries(this.$props).forEach(e => this.watchProps.push(e[0]));\n },\n beforeMount() {\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n },\n mounted() {\n this.addWatchers();\n },\n unmounted() {\n this.geometry.dispose();\n },\n methods: {\n rotateGeometry() {\n if (this.rotateX) this.geometry.rotateX(this.rotateX);\n if (this.rotateY) this.geometry.rotateY(this.rotateY);\n if (this.rotateZ) this.geometry.rotateZ(this.rotateZ);\n },\n addWatchers() {\n this.watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.rotateGeometry();\n this.mesh.setGeometry(this.geometry);\n oldGeo.dispose();\n },\n },\n render() {\n return [];\n },\n};\n","import { BoxBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n methods: {\n createGeometry() {\n let w = this.width, h = this.height, d = this.depth;\n if (this.size) {\n w = this.size; h = this.size; d = this.size;\n }\n this.geometry = new BoxBufferGeometry(w, h, d, this.widthSegments, this.heightSegments, this.depthSegments);\n },\n },\n};\n","import { CircleBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { ConeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { CylinderBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { LatheBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n};\n","import { RingBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n};\n","import { SphereBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n radius: { type: Number, default: 1 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport Geometry from './Geometry.js';\n\nexport default {\n extends: Geometry,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radiusSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radiusSegments, this.closed);\n },\n },\n};\n","import { Color } from 'three';\nimport { inject, watch } from 'vue';\nimport { setFromProp } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['scene'],\n props: {\n color: {\n type: String,\n default: '#ffffff',\n },\n intensity: {\n type: Number,\n default: 1,\n },\n castShadow: {\n type: Boolean,\n default: false,\n },\n shadowMapSize: Object,\n position: Object,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n created() {\n this.parent = inject('group', this.scene);\n },\n mounted() {\n useBindProp(this, 'position', this.light.position);\n\n if (this.light.target) {\n useBindProp(this, 'target', this.light.target.position);\n }\n\n if (this.light.shadow) {\n this.light.castShadow = this.castShadow;\n setFromProp(this.light.shadow.mapSize, this.shadowMapSize);\n }\n\n ['color', 'intensity', 'castShadow'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.light.color = new Color(this.color);\n } else {\n this.light[p] = this[p];\n }\n });\n });\n\n this.parent.add(this.light);\n if (this.light.target) this.parent.add(this.light.target);\n },\n unmounted() {\n this.parent.remove(this.light);\n if (this.light.target) this.parent.remove(this.light.target);\n },\n render() {\n return [];\n },\n __hmrId: 'Light',\n};\n","import { AmbientLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n created() {\n this.light = new AmbientLight(this.color, this.intensity);\n },\n __hmrId: 'AmbientLight',\n};\n","import { DirectionalLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n target: Object,\n },\n created() {\n this.light = new DirectionalLight(this.color, this.intensity);\n },\n __hmrId: 'DirectionalLight',\n};\n","import { PointLight } from 'three';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n distance: {\n type: Number,\n default: 0,\n },\n decay: {\n type: Number,\n default: 1,\n },\n },\n created() {\n this.light = new PointLight(this.color, this.intensity, this.distance, this.decay);\n },\n __hmrId: 'PointLight',\n};\n","import { SpotLight } from 'three';\nimport { watch } from 'vue';\nimport Light from './Light.js';\n\nexport default {\n extends: Light,\n props: {\n angle: {\n type: Number,\n default: Math.PI / 3,\n },\n decay: {\n type: Number,\n default: 1,\n },\n distance: {\n type: Number,\n default: 0,\n },\n penumbra: {\n type: Number,\n default: 0,\n },\n target: Object,\n },\n created() {\n this.light = new SpotLight(this.color, this.intensity, this.distance, this.angle, this.penumbra, this.decay);\n ['angle', 'decay', 'distance', 'penumbra'].forEach(p => {\n watch(() => this[p], () => {\n this.light[p] = this[p];\n });\n });\n },\n __hmrId: 'SpotLight',\n};\n","import { watch } from 'vue';\nimport { FrontSide } from 'three';\n\nexport default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n color: { type: [String, Number], default: '#ffffff' },\n depthTest: { type: Boolean, default: true },\n depthWrite: { type: Boolean, default: true },\n flatShading: Boolean,\n fog: { type: Boolean, default: true },\n opacity: { type: Number, default: 1 },\n side: { type: Number, default: FrontSide },\n transparent: Boolean,\n vertexColors: Boolean,\n },\n provide() {\n return {\n material: this,\n };\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n this._addWatchers();\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n methods: {\n setProp(key, value, needsUpdate = false) {\n this.material[key] = value;\n this.material.needsUpdate = needsUpdate;\n },\n setTexture(texture, key = 'map') {\n this.setProp(key, texture, true);\n },\n _addWatchers() {\n // don't work for flatShading\n ['color', 'depthTest', 'depthWrite', 'fog', 'opacity', 'side', 'transparent'].forEach(p => {\n watch(() => this[p], () => {\n if (p === 'color') {\n this.material.color.set(this.color);\n } else {\n this.material[p] = this[p];\n }\n });\n });\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Material',\n};\n","import { MeshBasicMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshBasicMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'BasicMaterial',\n};\n","import { MeshLambertMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshLambertMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'LambertMaterial',\n};\n","import { MeshMatcapMaterial, TextureLoader } from 'three';\n// import { watch } from 'vue';\nimport { propsValues, getMatcapUrl } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n src: String,\n name: String,\n },\n methods: {\n createMaterial() {\n const src = this.name ? getMatcapUrl(this.name) : this.src;\n const opts = propsValues(this.$props, ['id', 'src', 'name']);\n opts.matcap = new TextureLoader().load(src);\n this.material = new MeshMatcapMaterial(opts);\n },\n },\n __hmrId: 'MatcapMaterial',\n};\n","import { MeshPhongMaterial } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n props: {\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n reflectivity: { type: Number, default: 1 },\n shininess: { type: Number, default: 30 },\n specular: { type: [String, Number], default: 0x111111 },\n },\n methods: {\n createMaterial() {\n this.material = new MeshPhongMaterial(propsValues(this.$props, ['id']));\n },\n addWatchers() {\n ['emissive', 'emissiveIntensity', 'reflectivity', 'shininess', 'specular'].forEach(p => {\n watch(() => this[p], (value) => {\n if (p === 'emissive' || p === 'specular') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n },\n },\n __hmrId: 'PhongMaterial',\n};\n","import { MeshStandardMaterial, Vector2 } from 'three';\nimport { watch } from 'vue';\nimport { propsValues } from '../tools.js';\nimport useBindProp from '../use/useBindProp.js';\nimport Material from './Material';\n\nconst props = {\n aoMapIntensity: { type: Number, default: 1 },\n bumpScale: { type: Number, default: 1 },\n displacementBias: { type: Number, default: 0 },\n displacementScale: { type: Number, default: 1 },\n emissive: { type: [Number, String], default: 0 },\n emissiveIntensity: { type: Number, default: 1 },\n envMapIntensity: { type: Number, default: 1 },\n lightMapIntensity: { type: Number, default: 1 },\n metalness: { type: Number, default: 0 },\n normalScale: { type: Object, default: () => new Vector2(1, 1) },\n roughness: { type: Number, default: 1 },\n refractionRatio: { type: Number, default: 0.98 },\n wireframe: Boolean,\n};\n\nexport default {\n extends: Material,\n props,\n methods: {\n createMaterial() {\n this.material = new MeshStandardMaterial(propsValues(this.$props, ['id', 'normalScale']));\n },\n addWatchers() {\n // todo : use setProp ?\n Object.keys(props).forEach(p => {\n if (p === 'normalScale') return;\n watch(() => this[p], (value) => {\n if (p === 'emissive') {\n this.material[p].set(value);\n } else {\n this.material[p] = value;\n }\n });\n });\n useBindProp(this, 'normalScale', this.material.normalScale);\n },\n },\n __hmrId: 'StandardMaterial',\n};\n","import { MeshPhysicalMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport StandardMaterial from './StandardMaterial';\n\nexport default {\n extends: StandardMaterial,\n methods: {\n createMaterial() {\n this.material = new MeshPhysicalMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'PhysicalMaterial',\n};\n","/**\n * ------------------------------------------------------------------------------------------\n * Subsurface Scattering shader\n * Based on three/examples/jsm/shaders/SubsurfaceScatteringShader.js\n * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look\n * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/\n *------------------------------------------------------------------------------------------\n */\nimport {\n Color,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n} from 'three';\n\nfunction replaceAll(string, find, replace) {\n return string.split(find).join(replace);\n}\n\nconst meshphongFragHead = ShaderChunk.meshphong_frag.slice(0, ShaderChunk.meshphong_frag.indexOf('void main() {'));\nconst meshphongFragBody = ShaderChunk.meshphong_frag.slice(ShaderChunk.meshphong_frag.indexOf('void main() {'));\n\nconst SubsurfaceScatteringShader = {\n\n uniforms: UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n {\n thicknessColor: { value: new Color(0x668597) },\n thicknessDistortion: { value: 0.1 },\n thicknessAmbient: { value: 0.0 },\n thicknessAttenuation: { value: 0.1 },\n thicknessPower: { value: 2.0 },\n thicknessScale: { value: 10.0 },\n },\n ]),\n\n vertexShader: `\n #define USE_UV\n ${ShaderChunk.meshphong_vert}\n `,\n\n fragmentShader: `\n #define USE_UV\n #define SUBSURFACE\n\n ${meshphongFragHead}\n\n uniform float thicknessPower;\n uniform float thicknessScale;\n uniform float thicknessDistortion;\n uniform float thicknessAmbient;\n uniform float thicknessAttenuation;\n uniform vec3 thicknessColor;\n\n void RE_Direct_Scattering(const in IncidentLight directLight, const in vec2 uv, const in GeometricContext geometry, inout ReflectedLight reflectedLight) {\n #ifdef USE_COLOR\n vec3 thickness = vColor * thicknessColor;\n #else\n vec3 thickness = thicknessColor;\n #endif\n vec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * thicknessDistortion));\n float scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), thicknessPower) * thicknessScale;\n vec3 scatteringIllu = (scatteringDot + thicknessAmbient) * thickness;\n reflectedLight.directDiffuse += scatteringIllu * thicknessAttenuation * directLight.color;\n }\n ` + meshphongFragBody.replace(\n '#include <lights_fragment_begin>',\n replaceAll(\n ShaderChunk.lights_fragment_begin,\n 'RE_Direct( directLight, geometry, material, reflectedLight );',\n `\n RE_Direct( directLight, geometry, material, reflectedLight );\n #if defined( SUBSURFACE ) && defined( USE_UV )\n RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);\n #endif\n `\n )\n ),\n};\n\nexport default SubsurfaceScatteringShader;\n","export default {\n inject: ['three', 'mesh'],\n props: {\n id: String,\n uniforms: Object,\n vertexShader: String,\n fragmentShader: String,\n },\n beforeMount() {\n this.createMaterial();\n if (this.id) this.three.materials[this.id] = this.material;\n this.mesh.setMaterial(this.material);\n },\n mounted() {\n if (this.addWatchers) this.addWatchers();\n },\n unmounted() {\n this.material.dispose();\n if (this.id) delete this.three.materials[this.id];\n },\n render() {\n return [];\n },\n __hmrId: 'ShaderMaterial',\n};\n","import { Color, ShaderMaterial as TShaderMaterial, UniformsUtils } from 'three';\nimport SubsurfaceScatteringShader from './SubsurfaceScatteringShader.js';\nimport ShaderMaterial from './ShaderMaterial';\n\nexport default {\n extends: ShaderMaterial,\n props: {\n diffuse: { type: String, default: '#ffffff' },\n thicknessColor: { type: String, default: '#ffffff' },\n thicknessDistortion: { type: Number, default: 0.4 },\n thicknessAmbient: { type: Number, default: 0.01 },\n thicknessAttenuation: { type: Number, default: 0.7 },\n thicknessPower: { type: Number, default: 2 },\n thicknessScale: { type: Number, default: 4 },\n transparent: { type: Boolean, default: false },\n opacity: { type: Number, default: 1 },\n vertexColors: { type: Boolean, default: false },\n },\n methods: {\n createMaterial() {\n const params = SubsurfaceScatteringShader;\n const uniforms = UniformsUtils.clone(params.uniforms);\n Object.entries(this.$props).forEach(([key, value]) => {\n if (key === 'diffuse' || key === 'thicknessColor') {\n value = new Color(value);\n }\n if (key !== 'id' && key !== 'transparent' && key !== 'vertexColors') {\n uniforms[key].value = value;\n }\n });\n\n this.material = new TShaderMaterial({\n ...params,\n uniforms,\n lights: true,\n transparent: this.transparent,\n vertexColors: this.vertexColors,\n });\n },\n },\n __hmrId: 'SubSurfaceMaterial',\n};\n","import { MeshToonMaterial } from 'three';\nimport { propsValues } from '../tools.js';\nimport Material from './Material';\n\nexport default {\n extends: Material,\n methods: {\n createMaterial() {\n this.material = new MeshToonMaterial(propsValues(this.$props, ['id']));\n },\n },\n __hmrId: 'ToonMaterial',\n};\n","import { TextureLoader } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n src: String,\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'map' },\n },\n created() {\n this.refreshTexture();\n watch(() => this.src, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { CubeTextureLoader, CubeRefractionMapping } from 'three';\nimport { watch } from 'vue';\n\nexport default {\n inject: ['material'],\n emits: ['loaded'],\n props: {\n path: String,\n urls: {\n type: Array,\n default: ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'],\n },\n onLoad: Function,\n onProgress: Function,\n onError: Function,\n id: { type: String, default: 'envMap' },\n refraction: Boolean,\n // todo: remove ?\n refractionRatio: { type: Number, default: 0.98 },\n },\n created() {\n this.refreshTexture();\n watch(() => this.path, this.refreshTexture);\n watch(() => this.urls, this.refreshTexture);\n },\n unmounted() {\n this.material.setTexture(null, this.id);\n this.texture.dispose();\n },\n methods: {\n createTexture() {\n this.texture = new CubeTextureLoader()\n .setPath(this.path)\n .load(this.urls, this.onLoaded, this.onProgress, this.onError);\n },\n refreshTexture() {\n this.createTexture();\n this.material.setTexture(this.texture, this.id);\n if (this.refraction) {\n this.texture.mapping = CubeRefractionMapping;\n this.material.setProp('refractionRatio', this.refractionRatio);\n }\n },\n onLoaded() {\n if (this.onLoad) this.onLoad();\n this.$emit('loaded');\n },\n },\n render() {\n return [];\n },\n};\n","import { Mesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three', 'scene', 'rendererComponent'],\n emits: ['ready'],\n props: {\n materialId: String,\n position: Object,\n rotation: Object,\n scale: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n onHover: Function,\n onClick: Function,\n },\n // can't use setup because it will not be used in sub components\n // setup() {},\n created() {\n this.parent = inject('group', this.scene);\n },\n provide() {\n return {\n mesh: this,\n };\n },\n mounted() {\n // console.log('Mesh mounted');\n if (this.geometry && !this.mesh) this.initMesh();\n },\n unmounted() {\n // console.log('Mesh unmounted');\n if (this.mesh) {\n this.three.removeIntersectObject(this.mesh);\n this.parent.remove(this.mesh);\n }\n if (this.geometry) this.geometry.dispose();\n if (this.material && !this.materialId) this.material.dispose();\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n this.mesh = new Mesh(this.geometry, this.material);\n\n if (this.onHover) {\n this.mesh.onHover = (over) => { this.onHover({ component: this, over }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n if (this.onClick) {\n this.mesh.onClick = (e) => { this.onClick({ component: this, event: e }); };\n this.three.addIntersectObject(this.mesh);\n }\n\n this.bindProps();\n this.parent.add(this.mesh);\n this.$emit('ready');\n },\n bindProps() {\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n watch(() => this.materialId, () => {\n this.mesh.material = this.three.materials[this.materialId];\n });\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.createGeometry();\n this.mesh.geometry = this.geometry;\n oldGeo.dispose();\n },\n },\n render() {\n if (this.$slots.default) {\n return this.$slots.default();\n }\n return [];\n },\n __hmrId: 'Mesh',\n};\n","import { BoxBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n size: Number,\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n depth: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n depthSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n ['size', 'width', 'height', 'depth', 'widthSegments', 'heightSegments', 'depthSegments'].forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n if (this.size) {\n this.geometry = new BoxBufferGeometry(this.size, this.size, this.size);\n } else {\n this.geometry = new BoxBufferGeometry(this.width, this.height, this.depth);\n }\n },\n },\n __hmrId: 'Box',\n};\n","import { CircleBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n segments: { type: Number, default: 8 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'segments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CircleBufferGeometry(this.radius, this.segments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Circle',\n};\n","import { ConeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new ConeBufferGeometry(this.radius, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cone',\n};\n","import { CylinderBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radiusTop: { type: Number, default: 1 },\n radiusBottom: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n heightSegments: { type: Number, default: 1 },\n openEnded: { type: Boolean, default: false },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radiusTop', 'radiusBottom', 'height', 'radialSegments', 'heightSegments', 'openEnded', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new CylinderBufferGeometry(this.radiusTop, this.radiusBottom, this.height, this.radialSegments, this.heightSegments, this.openEnded, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Cylinder',\n};\n","import { DodecahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new DodecahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Dodecahedron',\n};\n","import { IcosahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new IcosahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Icosahedron',\n};\n","import { LatheBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n points: Array,\n segments: { type: Number, default: 12 },\n phiStart: { type: Number, default: 0 },\n phiLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['points', 'segments', 'phiStart', 'phiLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new LatheBufferGeometry(this.points, this.segments, this.phiStart, this.phiLength);\n },\n },\n __hmrId: 'Lathe',\n};\n","import { OctahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new OctahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Octahedron',\n};\n","import { PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n width: { type: Number, default: 1 },\n height: { type: Number, default: 1 },\n widthSegments: { type: Number, default: 1 },\n heightSegments: { type: Number, default: 1 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['width', 'height', 'widthSegments', 'heightSegments'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(this.width, this.height, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Plane',\n};\n","import { PolyhedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n vertices: Array,\n indices: Array,\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['vertices', 'indices', 'radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new PolyhedronBufferGeometry(this.vertices, this.indices, this.radius, this.detail);\n },\n },\n __hmrId: 'Polyhedron',\n};\n","import { RingBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n innerRadius: { type: Number, default: 0.5 },\n outerRadius: { type: Number, default: 1 },\n thetaSegments: { type: Number, default: 8 },\n phiSegments: { type: Number, default: 1 },\n thetaStart: { type: Number, default: 0 },\n thetaLength: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['innerRadius', 'outerRadius', 'thetaSegments', 'phiSegments', 'thetaStart', 'thetaLength'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new RingBufferGeometry(this.innerRadius, this.outerRadius, this.thetaSegments, this.phiSegments, this.thetaStart, this.thetaLength);\n },\n },\n __hmrId: 'Ring',\n};\n","import { SphereBufferGeometry } from 'three';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: Number,\n widthSegments: { type: Number, default: 12 },\n heightSegments: { type: Number, default: 12 },\n },\n watch: {\n radius() { this.refreshGeometry(); },\n widthSegments() { this.refreshGeometry(); },\n heightSegments() { this.refreshGeometry(); },\n },\n created() {\n this.createGeometry();\n },\n methods: {\n createGeometry() {\n this.geometry = new SphereBufferGeometry(this.radius, this.widthSegments, this.heightSegments);\n },\n },\n __hmrId: 'Sphere',\n};\n","import { TetrahedronBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 1 },\n detail: { type: Number, default: 0 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'detail'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TetrahedronBufferGeometry(this.radius, this.detail);\n },\n },\n __hmrId: 'Tetrahedron',\n};\n","export default {\n text: String,\n fontSrc: String,\n size: { type: Number, default: 80 },\n height: { type: Number, default: 5 },\n depth: { type: Number, default: 1 },\n curveSegments: { type: Number, default: 12 },\n bevelEnabled: { type: Boolean, default: false },\n bevelThickness: { type: Number, default: 10 },\n bevelSize: { type: Number, default: 8 },\n bevelOffset: { type: Number, default: 0 },\n bevelSegments: { type: Number, default: 5 },\n align: { type: [Boolean, String], default: false },\n};\n","import { FontLoader, TextBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport TextProps from './TextProps.js';\n\nexport default {\n extends: Mesh,\n props: {\n ...TextProps,\n },\n created() {\n // add watchers\n const watchProps = [\n 'text', 'size', 'height', 'curveSegments',\n 'bevelEnabled', 'bevelThickness', 'bevelSize', 'bevelOffset', 'bevelSegments',\n 'align',\n ];\n watchProps.forEach(p => {\n watch(() => this[p], () => {\n if (this.font) this.refreshGeometry();\n });\n });\n\n const loader = new FontLoader();\n loader.load(this.fontSrc, (font) => {\n this.font = font;\n this.createGeometry();\n this.initMesh();\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TextBufferGeometry(this.text, {\n font: this.font,\n size: this.size,\n height: this.height,\n depth: this.depth,\n curveSegments: this.curveSegments,\n bevelEnabled: this.bevelEnabled,\n bevelThickness: this.bevelThickness,\n bevelSize: this.bevelSize,\n bevelOffset: this.bevelOffset,\n bevelSegments: this.bevelSegments,\n });\n\n if (this.align === 'center') {\n this.geometry.center();\n }\n },\n },\n};\n","import { TorusBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 8 },\n tubularSegments: { type: Number, default: 6 },\n arc: { type: Number, default: Math.PI * 2 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'arc'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.arc);\n },\n },\n __hmrId: 'Torus',\n};\n","import { TorusKnotBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n radius: { type: Number, default: 0.5 },\n tube: { type: Number, default: 0.4 },\n radialSegments: { type: Number, default: 64 },\n tubularSegments: { type: Number, default: 8 },\n p: { type: Number, default: 2 },\n q: { type: Number, default: 3 },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['radius', 'tube', 'radialSegments', 'tubularSegments', 'p', 'q'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TorusKnotBufferGeometry(this.radius, this.tube, this.radialSegments, this.tubularSegments, this.p, this.q);\n },\n },\n __hmrId: 'TorusKnot',\n};\n","import { Curve, TubeBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n extends: Mesh,\n props: {\n path: Curve,\n tubularSegments: { type: Number, default: 64 },\n radius: { type: Number, default: 1 },\n radialSegments: { type: Number, default: 8 },\n closed: { type: Boolean, default: false },\n },\n created() {\n this.createGeometry();\n\n const watchProps = ['path', 'tubularSegments', 'radius', 'radialSegments', 'closed'];\n watchProps.forEach(prop => {\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n methods: {\n createGeometry() {\n this.geometry = new TubeBufferGeometry(this.path, this.tubularSegments, this.radius, this.radialSegments, this.closed);\n },\n },\n __hmrId: 'Tube',\n};\n","import {\n BackSide,\n CubeCamera,\n FrontSide,\n LinearMipmapLinearFilter,\n Mesh as TMesh,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from '../meshes/Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initGem();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.meshBack) this.parent.remove(this.meshBack);\n if (this.materialBack) this.materialBack.dispose();\n },\n methods: {\n initGem() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.side = FrontSide;\n this.material.envMap = cubeRT.texture;\n this.material.envMapIntensity = 10;\n this.material.metalness = 0;\n this.material.roughness = 0;\n this.material.opacity = 0.75;\n this.material.transparent = true;\n this.material.premultipliedAlpha = true;\n this.material.needsUpdate = true;\n\n this.materialBack = this.material.clone();\n this.materialBack.side = BackSide;\n this.materialBack.envMapIntensity = 5;\n this.materialBack.metalness = 1;\n this.materialBack.roughness = 0;\n this.materialBack.opacity = 0.5;\n\n this.meshBack = new TMesh(this.geometry, this.materialBack);\n\n useBindProp(this, 'position', this.meshBack.position);\n useBindProp(this, 'rotation', this.meshBack.rotation);\n useBindProp(this, 'scale', this.meshBack.scale);\n this.parent.add(this.meshBack);\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.meshBack.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n this.meshBack.visible = true;\n },\n },\n __hmrId: 'Gem',\n};\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry, TextureLoader } from 'three';\nimport { watch } from 'vue';\nimport Mesh from './Mesh.js';\n\nexport default {\n emits: ['loaded'],\n extends: Mesh,\n props: {\n src: String,\n width: Number,\n height: Number,\n keepSize: Boolean,\n },\n created() {\n this.createGeometry();\n this.createMaterial();\n this.initMesh();\n\n watch(() => this.src, this.refreshTexture);\n\n ['width', 'height'].forEach(p => {\n watch(() => this[p], this.resize);\n });\n\n if (this.keepSize) this.three.onAfterResize(this.resize);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, 1, 1);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n },\n loadTexture() {\n return new TextureLoader().load(this.src, this.onLoaded);\n },\n refreshTexture() {\n if (this.texture) this.texture.dispose();\n this.material.map = this.loadTexture();\n this.material.needsUpdate = true;\n },\n onLoaded(texture) {\n this.texture = texture;\n this.resize();\n this.$emit('loaded');\n },\n resize() {\n if (!this.texture) return;\n const screen = this.three.size;\n const iW = this.texture.image.width;\n const iH = this.texture.image.height;\n const iRatio = iW / iH;\n let w, h;\n if (this.width && this.height) {\n w = this.width * screen.wWidth / screen.width;\n h = this.height * screen.wHeight / screen.height;\n } else if (this.width) {\n w = this.width * screen.wWidth / screen.width;\n h = w / iRatio;\n } else if (this.height) {\n h = this.height * screen.wHeight / screen.height;\n w = h * iRatio;\n }\n this.mesh.scale.x = w;\n this.mesh.scale.y = h;\n },\n },\n __hmrId: 'Image',\n};\n","import { InstancedMesh } from 'three';\nimport { inject, watch } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n inject: ['three', 'scene'],\n props: {\n materialId: String,\n count: Number,\n position: Object,\n castShadow: Boolean,\n receiveShadow: Boolean,\n },\n created() {\n this.parent = inject('group', this.scene);\n },\n provide() {\n return {\n mesh: this,\n };\n },\n beforeMount() {\n if (!this.$slots.default) {\n console.error('Missing Geometry');\n }\n },\n mounted() {\n this.initMesh();\n },\n unmounted() {\n this.parent.remove(this.mesh);\n },\n methods: {\n initMesh() {\n if (!this.material && this.materialId) {\n this.material = this.three.materials[this.materialId];\n }\n\n this.mesh = new InstancedMesh(this.geometry, this.material, this.count);\n\n useBindProp(this, 'position', this.mesh.position);\n useBindProp(this, 'rotation', this.mesh.rotation);\n useBindProp(this, 'scale', this.mesh.scale);\n\n ['castShadow', 'receiveShadow'].forEach(p => {\n this.mesh[p] = this[p];\n watch(() => this[p], () => { this.mesh[p] = this[p]; });\n });\n\n // watch(() => this.materialId, () => {\n // this.mesh.material = this.three.materials[this.materialId];\n // });\n\n this.parent.add(this.mesh);\n },\n setGeometry(geometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n setMaterial(material) {\n this.material = material;\n if (this.mesh) this.mesh.material = material;\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'InstancedMesh',\n};\n","import {\n CubeCamera,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'MirrorMesh',\n};\n","import {\n CubeCamera,\n CubeRefractionMapping,\n LinearMipmapLinearFilter,\n RGBFormat,\n WebGLCubeRenderTarget,\n} from 'three';\n// import { watch } from 'vue';\nimport Mesh from './Mesh.js';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n extends: Mesh,\n props: {\n cubeRTSize: { type: Number, default: 256 },\n cubeCameraNear: { type: Number, default: 0.1 },\n cubeCameraFar: { type: Number, default: 2000 },\n refractionRatio: { type: Number, default: 0.98 },\n autoUpdate: Boolean,\n },\n mounted() {\n this.initMirrorMesh();\n if (this.autoUpdate) this.three.onBeforeRender(this.updateCubeRT);\n else this.rendererComponent.onMounted(this.updateCubeRT);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateCubeRT);\n if (this.cubeCamera) this.parent.remove(this.cubeCamera);\n },\n methods: {\n initMirrorMesh() {\n const cubeRT = new WebGLCubeRenderTarget(this.cubeRTSize, { mapping: CubeRefractionMapping, format: RGBFormat, generateMipmaps: true, minFilter: LinearMipmapLinearFilter });\n this.cubeCamera = new CubeCamera(this.cubeCameraNear, this.cubeCameraFar, cubeRT);\n useBindProp(this, 'position', this.cubeCamera.position);\n this.parent.add(this.cubeCamera);\n\n this.material.envMap = cubeRT.texture;\n this.material.refractionRatio = this.refractionRatio;\n this.material.needsUpdate = true;\n },\n updateCubeRT() {\n this.mesh.visible = false;\n this.cubeCamera.update(this.three.renderer, this.scene);\n this.mesh.visible = true;\n },\n },\n __hmrId: 'RefractionMesh',\n};\n","import { Sprite, SpriteMaterial, TextureLoader } from 'three';\nimport { inject } from 'vue';\nimport useBindProp from '../use/useBindProp.js';\n\nexport default {\n emits: ['ready', 'loaded'],\n inject: ['three', 'scene'],\n props: {\n src: String,\n position: Object,\n scale: Object,\n },\n created() {\n this.parent = inject('group', this.scene);\n },\n mounted() {\n this.texture = new TextureLoader().load(this.src, this.onLoaded);\n this.material = new SpriteMaterial({ map: this.texture });\n this.sprite = new Sprite(this.material);\n this.geometry = this.sprite.geometry;\n useBindProp(this, 'position', this.sprite.position);\n useBindProp(this, 'scale', this.sprite.scale);\n\n this.parent.add(this.sprite);\n this.$emit('ready');\n },\n unmounted() {\n this.texture.dispose();\n this.material.dispose();\n this.parent.remove(this.sprite);\n },\n methods: {\n onLoaded() {\n this.updateUV();\n this.$emit('loaded');\n },\n updateUV() {\n this.iWidth = this.texture.image.width;\n this.iHeight = this.texture.image.height;\n this.iRatio = this.iWidth / this.iHeight;\n\n let x = 0.5, y = 0.5;\n if (this.iRatio > 1) {\n y = 0.5 / this.iRatio;\n } else {\n x = 0.5 / this.iRatio;\n }\n\n const positions = this.geometry.attributes.position.array;\n positions[0] = -x; positions[1] = -y;\n positions[5] = x; positions[6] = -y;\n positions[10] = x; positions[11] = y;\n positions[15] = -x; positions[16] = y;\n this.geometry.attributes.position.needsUpdate = true;\n },\n },\n render() {\n return [];\n },\n __hmrId: 'Sprite',\n};\n","/**\n * Full-screen textured quad shader\n */\n\nvar CopyShader = {\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'opacity': { value: 1.0 }\n\n\t},\n\n\tvertexShader: [\n\n\t\t'varying vec2 vUv;',\n\n\t\t'void main() {',\n\n\t\t'\tvUv = uv;',\n\t\t'\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n\t\t'}'\n\n\t].join( '\\n' ),\n\n\tfragmentShader: [\n\n\t\t'uniform float opacity;',\n\n\t\t'uniform sampler2D tDiffuse;',\n\n\t\t'varying vec2 vUv;',\n\n\t\t'void main() {',\n\n\t\t'\tvec4 texel = texture2D( tDiffuse, vUv );',\n\t\t'\tgl_FragColor = opacity * texel;',\n\n\t\t'}'\n\n\t].join( '\\n' )\n\n};\n\nexport { CopyShader };\n","import {\n\tOrthographicCamera,\n\tPlaneGeometry,\n\tMesh\n} from '../../../build/three.module.js';\n\nfunction Pass() {\n\n\t// if set to true, the pass is processed by the composer\n\tthis.enabled = true;\n\n\t// if set to true, the pass indicates to swap read and write buffer after rendering\n\tthis.needsSwap = true;\n\n\t// if set to true, the pass clears its buffer before rendering\n\tthis.clear = false;\n\n\t// if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n\tthis.renderToScreen = false;\n\n}\n\nObject.assign( Pass.prototype, {\n\n\tsetSize: function ( /* width, height */ ) {},\n\n\trender: function ( /* renderer, writeBuffer, readBuffer, deltaTime, maskActive */ ) {\n\n\t\tconsole.error( 'THREE.Pass: .render() must be implemented in derived pass.' );\n\n\t}\n\n} );\n\n// Helper for passes that need to fill the viewport with a single quad.\n\n// Important: It's actually a hack to put FullScreenQuad into the Pass namespace. This is only\n// done to make examples/js code work. Normally, FullScreenQuad should be exported\n// from this module like Pass.\n\nPass.FullScreenQuad = ( function () {\n\n\tvar camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\tvar geometry = new PlaneGeometry( 2, 2 );\n\n\tvar FullScreenQuad = function ( material ) {\n\n\t\tthis._mesh = new Mesh( geometry, material );\n\n\t};\n\n\tObject.defineProperty( FullScreenQuad.prototype, 'material', {\n\n\t\tget: function () {\n\n\t\t\treturn this._mesh.material;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._mesh.material = value;\n\n\t\t}\n\n\t} );\n\n\tObject.assign( FullScreenQuad.prototype, {\n\n\t\tdispose: function () {\n\n\t\t\tthis._mesh.geometry.dispose();\n\n\t\t},\n\n\t\trender: function ( renderer ) {\n\n\t\t\trenderer.render( this._mesh, camera );\n\n\t\t}\n\n\t} );\n\n\treturn FullScreenQuad;\n\n} )();\n\nexport { Pass };\n","import {\n\tShaderMaterial,\n\tUniformsUtils\n} from '../../../build/three.module.js';\nimport { Pass } from '../postprocessing/Pass.js';\n\nvar ShaderPass = function ( shader, textureID ) {\n\n\tPass.call( this );\n\n\tthis.textureID = ( textureID !== undefined ) ? textureID : 'tDiffuse';\n\n\tif ( shader instanceof ShaderMaterial ) {\n\n\t\tthis.uniforms = shader.uniforms;\n\n\t\tthis.material = shader;\n\n\t} else if ( shader ) {\n\n\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\tthis.material = new ShaderMaterial( {\n\n\t\t\tdefines: Object.assign( {}, shader.defines ),\n\t\t\tuniforms: this.uniforms,\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader\n\n\t\t} );\n\n\t}\n\n\tthis.fsQuad = new Pass.FullScreenQuad( this.material );\n\n};\n\nShaderPass.prototype = Object.assign( Object.create( Pass.prototype ), {\n\n\tconstructor: ShaderPass,\n\n\trender: function ( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tif ( this.uniforms[ this.textureID ] ) {\n\n\t\t\tthis.uniforms[ this.textureID ].value = readBuffer.texture;\n\n\t\t}\n\n\t\tthis.fsQuad.material = this.material;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\t// TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n\t\t\tif ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t}\n\n} );\n\nexport { ShaderPass };\n","import { Pass } from '../postprocessing/Pass.js';\n\nvar MaskPass = function ( scene, camera ) {\n\n\tPass.call( this );\n\n\tthis.scene = scene;\n\tthis.camera = camera;\n\n\tthis.clear = true;\n\tthis.needsSwap = false;\n\n\tthis.inverse = false;\n\n};\n\nMaskPass.prototype = Object.assign( Object.create( Pass.prototype ), {\n\n\tconstructor: MaskPass,\n\n\trender: function ( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tvar context = renderer.getContext();\n\t\tvar state = renderer.state;\n\n\t\t// don't update color or depth\n\n\t\tstate.buffers.color.setMask( false );\n\t\tstate.buffers.depth.setMask( false );\n\n\t\t// lock buffers\n\n\t\tstate.buffers.color.setLocked( true );\n\t\tstate.buffers.depth.setLocked( true );\n\n\t\t// set up stencil\n\n\t\tvar writeValue, clearValue;\n\n\t\tif ( this.inverse ) {\n\n\t\t\twriteValue = 0;\n\t\t\tclearValue = 1;\n\n\t\t} else {\n\n\t\t\twriteValue = 1;\n\t\t\tclearValue = 0;\n\n\t\t}\n\n\t\tstate.buffers.stencil.setTest( true );\n\t\tstate.buffers.stencil.setOp( context.REPLACE, context.REPLACE, context.REPLACE );\n\t\tstate.buffers.stencil.setFunc( context.ALWAYS, writeValue, 0xffffffff );\n\t\tstate.buffers.stencil.setClear( clearValue );\n\t\tstate.buffers.stencil.setLocked( true );\n\n\t\t// draw into the stencil buffer\n\n\t\trenderer.setRenderTarget( readBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\trenderer.render( this.scene, this.camera );\n\n\t\trenderer.setRenderTarget( writeBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\trenderer.render( this.scene, this.camera );\n\n\t\t// unlock color and depth buffer for subsequent rendering\n\n\t\tstate.buffers.color.setLocked( false );\n\t\tstate.buffers.depth.setLocked( false );\n\n\t\t// only render where stencil is set to 1\n\n\t\tstate.buffers.stencil.setLocked( false );\n\t\tstate.buffers.stencil.setFunc( context.EQUAL, 1, 0xffffffff ); // draw if == 1\n\t\tstate.buffers.stencil.setOp( context.KEEP, context.KEEP, context.KEEP );\n\t\tstate.buffers.stencil.setLocked( true );\n\n\t}\n\n} );\n\n\nvar ClearMaskPass = function () {\n\n\tPass.call( this );\n\n\tthis.needsSwap = false;\n\n};\n\nClearMaskPass.prototype = Object.create( Pass.prototype );\n\nObject.assign( ClearMaskPass.prototype, {\n\n\trender: function ( renderer /*, writeBuffer, readBuffer, deltaTime, maskActive */ ) {\n\n\t\trenderer.state.buffers.stencil.setLocked( false );\n\t\trenderer.state.buffers.stencil.setTest( false );\n\n\t}\n\n} );\n\nexport { MaskPass, ClearMaskPass };\n","import {\n\tClock,\n\tLinearFilter,\n\tMesh,\n\tOrthographicCamera,\n\tPlaneGeometry,\n\tRGBAFormat,\n\tVector2,\n\tWebGLRenderTarget\n} from '../../../build/three.module.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\nimport { ShaderPass } from '../postprocessing/ShaderPass.js';\nimport { MaskPass } from '../postprocessing/MaskPass.js';\nimport { ClearMaskPass } from '../postprocessing/MaskPass.js';\n\nvar EffectComposer = function ( renderer, renderTarget ) {\n\n\tthis.renderer = renderer;\n\n\tif ( renderTarget === undefined ) {\n\n\t\tvar parameters = {\n\t\t\tminFilter: LinearFilter,\n\t\t\tmagFilter: LinearFilter,\n\t\t\tformat: RGBAFormat\n\t\t};\n\n\t\tvar size = renderer.getSize( new Vector2() );\n\t\tthis._pixelRatio = renderer.getPixelRatio();\n\t\tthis._width = size.width;\n\t\tthis._height = size.height;\n\n\t\trenderTarget = new WebGLRenderTarget( this._width * this._pixelRatio, this._height * this._pixelRatio, parameters );\n\t\trenderTarget.texture.name = 'EffectComposer.rt1';\n\n\t} else {\n\n\t\tthis._pixelRatio = 1;\n\t\tthis._width = renderTarget.width;\n\t\tthis._height = renderTarget.height;\n\n\t}\n\n\tthis.renderTarget1 = renderTarget;\n\tthis.renderTarget2 = renderTarget.clone();\n\tthis.renderTarget2.texture.name = 'EffectComposer.rt2';\n\n\tthis.writeBuffer = this.renderTarget1;\n\tthis.readBuffer = this.renderTarget2;\n\n\tthis.renderToScreen = true;\n\n\tthis.passes = [];\n\n\t// dependencies\n\n\tif ( CopyShader === undefined ) {\n\n\t\tconsole.error( 'THREE.EffectComposer relies on CopyShader' );\n\n\t}\n\n\tif ( ShaderPass === undefined ) {\n\n\t\tconsole.error( 'THREE.EffectComposer relies on ShaderPass' );\n\n\t}\n\n\tthis.copyPass = new ShaderPass( CopyShader );\n\n\tthis.clock = new Clock();\n\n};\n\nObject.assign( EffectComposer.prototype, {\n\n\tswapBuffers: function () {\n\n\t\tvar tmp = this.readBuffer;\n\t\tthis.readBuffer = this.writeBuffer;\n\t\tthis.writeBuffer = tmp;\n\n\t},\n\n\taddPass: function ( pass ) {\n\n\t\tthis.passes.push( pass );\n\t\tpass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t},\n\n\tinsertPass: function ( pass, index ) {\n\n\t\tthis.passes.splice( index, 0, pass );\n\t\tpass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t},\n\n\tremovePass: function ( pass ) {\n\n\t\tconst index = this.passes.indexOf( pass );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tthis.passes.splice( index, 1 );\n\n\t\t}\n\n\t},\n\n\tisLastEnabledPass: function ( passIndex ) {\n\n\t\tfor ( var i = passIndex + 1; i < this.passes.length; i ++ ) {\n\n\t\t\tif ( this.passes[ i ].enabled ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\trender: function ( deltaTime ) {\n\n\t\t// deltaTime value is in seconds\n\n\t\tif ( deltaTime === undefined ) {\n\n\t\t\tdeltaTime = this.clock.getDelta();\n\n\t\t}\n\n\t\tvar currentRenderTarget = this.renderer.getRenderTarget();\n\n\t\tvar maskActive = false;\n\n\t\tvar pass, i, il = this.passes.length;\n\n\t\tfor ( i = 0; i < il; i ++ ) {\n\n\t\t\tpass = this.passes[ i ];\n\n\t\t\tif ( pass.enabled === false ) continue;\n\n\t\t\tpass.renderToScreen = ( this.renderToScreen && this.isLastEnabledPass( i ) );\n\t\t\tpass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive );\n\n\t\t\tif ( pass.needsSwap ) {\n\n\t\t\t\tif ( maskActive ) {\n\n\t\t\t\t\tvar context = this.renderer.getContext();\n\t\t\t\t\tvar stencil = this.renderer.state.buffers.stencil;\n\n\t\t\t\t\t//context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );\n\t\t\t\t\tstencil.setFunc( context.NOTEQUAL, 1, 0xffffffff );\n\n\t\t\t\t\tthis.copyPass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime );\n\n\t\t\t\t\t//context.stencilFunc( context.EQUAL, 1, 0xffffffff );\n\t\t\t\t\tstencil.setFunc( context.EQUAL, 1, 0xffffffff );\n\n\t\t\t\t}\n\n\t\t\t\tthis.swapBuffers();\n\n\t\t\t}\n\n\t\t\tif ( MaskPass !== undefined ) {\n\n\t\t\t\tif ( pass instanceof MaskPass ) {\n\n\t\t\t\t\tmaskActive = true;\n\n\t\t\t\t} else if ( pass instanceof ClearMaskPass ) {\n\n\t\t\t\t\tmaskActive = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.renderer.setRenderTarget( currentRenderTarget );\n\n\t},\n\n\treset: function ( renderTarget ) {\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\tvar size = this.renderer.getSize( new Vector2() );\n\t\t\tthis._pixelRatio = this.renderer.getPixelRatio();\n\t\t\tthis._width = size.width;\n\t\t\tthis._height = size.height;\n\n\t\t\trenderTarget = this.renderTarget1.clone();\n\t\t\trenderTarget.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t\t}\n\n\t\tthis.renderTarget1.dispose();\n\t\tthis.renderTarget2.dispose();\n\t\tthis.renderTarget1 = renderTarget;\n\t\tthis.renderTarget2 = renderTarget.clone();\n\n\t\tthis.writeBuffer = this.renderTarget1;\n\t\tthis.readBuffer = this.renderTarget2;\n\n\t},\n\n\tsetSize: function ( width, height ) {\n\n\t\tthis._width = width;\n\t\tthis._height = height;\n\n\t\tvar effectiveWidth = this._width * this._pixelRatio;\n\t\tvar effectiveHeight = this._height * this._pixelRatio;\n\n\t\tthis.renderTarget1.setSize( effectiveWidth, effectiveHeight );\n\t\tthis.renderTarget2.setSize( effectiveWidth, effectiveHeight );\n\n\t\tfor ( var i = 0; i < this.passes.length; i ++ ) {\n\n\t\t\tthis.passes[ i ].setSize( effectiveWidth, effectiveHeight );\n\n\t\t}\n\n\t},\n\n\tsetPixelRatio: function ( pixelRatio ) {\n\n\t\tthis._pixelRatio = pixelRatio;\n\n\t\tthis.setSize( this._width, this._height );\n\n\t}\n\n} );\n\n\nvar Pass = function () {\n\n\t// if set to true, the pass is processed by the composer\n\tthis.enabled = true;\n\n\t// if set to true, the pass indicates to swap read and write buffer after rendering\n\tthis.needsSwap = true;\n\n\t// if set to true, the pass clears its buffer before rendering\n\tthis.clear = false;\n\n\t// if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n\tthis.renderToScreen = false;\n\n};\n\nObject.assign( Pass.prototype, {\n\n\tsetSize: function ( /* width, height */ ) {},\n\n\trender: function ( /* renderer, writeBuffer, readBuffer, deltaTime, maskActive */ ) {\n\n\t\tconsole.error( 'THREE.Pass: .render() must be implemented in derived pass.' );\n\n\t}\n\n} );\n\n// Helper for passes that need to fill the viewport with a single quad.\nPass.FullScreenQuad = ( function () {\n\n\tvar camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\tvar geometry = new PlaneGeometry( 2, 2 );\n\n\tvar FullScreenQuad = function ( material ) {\n\n\t\tthis._mesh = new Mesh( geometry, material );\n\n\t};\n\n\tObject.defineProperty( FullScreenQuad.prototype, 'material', {\n\n\t\tget: function () {\n\n\t\t\treturn this._mesh.material;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._mesh.material = value;\n\n\t\t}\n\n\t} );\n\n\tObject.assign( FullScreenQuad.prototype, {\n\n\t\tdispose: function () {\n\n\t\t\tthis._mesh.geometry.dispose();\n\n\t\t},\n\n\t\trender: function ( renderer ) {\n\n\t\t\trenderer.render( this._mesh, camera );\n\n\t\t}\n\n\t} );\n\n\treturn FullScreenQuad;\n\n} )();\n\nexport { EffectComposer, Pass };\n","import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\n\nexport default {\n setup() {\n return {\n passes: [],\n };\n },\n inject: ['three'],\n provide() {\n return {\n passes: this.passes,\n };\n },\n mounted() {\n this.three.onAfterInit(() => {\n this.composer = new EffectComposer(this.three.renderer);\n this.three.renderer.autoClear = false;\n this.passes.forEach(pass => {\n this.composer.addPass(pass);\n });\n this.three.composer = this.composer;\n\n this.resize();\n this.three.onAfterResize(this.resize);\n });\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n this.composer.setSize(this.three.size.width, this.three.size.height);\n },\n },\n render() {\n return this.$slots.default();\n },\n __hmrId: 'EffectComposer',\n};\n","import {\n\tColor\n} from '../../../build/three.module.js';\nimport { Pass } from '../postprocessing/Pass.js';\n\nvar RenderPass = function ( scene, camera, overrideMaterial, clearColor, clearAlpha ) {\n\n\tPass.call( this );\n\n\tthis.scene = scene;\n\tthis.camera = camera;\n\n\tthis.overrideMaterial = overrideMaterial;\n\n\tthis.clearColor = clearColor;\n\tthis.clearAlpha = ( clearAlpha !== undefined ) ? clearAlpha : 0;\n\n\tthis.clear = true;\n\tthis.clearDepth = false;\n\tthis.needsSwap = false;\n\tthis._oldClearColor = new Color();\n\n};\n\nRenderPass.prototype = Object.assign( Object.create( Pass.prototype ), {\n\n\tconstructor: RenderPass,\n\n\trender: function ( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tvar oldAutoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tvar oldClearAlpha, oldOverrideMaterial;\n\n\t\tif ( this.overrideMaterial !== undefined ) {\n\n\t\t\toldOverrideMaterial = this.scene.overrideMaterial;\n\n\t\t\tthis.scene.overrideMaterial = this.overrideMaterial;\n\n\t\t}\n\n\t\tif ( this.clearColor ) {\n\n\t\t\trenderer.getClearColor( this._oldClearColor );\n\t\t\toldClearAlpha = renderer.getClearAlpha();\n\n\t\t\trenderer.setClearColor( this.clearColor, this.clearAlpha );\n\n\t\t}\n\n\t\tif ( this.clearDepth ) {\n\n\t\t\trenderer.clearDepth();\n\n\t\t}\n\n\t\trenderer.setRenderTarget( this.renderToScreen ? null : readBuffer );\n\n\t\t// TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n\t\tif ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\t\trenderer.render( this.scene, this.camera );\n\n\t\tif ( this.clearColor ) {\n\n\t\t\trenderer.setClearColor( this._oldClearColor, oldClearAlpha );\n\n\t\t}\n\n\t\tif ( this.overrideMaterial !== undefined ) {\n\n\t\t\tthis.scene.overrideMaterial = oldOverrideMaterial;\n\n\t\t}\n\n\t\trenderer.autoClear = oldAutoClear;\n\n\t}\n\n} );\n\nexport { RenderPass };\n","export default {\n inject: ['three', 'passes'],\n beforeMount() {\n if (!this.passes) {\n console.error('Missing parent EffectComposer');\n }\n },\n unmounted() {\n if (this.pass.dispose) this.pass.dispose();\n },\n render() {\n return [];\n },\n __hmrId: 'EffectPass',\n};\n","import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const pass = new RenderPass(this.three.scene, this.three.camera);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'RenderPass',\n};\n","/**\n * Depth-of-field shader with bokeh\n * ported from GLSL shader by Martins Upitis\n * http://artmartinsh.blogspot.com/2010/02/glsl-lens-blur-filter-with-bokeh.html\n */\n\nvar BokehShader = {\n\n\tdefines: {\n\t\t'DEPTH_PACKING': 1,\n\t\t'PERSPECTIVE_CAMERA': 1,\n\t},\n\n\tuniforms: {\n\n\t\t'tColor': { value: null },\n\t\t'tDepth': { value: null },\n\t\t'focus': { value: 1.0 },\n\t\t'aspect': { value: 1.0 },\n\t\t'aperture': { value: 0.025 },\n\t\t'maxblur': { value: 0.01 },\n\t\t'nearClip': { value: 1.0 },\n\t\t'farClip': { value: 1000.0 },\n\n\t},\n\n\tvertexShader: [\n\n\t\t'varying vec2 vUv;',\n\n\t\t'void main() {',\n\n\t\t'\tvUv = uv;',\n\t\t'\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n\t\t'}'\n\n\t].join( '\\n' ),\n\n\tfragmentShader: [\n\t\t'#include <common>',\n\n\t\t'varying vec2 vUv;',\n\n\t\t'uniform sampler2D tColor;',\n\t\t'uniform sampler2D tDepth;',\n\n\t\t'uniform float maxblur;', // max blur amount\n\t\t'uniform float aperture;', // aperture - bigger values for shallower depth of field\n\n\t\t'uniform float nearClip;',\n\t\t'uniform float farClip;',\n\n\t\t'uniform float focus;',\n\t\t'uniform float aspect;',\n\n\t\t'#include <packing>',\n\n\t\t'float getDepth( const in vec2 screenPosition ) {',\n\t\t'\t#if DEPTH_PACKING == 1',\n\t\t'\treturn unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );',\n\t\t'\t#else',\n\t\t'\treturn texture2D( tDepth, screenPosition ).x;',\n\t\t'\t#endif',\n\t\t'}',\n\n\t\t'float getViewZ( const in float depth ) {',\n\t\t'\t#if PERSPECTIVE_CAMERA == 1',\n\t\t'\treturn perspectiveDepthToViewZ( depth, nearClip, farClip );',\n\t\t'\t#else',\n\t\t'\treturn orthographicDepthToViewZ( depth, nearClip, farClip );',\n\t\t'\t#endif',\n\t\t'}',\n\n\n\t\t'void main() {',\n\n\t\t'\tvec2 aspectcorrect = vec2( 1.0, aspect );',\n\n\t\t'\tfloat viewZ = getViewZ( getDepth( vUv ) );',\n\n\t\t'\tfloat factor = ( focus + viewZ );', // viewZ is <= 0, so this is a difference equation\n\n\t\t'\tvec2 dofblur = vec2 ( clamp( factor * aperture, -maxblur, maxblur ) );',\n\n\t\t'\tvec2 dofblur9 = dofblur * 0.9;',\n\t\t'\tvec2 dofblur7 = dofblur * 0.7;',\n\t\t'\tvec2 dofblur4 = dofblur * 0.4;',\n\n\t\t'\tvec4 col = vec4( 0.0 );',\n\n\t\t'\tcol += texture2D( tColor, vUv.xy );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, 0.37 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, 0.15 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.40, 0.0 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, -0.15 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, -0.37 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, 0.37 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, 0.15 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, -0.15 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, -0.37 ) * aspectcorrect ) * dofblur );',\n\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, 0.37 ) * aspectcorrect ) * dofblur9 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, 0.15 ) * aspectcorrect ) * dofblur9 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, -0.15 ) * aspectcorrect ) * dofblur9 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, -0.37 ) * aspectcorrect ) * dofblur9 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, 0.37 ) * aspectcorrect ) * dofblur9 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, 0.15 ) * aspectcorrect ) * dofblur9 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, -0.15 ) * aspectcorrect ) * dofblur9 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, -0.37 ) * aspectcorrect ) * dofblur9 );',\n\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur7 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.40, 0.0 ) * aspectcorrect ) * dofblur7 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur7 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur7 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur7 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur7 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur7 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur7 );',\n\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur4 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.4, 0.0 ) * aspectcorrect ) * dofblur4 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur4 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur4 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur4 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur4 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur4 );',\n\t\t'\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur4 );',\n\n\t\t'\tgl_FragColor = col / 41.0;',\n\t\t'\tgl_FragColor.a = 1.0;',\n\n\t\t'}'\n\n\t].join( '\\n' )\n\n};\n\nexport { BokehShader };\n","import {\n\tColor,\n\tMeshDepthMaterial,\n\tNearestFilter,\n\tNoBlending,\n\tRGBADepthPacking,\n\tShaderMaterial,\n\tUniformsUtils,\n\tWebGLRenderTarget\n} from '../../../build/three.module.js';\nimport { Pass } from '../postprocessing/Pass.js';\nimport { BokehShader } from '../shaders/BokehShader.js';\n\n/**\n * Depth-of-field post-process with bokeh shader\n */\n\nvar BokehPass = function ( scene, camera, params ) {\n\n\tPass.call( this );\n\n\tthis.scene = scene;\n\tthis.camera = camera;\n\n\tvar focus = ( params.focus !== undefined ) ? params.focus : 1.0;\n\tvar aspect = ( params.aspect !== undefined ) ? params.aspect : camera.aspect;\n\tvar aperture = ( params.aperture !== undefined ) ? params.aperture : 0.025;\n\tvar maxblur = ( params.maxblur !== undefined ) ? params.maxblur : 1.0;\n\n\t// render targets\n\n\tvar width = params.width || window.innerWidth || 1;\n\tvar height = params.height || window.innerHeight || 1;\n\n\tthis.renderTargetDepth = new WebGLRenderTarget( width, height, {\n\t\tminFilter: NearestFilter,\n\t\tmagFilter: NearestFilter\n\t} );\n\n\tthis.renderTargetDepth.texture.name = 'BokehPass.depth';\n\n\t// depth material\n\n\tthis.materialDepth = new MeshDepthMaterial();\n\tthis.materialDepth.depthPacking = RGBADepthPacking;\n\tthis.materialDepth.blending = NoBlending;\n\n\t// bokeh material\n\n\tif ( BokehShader === undefined ) {\n\n\t\tconsole.error( 'THREE.BokehPass relies on BokehShader' );\n\n\t}\n\n\tvar bokehShader = BokehShader;\n\tvar bokehUniforms = UniformsUtils.clone( bokehShader.uniforms );\n\n\tbokehUniforms[ 'tDepth' ].value = this.renderTargetDepth.texture;\n\n\tbokehUniforms[ 'focus' ].value = focus;\n\tbokehUniforms[ 'aspect' ].value = aspect;\n\tbokehUniforms[ 'aperture' ].value = aperture;\n\tbokehUniforms[ 'maxblur' ].value = maxblur;\n\tbokehUniforms[ 'nearClip' ].value = camera.near;\n\tbokehUniforms[ 'farClip' ].value = camera.far;\n\n\tthis.materialBokeh = new ShaderMaterial( {\n\t\tdefines: Object.assign( {}, bokehShader.defines ),\n\t\tuniforms: bokehUniforms,\n\t\tvertexShader: bokehShader.vertexShader,\n\t\tfragmentShader: bokehShader.fragmentShader\n\t} );\n\n\tthis.uniforms = bokehUniforms;\n\tthis.needsSwap = false;\n\n\tthis.fsQuad = new Pass.FullScreenQuad( this.materialBokeh );\n\n\tthis._oldClearColor = new Color();\n\n};\n\nBokehPass.prototype = Object.assign( Object.create( Pass.prototype ), {\n\n\tconstructor: BokehPass,\n\n\trender: function ( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive*/ ) {\n\n\t\t// Render depth into texture\n\n\t\tthis.scene.overrideMaterial = this.materialDepth;\n\n\t\trenderer.getClearColor( this._oldClearColor );\n\t\tvar oldClearAlpha = renderer.getClearAlpha();\n\t\tvar oldAutoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\trenderer.setClearColor( 0xffffff );\n\t\trenderer.setClearAlpha( 1.0 );\n\t\trenderer.setRenderTarget( this.renderTargetDepth );\n\t\trenderer.clear();\n\t\trenderer.render( this.scene, this.camera );\n\n\t\t// Render bokeh composite\n\n\t\tthis.uniforms[ 'tColor' ].value = readBuffer.texture;\n\t\tthis.uniforms[ 'nearClip' ].value = this.camera.near;\n\t\tthis.uniforms[ 'farClip' ].value = this.camera.far;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t\tthis.scene.overrideMaterial = null;\n\t\trenderer.setClearColor( this._oldClearColor );\n\t\trenderer.setClearAlpha( oldClearAlpha );\n\t\trenderer.autoClear = oldAutoClear;\n\n\t}\n\n} );\n\nexport { BokehPass };\n","import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n focus: {\n type: Number,\n default: 1,\n },\n aperture: {\n type: Number,\n default: 0.025,\n },\n maxblur: {\n type: Number,\n default: 0.01,\n },\n },\n watch: {\n focus() { this.pass.uniforms.focus.value = this.focus; },\n aperture() { this.pass.uniforms.aperture.value = this.aperture; },\n maxblur() { this.pass.uniforms.maxblur.value = this.maxblur; },\n },\n mounted() {\n if (!this.three.scene) {\n console.error('Missing Scene');\n }\n if (!this.three.camera) {\n console.error('Missing Camera');\n }\n const params = {\n focus: this.focus,\n aperture: this.aperture,\n maxblur: this.maxblur,\n width: this.three.size.width,\n height: this.three.size.height,\n };\n const pass = new BokehPass(this.three.scene, this.three.camera, params);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'BokehPass',\n};\n","/**\n * Film grain & scanlines shader\n *\n * - ported from HLSL to WebGL / GLSL\n * http://www.truevision3d.com/forums/showcase/staticnoise_colorblackwhite_scanline_shaders-t18698.0.html\n *\n * Screen Space Static Postprocessor\n *\n * Produces an analogue noise overlay similar to a film grain / TV static\n *\n * Original implementation and noise algorithm\n * Pat 'Hawthorne' Shearon\n *\n * Optimized scanlines + noise version with intensity scaling\n * Georg 'Leviathan' Steinrohder\n *\n * This version is provided under a Creative Commons Attribution 3.0 License\n * http://creativecommons.org/licenses/by/3.0/\n */\n\nvar FilmShader = {\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'time': { value: 0.0 },\n\t\t'nIntensity': { value: 0.5 },\n\t\t'sIntensity': { value: 0.05 },\n\t\t'sCount': { value: 4096 },\n\t\t'grayscale': { value: 1 }\n\n\t},\n\n\tvertexShader: [\n\n\t\t'varying vec2 vUv;',\n\n\t\t'void main() {',\n\n\t\t'\tvUv = uv;',\n\t\t'\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n\t\t'}'\n\n\t].join( '\\n' ),\n\n\tfragmentShader: [\n\n\t\t'#include <common>',\n\n\t\t// control parameter\n\t\t'uniform float time;',\n\n\t\t'uniform bool grayscale;',\n\n\t\t// noise effect intensity value (0 = no effect, 1 = full effect)\n\t\t'uniform float nIntensity;',\n\n\t\t// scanlines effect intensity value (0 = no effect, 1 = full effect)\n\t\t'uniform float sIntensity;',\n\n\t\t// scanlines effect count value (0 = no effect, 4096 = full effect)\n\t\t'uniform float sCount;',\n\n\t\t'uniform sampler2D tDiffuse;',\n\n\t\t'varying vec2 vUv;',\n\n\t\t'void main() {',\n\n\t\t// sample the source\n\t\t'\tvec4 cTextureScreen = texture2D( tDiffuse, vUv );',\n\n\t\t// make some noise\n\t\t'\tfloat dx = rand( vUv + time );',\n\n\t\t// add noise\n\t\t'\tvec3 cResult = cTextureScreen.rgb + cTextureScreen.rgb * clamp( 0.1 + dx, 0.0, 1.0 );',\n\n\t\t// get us a sine and cosine\n\t\t'\tvec2 sc = vec2( sin( vUv.y * sCount ), cos( vUv.y * sCount ) );',\n\n\t\t// add scanlines\n\t\t'\tcResult += cTextureScreen.rgb * vec3( sc.x, sc.y, sc.x ) * sIntensity;',\n\n\t\t// interpolate between source and result by intensity\n\t\t'\tcResult = cTextureScreen.rgb + clamp( nIntensity, 0.0,1.0 ) * ( cResult - cTextureScreen.rgb );',\n\n\t\t// convert to grayscale if desired\n\t\t'\tif( grayscale ) {',\n\n\t\t'\t\tcResult = vec3( cResult.r * 0.3 + cResult.g * 0.59 + cResult.b * 0.11 );',\n\n\t\t'\t}',\n\n\t\t'\tgl_FragColor = vec4( cResult, cTextureScreen.a );',\n\n\t\t'}'\n\n\t].join( '\\n' )\n\n};\n\nexport { FilmShader };\n","import {\n\tShaderMaterial,\n\tUniformsUtils\n} from '../../../build/three.module.js';\nimport { Pass } from '../postprocessing/Pass.js';\nimport { FilmShader } from '../shaders/FilmShader.js';\n\nvar FilmPass = function ( noiseIntensity, scanlinesIntensity, scanlinesCount, grayscale ) {\n\n\tPass.call( this );\n\n\tif ( FilmShader === undefined )\n\t\tconsole.error( 'THREE.FilmPass relies on FilmShader' );\n\n\tvar shader = FilmShader;\n\n\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\n\tthis.material = new ShaderMaterial( {\n\n\t\tuniforms: this.uniforms,\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader\n\n\t} );\n\n\tif ( grayscale !== undefined )\tthis.uniforms.grayscale.value = grayscale;\n\tif ( noiseIntensity !== undefined ) this.uniforms.nIntensity.value = noiseIntensity;\n\tif ( scanlinesIntensity !== undefined ) this.uniforms.sIntensity.value = scanlinesIntensity;\n\tif ( scanlinesCount !== undefined ) this.uniforms.sCount.value = scanlinesCount;\n\n\tthis.fsQuad = new Pass.FullScreenQuad( this.material );\n\n};\n\nFilmPass.prototype = Object.assign( Object.create( Pass.prototype ), {\n\n\tconstructor: FilmPass,\n\n\trender: function ( renderer, writeBuffer, readBuffer, deltaTime /*, maskActive */ ) {\n\n\t\tthis.uniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\t\tthis.uniforms[ 'time' ].value += deltaTime;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\tif ( this.clear ) renderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t}\n\n} );\n\nexport { FilmPass };\n","import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n noiseIntensity: {\n type: Number,\n default: 0.5,\n },\n scanlinesIntensity: {\n type: Number,\n default: 0.05,\n },\n scanlinesCount: {\n type: Number,\n default: 4096,\n },\n grayscale: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n noiseIntensity() { this.pass.uniforms.nIntensity.value = this.noiseIntensity; },\n scanlinesIntensity() { this.pass.uniforms.sIntensity.value = this.scanlinesIntensity; },\n scanlinesCount() { this.pass.uniforms.sCount.value = this.scanlinesCount; },\n grayscale() { this.pass.uniforms.grayscale.value = this.grayscale; },\n },\n mounted() {\n const pass = new FilmPass(this.noiseIntensity, this.scanlinesIntensity, this.scanlinesCount, this.grayscale);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'FilmPass',\n};\n","import {\n\tVector2\n} from '../../../build/three.module.js';\n\n/**\n * NVIDIA FXAA by Timothy Lottes\n * http://timothylottes.blogspot.com/2011/06/fxaa3-source-released.html\n * - WebGL port by @supereggbert\n * http://www.glge.org/demos/fxaa/\n */\n\nvar FXAAShader = {\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'resolution': { value: new Vector2( 1 / 1024, 1 / 512 ) }\n\n\t},\n\n\tvertexShader: [\n\n\t\t'varying vec2 vUv;',\n\n\t\t'void main() {',\n\n\t\t'\tvUv = uv;',\n\t\t'\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n\t\t'}'\n\n\t].join( '\\n' ),\n\n\tfragmentShader: [\n\t\t'precision highp float;',\n\t\t'',\n\t\t'uniform sampler2D tDiffuse;',\n\t\t'',\n\t\t'uniform vec2 resolution;',\n\t\t'',\n\t\t'varying vec2 vUv;',\n\t\t'',\n\t\t'// FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)',\n\t\t'',\n\t\t'//----------------------------------------------------------------------------------',\n\t\t'// File: es3-kepler\\FXAA\\assets\\shaders/FXAA_DefaultES.frag',\n\t\t'// SDK Version: v3.00',\n\t\t'// Email: gameworks@nvidia.com',\n\t\t'// Site: http://developer.nvidia.com/',\n\t\t'//',\n\t\t'// Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.',\n\t\t'//',\n\t\t'// Redistribution and use in source and binary forms, with or without',\n\t\t'// modification, are permitted provided that the following conditions',\n\t\t'// are met:',\n\t\t'// * Redistributions of source code must retain the above copyright',\n\t\t'// notice, this list of conditions and the following disclaimer.',\n\t\t'// * Redistributions in binary form must reproduce the above copyright',\n\t\t'// notice, this list of conditions and the following disclaimer in the',\n\t\t'// documentation and/or other materials provided with the distribution.',\n\t\t'// * Neither the name of NVIDIA CORPORATION nor the names of its',\n\t\t'// contributors may be used to endorse or promote products derived',\n\t\t'// from this software without specific prior written permission.',\n\t\t'//',\n\t\t'// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS\\'\\' AND ANY',\n\t\t'// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE',\n\t\t'// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR',\n\t\t'// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR',\n\t\t'// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,',\n\t\t'// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,',\n\t\t'// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR',\n\t\t'// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY',\n\t\t'// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT',\n\t\t'// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE',\n\t\t'// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.',\n\t\t'//',\n\t\t'//----------------------------------------------------------------------------------',\n\t\t'',\n\t\t'#define FXAA_PC 1',\n\t\t'#define FXAA_GLSL_100 1',\n\t\t'#define FXAA_QUALITY_PRESET 12',\n\t\t'',\n\t\t'#define FXAA_GREEN_AS_LUMA 1',\n\t\t'',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#ifndef FXAA_PC_CONSOLE',\n\t\t' //',\n\t\t' // The console algorithm for PC is included',\n\t\t' // for developers targeting really low spec machines.',\n\t\t' // Likely better to just run FXAA_PC, and use a really low preset.',\n\t\t' //',\n\t\t' #define FXAA_PC_CONSOLE 0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#ifndef FXAA_GLSL_120',\n\t\t' #define FXAA_GLSL_120 0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#ifndef FXAA_GLSL_130',\n\t\t' #define FXAA_GLSL_130 0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#ifndef FXAA_HLSL_3',\n\t\t' #define FXAA_HLSL_3 0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#ifndef FXAA_HLSL_4',\n\t\t' #define FXAA_HLSL_4 0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#ifndef FXAA_HLSL_5',\n\t\t' #define FXAA_HLSL_5 0',\n\t\t'#endif',\n\t\t'/*==========================================================================*/',\n\t\t'#ifndef FXAA_GREEN_AS_LUMA',\n\t\t' //',\n\t\t' // For those using non-linear color,',\n\t\t' // and either not able to get luma in alpha, or not wanting to,',\n\t\t' // this enables FXAA to run using green as a proxy for luma.',\n\t\t' // So with this enabled, no need to pack luma in alpha.',\n\t\t' //',\n\t\t' // This will turn off AA on anything which lacks some amount of green.',\n\t\t' // Pure red and blue or combination of only R and B, will get no AA.',\n\t\t' //',\n\t\t' // Might want to lower the settings for both,',\n\t\t' // fxaaConsoleEdgeThresholdMin',\n\t\t' // fxaaQualityEdgeThresholdMin',\n\t\t' // In order to insure AA does not get turned off on colors',\n\t\t' // which contain a minor amount of green.',\n\t\t' //',\n\t\t' // 1 = On.',\n\t\t' // 0 = Off.',\n\t\t' //',\n\t\t' #define FXAA_GREEN_AS_LUMA 0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#ifndef FXAA_EARLY_EXIT',\n\t\t' //',\n\t\t' // Controls algorithm\\'s early exit path.',\n\t\t' // On PS3 turning this ON adds 2 cycles to the shader.',\n\t\t' // On 360 turning this OFF adds 10ths of a millisecond to the shader.',\n\t\t' // Turning this off on console will result in a more blurry image.',\n\t\t' // So this defaults to on.',\n\t\t' //',\n\t\t' // 1 = On.',\n\t\t' // 0 = Off.',\n\t\t' //',\n\t\t' #define FXAA_EARLY_EXIT 1',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#ifndef FXAA_DISCARD',\n\t\t' //',\n\t\t' // Only valid for PC OpenGL currently.',\n\t\t' // Probably will not work when FXAA_GREEN_AS_LUMA = 1.',\n\t\t' //',\n\t\t' // 1 = Use discard on pixels which don\\'t need AA.',\n\t\t' // For APIs which enable concurrent TEX+ROP from same surface.',\n\t\t' // 0 = Return unchanged color on pixels which don\\'t need AA.',\n\t\t' //',\n\t\t' #define FXAA_DISCARD 0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#ifndef FXAA_FAST_PIXEL_OFFSET',\n\t\t' //',\n\t\t' // Used for GLSL 120 only.',\n\t\t' //',\n\t\t' // 1 = GL API supports fast pixel offsets',\n\t\t' // 0 = do not use fast pixel offsets',\n\t\t' //',\n\t\t' #ifdef GL_EXT_gpu_shader4',\n\t\t' #define FXAA_FAST_PIXEL_OFFSET 1',\n\t\t' #endif',\n\t\t' #ifdef GL_NV_gpu_shader5',\n\t\t' #define FXAA_FAST_PIXEL_OFFSET 1',\n\t\t' #endif',\n\t\t' #ifdef GL_ARB_gpu_shader5',\n\t\t' #define FXAA_FAST_PIXEL_OFFSET 1',\n\t\t' #endif',\n\t\t' #ifndef FXAA_FAST_PIXEL_OFFSET',\n\t\t' #define FXAA_FAST_PIXEL_OFFSET 0',\n\t\t' #endif',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#ifndef FXAA_GATHER4_ALPHA',\n\t\t' //',\n\t\t' // 1 = API supports gather4 on alpha channel.',\n\t\t' // 0 = API does not support gather4 on alpha channel.',\n\t\t' //',\n\t\t' #if (FXAA_HLSL_5 == 1)',\n\t\t' #define FXAA_GATHER4_ALPHA 1',\n\t\t' #endif',\n\t\t' #ifdef GL_ARB_gpu_shader5',\n\t\t' #define FXAA_GATHER4_ALPHA 1',\n\t\t' #endif',\n\t\t' #ifdef GL_NV_gpu_shader5',\n\t\t' #define FXAA_GATHER4_ALPHA 1',\n\t\t' #endif',\n\t\t' #ifndef FXAA_GATHER4_ALPHA',\n\t\t' #define FXAA_GATHER4_ALPHA 0',\n\t\t' #endif',\n\t\t'#endif',\n\t\t'',\n\t\t'',\n\t\t'/*============================================================================',\n\t\t' FXAA QUALITY - TUNING KNOBS',\n\t\t'------------------------------------------------------------------------------',\n\t\t'NOTE the other tuning knobs are now in the shader function inputs!',\n\t\t'============================================================================*/',\n\t\t'#ifndef FXAA_QUALITY_PRESET',\n\t\t' //',\n\t\t' // Choose the quality preset.',\n\t\t' // This needs to be compiled into the shader as it effects code.',\n\t\t' // Best option to include multiple presets is to',\n\t\t' // in each shader define the preset, then include this file.',\n\t\t' //',\n\t\t' // OPTIONS',\n\t\t' // -----------------------------------------------------------------------',\n\t\t' // 10 to 15 - default medium dither (10=fastest, 15=highest quality)',\n\t\t' // 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)',\n\t\t' // 39 - no dither, very expensive',\n\t\t' //',\n\t\t' // NOTES',\n\t\t' // -----------------------------------------------------------------------',\n\t\t' // 12 = slightly faster then FXAA 3.9 and higher edge quality (default)',\n\t\t' // 13 = about same speed as FXAA 3.9 and better than 12',\n\t\t' // 23 = closest to FXAA 3.9 visually and performance wise',\n\t\t' // _ = the lowest digit is directly related to performance',\n\t\t' // _ = the highest digit is directly related to style',\n\t\t' //',\n\t\t' #define FXAA_QUALITY_PRESET 12',\n\t\t'#endif',\n\t\t'',\n\t\t'',\n\t\t'/*============================================================================',\n\t\t'',\n\t\t' FXAA QUALITY - PRESETS',\n\t\t'',\n\t\t'============================================================================*/',\n\t\t'',\n\t\t'/*============================================================================',\n\t\t' FXAA QUALITY - MEDIUM DITHER PRESETS',\n\t\t'============================================================================*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 10)',\n\t\t' #define FXAA_QUALITY_PS 3',\n\t\t' #define FXAA_QUALITY_P0 1.5',\n\t\t' #define FXAA_QUALITY_P1 3.0',\n\t\t' #define FXAA_QUALITY_P2 12.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 11)',\n\t\t' #define FXAA_QUALITY_PS 4',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 3.0',\n\t\t' #define FXAA_QUALITY_P3 12.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 12)',\n\t\t' #define FXAA_QUALITY_PS 5',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 4.0',\n\t\t' #define FXAA_QUALITY_P4 12.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 13)',\n\t\t' #define FXAA_QUALITY_PS 6',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 2.0',\n\t\t' #define FXAA_QUALITY_P4 4.0',\n\t\t' #define FXAA_QUALITY_P5 12.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 14)',\n\t\t' #define FXAA_QUALITY_PS 7',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 2.0',\n\t\t' #define FXAA_QUALITY_P4 2.0',\n\t\t' #define FXAA_QUALITY_P5 4.0',\n\t\t' #define FXAA_QUALITY_P6 12.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 15)',\n\t\t' #define FXAA_QUALITY_PS 8',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 2.0',\n\t\t' #define FXAA_QUALITY_P4 2.0',\n\t\t' #define FXAA_QUALITY_P5 2.0',\n\t\t' #define FXAA_QUALITY_P6 4.0',\n\t\t' #define FXAA_QUALITY_P7 12.0',\n\t\t'#endif',\n\t\t'',\n\t\t'/*============================================================================',\n\t\t' FXAA QUALITY - LOW DITHER PRESETS',\n\t\t'============================================================================*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 20)',\n\t\t' #define FXAA_QUALITY_PS 3',\n\t\t' #define FXAA_QUALITY_P0 1.5',\n\t\t' #define FXAA_QUALITY_P1 2.0',\n\t\t' #define FXAA_QUALITY_P2 8.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 21)',\n\t\t' #define FXAA_QUALITY_PS 4',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 8.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 22)',\n\t\t' #define FXAA_QUALITY_PS 5',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 2.0',\n\t\t' #define FXAA_QUALITY_P4 8.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 23)',\n\t\t' #define FXAA_QUALITY_PS 6',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 2.0',\n\t\t' #define FXAA_QUALITY_P4 2.0',\n\t\t' #define FXAA_QUALITY_P5 8.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 24)',\n\t\t' #define FXAA_QUALITY_PS 7',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 2.0',\n\t\t' #define FXAA_QUALITY_P4 2.0',\n\t\t' #define FXAA_QUALITY_P5 3.0',\n\t\t' #define FXAA_QUALITY_P6 8.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 25)',\n\t\t' #define FXAA_QUALITY_PS 8',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 2.0',\n\t\t' #define FXAA_QUALITY_P4 2.0',\n\t\t' #define FXAA_QUALITY_P5 2.0',\n\t\t' #define FXAA_QUALITY_P6 4.0',\n\t\t' #define FXAA_QUALITY_P7 8.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 26)',\n\t\t' #define FXAA_QUALITY_PS 9',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 2.0',\n\t\t' #define FXAA_QUALITY_P4 2.0',\n\t\t' #define FXAA_QUALITY_P5 2.0',\n\t\t' #define FXAA_QUALITY_P6 2.0',\n\t\t' #define FXAA_QUALITY_P7 4.0',\n\t\t' #define FXAA_QUALITY_P8 8.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 27)',\n\t\t' #define FXAA_QUALITY_PS 10',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 2.0',\n\t\t' #define FXAA_QUALITY_P4 2.0',\n\t\t' #define FXAA_QUALITY_P5 2.0',\n\t\t' #define FXAA_QUALITY_P6 2.0',\n\t\t' #define FXAA_QUALITY_P7 2.0',\n\t\t' #define FXAA_QUALITY_P8 4.0',\n\t\t' #define FXAA_QUALITY_P9 8.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 28)',\n\t\t' #define FXAA_QUALITY_PS 11',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 2.0',\n\t\t' #define FXAA_QUALITY_P4 2.0',\n\t\t' #define FXAA_QUALITY_P5 2.0',\n\t\t' #define FXAA_QUALITY_P6 2.0',\n\t\t' #define FXAA_QUALITY_P7 2.0',\n\t\t' #define FXAA_QUALITY_P8 2.0',\n\t\t' #define FXAA_QUALITY_P9 4.0',\n\t\t' #define FXAA_QUALITY_P10 8.0',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 29)',\n\t\t' #define FXAA_QUALITY_PS 12',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.5',\n\t\t' #define FXAA_QUALITY_P2 2.0',\n\t\t' #define FXAA_QUALITY_P3 2.0',\n\t\t' #define FXAA_QUALITY_P4 2.0',\n\t\t' #define FXAA_QUALITY_P5 2.0',\n\t\t' #define FXAA_QUALITY_P6 2.0',\n\t\t' #define FXAA_QUALITY_P7 2.0',\n\t\t' #define FXAA_QUALITY_P8 2.0',\n\t\t' #define FXAA_QUALITY_P9 2.0',\n\t\t' #define FXAA_QUALITY_P10 4.0',\n\t\t' #define FXAA_QUALITY_P11 8.0',\n\t\t'#endif',\n\t\t'',\n\t\t'/*============================================================================',\n\t\t' FXAA QUALITY - EXTREME QUALITY',\n\t\t'============================================================================*/',\n\t\t'#if (FXAA_QUALITY_PRESET == 39)',\n\t\t' #define FXAA_QUALITY_PS 12',\n\t\t' #define FXAA_QUALITY_P0 1.0',\n\t\t' #define FXAA_QUALITY_P1 1.0',\n\t\t' #define FXAA_QUALITY_P2 1.0',\n\t\t' #define FXAA_QUALITY_P3 1.0',\n\t\t' #define FXAA_QUALITY_P4 1.0',\n\t\t' #define FXAA_QUALITY_P5 1.5',\n\t\t' #define FXAA_QUALITY_P6 2.0',\n\t\t' #define FXAA_QUALITY_P7 2.0',\n\t\t' #define FXAA_QUALITY_P8 2.0',\n\t\t' #define FXAA_QUALITY_P9 2.0',\n\t\t' #define FXAA_QUALITY_P10 4.0',\n\t\t' #define FXAA_QUALITY_P11 8.0',\n\t\t'#endif',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'/*============================================================================',\n\t\t'',\n\t\t' API PORTING',\n\t\t'',\n\t\t'============================================================================*/',\n\t\t'#if (FXAA_GLSL_100 == 1) || (FXAA_GLSL_120 == 1) || (FXAA_GLSL_130 == 1)',\n\t\t' #define FxaaBool bool',\n\t\t' #define FxaaDiscard discard',\n\t\t' #define FxaaFloat float',\n\t\t' #define FxaaFloat2 vec2',\n\t\t' #define FxaaFloat3 vec3',\n\t\t' #define FxaaFloat4 vec4',\n\t\t' #define FxaaHalf float',\n\t\t' #define FxaaHalf2 vec2',\n\t\t' #define FxaaHalf3 vec3',\n\t\t' #define FxaaHalf4 vec4',\n\t\t' #define FxaaInt2 ivec2',\n\t\t' #define FxaaSat(x) clamp(x, 0.0, 1.0)',\n\t\t' #define FxaaTex sampler2D',\n\t\t'#else',\n\t\t' #define FxaaBool bool',\n\t\t' #define FxaaDiscard clip(-1)',\n\t\t' #define FxaaFloat float',\n\t\t' #define FxaaFloat2 float2',\n\t\t' #define FxaaFloat3 float3',\n\t\t' #define FxaaFloat4 float4',\n\t\t' #define FxaaHalf half',\n\t\t' #define FxaaHalf2 half2',\n\t\t' #define FxaaHalf3 half3',\n\t\t' #define FxaaHalf4 half4',\n\t\t' #define FxaaSat(x) saturate(x)',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_GLSL_100 == 1)',\n\t\t' #define FxaaTexTop(t, p) texture2D(t, p, 0.0)',\n\t\t' #define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), 0.0)',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_GLSL_120 == 1)',\n\t\t' // Requires,',\n\t\t' // #version 120',\n\t\t' // And at least,',\n\t\t' // #extension GL_EXT_gpu_shader4 : enable',\n\t\t' // (or set FXAA_FAST_PIXEL_OFFSET 1 to work like DX9)',\n\t\t' #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0)',\n\t\t' #if (FXAA_FAST_PIXEL_OFFSET == 1)',\n\t\t' #define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)',\n\t\t' #else',\n\t\t' #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0)',\n\t\t' #endif',\n\t\t' #if (FXAA_GATHER4_ALPHA == 1)',\n\t\t' // use #extension GL_ARB_gpu_shader5 : enable',\n\t\t' #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)',\n\t\t' #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)',\n\t\t' #define FxaaTexGreen4(t, p) textureGather(t, p, 1)',\n\t\t' #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)',\n\t\t' #endif',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_GLSL_130 == 1)',\n\t\t' // Requires \"#version 130\" or better',\n\t\t' #define FxaaTexTop(t, p) textureLod(t, p, 0.0)',\n\t\t' #define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)',\n\t\t' #if (FXAA_GATHER4_ALPHA == 1)',\n\t\t' // use #extension GL_ARB_gpu_shader5 : enable',\n\t\t' #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)',\n\t\t' #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)',\n\t\t' #define FxaaTexGreen4(t, p) textureGather(t, p, 1)',\n\t\t' #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)',\n\t\t' #endif',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_HLSL_3 == 1)',\n\t\t' #define FxaaInt2 float2',\n\t\t' #define FxaaTex sampler2D',\n\t\t' #define FxaaTexTop(t, p) tex2Dlod(t, float4(p, 0.0, 0.0))',\n\t\t' #define FxaaTexOff(t, p, o, r) tex2Dlod(t, float4(p + (o * r), 0, 0))',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_HLSL_4 == 1)',\n\t\t' #define FxaaInt2 int2',\n\t\t' struct FxaaTex { SamplerState smpl; Texture2D tex; };',\n\t\t' #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)',\n\t\t' #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)',\n\t\t'#endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'#if (FXAA_HLSL_5 == 1)',\n\t\t' #define FxaaInt2 int2',\n\t\t' struct FxaaTex { SamplerState smpl; Texture2D tex; };',\n\t\t' #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)',\n\t\t' #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)',\n\t\t' #define FxaaTexAlpha4(t, p) t.tex.GatherAlpha(t.smpl, p)',\n\t\t' #define FxaaTexOffAlpha4(t, p, o) t.tex.GatherAlpha(t.smpl, p, o)',\n\t\t' #define FxaaTexGreen4(t, p) t.tex.GatherGreen(t.smpl, p)',\n\t\t' #define FxaaTexOffGreen4(t, p, o) t.tex.GatherGreen(t.smpl, p, o)',\n\t\t'#endif',\n\t\t'',\n\t\t'',\n\t\t'/*============================================================================',\n\t\t' GREEN AS LUMA OPTION SUPPORT FUNCTION',\n\t\t'============================================================================*/',\n\t\t'#if (FXAA_GREEN_AS_LUMA == 0)',\n\t\t' FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.w; }',\n\t\t'#else',\n\t\t' FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }',\n\t\t'#endif',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'/*============================================================================',\n\t\t'',\n\t\t' FXAA3 QUALITY - PC',\n\t\t'',\n\t\t'============================================================================*/',\n\t\t'#if (FXAA_PC == 1)',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t'FxaaFloat4 FxaaPixelShader(',\n\t\t' //',\n\t\t' // Use noperspective interpolation here (turn off perspective interpolation).',\n\t\t' // {xy} = center of pixel',\n\t\t' FxaaFloat2 pos,',\n\t\t' //',\n\t\t' // Used only for FXAA Console, and not used on the 360 version.',\n\t\t' // Use noperspective interpolation here (turn off perspective interpolation).',\n\t\t' // {xy_} = upper left of pixel',\n\t\t' // {_zw} = lower right of pixel',\n\t\t' FxaaFloat4 fxaaConsolePosPos,',\n\t\t' //',\n\t\t' // Input color texture.',\n\t\t' // {rgb_} = color in linear or perceptual color space',\n\t\t' // if (FXAA_GREEN_AS_LUMA == 0)',\n\t\t' // {__a} = luma in perceptual color space (not linear)',\n\t\t' FxaaTex tex,',\n\t\t' //',\n\t\t' // Only used on the optimized 360 version of FXAA Console.',\n\t\t' // For everything but 360, just use the same input here as for \"tex\".',\n\t\t' // For 360, same texture, just alias with a 2nd sampler.',\n\t\t' // This sampler needs to have an exponent bias of -1.',\n\t\t' FxaaTex fxaaConsole360TexExpBiasNegOne,',\n\t\t' //',\n\t\t' // Only used on the optimized 360 version of FXAA Console.',\n\t\t' // For everything but 360, just use the same input here as for \"tex\".',\n\t\t' // For 360, same texture, just alias with a 3nd sampler.',\n\t\t' // This sampler needs to have an exponent bias of -2.',\n\t\t' FxaaTex fxaaConsole360TexExpBiasNegTwo,',\n\t\t' //',\n\t\t' // Only used on FXAA Quality.',\n\t\t' // This must be from a constant/uniform.',\n\t\t' // {x_} = 1.0/screenWidthInPixels',\n\t\t' // {_y} = 1.0/screenHeightInPixels',\n\t\t' FxaaFloat2 fxaaQualityRcpFrame,',\n\t\t' //',\n\t\t' // Only used on FXAA Console.',\n\t\t' // This must be from a constant/uniform.',\n\t\t' // This effects sub-pixel AA quality and inversely sharpness.',\n\t\t' // Where N ranges between,',\n\t\t' // N = 0.50 (default)',\n\t\t' // N = 0.33 (sharper)',\n\t\t' // {x__} = -N/screenWidthInPixels',\n\t\t' // {_y_} = -N/screenHeightInPixels',\n\t\t' // {_z_} = N/screenWidthInPixels',\n\t\t' // {__w} = N/screenHeightInPixels',\n\t\t' FxaaFloat4 fxaaConsoleRcpFrameOpt,',\n\t\t' //',\n\t\t' // Only used on FXAA Console.',\n\t\t' // Not used on 360, but used on PS3 and PC.',\n\t\t' // This must be from a constant/uniform.',\n\t\t' // {x__} = -2.0/screenWidthInPixels',\n\t\t' // {_y_} = -2.0/screenHeightInPixels',\n\t\t' // {_z_} = 2.0/screenWidthInPixels',\n\t\t' // {__w} = 2.0/screenHeightInPixels',\n\t\t' FxaaFloat4 fxaaConsoleRcpFrameOpt2,',\n\t\t' //',\n\t\t' // Only used on FXAA Console.',\n\t\t' // Only used on 360 in place of fxaaConsoleRcpFrameOpt2.',\n\t\t' // This must be from a constant/uniform.',\n\t\t' // {x__} = 8.0/screenWidthInPixels',\n\t\t' // {_y_} = 8.0/screenHeightInPixels',\n\t\t' // {_z_} = -4.0/screenWidthInPixels',\n\t\t' // {__w} = -4.0/screenHeightInPixels',\n\t\t' FxaaFloat4 fxaaConsole360RcpFrameOpt2,',\n\t\t' //',\n\t\t' // Only used on FXAA Quality.',\n\t\t' // This used to be the FXAA_QUALITY_SUBPIX define.',\n\t\t' // It is here now to allow easier tuning.',\n\t\t' // Choose the amount of sub-pixel aliasing removal.',\n\t\t' // This can effect sharpness.',\n\t\t' // 1.00 - upper limit (softer)',\n\t\t' // 0.75 - default amount of filtering',\n\t\t' // 0.50 - lower limit (sharper, less sub-pixel aliasing removal)',\n\t\t' // 0.25 - almost off',\n\t\t' // 0.00 - completely off',\n\t\t' FxaaFloat fxaaQualitySubpix,',\n\t\t' //',\n\t\t' // Only used on FXAA Quality.',\n\t\t' // This used to be the FXAA_QUALITY_EDGE_THRESHOLD define.',\n\t\t' // It is here now to allow easier tuning.',\n\t\t' // The minimum amount of local contrast required to apply algorithm.',\n\t\t' // 0.333 - too little (faster)',\n\t\t' // 0.250 - low quality',\n\t\t' // 0.166 - default',\n\t\t' // 0.125 - high quality',\n\t\t' // 0.063 - overkill (slower)',\n\t\t' FxaaFloat fxaaQualityEdgeThreshold,',\n\t\t' //',\n\t\t' // Only used on FXAA Quality.',\n\t\t' // This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define.',\n\t\t' // It is here now to allow easier tuning.',\n\t\t' // Trims the algorithm from processing darks.',\n\t\t' // 0.0833 - upper limit (default, the start of visible unfiltered edges)',\n\t\t' // 0.0625 - high quality (faster)',\n\t\t' // 0.0312 - visible limit (slower)',\n\t\t' // Special notes when using FXAA_GREEN_AS_LUMA,',\n\t\t' // Likely want to set this to zero.',\n\t\t' // As colors that are mostly not-green',\n\t\t' // will appear very dark in the green channel!',\n\t\t' // Tune by looking at mostly non-green content,',\n\t\t' // then start at zero and increase until aliasing is a problem.',\n\t\t' FxaaFloat fxaaQualityEdgeThresholdMin,',\n\t\t' //',\n\t\t' // Only used on FXAA Console.',\n\t\t' // This used to be the FXAA_CONSOLE_EDGE_SHARPNESS define.',\n\t\t' // It is here now to allow easier tuning.',\n\t\t' // This does not effect PS3, as this needs to be compiled in.',\n\t\t' // Use FXAA_CONSOLE_PS3_EDGE_SHARPNESS for PS3.',\n\t\t' // Due to the PS3 being ALU bound,',\n\t\t' // there are only three safe values here: 2 and 4 and 8.',\n\t\t' // These options use the shaders ability to a free *|/ by 2|4|8.',\n\t\t' // For all other platforms can be a non-power of two.',\n\t\t' // 8.0 is sharper (default!!!)',\n\t\t' // 4.0 is softer',\n\t\t' // 2.0 is really soft (good only for vector graphics inputs)',\n\t\t' FxaaFloat fxaaConsoleEdgeSharpness,',\n\t\t' //',\n\t\t' // Only used on FXAA Console.',\n\t\t' // This used to be the FXAA_CONSOLE_EDGE_THRESHOLD define.',\n\t\t' // It is here now to allow easier tuning.',\n\t\t' // This does not effect PS3, as this needs to be compiled in.',\n\t\t' // Use FXAA_CONSOLE_PS3_EDGE_THRESHOLD for PS3.',\n\t\t' // Due to the PS3 being ALU bound,',\n\t\t' // there are only two safe values here: 1/4 and 1/8.',\n\t\t' // These options use the shaders ability to a free *|/ by 2|4|8.',\n\t\t' // The console setting has a different mapping than the quality setting.',\n\t\t' // Other platforms can use other values.',\n\t\t' // 0.125 leaves less aliasing, but is softer (default!!!)',\n\t\t' // 0.25 leaves more aliasing, and is sharper',\n\t\t' FxaaFloat fxaaConsoleEdgeThreshold,',\n\t\t' //',\n\t\t' // Only used on FXAA Console.',\n\t\t' // This used to be the FXAA_CONSOLE_EDGE_THRESHOLD_MIN define.',\n\t\t' // It is here now to allow easier tuning.',\n\t\t' // Trims the algorithm from processing darks.',\n\t\t' // The console setting has a different mapping than the quality setting.',\n\t\t' // This only applies when FXAA_EARLY_EXIT is 1.',\n\t\t' // This does not apply to PS3,',\n\t\t' // PS3 was simplified to avoid more shader instructions.',\n\t\t' // 0.06 - faster but more aliasing in darks',\n\t\t' // 0.05 - default',\n\t\t' // 0.04 - slower and less aliasing in darks',\n\t\t' // Special notes when using FXAA_GREEN_AS_LUMA,',\n\t\t' // Likely want to set this to zero.',\n\t\t' // As colors that are mostly not-green',\n\t\t' // will appear very dark in the green channel!',\n\t\t' // Tune by looking at mostly non-green content,',\n\t\t' // then start at zero and increase until aliasing is a problem.',\n\t\t' FxaaFloat fxaaConsoleEdgeThresholdMin,',\n\t\t' //',\n\t\t' // Extra constants for 360 FXAA Console only.',\n\t\t' // Use zeros or anything else for other platforms.',\n\t\t' // These must be in physical constant registers and NOT immediates.',\n\t\t' // Immediates will result in compiler un-optimizing.',\n\t\t' // {xyzw} = float4(1.0, -1.0, 0.25, -0.25)',\n\t\t' FxaaFloat4 fxaaConsole360ConstDir',\n\t\t') {',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaFloat2 posM;',\n\t\t' posM.x = pos.x;',\n\t\t' posM.y = pos.y;',\n\t\t' #if (FXAA_GATHER4_ALPHA == 1)',\n\t\t' #if (FXAA_DISCARD == 0)',\n\t\t' FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);',\n\t\t' #if (FXAA_GREEN_AS_LUMA == 0)',\n\t\t' #define lumaM rgbyM.w',\n\t\t' #else',\n\t\t' #define lumaM rgbyM.y',\n\t\t' #endif',\n\t\t' #endif',\n\t\t' #if (FXAA_GREEN_AS_LUMA == 0)',\n\t\t' FxaaFloat4 luma4A = FxaaTexAlpha4(tex, posM);',\n\t\t' FxaaFloat4 luma4B = FxaaTexOffAlpha4(tex, posM, FxaaInt2(-1, -1));',\n\t\t' #else',\n\t\t' FxaaFloat4 luma4A = FxaaTexGreen4(tex, posM);',\n\t\t' FxaaFloat4 luma4B = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));',\n\t\t' #endif',\n\t\t' #if (FXAA_DISCARD == 1)',\n\t\t' #define lumaM luma4A.w',\n\t\t' #endif',\n\t\t' #define lumaE luma4A.z',\n\t\t' #define lumaS luma4A.x',\n\t\t' #define lumaSE luma4A.y',\n\t\t' #define lumaNW luma4B.w',\n\t\t' #define lumaN luma4B.z',\n\t\t' #define lumaW luma4B.x',\n\t\t' #else',\n\t\t' FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);',\n\t\t' #if (FXAA_GREEN_AS_LUMA == 0)',\n\t\t' #define lumaM rgbyM.w',\n\t\t' #else',\n\t\t' #define lumaM rgbyM.y',\n\t\t' #endif',\n\t\t' #if (FXAA_GLSL_100 == 1)',\n\t\t' FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 0.0, 1.0), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0, 0.0), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 0.0,-1.0), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0, 0.0), fxaaQualityRcpFrame.xy));',\n\t\t' #else',\n\t\t' FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));',\n\t\t' #endif',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaFloat maxSM = max(lumaS, lumaM);',\n\t\t' FxaaFloat minSM = min(lumaS, lumaM);',\n\t\t' FxaaFloat maxESM = max(lumaE, maxSM);',\n\t\t' FxaaFloat minESM = min(lumaE, minSM);',\n\t\t' FxaaFloat maxWN = max(lumaN, lumaW);',\n\t\t' FxaaFloat minWN = min(lumaN, lumaW);',\n\t\t' FxaaFloat rangeMax = max(maxWN, maxESM);',\n\t\t' FxaaFloat rangeMin = min(minWN, minESM);',\n\t\t' FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;',\n\t\t' FxaaFloat range = rangeMax - rangeMin;',\n\t\t' FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);',\n\t\t' FxaaBool earlyExit = range < rangeMaxClamped;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' if(earlyExit)',\n\t\t' #if (FXAA_DISCARD == 1)',\n\t\t' FxaaDiscard;',\n\t\t' #else',\n\t\t' return rgbyM;',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' #if (FXAA_GATHER4_ALPHA == 0)',\n\t\t' #if (FXAA_GLSL_100 == 1)',\n\t\t' FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0,-1.0), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0, 1.0), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0,-1.0), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0, 1.0), fxaaQualityRcpFrame.xy));',\n\t\t' #else',\n\t\t' FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));',\n\t\t' #endif',\n\t\t' #else',\n\t\t' FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(1, -1), fxaaQualityRcpFrame.xy));',\n\t\t' FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaFloat lumaNS = lumaN + lumaS;',\n\t\t' FxaaFloat lumaWE = lumaW + lumaE;',\n\t\t' FxaaFloat subpixRcpRange = 1.0/range;',\n\t\t' FxaaFloat subpixNSWE = lumaNS + lumaWE;',\n\t\t' FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;',\n\t\t' FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaFloat lumaNESE = lumaNE + lumaSE;',\n\t\t' FxaaFloat lumaNWNE = lumaNW + lumaNE;',\n\t\t' FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;',\n\t\t' FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaFloat lumaNWSW = lumaNW + lumaSW;',\n\t\t' FxaaFloat lumaSWSE = lumaSW + lumaSE;',\n\t\t' FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);',\n\t\t' FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);',\n\t\t' FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;',\n\t\t' FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;',\n\t\t' FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;',\n\t\t' FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;',\n\t\t' FxaaFloat lengthSign = fxaaQualityRcpFrame.x;',\n\t\t' FxaaBool horzSpan = edgeHorz >= edgeVert;',\n\t\t' FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' if(!horzSpan) lumaN = lumaW;',\n\t\t' if(!horzSpan) lumaS = lumaE;',\n\t\t' if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;',\n\t\t' FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaFloat gradientN = lumaN - lumaM;',\n\t\t' FxaaFloat gradientS = lumaS - lumaM;',\n\t\t' FxaaFloat lumaNN = lumaN + lumaM;',\n\t\t' FxaaFloat lumaSS = lumaS + lumaM;',\n\t\t' FxaaBool pairN = abs(gradientN) >= abs(gradientS);',\n\t\t' FxaaFloat gradient = max(abs(gradientN), abs(gradientS));',\n\t\t' if(pairN) lengthSign = -lengthSign;',\n\t\t' FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaFloat2 posB;',\n\t\t' posB.x = posM.x;',\n\t\t' posB.y = posM.y;',\n\t\t' FxaaFloat2 offNP;',\n\t\t' offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;',\n\t\t' offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;',\n\t\t' if(!horzSpan) posB.x += lengthSign * 0.5;',\n\t\t' if( horzSpan) posB.y += lengthSign * 0.5;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaFloat2 posN;',\n\t\t' posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;',\n\t\t' posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;',\n\t\t' FxaaFloat2 posP;',\n\t\t' posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;',\n\t\t' posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;',\n\t\t' FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;',\n\t\t' FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));',\n\t\t' FxaaFloat subpixE = subpixC * subpixC;',\n\t\t' FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' if(!pairN) lumaNN = lumaSS;',\n\t\t' FxaaFloat gradientScaled = gradient * 1.0/4.0;',\n\t\t' FxaaFloat lumaMM = lumaM - lumaNN * 0.5;',\n\t\t' FxaaFloat subpixF = subpixD * subpixE;',\n\t\t' FxaaBool lumaMLTZero = lumaMM < 0.0;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' lumaEndN -= lumaNN * 0.5;',\n\t\t' lumaEndP -= lumaNN * 0.5;',\n\t\t' FxaaBool doneN = abs(lumaEndN) >= gradientScaled;',\n\t\t' FxaaBool doneP = abs(lumaEndP) >= gradientScaled;',\n\t\t' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;',\n\t\t' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;',\n\t\t' FxaaBool doneNP = (!doneN) || (!doneP);',\n\t\t' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;',\n\t\t' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' if(doneNP) {',\n\t\t' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n\t\t' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n\t\t' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n\t\t' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n\t\t' doneN = abs(lumaEndN) >= gradientScaled;',\n\t\t' doneP = abs(lumaEndP) >= gradientScaled;',\n\t\t' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;',\n\t\t' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;',\n\t\t' doneNP = (!doneN) || (!doneP);',\n\t\t' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;',\n\t\t' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' #if (FXAA_QUALITY_PS > 3)',\n\t\t' if(doneNP) {',\n\t\t' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n\t\t' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n\t\t' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n\t\t' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n\t\t' doneN = abs(lumaEndN) >= gradientScaled;',\n\t\t' doneP = abs(lumaEndP) >= gradientScaled;',\n\t\t' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;',\n\t\t' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;',\n\t\t' doneNP = (!doneN) || (!doneP);',\n\t\t' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;',\n\t\t' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' #if (FXAA_QUALITY_PS > 4)',\n\t\t' if(doneNP) {',\n\t\t' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n\t\t' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n\t\t' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n\t\t' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n\t\t' doneN = abs(lumaEndN) >= gradientScaled;',\n\t\t' doneP = abs(lumaEndP) >= gradientScaled;',\n\t\t' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;',\n\t\t' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;',\n\t\t' doneNP = (!doneN) || (!doneP);',\n\t\t' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;',\n\t\t' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' #if (FXAA_QUALITY_PS > 5)',\n\t\t' if(doneNP) {',\n\t\t' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n\t\t' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n\t\t' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n\t\t' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n\t\t' doneN = abs(lumaEndN) >= gradientScaled;',\n\t\t' doneP = abs(lumaEndP) >= gradientScaled;',\n\t\t' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;',\n\t\t' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;',\n\t\t' doneNP = (!doneN) || (!doneP);',\n\t\t' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;',\n\t\t' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' #if (FXAA_QUALITY_PS > 6)',\n\t\t' if(doneNP) {',\n\t\t' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n\t\t' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n\t\t' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n\t\t' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n\t\t' doneN = abs(lumaEndN) >= gradientScaled;',\n\t\t' doneP = abs(lumaEndP) >= gradientScaled;',\n\t\t' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;',\n\t\t' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;',\n\t\t' doneNP = (!doneN) || (!doneP);',\n\t\t' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;',\n\t\t' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' #if (FXAA_QUALITY_PS > 7)',\n\t\t' if(doneNP) {',\n\t\t' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n\t\t' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n\t\t' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n\t\t' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n\t\t' doneN = abs(lumaEndN) >= gradientScaled;',\n\t\t' doneP = abs(lumaEndP) >= gradientScaled;',\n\t\t' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;',\n\t\t' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;',\n\t\t' doneNP = (!doneN) || (!doneP);',\n\t\t' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;',\n\t\t' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' #if (FXAA_QUALITY_PS > 8)',\n\t\t' if(doneNP) {',\n\t\t' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n\t\t' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n\t\t' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n\t\t' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n\t\t' doneN = abs(lumaEndN) >= gradientScaled;',\n\t\t' doneP = abs(lumaEndP) >= gradientScaled;',\n\t\t' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;',\n\t\t' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;',\n\t\t' doneNP = (!doneN) || (!doneP);',\n\t\t' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;',\n\t\t' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' #if (FXAA_QUALITY_PS > 9)',\n\t\t' if(doneNP) {',\n\t\t' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n\t\t' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n\t\t' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n\t\t' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n\t\t' doneN = abs(lumaEndN) >= gradientScaled;',\n\t\t' doneP = abs(lumaEndP) >= gradientScaled;',\n\t\t' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;',\n\t\t' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;',\n\t\t' doneNP = (!doneN) || (!doneP);',\n\t\t' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;',\n\t\t' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' #if (FXAA_QUALITY_PS > 10)',\n\t\t' if(doneNP) {',\n\t\t' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n\t\t' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n\t\t' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n\t\t' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n\t\t' doneN = abs(lumaEndN) >= gradientScaled;',\n\t\t' doneP = abs(lumaEndP) >= gradientScaled;',\n\t\t' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;',\n\t\t' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;',\n\t\t' doneNP = (!doneN) || (!doneP);',\n\t\t' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;',\n\t\t' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' #if (FXAA_QUALITY_PS > 11)',\n\t\t' if(doneNP) {',\n\t\t' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n\t\t' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n\t\t' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n\t\t' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n\t\t' doneN = abs(lumaEndN) >= gradientScaled;',\n\t\t' doneP = abs(lumaEndP) >= gradientScaled;',\n\t\t' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;',\n\t\t' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;',\n\t\t' doneNP = (!doneN) || (!doneP);',\n\t\t' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;',\n\t\t' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' #if (FXAA_QUALITY_PS > 12)',\n\t\t' if(doneNP) {',\n\t\t' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n\t\t' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n\t\t' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n\t\t' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n\t\t' doneN = abs(lumaEndN) >= gradientScaled;',\n\t\t' doneP = abs(lumaEndP) >= gradientScaled;',\n\t\t' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;',\n\t\t' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;',\n\t\t' doneNP = (!doneN) || (!doneP);',\n\t\t' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;',\n\t\t' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' }',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' }',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' }',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' }',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' }',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' }',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' }',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' }',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' }',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' }',\n\t\t' #endif',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' }',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaFloat dstN = posM.x - posN.x;',\n\t\t' FxaaFloat dstP = posP.x - posM.x;',\n\t\t' if(!horzSpan) dstN = posM.y - posN.y;',\n\t\t' if(!horzSpan) dstP = posP.y - posM.y;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;',\n\t\t' FxaaFloat spanLength = (dstP + dstN);',\n\t\t' FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;',\n\t\t' FxaaFloat spanLengthRcp = 1.0/spanLength;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaBool directionN = dstN < dstP;',\n\t\t' FxaaFloat dst = min(dstN, dstP);',\n\t\t' FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;',\n\t\t' FxaaFloat subpixG = subpixF * subpixF;',\n\t\t' FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;',\n\t\t' FxaaFloat subpixH = subpixG * fxaaQualitySubpix;',\n\t\t'/*--------------------------------------------------------------------------*/',\n\t\t' FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;',\n\t\t' FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);',\n\t\t' if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;',\n\t\t' if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;',\n\t\t' #if (FXAA_DISCARD == 1)',\n\t\t' return FxaaTexTop(tex, posM);',\n\t\t' #else',\n\t\t' return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);',\n\t\t' #endif',\n\t\t'}',\n\t\t'/*==========================================================================*/',\n\t\t'#endif',\n\t\t'',\n\t\t'void main() {',\n\t\t' gl_FragColor = FxaaPixelShader(',\n\t\t' vUv,',\n\t\t' vec4(0.0),',\n\t\t' tDiffuse,',\n\t\t' tDiffuse,',\n\t\t' tDiffuse,',\n\t\t' resolution,',\n\t\t' vec4(0.0),',\n\t\t' vec4(0.0),',\n\t\t' vec4(0.0),',\n\t\t' 0.75,',\n\t\t' 0.166,',\n\t\t' 0.0833,',\n\t\t' 0.0,',\n\t\t' 0.0,',\n\t\t' 0.0,',\n\t\t' vec4(0.0)',\n\t\t' );',\n\t\t'',\n\t\t' // TODO avoid querying texture twice for same texel',\n\t\t' gl_FragColor.a = texture2D(tDiffuse, vUv).a;',\n\t\t'}'\n\t].join( '\\n' )\n\n};\n\nexport { FXAAShader };\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n const pass = new ShaderPass(FXAAShader);\n this.passes.push(pass);\n this.pass = pass;\n\n // resize will be called in three init\n this.three.onAfterResize(this.resize);\n },\n unmounted() {\n this.three.offAfterResize(this.resize);\n },\n methods: {\n resize() {\n const { resolution } = this.pass.material.uniforms;\n resolution.value.x = 1 / this.three.size.width;\n resolution.value.y = 1 / this.three.size.height;\n },\n },\n __hmrId: 'FXAAPass',\n};\n","/**\n * RGB Halftone shader for three.js.\n *\tNOTE:\n * \t\tShape (1 = Dot, 2 = Ellipse, 3 = Line, 4 = Square)\n *\t\tBlending Mode (1 = Linear, 2 = Multiply, 3 = Add, 4 = Lighter, 5 = Darker)\n */\n\nvar HalftoneShader = {\n\n\tuniforms: {\n\t\t'tDiffuse': { value: null },\n\t\t'shape': { value: 1 },\n\t\t'radius': { value: 4 },\n\t\t'rotateR': { value: Math.PI / 12 * 1 },\n\t\t'rotateG': { value: Math.PI / 12 * 2 },\n\t\t'rotateB': { value: Math.PI / 12 * 3 },\n\t\t'scatter': { value: 0 },\n\t\t'width': { value: 1 },\n\t\t'height': { value: 1 },\n\t\t'blending': { value: 1 },\n\t\t'blendingMode': { value: 1 },\n\t\t'greyscale': { value: false },\n\t\t'disable': { value: false }\n\t},\n\n\tvertexShader: [\n\n\t\t'varying vec2 vUV;',\n\n\t\t'void main() {',\n\n\t\t'\tvUV = uv;',\n\t\t'\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);',\n\n\t\t'}'\n\n\t].join( '\\n' ),\n\n\tfragmentShader: [\n\n\t\t'#define SQRT2_MINUS_ONE 0.41421356',\n\t\t'#define SQRT2_HALF_MINUS_ONE 0.20710678',\n\t\t'#define PI2 6.28318531',\n\t\t'#define SHAPE_DOT 1',\n\t\t'#define SHAPE_ELLIPSE 2',\n\t\t'#define SHAPE_LINE 3',\n\t\t'#define SHAPE_SQUARE 4',\n\t\t'#define BLENDING_LINEAR 1',\n\t\t'#define BLENDING_MULTIPLY 2',\n\t\t'#define BLENDING_ADD 3',\n\t\t'#define BLENDING_LIGHTER 4',\n\t\t'#define BLENDING_DARKER 5',\n\t\t'uniform sampler2D tDiffuse;',\n\t\t'uniform float radius;',\n\t\t'uniform float rotateR;',\n\t\t'uniform float rotateG;',\n\t\t'uniform float rotateB;',\n\t\t'uniform float scatter;',\n\t\t'uniform float width;',\n\t\t'uniform float height;',\n\t\t'uniform int shape;',\n\t\t'uniform bool disable;',\n\t\t'uniform float blending;',\n\t\t'uniform int blendingMode;',\n\t\t'varying vec2 vUV;',\n\t\t'uniform bool greyscale;',\n\t\t'const int samples = 8;',\n\n\t\t'float blend( float a, float b, float t ) {',\n\n\t\t// linear blend\n\t\t'\treturn a * ( 1.0 - t ) + b * t;',\n\n\t\t'}',\n\n\t\t'float hypot( float x, float y ) {',\n\n\t\t// vector magnitude\n\t\t'\treturn sqrt( x * x + y * y );',\n\n\t\t'}',\n\n\t\t'float rand( vec2 seed ){',\n\n\t\t// get pseudo-random number\n\t 'return fract( sin( dot( seed.xy, vec2( 12.9898, 78.233 ) ) ) * 43758.5453 );',\n\n\t\t'}',\n\n\t\t'float distanceToDotRadius( float channel, vec2 coord, vec2 normal, vec2 p, float angle, float rad_max ) {',\n\n\t\t// apply shape-specific transforms\n\t\t'\tfloat dist = hypot( coord.x - p.x, coord.y - p.y );',\n\t\t'\tfloat rad = channel;',\n\n\t\t'\tif ( shape == SHAPE_DOT ) {',\n\n\t\t'\t\trad = pow( abs( rad ), 1.125 ) * rad_max;',\n\n\t\t'\t} else if ( shape == SHAPE_ELLIPSE ) {',\n\n\t\t'\t\trad = pow( abs( rad ), 1.125 ) * rad_max;',\n\n\t\t'\t\tif ( dist != 0.0 ) {',\n\t\t'\t\t\tfloat dot_p = abs( ( p.x - coord.x ) / dist * normal.x + ( p.y - coord.y ) / dist * normal.y );',\n\t\t'\t\t\tdist = ( dist * ( 1.0 - SQRT2_HALF_MINUS_ONE ) ) + dot_p * dist * SQRT2_MINUS_ONE;',\n\t\t'\t\t}',\n\n\t\t'\t} else if ( shape == SHAPE_LINE ) {',\n\n\t\t'\t\trad = pow( abs( rad ), 1.5) * rad_max;',\n\t\t'\t\tfloat dot_p = ( p.x - coord.x ) * normal.x + ( p.y - coord.y ) * normal.y;',\n\t\t'\t\tdist = hypot( normal.x * dot_p, normal.y * dot_p );',\n\n\t\t'\t} else if ( shape == SHAPE_SQUARE ) {',\n\n\t\t'\t\tfloat theta = atan( p.y - coord.y, p.x - coord.x ) - angle;',\n\t\t'\t\tfloat sin_t = abs( sin( theta ) );',\n\t\t'\t\tfloat cos_t = abs( cos( theta ) );',\n\t\t'\t\trad = pow( abs( rad ), 1.4 );',\n\t\t'\t\trad = rad_max * ( rad + ( ( sin_t > cos_t ) ? rad - sin_t * rad : rad - cos_t * rad ) );',\n\n\t\t'\t}',\n\n\t\t'\treturn rad - dist;',\n\n\t\t'}',\n\n\t\t'struct Cell {',\n\n\t\t// grid sample positions\n\t\t'\tvec2 normal;',\n\t\t'\tvec2 p1;',\n\t\t'\tvec2 p2;',\n\t\t'\tvec2 p3;',\n\t\t'\tvec2 p4;',\n\t\t'\tfloat samp2;',\n\t\t'\tfloat samp1;',\n\t\t'\tfloat samp3;',\n\t\t'\tfloat samp4;',\n\n\t\t'};',\n\n\t\t'vec4 getSample( vec2 point ) {',\n\n\t\t// multi-sampled point\n\t\t'\tvec4 tex = texture2D( tDiffuse, vec2( point.x / width, point.y / height ) );',\n\t\t'\tfloat base = rand( vec2( floor( point.x ), floor( point.y ) ) ) * PI2;',\n\t\t'\tfloat step = PI2 / float( samples );',\n\t\t'\tfloat dist = radius * 0.66;',\n\n\t\t'\tfor ( int i = 0; i < samples; ++i ) {',\n\n\t\t'\t\tfloat r = base + step * float( i );',\n\t\t'\t\tvec2 coord = point + vec2( cos( r ) * dist, sin( r ) * dist );',\n\t\t'\t\ttex += texture2D( tDiffuse, vec2( coord.x / width, coord.y / height ) );',\n\n\t\t'\t}',\n\n\t\t'\ttex /= float( samples ) + 1.0;',\n\t\t'\treturn tex;',\n\n\t\t'}',\n\n\t\t'float getDotColour( Cell c, vec2 p, int channel, float angle, float aa ) {',\n\n\t\t// get colour for given point\n\t\t'\tfloat dist_c_1, dist_c_2, dist_c_3, dist_c_4, res;',\n\n\t\t'\tif ( channel == 0 ) {',\n\n\t\t'\t\tc.samp1 = getSample( c.p1 ).r;',\n\t\t'\t\tc.samp2 = getSample( c.p2 ).r;',\n\t\t'\t\tc.samp3 = getSample( c.p3 ).r;',\n\t\t'\t\tc.samp4 = getSample( c.p4 ).r;',\n\n\t\t'\t} else if (channel == 1) {',\n\n\t\t'\t\tc.samp1 = getSample( c.p1 ).g;',\n\t\t'\t\tc.samp2 = getSample( c.p2 ).g;',\n\t\t'\t\tc.samp3 = getSample( c.p3 ).g;',\n\t\t'\t\tc.samp4 = getSample( c.p4 ).g;',\n\n\t\t'\t} else {',\n\n\t\t'\t\tc.samp1 = getSample( c.p1 ).b;',\n\t\t'\t\tc.samp3 = getSample( c.p3 ).b;',\n\t\t'\t\tc.samp2 = getSample( c.p2 ).b;',\n\t\t'\t\tc.samp4 = getSample( c.p4 ).b;',\n\n\t\t'\t}',\n\n\t\t'\tdist_c_1 = distanceToDotRadius( c.samp1, c.p1, c.normal, p, angle, radius );',\n\t\t'\tdist_c_2 = distanceToDotRadius( c.samp2, c.p2, c.normal, p, angle, radius );',\n\t\t'\tdist_c_3 = distanceToDotRadius( c.samp3, c.p3, c.normal, p, angle, radius );',\n\t\t'\tdist_c_4 = distanceToDotRadius( c.samp4, c.p4, c.normal, p, angle, radius );',\n\t\t'\tres = ( dist_c_1 > 0.0 ) ? clamp( dist_c_1 / aa, 0.0, 1.0 ) : 0.0;',\n\t\t'\tres += ( dist_c_2 > 0.0 ) ? clamp( dist_c_2 / aa, 0.0, 1.0 ) : 0.0;',\n\t\t'\tres += ( dist_c_3 > 0.0 ) ? clamp( dist_c_3 / aa, 0.0, 1.0 ) : 0.0;',\n\t\t'\tres += ( dist_c_4 > 0.0 ) ? clamp( dist_c_4 / aa, 0.0, 1.0 ) : 0.0;',\n\t\t'\tres = clamp( res, 0.0, 1.0 );',\n\n\t\t'\treturn res;',\n\n\t\t'}',\n\n\t\t'Cell getReferenceCell( vec2 p, vec2 origin, float grid_angle, float step ) {',\n\n\t\t// get containing cell\n\t\t'\tCell c;',\n\n\t\t// calc grid\n\t\t'\tvec2 n = vec2( cos( grid_angle ), sin( grid_angle ) );',\n\t\t'\tfloat threshold = step * 0.5;',\n\t\t'\tfloat dot_normal = n.x * ( p.x - origin.x ) + n.y * ( p.y - origin.y );',\n\t\t'\tfloat dot_line = -n.y * ( p.x - origin.x ) + n.x * ( p.y - origin.y );',\n\t\t'\tvec2 offset = vec2( n.x * dot_normal, n.y * dot_normal );',\n\t\t'\tfloat offset_normal = mod( hypot( offset.x, offset.y ), step );',\n\t\t'\tfloat normal_dir = ( dot_normal < 0.0 ) ? 1.0 : -1.0;',\n\t\t'\tfloat normal_scale = ( ( offset_normal < threshold ) ? -offset_normal : step - offset_normal ) * normal_dir;',\n\t\t'\tfloat offset_line = mod( hypot( ( p.x - offset.x ) - origin.x, ( p.y - offset.y ) - origin.y ), step );',\n\t\t'\tfloat line_dir = ( dot_line < 0.0 ) ? 1.0 : -1.0;',\n\t\t'\tfloat line_scale = ( ( offset_line < threshold ) ? -offset_line : step - offset_line ) * line_dir;',\n\n\t\t// get closest corner\n\t\t'\tc.normal = n;',\n\t\t'\tc.p1.x = p.x - n.x * normal_scale + n.y * line_scale;',\n\t\t'\tc.p1.y = p.y - n.y * normal_scale - n.x * line_scale;',\n\n\t\t// scatter\n\t\t'\tif ( scatter != 0.0 ) {',\n\n\t\t'\t\tfloat off_mag = scatter * threshold * 0.5;',\n\t\t'\t\tfloat off_angle = rand( vec2( floor( c.p1.x ), floor( c.p1.y ) ) ) * PI2;',\n\t\t'\t\tc.p1.x += cos( off_angle ) * off_mag;',\n\t\t'\t\tc.p1.y += sin( off_angle ) * off_mag;',\n\n\t\t'\t}',\n\n\t\t// find corners\n\t\t'\tfloat normal_step = normal_dir * ( ( offset_normal < threshold ) ? step : -step );',\n\t\t'\tfloat line_step = line_dir * ( ( offset_line < threshold ) ? step : -step );',\n\t\t'\tc.p2.x = c.p1.x - n.x * normal_step;',\n\t\t'\tc.p2.y = c.p1.y - n.y * normal_step;',\n\t\t'\tc.p3.x = c.p1.x + n.y * line_step;',\n\t\t'\tc.p3.y = c.p1.y - n.x * line_step;',\n\t\t'\tc.p4.x = c.p1.x - n.x * normal_step + n.y * line_step;',\n\t\t'\tc.p4.y = c.p1.y - n.y * normal_step - n.x * line_step;',\n\n\t\t'\treturn c;',\n\n\t\t'}',\n\n\t\t'float blendColour( float a, float b, float t ) {',\n\n\t\t// blend colours\n\t\t'\tif ( blendingMode == BLENDING_LINEAR ) {',\n\t\t'\t\treturn blend( a, b, 1.0 - t );',\n\t\t'\t} else if ( blendingMode == BLENDING_ADD ) {',\n\t\t'\t\treturn blend( a, min( 1.0, a + b ), t );',\n\t\t'\t} else if ( blendingMode == BLENDING_MULTIPLY ) {',\n\t\t'\t\treturn blend( a, max( 0.0, a * b ), t );',\n\t\t'\t} else if ( blendingMode == BLENDING_LIGHTER ) {',\n\t\t'\t\treturn blend( a, max( a, b ), t );',\n\t\t'\t} else if ( blendingMode == BLENDING_DARKER ) {',\n\t\t'\t\treturn blend( a, min( a, b ), t );',\n\t\t'\t} else {',\n\t\t'\t\treturn blend( a, b, 1.0 - t );',\n\t\t'\t}',\n\n\t\t'}',\n\n\t\t'void main() {',\n\n\t\t'\tif ( ! disable ) {',\n\n\t\t// setup\n\t\t'\t\tvec2 p = vec2( vUV.x * width, vUV.y * height );',\n\t\t'\t\tvec2 origin = vec2( 0, 0 );',\n\t\t'\t\tfloat aa = ( radius < 2.5 ) ? radius * 0.5 : 1.25;',\n\n\t\t// get channel samples\n\t\t'\t\tCell cell_r = getReferenceCell( p, origin, rotateR, radius );',\n\t\t'\t\tCell cell_g = getReferenceCell( p, origin, rotateG, radius );',\n\t\t'\t\tCell cell_b = getReferenceCell( p, origin, rotateB, radius );',\n\t\t'\t\tfloat r = getDotColour( cell_r, p, 0, rotateR, aa );',\n\t\t'\t\tfloat g = getDotColour( cell_g, p, 1, rotateG, aa );',\n\t\t'\t\tfloat b = getDotColour( cell_b, p, 2, rotateB, aa );',\n\n\t\t// blend with original\n\t\t'\t\tvec4 colour = texture2D( tDiffuse, vUV );',\n\t\t'\t\tr = blendColour( r, colour.r, blending );',\n\t\t'\t\tg = blendColour( g, colour.g, blending );',\n\t\t'\t\tb = blendColour( b, colour.b, blending );',\n\n\t\t'\t\tif ( greyscale ) {',\n\t\t'\t\t\tr = g = b = (r + b + g) / 3.0;',\n\t\t'\t\t}',\n\n\t\t'\t\tgl_FragColor = vec4( r, g, b, 1.0 );',\n\n\t\t'\t} else {',\n\n\t\t'\t\tgl_FragColor = texture2D( tDiffuse, vUV );',\n\n\t\t'\t}',\n\n\t\t'}'\n\n\t].join( '\\n' )\n\n};\n\nexport { HalftoneShader };\n","import {\n\tShaderMaterial,\n\tUniformsUtils\n} from '../../../build/three.module.js';\nimport { Pass } from '../postprocessing/Pass.js';\nimport { HalftoneShader } from '../shaders/HalftoneShader.js';\n\n/**\n * RGB Halftone pass for three.js effects composer. Requires HalftoneShader.\n */\n\nvar HalftonePass = function ( width, height, params ) {\n\n\tPass.call( this );\n\n \tif ( HalftoneShader === undefined ) {\n\n \t\tconsole.error( 'THREE.HalftonePass requires HalftoneShader' );\n\n \t}\n\n \tthis.uniforms = UniformsUtils.clone( HalftoneShader.uniforms );\n \tthis.material = new ShaderMaterial( {\n \t\tuniforms: this.uniforms,\n \t\tfragmentShader: HalftoneShader.fragmentShader,\n \t\tvertexShader: HalftoneShader.vertexShader\n \t} );\n\n\t// set params\n\tthis.uniforms.width.value = width;\n\tthis.uniforms.height.value = height;\n\n\tfor ( var key in params ) {\n\n\t\tif ( params.hasOwnProperty( key ) && this.uniforms.hasOwnProperty( key ) ) {\n\n\t\t\tthis.uniforms[ key ].value = params[ key ];\n\n\t\t}\n\n\t}\n\n\tthis.fsQuad = new Pass.FullScreenQuad( this.material );\n\n};\n\nHalftonePass.prototype = Object.assign( Object.create( Pass.prototype ), {\n\n\tconstructor: HalftonePass,\n\n\trender: function ( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive*/ ) {\n\n \t\tthis.material.uniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\n \t\tif ( this.renderToScreen ) {\n\n \t\t\trenderer.setRenderTarget( null );\n \t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n \t\t\trenderer.setRenderTarget( writeBuffer );\n \t\t\tif ( this.clear ) renderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n \t},\n\n \tsetSize: function ( width, height ) {\n\n \t\tthis.uniforms.width.value = width;\n \t\tthis.uniforms.height.value = height;\n\n \t}\n} );\n\nexport { HalftonePass };\n","import { HalftonePass } from 'three/examples/jsm/postprocessing/HalftonePass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n shape: { type: Number, default: 1 },\n radius: { type: Number, default: 4 },\n rotateR: { type: Number, default: Math.PI / 12 * 1 },\n rotateG: { type: Number, default: Math.PI / 12 * 2 },\n rotateB: { type: Number, default: Math.PI / 12 * 3 },\n scatter: { type: Number, default: 0 },\n },\n mounted() {\n const pass = new HalftonePass(this.three.size.width, this.three.size.height, {});\n\n ['shape', 'radius', 'rotateR', 'rotateG', 'rotateB', 'scatter'].forEach(p => {\n pass.uniforms[p].value = this[p];\n watch(() => this[p], () => {\n pass.uniforms[p].value = this[p];\n });\n });\n\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'HalftonePass',\n};\n","import {\n\tVector2\n} from '../../../build/three.module.js';\n\n/**\n * WebGL port of Subpixel Morphological Antialiasing (SMAA) v2.8\n * Preset: SMAA 1x Medium (with color edge detection)\n * https://github.com/iryoku/smaa/releases/tag/v2.8\n */\n\nvar SMAAEdgesShader = {\n\n\tdefines: {\n\n\t\t'SMAA_THRESHOLD': '0.1'\n\n\t},\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'resolution': { value: new Vector2( 1 / 1024, 1 / 512 ) }\n\n\t},\n\n\tvertexShader: [\n\n\t\t'uniform vec2 resolution;',\n\n\t\t'varying vec2 vUv;',\n\t\t'varying vec4 vOffset[ 3 ];',\n\n\t\t'void SMAAEdgeDetectionVS( vec2 texcoord ) {',\n\t\t'\tvOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -1.0, 0.0, 0.0, 1.0 );', // WebGL port note: Changed sign in W component\n\t\t'\tvOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( 1.0, 0.0, 0.0, -1.0 );', // WebGL port note: Changed sign in W component\n\t\t'\tvOffset[ 2 ] = texcoord.xyxy + resolution.xyxy * vec4( -2.0, 0.0, 0.0, 2.0 );', // WebGL port note: Changed sign in W component\n\t\t'}',\n\n\t\t'void main() {',\n\n\t\t'\tvUv = uv;',\n\n\t\t'\tSMAAEdgeDetectionVS( vUv );',\n\n\t\t'\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n\t\t'}'\n\n\t].join( '\\n' ),\n\n\tfragmentShader: [\n\n\t\t'uniform sampler2D tDiffuse;',\n\n\t\t'varying vec2 vUv;',\n\t\t'varying vec4 vOffset[ 3 ];',\n\n\t\t'vec4 SMAAColorEdgeDetectionPS( vec2 texcoord, vec4 offset[3], sampler2D colorTex ) {',\n\t\t'\tvec2 threshold = vec2( SMAA_THRESHOLD, SMAA_THRESHOLD );',\n\n\t\t// Calculate color deltas:\n\t\t'\tvec4 delta;',\n\t\t'\tvec3 C = texture2D( colorTex, texcoord ).rgb;',\n\n\t\t'\tvec3 Cleft = texture2D( colorTex, offset[0].xy ).rgb;',\n\t\t'\tvec3 t = abs( C - Cleft );',\n\t\t'\tdelta.x = max( max( t.r, t.g ), t.b );',\n\n\t\t'\tvec3 Ctop = texture2D( colorTex, offset[0].zw ).rgb;',\n\t\t'\tt = abs( C - Ctop );',\n\t\t'\tdelta.y = max( max( t.r, t.g ), t.b );',\n\n\t\t// We do the usual threshold:\n\t\t'\tvec2 edges = step( threshold, delta.xy );',\n\n\t\t// Then discard if there is no edge:\n\t\t'\tif ( dot( edges, vec2( 1.0, 1.0 ) ) == 0.0 )',\n\t\t'\t\tdiscard;',\n\n\t\t// Calculate right and bottom deltas:\n\t\t'\tvec3 Cright = texture2D( colorTex, offset[1].xy ).rgb;',\n\t\t'\tt = abs( C - Cright );',\n\t\t'\tdelta.z = max( max( t.r, t.g ), t.b );',\n\n\t\t'\tvec3 Cbottom = texture2D( colorTex, offset[1].zw ).rgb;',\n\t\t'\tt = abs( C - Cbottom );',\n\t\t'\tdelta.w = max( max( t.r, t.g ), t.b );',\n\n\t\t// Calculate the maximum delta in the direct neighborhood:\n\t\t'\tfloat maxDelta = max( max( max( delta.x, delta.y ), delta.z ), delta.w );',\n\n\t\t// Calculate left-left and top-top deltas:\n\t\t'\tvec3 Cleftleft = texture2D( colorTex, offset[2].xy ).rgb;',\n\t\t'\tt = abs( C - Cleftleft );',\n\t\t'\tdelta.z = max( max( t.r, t.g ), t.b );',\n\n\t\t'\tvec3 Ctoptop = texture2D( colorTex, offset[2].zw ).rgb;',\n\t\t'\tt = abs( C - Ctoptop );',\n\t\t'\tdelta.w = max( max( t.r, t.g ), t.b );',\n\n\t\t// Calculate the final maximum delta:\n\t\t'\tmaxDelta = max( max( maxDelta, delta.z ), delta.w );',\n\n\t\t// Local contrast adaptation in action:\n\t\t'\tedges.xy *= step( 0.5 * maxDelta, delta.xy );',\n\n\t\t'\treturn vec4( edges, 0.0, 0.0 );',\n\t\t'}',\n\n\t\t'void main() {',\n\n\t\t'\tgl_FragColor = SMAAColorEdgeDetectionPS( vUv, vOffset, tDiffuse );',\n\n\t\t'}'\n\n\t].join( '\\n' )\n\n};\n\nvar SMAAWeightsShader = {\n\n\tdefines: {\n\n\t\t'SMAA_MAX_SEARCH_STEPS': '8',\n\t\t'SMAA_AREATEX_MAX_DISTANCE': '16',\n\t\t'SMAA_AREATEX_PIXEL_SIZE': '( 1.0 / vec2( 160.0, 560.0 ) )',\n\t\t'SMAA_AREATEX_SUBTEX_SIZE': '( 1.0 / 7.0 )'\n\n\t},\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'tArea': { value: null },\n\t\t'tSearch': { value: null },\n\t\t'resolution': { value: new Vector2( 1 / 1024, 1 / 512 ) }\n\n\t},\n\n\tvertexShader: [\n\n\t\t'uniform vec2 resolution;',\n\n\t\t'varying vec2 vUv;',\n\t\t'varying vec4 vOffset[ 3 ];',\n\t\t'varying vec2 vPixcoord;',\n\n\t\t'void SMAABlendingWeightCalculationVS( vec2 texcoord ) {',\n\t\t'\tvPixcoord = texcoord / resolution;',\n\n\t\t// We will use these offsets for the searches later on (see @PSEUDO_GATHER4):\n\t\t'\tvOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -0.25, 0.125, 1.25, 0.125 );', // WebGL port note: Changed sign in Y and W components\n\t\t'\tvOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( -0.125, 0.25, -0.125, -1.25 );', // WebGL port note: Changed sign in Y and W components\n\n\t\t// And these for the searches, they indicate the ends of the loops:\n\t\t'\tvOffset[ 2 ] = vec4( vOffset[ 0 ].xz, vOffset[ 1 ].yw ) + vec4( -2.0, 2.0, -2.0, 2.0 ) * resolution.xxyy * float( SMAA_MAX_SEARCH_STEPS );',\n\n\t\t'}',\n\n\t\t'void main() {',\n\n\t\t'\tvUv = uv;',\n\n\t\t'\tSMAABlendingWeightCalculationVS( vUv );',\n\n\t\t'\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n\t\t'}'\n\n\t].join( '\\n' ),\n\n\tfragmentShader: [\n\n\t\t'#define SMAASampleLevelZeroOffset( tex, coord, offset ) texture2D( tex, coord + float( offset ) * resolution, 0.0 )',\n\n\t\t'uniform sampler2D tDiffuse;',\n\t\t'uniform sampler2D tArea;',\n\t\t'uniform sampler2D tSearch;',\n\t\t'uniform vec2 resolution;',\n\n\t\t'varying vec2 vUv;',\n\t\t'varying vec4 vOffset[3];',\n\t\t'varying vec2 vPixcoord;',\n\n\t\t'#if __VERSION__ == 100',\n\t\t'vec2 round( vec2 x ) {',\n\t\t'\treturn sign( x ) * floor( abs( x ) + 0.5 );',\n\t\t'}',\n\t\t'#endif',\n\n\t\t'float SMAASearchLength( sampler2D searchTex, vec2 e, float bias, float scale ) {',\n\t\t// Not required if searchTex accesses are set to point:\n\t\t// float2 SEARCH_TEX_PIXEL_SIZE = 1.0 / float2(66.0, 33.0);\n\t\t// e = float2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE +\n\t\t// e * float2(scale, 1.0) * float2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE;\n\t\t'\te.r = bias + e.r * scale;',\n\t\t'\treturn 255.0 * texture2D( searchTex, e, 0.0 ).r;',\n\t\t'}',\n\n\t\t'float SMAASearchXLeft( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {',\n\t\t/**\n\t\t\t* @PSEUDO_GATHER4\n\t\t\t* This texcoord has been offset by (-0.25, -0.125) in the vertex shader to\n\t\t\t* sample between edge, thus fetching four edges in a row.\n\t\t\t* Sampling with different offsets in each direction allows to disambiguate\n\t\t\t* which edges are active from the four fetched ones.\n\t\t\t*/\n\t\t'\tvec2 e = vec2( 0.0, 1.0 );',\n\n\t\t'\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) {', // WebGL port note: Changed while to for\n\t\t'\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;',\n\t\t'\t\ttexcoord -= vec2( 2.0, 0.0 ) * resolution;',\n\t\t'\t\tif ( ! ( texcoord.x > end && e.g > 0.8281 && e.r == 0.0 ) ) break;',\n\t\t'\t}',\n\n\t\t// We correct the previous (-0.25, -0.125) offset we applied:\n\t\t'\ttexcoord.x += 0.25 * resolution.x;',\n\n\t\t// The searches are bias by 1, so adjust the coords accordingly:\n\t\t'\ttexcoord.x += resolution.x;',\n\n\t\t// Disambiguate the length added by the last step:\n\t\t'\ttexcoord.x += 2.0 * resolution.x;', // Undo last step\n\t\t'\ttexcoord.x -= resolution.x * SMAASearchLength(searchTex, e, 0.0, 0.5);',\n\n\t\t'\treturn texcoord.x;',\n\t\t'}',\n\n\t\t'float SMAASearchXRight( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {',\n\t\t'\tvec2 e = vec2( 0.0, 1.0 );',\n\n\t\t'\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) {', // WebGL port note: Changed while to for\n\t\t'\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;',\n\t\t'\t\ttexcoord += vec2( 2.0, 0.0 ) * resolution;',\n\t\t'\t\tif ( ! ( texcoord.x < end && e.g > 0.8281 && e.r == 0.0 ) ) break;',\n\t\t'\t}',\n\n\t\t'\ttexcoord.x -= 0.25 * resolution.x;',\n\t\t'\ttexcoord.x -= resolution.x;',\n\t\t'\ttexcoord.x -= 2.0 * resolution.x;',\n\t\t'\ttexcoord.x += resolution.x * SMAASearchLength( searchTex, e, 0.5, 0.5 );',\n\n\t\t'\treturn texcoord.x;',\n\t\t'}',\n\n\t\t'float SMAASearchYUp( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {',\n\t\t'\tvec2 e = vec2( 1.0, 0.0 );',\n\n\t\t'\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) {', // WebGL port note: Changed while to for\n\t\t'\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;',\n\t\t'\t\ttexcoord += vec2( 0.0, 2.0 ) * resolution;', // WebGL port note: Changed sign\n\t\t'\t\tif ( ! ( texcoord.y > end && e.r > 0.8281 && e.g == 0.0 ) ) break;',\n\t\t'\t}',\n\n\t\t'\ttexcoord.y -= 0.25 * resolution.y;', // WebGL port note: Changed sign\n\t\t'\ttexcoord.y -= resolution.y;', // WebGL port note: Changed sign\n\t\t'\ttexcoord.y -= 2.0 * resolution.y;', // WebGL port note: Changed sign\n\t\t'\ttexcoord.y += resolution.y * SMAASearchLength( searchTex, e.gr, 0.0, 0.5 );', // WebGL port note: Changed sign\n\n\t\t'\treturn texcoord.y;',\n\t\t'}',\n\n\t\t'float SMAASearchYDown( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {',\n\t\t'\tvec2 e = vec2( 1.0, 0.0 );',\n\n\t\t'\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) {', // WebGL port note: Changed while to for\n\t\t'\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;',\n\t\t'\t\ttexcoord -= vec2( 0.0, 2.0 ) * resolution;', // WebGL port note: Changed sign\n\t\t'\t\tif ( ! ( texcoord.y < end && e.r > 0.8281 && e.g == 0.0 ) ) break;',\n\t\t'\t}',\n\n\t\t'\ttexcoord.y += 0.25 * resolution.y;', // WebGL port note: Changed sign\n\t\t'\ttexcoord.y += resolution.y;', // WebGL port note: Changed sign\n\t\t'\ttexcoord.y += 2.0 * resolution.y;', // WebGL port note: Changed sign\n\t\t'\ttexcoord.y -= resolution.y * SMAASearchLength( searchTex, e.gr, 0.5, 0.5 );', // WebGL port note: Changed sign\n\n\t\t'\treturn texcoord.y;',\n\t\t'}',\n\n\t\t'vec2 SMAAArea( sampler2D areaTex, vec2 dist, float e1, float e2, float offset ) {',\n\t\t// Rounding prevents precision errors of bilinear filtering:\n\t\t'\tvec2 texcoord = float( SMAA_AREATEX_MAX_DISTANCE ) * round( 4.0 * vec2( e1, e2 ) ) + dist;',\n\n\t\t// We do a scale and bias for mapping to texel space:\n\t\t'\ttexcoord = SMAA_AREATEX_PIXEL_SIZE * texcoord + ( 0.5 * SMAA_AREATEX_PIXEL_SIZE );',\n\n\t\t// Move to proper place, according to the subpixel offset:\n\t\t'\ttexcoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;',\n\n\t\t'\treturn texture2D( areaTex, texcoord, 0.0 ).rg;',\n\t\t'}',\n\n\t\t'vec4 SMAABlendingWeightCalculationPS( vec2 texcoord, vec2 pixcoord, vec4 offset[ 3 ], sampler2D edgesTex, sampler2D areaTex, sampler2D searchTex, ivec4 subsampleIndices ) {',\n\t\t'\tvec4 weights = vec4( 0.0, 0.0, 0.0, 0.0 );',\n\n\t\t'\tvec2 e = texture2D( edgesTex, texcoord ).rg;',\n\n\t\t'\tif ( e.g > 0.0 ) {', // Edge at north\n\t\t'\t\tvec2 d;',\n\n\t\t// Find the distance to the left:\n\t\t'\t\tvec2 coords;',\n\t\t'\t\tcoords.x = SMAASearchXLeft( edgesTex, searchTex, offset[ 0 ].xy, offset[ 2 ].x );',\n\t\t'\t\tcoords.y = offset[ 1 ].y;', // offset[1].y = texcoord.y - 0.25 * resolution.y (@CROSSING_OFFSET)\n\t\t'\t\td.x = coords.x;',\n\n\t\t// Now fetch the left crossing edges, two at a time using bilinear\n\t\t// filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to\n\t\t// discern what value each edge has:\n\t\t'\t\tfloat e1 = texture2D( edgesTex, coords, 0.0 ).r;',\n\n\t\t// Find the distance to the right:\n\t\t'\t\tcoords.x = SMAASearchXRight( edgesTex, searchTex, offset[ 0 ].zw, offset[ 2 ].y );',\n\t\t'\t\td.y = coords.x;',\n\n\t\t// We want the distances to be in pixel units (doing this here allow to\n\t\t// better interleave arithmetic and memory accesses):\n\t\t'\t\td = d / resolution.x - pixcoord.x;',\n\n\t\t// SMAAArea below needs a sqrt, as the areas texture is compressed\n\t\t// quadratically:\n\t\t'\t\tvec2 sqrt_d = sqrt( abs( d ) );',\n\n\t\t// Fetch the right crossing edges:\n\t\t'\t\tcoords.y -= 1.0 * resolution.y;', // WebGL port note: Added\n\t\t'\t\tfloat e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 1, 0 ) ).r;',\n\n\t\t// Ok, we know how this pattern looks like, now it is time for getting\n\t\t// the actual area:\n\t\t'\t\tweights.rg = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.y ) );',\n\t\t'\t}',\n\n\t\t'\tif ( e.r > 0.0 ) {', // Edge at west\n\t\t'\t\tvec2 d;',\n\n\t\t// Find the distance to the top:\n\t\t'\t\tvec2 coords;',\n\n\t\t'\t\tcoords.y = SMAASearchYUp( edgesTex, searchTex, offset[ 1 ].xy, offset[ 2 ].z );',\n\t\t'\t\tcoords.x = offset[ 0 ].x;', // offset[1].x = texcoord.x - 0.25 * resolution.x;\n\t\t'\t\td.x = coords.y;',\n\n\t\t// Fetch the top crossing edges:\n\t\t'\t\tfloat e1 = texture2D( edgesTex, coords, 0.0 ).g;',\n\n\t\t// Find the distance to the bottom:\n\t\t'\t\tcoords.y = SMAASearchYDown( edgesTex, searchTex, offset[ 1 ].zw, offset[ 2 ].w );',\n\t\t'\t\td.y = coords.y;',\n\n\t\t// We want the distances to be in pixel units:\n\t\t'\t\td = d / resolution.y - pixcoord.y;',\n\n\t\t// SMAAArea below needs a sqrt, as the areas texture is compressed\n\t\t// quadratically:\n\t\t'\t\tvec2 sqrt_d = sqrt( abs( d ) );',\n\n\t\t// Fetch the bottom crossing edges:\n\t\t'\t\tcoords.y -= 1.0 * resolution.y;', // WebGL port note: Added\n\t\t'\t\tfloat e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 0, 1 ) ).g;',\n\n\t\t// Get the area for this direction:\n\t\t'\t\tweights.ba = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.x ) );',\n\t\t'\t}',\n\n\t\t'\treturn weights;',\n\t\t'}',\n\n\t\t'void main() {',\n\n\t\t'\tgl_FragColor = SMAABlendingWeightCalculationPS( vUv, vPixcoord, vOffset, tDiffuse, tArea, tSearch, ivec4( 0.0 ) );',\n\n\t\t'}'\n\n\t].join( '\\n' )\n\n};\n\nvar SMAABlendShader = {\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'tColor': { value: null },\n\t\t'resolution': { value: new Vector2( 1 / 1024, 1 / 512 ) }\n\n\t},\n\n\tvertexShader: [\n\n\t\t'uniform vec2 resolution;',\n\n\t\t'varying vec2 vUv;',\n\t\t'varying vec4 vOffset[ 2 ];',\n\n\t\t'void SMAANeighborhoodBlendingVS( vec2 texcoord ) {',\n\t\t'\tvOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -1.0, 0.0, 0.0, 1.0 );', // WebGL port note: Changed sign in W component\n\t\t'\tvOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( 1.0, 0.0, 0.0, -1.0 );', // WebGL port note: Changed sign in W component\n\t\t'}',\n\n\t\t'void main() {',\n\n\t\t'\tvUv = uv;',\n\n\t\t'\tSMAANeighborhoodBlendingVS( vUv );',\n\n\t\t'\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n\t\t'}'\n\n\t].join( '\\n' ),\n\n\tfragmentShader: [\n\n\t\t'uniform sampler2D tDiffuse;',\n\t\t'uniform sampler2D tColor;',\n\t\t'uniform vec2 resolution;',\n\n\t\t'varying vec2 vUv;',\n\t\t'varying vec4 vOffset[ 2 ];',\n\n\t\t'vec4 SMAANeighborhoodBlendingPS( vec2 texcoord, vec4 offset[ 2 ], sampler2D colorTex, sampler2D blendTex ) {',\n\t\t// Fetch the blending weights for current pixel:\n\t\t'\tvec4 a;',\n\t\t'\ta.xz = texture2D( blendTex, texcoord ).xz;',\n\t\t'\ta.y = texture2D( blendTex, offset[ 1 ].zw ).g;',\n\t\t'\ta.w = texture2D( blendTex, offset[ 1 ].xy ).a;',\n\n\t\t// Is there any blending weight with a value greater than 0.0?\n\t\t'\tif ( dot(a, vec4( 1.0, 1.0, 1.0, 1.0 )) < 1e-5 ) {',\n\t\t'\t\treturn texture2D( colorTex, texcoord, 0.0 );',\n\t\t'\t} else {',\n\t\t// Up to 4 lines can be crossing a pixel (one through each edge). We\n\t\t// favor blending by choosing the line with the maximum weight for each\n\t\t// direction:\n\t\t'\t\tvec2 offset;',\n\t\t'\t\toffset.x = a.a > a.b ? a.a : -a.b;', // left vs. right\n\t\t'\t\toffset.y = a.g > a.r ? -a.g : a.r;', // top vs. bottom // WebGL port note: Changed signs\n\n\t\t// Then we go in the direction that has the maximum weight:\n\t\t'\t\tif ( abs( offset.x ) > abs( offset.y )) {', // horizontal vs. vertical\n\t\t'\t\t\toffset.y = 0.0;',\n\t\t'\t\t} else {',\n\t\t'\t\t\toffset.x = 0.0;',\n\t\t'\t\t}',\n\n\t\t// Fetch the opposite color and lerp by hand:\n\t\t'\t\tvec4 C = texture2D( colorTex, texcoord, 0.0 );',\n\t\t'\t\ttexcoord += sign( offset ) * resolution;',\n\t\t'\t\tvec4 Cop = texture2D( colorTex, texcoord, 0.0 );',\n\t\t'\t\tfloat s = abs( offset.x ) > abs( offset.y ) ? abs( offset.x ) : abs( offset.y );',\n\n\t\t// WebGL port note: Added gamma correction\n\t\t'\t\tC.xyz = pow(C.xyz, vec3(2.2));',\n\t\t'\t\tCop.xyz = pow(Cop.xyz, vec3(2.2));',\n\t\t'\t\tvec4 mixed = mix(C, Cop, s);',\n\t\t'\t\tmixed.xyz = pow(mixed.xyz, vec3(1.0 / 2.2));',\n\n\t\t'\t\treturn mixed;',\n\t\t'\t}',\n\t\t'}',\n\n\t\t'void main() {',\n\n\t\t'\tgl_FragColor = SMAANeighborhoodBlendingPS( vUv, vOffset, tColor, tDiffuse );',\n\n\t\t'}'\n\n\t].join( '\\n' )\n\n};\n\nexport { SMAAEdgesShader, SMAAWeightsShader, SMAABlendShader };\n","import {\n\tLinearFilter,\n\tNearestFilter,\n\tRGBAFormat,\n\tRGBFormat,\n\tShaderMaterial,\n\tTexture,\n\tUniformsUtils,\n\tWebGLRenderTarget\n} from '../../../build/three.module.js';\nimport { Pass } from '../postprocessing/Pass.js';\nimport { SMAAEdgesShader } from '../shaders/SMAAShader.js';\nimport { SMAAWeightsShader } from '../shaders/SMAAShader.js';\nimport { SMAABlendShader } from '../shaders/SMAAShader.js';\n\nvar SMAAPass = function ( width, height ) {\n\n\tPass.call( this );\n\n\t// render targets\n\n\tthis.edgesRT = new WebGLRenderTarget( width, height, {\n\t\tdepthBuffer: false,\n\t\tgenerateMipmaps: false,\n\t\tminFilter: LinearFilter,\n\t\tformat: RGBFormat\n\t} );\n\tthis.edgesRT.texture.name = 'SMAAPass.edges';\n\n\tthis.weightsRT = new WebGLRenderTarget( width, height, {\n\t\tdepthBuffer: false,\n\t\tgenerateMipmaps: false,\n\t\tminFilter: LinearFilter,\n\t\tformat: RGBAFormat\n\t} );\n\tthis.weightsRT.texture.name = 'SMAAPass.weights';\n\n\t// textures\n\tvar scope = this;\n\n\tvar areaTextureImage = new Image();\n\tareaTextureImage.src = this.getAreaTexture();\n\tareaTextureImage.onload = function () {\n\n\t\t// assigning data to HTMLImageElement.src is asynchronous (see #15162)\n\t\tscope.areaTexture.needsUpdate = true;\n\n\t};\n\n\tthis.areaTexture = new Texture();\n\tthis.areaTexture.name = 'SMAAPass.area';\n\tthis.areaTexture.image = areaTextureImage;\n\tthis.areaTexture.format = RGBFormat;\n\tthis.areaTexture.minFilter = LinearFilter;\n\tthis.areaTexture.generateMipmaps = false;\n\tthis.areaTexture.flipY = false;\n\n\tvar searchTextureImage = new Image();\n\tsearchTextureImage.src = this.getSearchTexture();\n\tsearchTextureImage.onload = function () {\n\n\t\t// assigning data to HTMLImageElement.src is asynchronous (see #15162)\n\t\tscope.searchTexture.needsUpdate = true;\n\n\t};\n\n\tthis.searchTexture = new Texture();\n\tthis.searchTexture.name = 'SMAAPass.search';\n\tthis.searchTexture.image = searchTextureImage;\n\tthis.searchTexture.magFilter = NearestFilter;\n\tthis.searchTexture.minFilter = NearestFilter;\n\tthis.searchTexture.generateMipmaps = false;\n\tthis.searchTexture.flipY = false;\n\n\t// materials - pass 1\n\n\tif ( SMAAEdgesShader === undefined ) {\n\n\t\tconsole.error( 'THREE.SMAAPass relies on SMAAShader' );\n\n\t}\n\n\tthis.uniformsEdges = UniformsUtils.clone( SMAAEdgesShader.uniforms );\n\n\tthis.uniformsEdges[ 'resolution' ].value.set( 1 / width, 1 / height );\n\n\tthis.materialEdges = new ShaderMaterial( {\n\t\tdefines: Object.assign( {}, SMAAEdgesShader.defines ),\n\t\tuniforms: this.uniformsEdges,\n\t\tvertexShader: SMAAEdgesShader.vertexShader,\n\t\tfragmentShader: SMAAEdgesShader.fragmentShader\n\t} );\n\n\t// materials - pass 2\n\n\tthis.uniformsWeights = UniformsUtils.clone( SMAAWeightsShader.uniforms );\n\n\tthis.uniformsWeights[ 'resolution' ].value.set( 1 / width, 1 / height );\n\tthis.uniformsWeights[ 'tDiffuse' ].value = this.edgesRT.texture;\n\tthis.uniformsWeights[ 'tArea' ].value = this.areaTexture;\n\tthis.uniformsWeights[ 'tSearch' ].value = this.searchTexture;\n\n\tthis.materialWeights = new ShaderMaterial( {\n\t\tdefines: Object.assign( {}, SMAAWeightsShader.defines ),\n\t\tuniforms: this.uniformsWeights,\n\t\tvertexShader: SMAAWeightsShader.vertexShader,\n\t\tfragmentShader: SMAAWeightsShader.fragmentShader\n\t} );\n\n\t// materials - pass 3\n\n\tthis.uniformsBlend = UniformsUtils.clone( SMAABlendShader.uniforms );\n\n\tthis.uniformsBlend[ 'resolution' ].value.set( 1 / width, 1 / height );\n\tthis.uniformsBlend[ 'tDiffuse' ].value = this.weightsRT.texture;\n\n\tthis.materialBlend = new ShaderMaterial( {\n\t\tuniforms: this.uniformsBlend,\n\t\tvertexShader: SMAABlendShader.vertexShader,\n\t\tfragmentShader: SMAABlendShader.fragmentShader\n\t} );\n\n\tthis.needsSwap = false;\n\n\tthis.fsQuad = new Pass.FullScreenQuad( null );\n\n};\n\nSMAAPass.prototype = Object.assign( Object.create( Pass.prototype ), {\n\n\tconstructor: SMAAPass,\n\n\trender: function ( renderer, writeBuffer, readBuffer/*, deltaTime, maskActive*/ ) {\n\n\t\t// pass 1\n\n\t\tthis.uniformsEdges[ 'tDiffuse' ].value = readBuffer.texture;\n\n\t\tthis.fsQuad.material = this.materialEdges;\n\n\t\trenderer.setRenderTarget( this.edgesRT );\n\t\tif ( this.clear ) renderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// pass 2\n\n\t\tthis.fsQuad.material = this.materialWeights;\n\n\t\trenderer.setRenderTarget( this.weightsRT );\n\t\tif ( this.clear ) renderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// pass 3\n\n\t\tthis.uniformsBlend[ 'tColor' ].value = readBuffer.texture;\n\n\t\tthis.fsQuad.material = this.materialBlend;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\tif ( this.clear ) renderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t},\n\n\tsetSize: function ( width, height ) {\n\n\t\tthis.edgesRT.setSize( width, height );\n\t\tthis.weightsRT.setSize( width, height );\n\n\t\tthis.materialEdges.uniforms[ 'resolution' ].value.set( 1 / width, 1 / height );\n\t\tthis.materialWeights.uniforms[ 'resolution' ].value.set( 1 / width, 1 / height );\n\t\tthis.materialBlend.uniforms[ 'resolution' ].value.set( 1 / width, 1 / height );\n\n\t},\n\n\tgetAreaTexture: function () {\n\n\t\treturn 'data:image/png;base64,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';\n\n\t},\n\n\tgetSearchTexture: function () {\n\n\t\treturn 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII=';\n\n\t}\n\n} );\n\nexport { SMAAPass };\n","import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n mounted() {\n // three size is not set yet, but this pass will be resized by effect composer\n const pass = new SMAAPass(this.three.size.width, this.three.size.height);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'SMAAPass',\n};\n","export default {\n uniforms: {},\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n void main() {\n gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n }\n `,\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n blurRadius: { value: 0 },\n gradientRadius: { value: 0 },\n start: { value: new Vector2() },\n end: { value: new Vector2() },\n delta: { value: new Vector2() },\n texSize: { value: new Vector2() },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform float blurRadius;\n uniform float gradientRadius;\n uniform vec2 start;\n uniform vec2 end;\n uniform vec2 delta;\n uniform vec2 texSize;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n\n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n\n vec2 normal = normalize(vec2(start.y - end.y, end.x - start.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vUv * texSize - start, normal)) / gradientRadius) * blurRadius;\n for (float t = -30.0; t <= 30.0; t++) {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 texel = texture2D(tDiffuse, vUv + delta / texSize * percent * radius);\n // vec4 texel2 = texture2D(tDiffuse, vUv + vec2(-delta.y, delta.x) / texSize * percent * radius);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n // texel2.rgb *= texel2.a;\n\n color += texel * weight;\n total += 2.0 * weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { watch } from 'vue';\n\nexport default function useBindPropValue(src, srcProp, dst, dstProp = 'value') {\n if (src[srcProp]) {\n dst[dstProp] = src[srcProp];\n watch(() => src[srcProp], (value) => {\n dst[dstProp] = value;\n });\n }\n};\n","import { Vector2 } from 'three';\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport { watch } from 'vue';\nimport EffectPass from './EffectPass.js';\nimport TiltShift from '../shaders/TiltShift.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n blurRadius: { type: Number, default: 10 },\n gradientRadius: { type: Number, default: 100 },\n start: { type: Object, default: { x: 0, y: 100 } },\n end: { type: Object, default: { x: 10, y: 100 } },\n },\n mounted() {\n this.pass = new ShaderPass(TiltShift);\n this.passes.push(this.pass);\n\n this.pass1 = new ShaderPass(TiltShift);\n this.passes.push(this.pass1);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n const uniforms1 = this.uniforms1 = this.pass1.uniforms;\n uniforms1.blurRadius = uniforms.blurRadius;\n uniforms1.gradientRadius = uniforms.gradientRadius;\n uniforms1.start = uniforms.start;\n uniforms1.end = uniforms.end;\n uniforms1.texSize = uniforms.texSize;\n\n useBindPropValue(this, 'blurRadius', uniforms.blurRadius);\n useBindPropValue(this, 'gradientRadius', uniforms.gradientRadius);\n\n this.updateFocusLine();\n ['start', 'end'].forEach(p => {\n watch(() => this[p], this.updateFocusLine);\n });\n\n this.pass.setSize = (width, height) => {\n uniforms.texSize.value.set(width, height);\n };\n },\n methods: {\n updateFocusLine() {\n this.uniforms.start.value.copy(this.start);\n this.uniforms.end.value.copy(this.end);\n const dv = new Vector2().copy(this.end).sub(this.start).normalize();\n this.uniforms.delta.value.copy(dv);\n this.uniforms1.delta.value.set(-dv.y, dv.x);\n },\n },\n __hmrId: 'TiltShiftPass',\n};\n","import {\n\tColor\n} from '../../../build/three.module.js';\n\n/**\n * Luminosity\n * http://en.wikipedia.org/wiki/Luminosity\n */\n\nvar LuminosityHighPassShader = {\n\n\tshaderID: 'luminosityHighPass',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'luminosityThreshold': { value: 1.0 },\n\t\t'smoothWidth': { value: 1.0 },\n\t\t'defaultColor': { value: new Color( 0x000000 ) },\n\t\t'defaultOpacity': { value: 0.0 }\n\n\t},\n\n\tvertexShader: [\n\n\t\t'varying vec2 vUv;',\n\n\t\t'void main() {',\n\n\t\t'\tvUv = uv;',\n\n\t\t'\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n\t\t'}'\n\n\t].join( '\\n' ),\n\n\tfragmentShader: [\n\n\t\t'uniform sampler2D tDiffuse;',\n\t\t'uniform vec3 defaultColor;',\n\t\t'uniform float defaultOpacity;',\n\t\t'uniform float luminosityThreshold;',\n\t\t'uniform float smoothWidth;',\n\n\t\t'varying vec2 vUv;',\n\n\t\t'void main() {',\n\n\t\t'\tvec4 texel = texture2D( tDiffuse, vUv );',\n\n\t\t'\tvec3 luma = vec3( 0.299, 0.587, 0.114 );',\n\n\t\t'\tfloat v = dot( texel.xyz, luma );',\n\n\t\t'\tvec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );',\n\n\t\t'\tfloat alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );',\n\n\t\t'\tgl_FragColor = mix( outputColor, texel, alpha );',\n\n\t\t'}'\n\n\t].join( '\\n' )\n\n};\n\nexport { LuminosityHighPassShader };\n","import {\n\tAdditiveBlending,\n\tColor,\n\tLinearFilter,\n\tMeshBasicMaterial,\n\tRGBAFormat,\n\tShaderMaterial,\n\tUniformsUtils,\n\tVector2,\n\tVector3,\n\tWebGLRenderTarget\n} from '../../../build/three.module.js';\nimport { Pass } from '../postprocessing/Pass.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\nimport { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader.js';\n\n/**\n * UnrealBloomPass is inspired by the bloom pass of Unreal Engine. It creates a\n * mip map chain of bloom textures and blurs them with different radii. Because\n * of the weighted combination of mips, and because larger blurs are done on\n * higher mips, this effect provides good quality and performance.\n *\n * Reference:\n * - https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/\n */\nvar UnrealBloomPass = function ( resolution, strength, radius, threshold ) {\n\n\tPass.call( this );\n\n\tthis.strength = ( strength !== undefined ) ? strength : 1;\n\tthis.radius = radius;\n\tthis.threshold = threshold;\n\tthis.resolution = ( resolution !== undefined ) ? new Vector2( resolution.x, resolution.y ) : new Vector2( 256, 256 );\n\n\t// create color only once here, reuse it later inside the render function\n\tthis.clearColor = new Color( 0, 0, 0 );\n\n\t// render targets\n\tvar pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\n\tthis.renderTargetsHorizontal = [];\n\tthis.renderTargetsVertical = [];\n\tthis.nMips = 5;\n\tvar resx = Math.round( this.resolution.x / 2 );\n\tvar resy = Math.round( this.resolution.y / 2 );\n\n\tthis.renderTargetBright = new WebGLRenderTarget( resx, resy, pars );\n\tthis.renderTargetBright.texture.name = 'UnrealBloomPass.bright';\n\tthis.renderTargetBright.texture.generateMipmaps = false;\n\n\tfor ( var i = 0; i < this.nMips; i ++ ) {\n\n\t\tvar renderTargetHorizonal = new WebGLRenderTarget( resx, resy, pars );\n\n\t\trenderTargetHorizonal.texture.name = 'UnrealBloomPass.h' + i;\n\t\trenderTargetHorizonal.texture.generateMipmaps = false;\n\n\t\tthis.renderTargetsHorizontal.push( renderTargetHorizonal );\n\n\t\tvar renderTargetVertical = new WebGLRenderTarget( resx, resy, pars );\n\n\t\trenderTargetVertical.texture.name = 'UnrealBloomPass.v' + i;\n\t\trenderTargetVertical.texture.generateMipmaps = false;\n\n\t\tthis.renderTargetsVertical.push( renderTargetVertical );\n\n\t\tresx = Math.round( resx / 2 );\n\n\t\tresy = Math.round( resy / 2 );\n\n\t}\n\n\t// luminosity high pass material\n\n\tif ( LuminosityHighPassShader === undefined )\n\t\tconsole.error( 'THREE.UnrealBloomPass relies on LuminosityHighPassShader' );\n\n\tvar highPassShader = LuminosityHighPassShader;\n\tthis.highPassUniforms = UniformsUtils.clone( highPassShader.uniforms );\n\n\tthis.highPassUniforms[ 'luminosityThreshold' ].value = threshold;\n\tthis.highPassUniforms[ 'smoothWidth' ].value = 0.01;\n\n\tthis.materialHighPassFilter = new ShaderMaterial( {\n\t\tuniforms: this.highPassUniforms,\n\t\tvertexShader: highPassShader.vertexShader,\n\t\tfragmentShader: highPassShader.fragmentShader,\n\t\tdefines: {}\n\t} );\n\n\t// Gaussian Blur Materials\n\tthis.separableBlurMaterials = [];\n\tvar kernelSizeArray = [ 3, 5, 7, 9, 11 ];\n\tvar resx = Math.round( this.resolution.x / 2 );\n\tvar resy = Math.round( this.resolution.y / 2 );\n\n\tfor ( var i = 0; i < this.nMips; i ++ ) {\n\n\t\tthis.separableBlurMaterials.push( this.getSeperableBlurMaterial( kernelSizeArray[ i ] ) );\n\n\t\tthis.separableBlurMaterials[ i ].uniforms[ 'texSize' ].value = new Vector2( resx, resy );\n\n\t\tresx = Math.round( resx / 2 );\n\n\t\tresy = Math.round( resy / 2 );\n\n\t}\n\n\t// Composite material\n\tthis.compositeMaterial = this.getCompositeMaterial( this.nMips );\n\tthis.compositeMaterial.uniforms[ 'blurTexture1' ].value = this.renderTargetsVertical[ 0 ].texture;\n\tthis.compositeMaterial.uniforms[ 'blurTexture2' ].value = this.renderTargetsVertical[ 1 ].texture;\n\tthis.compositeMaterial.uniforms[ 'blurTexture3' ].value = this.renderTargetsVertical[ 2 ].texture;\n\tthis.compositeMaterial.uniforms[ 'blurTexture4' ].value = this.renderTargetsVertical[ 3 ].texture;\n\tthis.compositeMaterial.uniforms[ 'blurTexture5' ].value = this.renderTargetsVertical[ 4 ].texture;\n\tthis.compositeMaterial.uniforms[ 'bloomStrength' ].value = strength;\n\tthis.compositeMaterial.uniforms[ 'bloomRadius' ].value = 0.1;\n\tthis.compositeMaterial.needsUpdate = true;\n\n\tvar bloomFactors = [ 1.0, 0.8, 0.6, 0.4, 0.2 ];\n\tthis.compositeMaterial.uniforms[ 'bloomFactors' ].value = bloomFactors;\n\tthis.bloomTintColors = [ new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ),\n\t\t\t\t\t\t\t new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ) ];\n\tthis.compositeMaterial.uniforms[ 'bloomTintColors' ].value = this.bloomTintColors;\n\n\t// copy material\n\tif ( CopyShader === undefined ) {\n\n\t\tconsole.error( 'THREE.UnrealBloomPass relies on CopyShader' );\n\n\t}\n\n\tvar copyShader = CopyShader;\n\n\tthis.copyUniforms = UniformsUtils.clone( copyShader.uniforms );\n\tthis.copyUniforms[ 'opacity' ].value = 1.0;\n\n\tthis.materialCopy = new ShaderMaterial( {\n\t\tuniforms: this.copyUniforms,\n\t\tvertexShader: copyShader.vertexShader,\n\t\tfragmentShader: copyShader.fragmentShader,\n\t\tblending: AdditiveBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false,\n\t\ttransparent: true\n\t} );\n\n\tthis.enabled = true;\n\tthis.needsSwap = false;\n\n\tthis._oldClearColor = new Color();\n\tthis.oldClearAlpha = 1;\n\n\tthis.basic = new MeshBasicMaterial();\n\n\tthis.fsQuad = new Pass.FullScreenQuad( null );\n\n};\n\nUnrealBloomPass.prototype = Object.assign( Object.create( Pass.prototype ), {\n\n\tconstructor: UnrealBloomPass,\n\n\tdispose: function () {\n\n\t\tfor ( var i = 0; i < this.renderTargetsHorizontal.length; i ++ ) {\n\n\t\t\tthis.renderTargetsHorizontal[ i ].dispose();\n\n\t\t}\n\n\t\tfor ( var i = 0; i < this.renderTargetsVertical.length; i ++ ) {\n\n\t\t\tthis.renderTargetsVertical[ i ].dispose();\n\n\t\t}\n\n\t\tthis.renderTargetBright.dispose();\n\n\t},\n\n\tsetSize: function ( width, height ) {\n\n\t\tvar resx = Math.round( width / 2 );\n\t\tvar resy = Math.round( height / 2 );\n\n\t\tthis.renderTargetBright.setSize( resx, resy );\n\n\t\tfor ( var i = 0; i < this.nMips; i ++ ) {\n\n\t\t\tthis.renderTargetsHorizontal[ i ].setSize( resx, resy );\n\t\t\tthis.renderTargetsVertical[ i ].setSize( resx, resy );\n\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'texSize' ].value = new Vector2( resx, resy );\n\n\t\t\tresx = Math.round( resx / 2 );\n\t\t\tresy = Math.round( resy / 2 );\n\n\t\t}\n\n\t},\n\n\trender: function ( renderer, writeBuffer, readBuffer, deltaTime, maskActive ) {\n\n\t\trenderer.getClearColor( this._oldClearColor );\n\t\tthis.oldClearAlpha = renderer.getClearAlpha();\n\t\tvar oldAutoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\trenderer.setClearColor( this.clearColor, 0 );\n\n\t\tif ( maskActive ) renderer.state.buffers.stencil.setTest( false );\n\n\t\t// Render input to screen\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\tthis.fsQuad.material = this.basic;\n\t\t\tthis.basic.map = readBuffer.texture;\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t\t// 1. Extract Bright Areas\n\n\t\tthis.highPassUniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\t\tthis.highPassUniforms[ 'luminosityThreshold' ].value = this.threshold;\n\t\tthis.fsQuad.material = this.materialHighPassFilter;\n\n\t\trenderer.setRenderTarget( this.renderTargetBright );\n\t\trenderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// 2. Blur All the mips progressively\n\n\t\tvar inputRenderTarget = this.renderTargetBright;\n\n\t\tfor ( var i = 0; i < this.nMips; i ++ ) {\n\n\t\t\tthis.fsQuad.material = this.separableBlurMaterials[ i ];\n\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'colorTexture' ].value = inputRenderTarget.texture;\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'direction' ].value = UnrealBloomPass.BlurDirectionX;\n\t\t\trenderer.setRenderTarget( this.renderTargetsHorizontal[ i ] );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'colorTexture' ].value = this.renderTargetsHorizontal[ i ].texture;\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'direction' ].value = UnrealBloomPass.BlurDirectionY;\n\t\t\trenderer.setRenderTarget( this.renderTargetsVertical[ i ] );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t\tinputRenderTarget = this.renderTargetsVertical[ i ];\n\n\t\t}\n\n\t\t// Composite All the mips\n\n\t\tthis.fsQuad.material = this.compositeMaterial;\n\t\tthis.compositeMaterial.uniforms[ 'bloomStrength' ].value = this.strength;\n\t\tthis.compositeMaterial.uniforms[ 'bloomRadius' ].value = this.radius;\n\t\tthis.compositeMaterial.uniforms[ 'bloomTintColors' ].value = this.bloomTintColors;\n\n\t\trenderer.setRenderTarget( this.renderTargetsHorizontal[ 0 ] );\n\t\trenderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// Blend it additively over the input texture\n\n\t\tthis.fsQuad.material = this.materialCopy;\n\t\tthis.copyUniforms[ 'tDiffuse' ].value = this.renderTargetsHorizontal[ 0 ].texture;\n\n\t\tif ( maskActive ) renderer.state.buffers.stencil.setTest( true );\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( readBuffer );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t\t// Restore renderer settings\n\n\t\trenderer.setClearColor( this._oldClearColor, this.oldClearAlpha );\n\t\trenderer.autoClear = oldAutoClear;\n\n\t},\n\n\tgetSeperableBlurMaterial: function ( kernelRadius ) {\n\n\t\treturn new ShaderMaterial( {\n\n\t\t\tdefines: {\n\t\t\t\t'KERNEL_RADIUS': kernelRadius,\n\t\t\t\t'SIGMA': kernelRadius\n\t\t\t},\n\n\t\t\tuniforms: {\n\t\t\t\t'colorTexture': { value: null },\n\t\t\t\t'texSize': { value: new Vector2( 0.5, 0.5 ) },\n\t\t\t\t'direction': { value: new Vector2( 0.5, 0.5 ) }\n\t\t\t},\n\n\t\t\tvertexShader:\n\t\t\t\t'varying vec2 vUv;\\n\\\n\t\t\t\tvoid main() {\\n\\\n\t\t\t\t\tvUv = uv;\\n\\\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n\\\n\t\t\t\t}',\n\n\t\t\tfragmentShader:\n\t\t\t\t'#include <common>\\\n\t\t\t\tvarying vec2 vUv;\\n\\\n\t\t\t\tuniform sampler2D colorTexture;\\n\\\n\t\t\t\tuniform vec2 texSize;\\\n\t\t\t\tuniform vec2 direction;\\\n\t\t\t\t\\\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\\\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\\\n\t\t\t\t}\\\n\t\t\t\tvoid main() {\\n\\\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\\\n\t\t\t\t\tfloat fSigma = float(SIGMA);\\\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, fSigma);\\\n\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\\\n\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\\\n\t\t\t\t\t\tfloat x = float(i);\\\n\t\t\t\t\t\tfloat w = gaussianPdf(x, fSigma);\\\n\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\\\n\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\\\n\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\\\n\t\t\t\t\t\tdiffuseSum += (sample1 + sample2) * w;\\\n\t\t\t\t\t\tweightSum += 2.0 * w;\\\n\t\t\t\t\t}\\\n\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\\n\\\n\t\t\t\t}'\n\t\t} );\n\n\t},\n\n\tgetCompositeMaterial: function ( nMips ) {\n\n\t\treturn new ShaderMaterial( {\n\n\t\t\tdefines: {\n\t\t\t\t'NUM_MIPS': nMips\n\t\t\t},\n\n\t\t\tuniforms: {\n\t\t\t\t'blurTexture1': { value: null },\n\t\t\t\t'blurTexture2': { value: null },\n\t\t\t\t'blurTexture3': { value: null },\n\t\t\t\t'blurTexture4': { value: null },\n\t\t\t\t'blurTexture5': { value: null },\n\t\t\t\t'dirtTexture': { value: null },\n\t\t\t\t'bloomStrength': { value: 1.0 },\n\t\t\t\t'bloomFactors': { value: null },\n\t\t\t\t'bloomTintColors': { value: null },\n\t\t\t\t'bloomRadius': { value: 0.0 }\n\t\t\t},\n\n\t\t\tvertexShader:\n\t\t\t\t'varying vec2 vUv;\\n\\\n\t\t\t\tvoid main() {\\n\\\n\t\t\t\t\tvUv = uv;\\n\\\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n\\\n\t\t\t\t}',\n\n\t\t\tfragmentShader:\n\t\t\t\t'varying vec2 vUv;\\\n\t\t\t\tuniform sampler2D blurTexture1;\\\n\t\t\t\tuniform sampler2D blurTexture2;\\\n\t\t\t\tuniform sampler2D blurTexture3;\\\n\t\t\t\tuniform sampler2D blurTexture4;\\\n\t\t\t\tuniform sampler2D blurTexture5;\\\n\t\t\t\tuniform sampler2D dirtTexture;\\\n\t\t\t\tuniform float bloomStrength;\\\n\t\t\t\tuniform float bloomRadius;\\\n\t\t\t\tuniform float bloomFactors[NUM_MIPS];\\\n\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\\\n\t\t\t\t\\\n\t\t\t\tfloat lerpBloomFactor(const in float factor) { \\\n\t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\\\n\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\\\n\t\t\t\t}\\\n\t\t\t\t\\\n\t\t\t\tvoid main() {\\\n\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) + \\\n\t\t\t\t\t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) + \\\n\t\t\t\t\t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) + \\\n\t\t\t\t\t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) + \\\n\t\t\t\t\t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\\\n\t\t\t\t}'\n\t\t} );\n\n\t}\n\n} );\n\nUnrealBloomPass.BlurDirectionX = new Vector2( 1.0, 0.0 );\nUnrealBloomPass.BlurDirectionY = new Vector2( 0.0, 1.0 );\n\nexport { UnrealBloomPass };\n","import { Vector2 } from 'three';\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';\nimport EffectPass from './EffectPass.js';\n\nexport default {\n extends: EffectPass,\n props: {\n strength: { type: Number, default: 1.5 },\n radius: { type: Number, default: 0 },\n threshold: { type: Number, default: 0 },\n },\n watch: {\n strength() { this.pass.strength = this.strength; },\n radius() { this.pass.radius = this.radius; },\n threshold() { this.pass.threshold = this.threshold; },\n },\n mounted() {\n const size = new Vector2(this.three.size.width, this.three.size.height);\n const pass = new UnrealBloomPass(size, this.strength, this.radius, this.threshold);\n this.passes.push(pass);\n this.pass = pass;\n },\n __hmrId: 'UnrealBloomPass',\n};\n","// From https://github.com/evanw/glfx.js\nimport { Vector2 } from 'three';\nimport DefaultShader from './default';\n\nexport default {\n uniforms: {\n tDiffuse: { value: null },\n center: { value: new Vector2(0.5, 0.5) },\n strength: { value: 0 },\n },\n vertexShader: DefaultShader.vertexShader,\n fragmentShader: `\n uniform sampler2D tDiffuse;\n uniform vec2 center;\n uniform float strength;\n varying vec2 vUv;\n\n float random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n }\n \n void main() {\n vec4 color = vec4(0.0);\n float total = 0.0;\n vec2 toCenter = center - vUv;\n \n /* randomize the lookup values to hide the fixed number of samples */\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n \n for (float t = 0.0; t <= 40.0; t++) {\n float percent = (t + offset) / 40.0;\n float weight = 4.0 * (percent - percent * percent);\n vec4 texel = texture2D(tDiffuse, vUv + toCenter * percent * strength);\n\n /* switch to pre-multiplied alpha to correctly blur transparent images */\n texel.rgb *= texel.a;\n\n color += texel * weight;\n total += weight;\n }\n\n gl_FragColor = color / total;\n\n /* switch back from pre-multiplied alpha */\n gl_FragColor.rgb /= gl_FragColor.a + 0.00001;\n }\n `,\n};\n","import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';\nimport EffectPass from './EffectPass.js';\nimport ZoomBlur from '../shaders/ZoomBlur.js';\nimport useBindProp from '../use/useBindProp.js';\nimport useBindPropValue from '../use/useBindPropValue.js';\n\nexport default {\n extends: EffectPass,\n props: {\n center: { type: Object, default: { x: 0.5, y: 0.5 } },\n strength: { type: Number, default: 0.5 },\n },\n mounted() {\n this.pass = new ShaderPass(ZoomBlur);\n this.passes.push(this.pass);\n\n const uniforms = this.uniforms = this.pass.uniforms;\n useBindProp(this, 'center', uniforms.center.value);\n useBindPropValue(this, 'strength', uniforms.strength);\n },\n __hmrId: 'ZoomBlurPass',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D simplex noise function.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec2 mod289(vec2 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec3 permute(vec3 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nfloat snoise(vec2 v)\n{\n const vec4 C = vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.0\n 0.366025403784439, // 0.5*(sqrt(3.0)-1.0)\n -0.577350269189626, // -1.0 + 2.0 * C.x\n 0.024390243902439); // 1.0 / 41.0\n // First corner\n vec2 i = floor(v + dot(v, C.yy) );\n vec2 x0 = v - i + dot(i, C.xx);\n\n // Other corners\n vec2 i1;\n i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n // Permutations\n i = mod289(i); // Avoid truncation effects in permutation\n vec3 p = permute( permute( i.y + vec3(0.0, i1.y, 1.0 ))\n + i.x + vec3(0.0, i1.x, 1.0 ));\n\n vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);\n m = m*m ;\n m = m*m ;\n\n // Gradients: 41 points uniformly over a line, mapped onto a diamond.\n // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n // Normalise gradients implicitly by scaling m\n // Approximation of: m *= inversesqrt( a0*a0 + h*h );\n m *= 1.79284291400159 - 0.85373472095314 * ( a0*a0 + h*h );\n\n // Compute final noise value at P\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n`;\n","import { DoubleSide, MeshBasicMaterial, PlaneBufferGeometry } from 'three';\nimport { watch } from 'vue';\nimport Image from '../../meshes/Image.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Image,\n props: {\n widthSegments: { type: Number, default: 20 },\n heightSegments: { type: Number, default: 20 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 1 },\n zCoef: { type: Number, default: 5 },\n dispCoef: { type: Number, default: 0.05 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef, uDispCoef,\n };\n },\n mounted() {\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n createGeometry() {\n this.geometry = new PlaneBufferGeometry(1, 1, this.widthSegments, this.heightSegments);\n },\n createMaterial() {\n this.material = new MeshBasicMaterial({ side: DoubleSide, map: this.loadTexture() });\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n varying float vNoise;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n vNoise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += vNoise * uZCoef;\n `\n );\n\n shader.fragmentShader = `\n uniform float uDispCoef;\n varying float vNoise;\n ` + shader.fragmentShader;\n\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>',\n `\n vec4 texelColor = texture2D(map, vUv);\n vec4 dispTexel = texture2D(map, vUv + vec2(vNoise * uDispCoef, 0));\n texelColor.r = dispTexel.r;\n diffuseColor = texelColor;\n `\n );\n this.materialShader = shader;\n };\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyImage',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v)\n{\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n // First corner\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n // Other corners\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n // Permutations\n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n // Gradients: 7x7 points over a square, mapped onto an octahedron.\n // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n // Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n}\n`;\n","import { ObjectSpaceNormalMap, ShaderMaterial, Vector2, WebGLRenderTarget } from 'three';\nimport { Pass } from 'three/examples/jsm/postprocessing/Pass.js';\nimport { watch } from 'vue';\nimport Plane from '../../meshes/Plane.js';\nimport snoise3 from '../../glsl/snoise3.glsl.js';\n\nexport default {\n extends: Plane,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 5 },\n deltaCoef: { type: Number, default: 1 / 512 },\n displacementScale: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDelta = { value: new Vector2(props.deltaCoef, props.deltaCoef) };\n watch(() => props.deltaCoef, (value) => { uDelta.value.set(value, value); });\n\n return {\n uTime, uNoiseCoef, uDelta,\n };\n },\n mounted() {\n this.init();\n\n watch(() => this.displacementScale, (value) => { this.material.displacementScale = value; });\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.update);\n },\n unmounted() {\n this.three.offBeforeRender(this.update);\n this.fsQuad.dispose();\n this.dispRT.dispose();\n this.dispMat.dispose();\n this.normRT.dispose();\n this.normMat.dispose();\n },\n methods: {\n init() {\n this.fsQuad = new Pass.FullScreenQuad();\n\n // displacement map\n this.dispRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.dispMat = new ShaderMaterial({\n uniforms: {\n uTime: this.uTime,\n uNoiseCoef: this.uNoiseCoef,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform float uTime;\n uniform float uNoiseCoef;\n varying vec2 vUv;\n ${snoise3}\n void main() {\n vec2 p = vec2(vUv * uNoiseCoef);\n float noise = (snoise(vec3(p.x, p.y, uTime)) + 1.0) / 2.0;\n gl_FragColor = vec4(noise, 0.0, 0.0, 1.0);\n }\n `,\n });\n\n // normal map\n this.normRT = new WebGLRenderTarget(512, 512, { depthBuffer: false, stencilBuffer: false });\n this.normMat = new ShaderMaterial({\n uniforms: {\n dispMap: { value: this.dispRT.texture },\n delta: this.uDelta,\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_Position = vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform sampler2D dispMap;\n uniform vec2 delta;\n varying vec2 vUv;\n void main() {\n // gl_FragColor = vec4(0.5, 0.5, 1.0, 0.0);\n float x1 = texture2D(dispMap, vec2(vUv.x - delta.x, vUv.y)).r;\n float x2 = texture2D(dispMap, vec2(vUv.x + delta.x, vUv.y)).r;\n float y1 = texture2D(dispMap, vec2(vUv.x, vUv.y - delta.y)).r;\n float y2 = texture2D(dispMap, vec2(vUv.x, vUv.y + delta.y)).r;\n gl_FragColor = vec4(0.5 + (x1 - x2), 0.5 + (y1 - y2), 1.0, 1.0);\n }\n `,\n });\n\n this.material.displacementMap = this.dispRT.texture;\n this.material.displacementScale = this.displacementScale;\n this.material.normalMap = this.normRT.texture;\n this.material.normalMapType = ObjectSpaceNormalMap;\n // this.material.needsUpdate = true;\n },\n update() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n this.renderDisp();\n },\n renderDisp() {\n this.renderMat(this.dispMat, this.dispRT);\n this.renderMat(this.normMat, this.normRT);\n },\n renderMat(mat, target) {\n const renderer = this.three.renderer;\n this.fsQuad.material = mat;\n const oldTarget = renderer.getRenderTarget();\n renderer.setRenderTarget(target);\n this.fsQuad.render(renderer);\n renderer.setRenderTarget(oldTarget);\n },\n },\n __hmrId: 'NoisyPlane',\n};\n","export default `\n//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : ijm\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nfloat mod289(float x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\nfloat permute(float x) { return mod289(((x*34.0)+1.0)*x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\nfloat taylorInvSqrt(float r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nvec4 grad4(float j, vec4 ip)\n{\n const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n vec4 p,s;\n\n p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n s = vec4(lessThan(p, vec4(0.0)));\n p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;\n\n return p;\n}\n\n// (sqrt(5) - 1)/4 = F4, used once below\n#define F4 0.309016994374947451\n\nfloat snoise(vec4 v)\n{\n const vec4 C = vec4( 0.138196601125011, // (5 - sqrt(5))/20 G4\n 0.276393202250021, // 2 * G4\n 0.414589803375032, // 3 * G4\n -0.447213595499958); // -1 + 4 * G4\n\n // First corner\n vec4 i = floor(v + dot(v, vec4(F4)) );\n vec4 x0 = v - i + dot(i, C.xxxx);\n\n // Other corners\n\n // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n vec4 i0;\n vec3 isX = step( x0.yzw, x0.xxx );\n vec3 isYZ = step( x0.zww, x0.yyz );\n // i0.x = dot( isX, vec3( 1.0 ) );\n i0.x = isX.x + isX.y + isX.z;\n i0.yzw = 1.0 - isX;\n // i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n i0.y += isYZ.x + isYZ.y;\n i0.zw += 1.0 - isYZ.xy;\n i0.z += isYZ.z;\n i0.w += 1.0 - isYZ.z;\n\n // i0 now contains the unique values 0,1,2,3 in each channel\n vec4 i3 = clamp( i0, 0.0, 1.0 );\n vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\n vec4 x1 = x0 - i1 + C.xxxx;\n vec4 x2 = x0 - i2 + C.yyyy;\n vec4 x3 = x0 - i3 + C.zzzz;\n vec4 x4 = x0 + C.wwww;\n\n // Permutations\n i = mod289(i);\n float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n vec4 j1 = permute( permute( permute( permute (\n i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n + i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n + i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n + i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\n // Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope\n // 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\n vec4 p0 = grad4(j0, ip);\n vec4 p1 = grad4(j1.x, ip);\n vec4 p2 = grad4(j1.y, ip);\n vec4 p3 = grad4(j1.z, ip);\n vec4 p4 = grad4(j1.w, ip);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n p4 *= taylorInvSqrt(dot(p4,p4));\n\n // Mix contributions from the five corners\n vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);\n m0 = m0 * m0;\n m1 = m1 * m1;\n return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n\n}\n`;\n","import { watch } from 'vue';\nimport Sphere from '../../meshes/Sphere.js';\nimport snoise4 from '../../glsl/snoise4.glsl.js';\n\nexport default {\n extends: Sphere,\n props: {\n radius: { type: Number, default: 20 },\n widthSegments: { type: Number, default: 128 },\n heightSegments: { type: Number, default: 128 },\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.05 },\n dispCoef: { type: Number, default: 5 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uDispCoef = { value: props.dispCoef };\n watch(() => props.dispCoef, (value) => { uDispCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uDispCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uDispCoef = this.uDispCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uDispCoef;\n varying float vNoise;\n ${snoise4}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>',\n `\n vec4 p = vec4(vec3(position * uNoiseCoef), uTime);\n vNoise = snoise(p);\n vec3 transformed = vec3(position);\n transformed += normalize(position) * vNoise * uDispCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisySphere',\n};\n","import { watch } from 'vue';\nimport Text from '../../meshes/Text.js';\nimport snoise2 from '../../glsl/snoise2.glsl.js';\n\nexport default {\n extends: Text,\n props: {\n timeCoef: { type: Number, default: 0.001 },\n noiseCoef: { type: Number, default: 0.015 },\n zCoef: { type: Number, default: 10 },\n },\n setup(props) {\n // uniforms\n const uTime = { value: 0 };\n const uNoiseCoef = { value: props.noiseCoef };\n watch(() => props.noiseCoef, (value) => { uNoiseCoef.value = value; });\n const uZCoef = { value: props.zCoef };\n watch(() => props.zCoef, (value) => { uZCoef.value = value; });\n\n return {\n uTime, uNoiseCoef, uZCoef,\n };\n },\n mounted() {\n this.updateMaterial();\n\n this.startTime = Date.now();\n this.three.onBeforeRender(this.updateTime);\n },\n unmounted() {\n this.three.offBeforeRender(this.updateTime);\n },\n methods: {\n updateMaterial() {\n this.material.onBeforeCompile = (shader) => {\n shader.uniforms.uTime = this.uTime;\n shader.uniforms.uNoiseCoef = this.uNoiseCoef;\n shader.uniforms.uZCoef = this.uZCoef;\n shader.vertexShader = `\n uniform float uTime;\n uniform float uNoiseCoef;\n uniform float uZCoef;\n ${snoise2}\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>',\n ` \n vec3 p = vec3(position * uNoiseCoef);\n p.x += uTime;\n float noise = snoise(p.xy);\n vec3 transformed = vec3(position);\n transformed.z += noise * uZCoef;\n `\n );\n this.materialShader = shader;\n };\n this.material.needsupdate = true;\n },\n updateTime() {\n this.uTime.value = (Date.now() - this.startTime) * this.timeCoef;\n },\n },\n __hmrId: 'NoisyText',\n};\n","import {\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tColor,\n\tEventDispatcher,\n\tFloat32BufferAttribute,\n\tMatrix3,\n\tMatrix4,\n\tMathUtils,\n\tObject3D,\n\tSphere,\n\tVector2,\n\tVector3\n} from '../../../build/three.module.js';\n\nconst _m1 = new Matrix4();\nconst _obj = new Object3D();\nconst _offset = new Vector3();\n\nfunction Geometry() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( let j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tconst scope = this;\n\n\t\tconst index = geometry.index !== null ? geometry.index : undefined;\n\t\tconst attributes = geometry.attributes;\n\n\t\tif ( attributes.position === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst position = attributes.position;\n\t\tconst normal = attributes.normal;\n\t\tconst color = attributes.color;\n\t\tconst uv = attributes.uv;\n\t\tconst uv2 = attributes.uv2;\n\n\t\tif ( uv2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromBufferAttribute( position, i ) );\n\n\t\t\tif ( color !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromBufferAttribute( color, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tconst vertexColors = ( color === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone()\n\t\t\t];\n\n\t\t\tconst vertexNormals = ( normal === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, a ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, b ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, c )\n\t\t\t];\n\n\t\t\tconst face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uv !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uv2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\t\taddFace( index.getX( j ), index.getX( j + 1 ), index.getX( j + 2 ), group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < index.count; i += 3 ) {\n\n\t\t\t\t\taddFace( index.getX( i ), index.getX( i + 1 ), index.getX( i + 2 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tconst center = this.boundingSphere.center;\n\t\tconst radius = this.boundingSphere.radius;\n\n\t\tconst s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tconst matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted = true ) {\n\n\t\tconst vertices = new Array( this.vertices.length );\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( let i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tconst tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( let i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tconst dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tconst dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tconst faceNormal = new Vector3();\n\t\t\t\t\tconst vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst faceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tconst vertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset = 0 ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet normalMatrix;\n\t\tconst vertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( let i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = vertices2[ i ];\n\n\t\t\tconst vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( let i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( let i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tconst face = faces2[ i ];\n\t\t\tlet normal, color;\n\t\t\tconst faceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tconst faceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( let j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( let i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function ( precisionPoints = 4 ) {\n\n\t\tconst verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tconst unique = [], changes = [];\n\n\t\tconst precision = Math.pow( 10, precisionPoints );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst v = this.vertices[ i ];\n\t\t\tconst key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tconst faceIndicesToRemove = [];\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tconst indices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tconst idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( let j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tconst diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tconst faces = this.faces;\n\t\tconst length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tconst uvs1 = this.faceVertexUvs[ 0 ];\n\t\tconst uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tlet newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tconst vertices = [];\n\n\t\tfor ( let i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tconst faces = [];\n\t\tconst normals = [];\n\t\tconst normalsHash = {};\n\t\tconst colors = [];\n\t\tconst colorsHash = {};\n\t\tconst uvs = [];\n\t\tconst uvsHash = {};\n\n\t\tfor ( let i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tconst hasMaterial = true;\n\t\t\tconst hasFaceUv = false; // deprecated\n\t\t\tconst hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tconst hasFaceNormal = face.normal.length() > 0;\n\t\t\tconst hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tconst hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tconst hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tlet faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tconst faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tconst hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tconst hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tconst hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tconst vertices = source.vertices;\n\n\t\tfor ( let i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tconst colors = source.colors;\n\n\t\tfor ( let i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tconst faces = source.faces;\n\n\t\tfor ( let i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( let i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphTargets = source.morphTargets;\n\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tconst morphNormals = source.morphNormals;\n\n\t\tfor ( let i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tconst morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tconst destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tconst skinWeights = source.skinWeights;\n\n\t\tfor ( let i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tconst skinIndices = source.skinIndices;\n\n\t\tfor ( let i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tconst lineDistances = source.lineDistances;\n\n\t\tfor ( let i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoBufferGeometry: function () {\n\n\t\tconst geometry = new DirectGeometry().fromGeometry( this );\n\n\t\tconst buffergeometry = new BufferGeometry();\n\n\t\tconst positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tbuffergeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tconst normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tbuffergeometry.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tconst colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tbuffergeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tconst uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tbuffergeometry.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tconst uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tbuffergeometry.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tbuffergeometry.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( const name in geometry.morphTargets ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( let i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\n\t\t\t\tconst attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tbuffergeometry.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tconst skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tbuffergeometry.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tconst skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tbuffergeometry.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tbuffergeometry.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tbuffergeometry.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t},\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nGeometry.createBufferGeometryFromObject = function ( object ) {\n\n\tlet buffergeometry = new BufferGeometry();\n\n\tconst geometry = object.geometry;\n\n\tif ( object.isPoints || object.isLine ) {\n\n\t\tconst positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\tconst colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\tbuffergeometry.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\tbuffergeometry.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\tconst lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\tbuffergeometry.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tbuffergeometry.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tbuffergeometry.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t} else if ( object.isMesh ) {\n\n\t\tbuffergeometry = geometry.toBufferGeometry();\n\n\t}\n\n\treturn buffergeometry;\n\n};\n\nclass DirectGeometry {\n\n\tconstructor() {\n\n\t\tthis.vertices = [];\n\t\tthis.normals = [];\n\t\tthis.colors = [];\n\t\tthis.uvs = [];\n\t\tthis.uvs2 = [];\n\n\t\tthis.groups = [];\n\n\t\tthis.morphTargets = {};\n\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\n\t\t// this.lineDistances = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// update flags\n\n\t\tthis.verticesNeedUpdate = false;\n\t\tthis.normalsNeedUpdate = false;\n\t\tthis.colorsNeedUpdate = false;\n\t\tthis.uvsNeedUpdate = false;\n\t\tthis.groupsNeedUpdate = false;\n\n\t}\n\n\tcomputeGroups( geometry ) {\n\n\t\tconst groups = [];\n\n\t\tlet group, i;\n\t\tlet materialIndex = undefined;\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t}\n\n\tfromGeometry( geometry ) {\n\n\t\tconst faces = geometry.faces;\n\t\tconst vertices = geometry.vertices;\n\t\tconst faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tconst hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tconst hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tconst morphTargets = geometry.morphTargets;\n\t\tconst morphTargetsLength = morphTargets.length;\n\n\t\tlet morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( let i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tconst morphNormals = geometry.morphNormals;\n\t\tconst morphNormalsLength = morphNormals.length;\n\n\t\tlet morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( let i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tconst skinIndices = geometry.skinIndices;\n\t\tconst skinWeights = geometry.skinWeights;\n\n\t\tconst hasSkinIndices = skinIndices.length === vertices.length;\n\t\tconst hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( let j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tconst morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Face3 {\n\n\tconstructor( a, b, c, normal, color, materialIndex = 0 ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\t\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\t\tthis.color = ( color && color.isColor ) ? color : new Color();\n\t\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\t\tthis.materialIndex = materialIndex;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( let i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( let i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { Geometry };\n","import {\n DoubleSide,\n Face3,\n InstancedBufferAttribute,\n InstancedMesh,\n MathUtils,\n MeshBasicMaterial,\n Object3D,\n Vector2,\n Vector3,\n} from 'three';\n\nimport { Geometry } from 'three/examples/jsm/deprecated/Geometry.js';\n\nexport default class AnimatedPlane {\n constructor(params) {\n Object.entries(params).forEach(([key, value]) => {\n this[key] = value;\n });\n\n this.o3d = new Object3D();\n this.uProgress = { value: 0 };\n this.uvScale = new Vector2();\n\n this.initMaterial();\n this.initPlane();\n }\n\n initMaterial() {\n this.material = new MeshBasicMaterial({\n side: DoubleSide,\n transparent: true,\n map: this.texture,\n onBeforeCompile: shader => {\n shader.uniforms.progress = this.uProgress;\n shader.uniforms.uvScale = { value: this.uvScale };\n shader.vertexShader = `\n uniform float progress;\n uniform vec2 uvScale;\n\n attribute vec3 offset;\n attribute vec3 rotation;\n attribute vec2 uvOffset;\n\n mat3 rotationMatrixXYZ(vec3 r)\n {\n float cx = cos(r.x);\n float sx = sin(r.x);\n float cy = cos(r.y);\n float sy = sin(r.y);\n float cz = cos(r.z);\n float sz = sin(r.z);\n\n return mat3(\n cy * cz, cx * sz + sx * sy * cz, sx * sz - cx * sy * cz,\n -cy * sz, cx * cz - sx * sy * sz, sx * cz + cx * sy * sz,\n sy, -sx * cy, cx * cy\n );\n }\n ` + shader.vertexShader;\n\n shader.vertexShader = shader.vertexShader.replace('#include <uv_vertex>', `\n #include <uv_vertex>\n vUv = vUv * uvScale + uvOffset;\n `);\n\n shader.vertexShader = shader.vertexShader.replace('#include <project_vertex>', `\n mat3 rotMat = rotationMatrixXYZ(progress * rotation);\n transformed = rotMat * transformed;\n\n vec4 mvPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n #endif\n\n mvPosition.xyz += progress * offset;\n\n mvPosition = modelViewMatrix * mvPosition;\n gl_Position = projectionMatrix * mvPosition;\n `);\n },\n });\n }\n\n initPlane() {\n const { width, wWidth, wHeight } = this.screen;\n this.wSize = this.size * wWidth / width;\n this.nx = Math.ceil(wWidth / this.wSize) + 1;\n this.ny = Math.ceil(wHeight / this.wSize) + 1;\n this.icount = this.nx * this.ny;\n\n this.initGeometry();\n this.initUV();\n this.initAnimAttributes();\n\n if (this.imesh) {\n this.o3d.remove(this.imesh);\n }\n this.imesh = new InstancedMesh(this.bGeometry, this.material, this.icount);\n this.o3d.add(this.imesh);\n\n const dummy = new Object3D();\n let index = 0;\n let x = -(wWidth - (wWidth - this.nx * this.wSize)) / 2 + this.dx;\n for (let i = 0; i < this.nx; i++) {\n let y = -(wHeight - (wHeight - this.ny * this.wSize)) / 2 + this.dy;\n for (let j = 0; j < this.ny; j++) {\n dummy.position.set(x, y, 0);\n dummy.updateMatrix();\n this.imesh.setMatrixAt(index++, dummy.matrix);\n y += this.wSize;\n }\n x += this.wSize;\n }\n }\n\n initGeometry() {\n // square\n const geometry = new Geometry();\n geometry.vertices.push(new Vector3(0, 0, 0));\n geometry.vertices.push(new Vector3(this.wSize, 0, 0));\n geometry.vertices.push(new Vector3(0, this.wSize, 0));\n geometry.vertices.push(new Vector3(this.wSize, this.wSize, 0));\n geometry.faces.push(new Face3(0, 2, 1));\n geometry.faces.push(new Face3(2, 3, 1));\n\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 0),\n new Vector2(0, 1),\n new Vector2(1, 0),\n ]);\n geometry.faceVertexUvs[0].push([\n new Vector2(0, 1),\n new Vector2(1, 1),\n new Vector2(1, 0),\n ]);\n\n // geometry.computeFaceNormals();\n // geometry.computeVertexNormals();\n\n // center\n this.dx = this.wSize / 2;\n this.dy = this.wSize / 2;\n geometry.translate(-this.dx, -this.dy, 0);\n\n this.bGeometry = geometry.toBufferGeometry();\n }\n\n initAnimAttributes() {\n const { randFloat: rnd, randFloatSpread: rndFS } = MathUtils;\n const v3 = new Vector3();\n\n const offsets = new Float32Array(this.icount * 3);\n for (let i = 0; i < offsets.length; i += 3) {\n if (this.anim === 1) v3.set(rndFS(10), rnd(50, 100), rnd(20, 50)).toArray(offsets, i);\n else v3.set(rndFS(20), rndFS(20), rnd(20, 200)).toArray(offsets, i);\n }\n this.bGeometry.setAttribute('offset', new InstancedBufferAttribute(offsets, 3));\n\n const rotations = new Float32Array(this.icount * 3);\n const angle = Math.PI * 4;\n for (let i = 0; i < rotations.length; i += 3) {\n rotations[i] = rndFS(angle);\n rotations[i + 1] = rndFS(angle);\n rotations[i + 2] = rndFS(angle);\n }\n this.bGeometry.setAttribute('rotation', new InstancedBufferAttribute(rotations, 3));\n }\n\n initUV() {\n const ratio = this.nx / this.ny;\n const tRatio = this.texture.image.width / this.texture.image.height;\n if (ratio > tRatio) this.uvScale.set(1 / this.nx, (tRatio / ratio) / this.ny);\n else this.uvScale.set((ratio / tRatio) / this.nx, 1 / this.ny);\n const nW = this.uvScale.x * this.nx;\n const nH = this.uvScale.y * this.ny;\n\n const v2 = new Vector2();\n const uvOffsets = new Float32Array(this.icount * 2);\n for (let i = 0; i < this.nx; i++) {\n for (let j = 0; j < this.ny; j++) {\n v2.set(\n this.uvScale.x * i + (1 - nW) / 2,\n this.uvScale.y * j + (1 - nH) / 2\n ).toArray(uvOffsets, (i * this.ny + j) * 2);\n }\n }\n this.bGeometry.setAttribute('uvOffset', new InstancedBufferAttribute(uvOffsets, 2));\n }\n\n setTexture(texture) {\n this.texture = texture;\n this.material.map = texture;\n this.initUV();\n }\n\n resize() {\n this.initPlane();\n }\n}\n","import { TextureLoader } from 'three';\n\nexport default function useTextures() {\n const obj = {\n loader: new TextureLoader(),\n count: 0,\n textures: [],\n loadProgress: 0,\n loadTextures,\n dispose,\n };\n return obj;\n\n function loadTextures(images, cb) {\n obj.count = images.length;\n obj.textures.splice(0);\n obj.loadProgress = 0;\n Promise.all(images.map(loadTexture)).then(cb);\n };\n\n function loadTexture(img, index) {\n return new Promise(resolve => {\n obj.loader.load(\n img.src,\n texture => {\n obj.loadProgress += 1 / obj.count;\n obj.textures[index] = texture;\n resolve(texture);\n }\n );\n });\n };\n\n function dispose() {\n obj.textures.forEach(t => t.dispose());\n }\n};\n","<template>\n <Renderer ref=\"renderer\" antialias>\n <Camera ref=\"camera\" :position=\"{ z: 150 }\"></Camera>\n <Scene ref=\"scene\">\n </Scene>\n </Renderer>\n</template>\n\n<script>\nimport { Object3D } from 'three';\nimport { gsap, Power4 } from 'gsap';\nimport { lerp } from '../../tools.js';\nimport AnimatedPlane from './AnimatedPlane.js';\nimport useTextures from '../../use/useTextures';\n\nexport default {\n props: {\n images: Array,\n events: { type: Object, default: () => { return { wheel: true, click: true, keyup: true }; } },\n },\n setup() {\n const { textures, loadTextures } = useTextures();\n return {\n textures,\n loadTextures,\n progress: 0,\n targetProgress: 0,\n };\n },\n mounted() {\n this.three = this.$refs.renderer.three;\n\n if (this.images.length < 2) {\n console.error('This slider needs at least 2 images.');\n } else {\n this.loadTextures(this.images, this.init);\n }\n },\n unmounted() {\n document.removeEventListener('click', this.onClick);\n document.removeEventListener('keyup', this.onKeyup);\n window.removeEventListener('wheel', this.onWheel);\n },\n methods: {\n init() {\n this.initScene();\n\n gsap.fromTo(this.plane1.uProgress,\n {\n value: -2,\n },\n {\n value: 0,\n duration: 2.5,\n ease: Power4.easeOut,\n }\n );\n\n if (this.events.click) document.addEventListener('click', this.onClick);\n if (this.events.keyup) document.addEventListener('keyup', this.onKeyup);\n if (this.events.wheel) window.addEventListener('wheel', this.onWheel);\n this.three.onBeforeRender(this.updateProgress);\n this.three.onAfterResize(this.onResize);\n },\n initScene() {\n const renderer = this.three.renderer;\n const scene = this.$refs.scene.scene;\n\n this.plane1 = new AnimatedPlane({\n renderer, screen: this.three.size,\n size: 10,\n anim: 1,\n texture: this.textures[0],\n });\n\n this.plane2 = new AnimatedPlane({\n renderer, screen: this.three.size,\n size: 10,\n anim: 2,\n texture: this.textures[1],\n });\n\n this.setPlanesProgress(0);\n this.planes = new Object3D();\n this.planes.add(this.plane1.o3d);\n this.planes.add(this.plane2.o3d);\n scene.add(this.planes);\n },\n onResize() {\n this.plane1.resize();\n this.plane2.resize();\n },\n onWheel(e) {\n // e.preventDefault();\n if (e.deltaY > 0) {\n this.setTargetProgress(this.targetProgress + 1 / 20);\n } else {\n this.setTargetProgress(this.targetProgress - 1 / 20);\n }\n },\n onClick(e) {\n if (e.clientY < this.three.size.height / 2) {\n this.navPrevious();\n } else {\n this.navNext();\n }\n },\n onKeyup(e) {\n if (e.keyCode === 37 || e.keyCode === 38) {\n this.navPrevious();\n } else if (e.keyCode === 39 || e.keyCode === 40) {\n this.navNext();\n }\n },\n navNext() {\n if (Number.isInteger(this.targetProgress)) this.setTargetProgress(this.targetProgress + 1);\n else this.setTargetProgress(Math.ceil(this.targetProgress));\n },\n navPrevious() {\n if (Number.isInteger(this.targetProgress)) this.setTargetProgress(this.targetProgress - 1);\n else this.setTargetProgress(Math.floor(this.targetProgress));\n },\n setTargetProgress(value) {\n this.targetProgress = value;\n if (this.targetProgress < 0) {\n this.progress += this.images.length;\n this.targetProgress += this.images.length;\n }\n },\n updateProgress() {\n const progress1 = lerp(this.progress, this.targetProgress, 0.1);\n const pdiff = progress1 - this.progress;\n if (pdiff === 0) return;\n\n const p0 = this.progress % 1;\n const p1 = progress1 % 1;\n if ((pdiff > 0 && p1 < p0) || (pdiff < 0 && p0 < p1)) {\n const i = Math.floor(progress1) % this.images.length;\n const j = (i + 1) % this.images.length;\n this.plane1.setTexture(this.textures[i]);\n this.plane2.setTexture(this.textures[j]);\n }\n\n this.progress = progress1;\n this.setPlanesProgress(this.progress % 1);\n },\n setPlanesProgress(progress) {\n this.plane1.uProgress.value = progress;\n this.plane2.uProgress.value = -1 + progress;\n this.plane1.material.opacity = 1 - progress;\n this.plane2.material.opacity = progress;\n this.plane1.o3d.position.z = progress;\n this.plane2.o3d.position.z = progress - 1;\n },\n },\n};\n</script>\n","<template>\n <Renderer ref=\"renderer\" antialias>\n <Camera ref=\"camera\" :position=\"{ z: 150 }\"></Camera>\n <Scene ref=\"scene\">\n </Scene>\n </Renderer>\n</template>\n\n<script>\nimport { Object3D } from 'three';\nimport { gsap, Power4 } from 'gsap';\nimport { lerp } from '../../tools.js';\nimport AnimatedPlane from './AnimatedPlane.js';\nimport useTextures from '../../use/useTextures';\n\nexport default {\n props: {\n images: Array,\n events: { type: Object, default: () => { return { wheel: true, click: true, keyup: true }; } },\n },\n setup() {\n const { textures, loadTextures } = useTextures();\n return {\n textures,\n loadTextures,\n progress: 0,\n targetProgress: 0,\n };\n },\n mounted() {\n this.three = this.$refs.renderer.three;\n\n if (this.images.length < 2) {\n console.error('This slider needs at least 2 images.');\n } else {\n this.loadTextures(this.images, this.init);\n }\n },\n unmounted() {\n document.removeEventListener('click', this.onClick);\n document.removeEventListener('keyup', this.onKeyup);\n window.removeEventListener('wheel', this.onWheel);\n },\n methods: {\n init() {\n this.initScene();\n\n gsap.fromTo(this.plane1.uProgress,\n {\n value: -2,\n },\n {\n value: 0,\n duration: 2.5,\n ease: Power4.easeOut,\n }\n );\n\n if (this.events.click) document.addEventListener('click', this.onClick);\n if (this.events.keyup) document.addEventListener('keyup', this.onKeyup);\n if (this.events.wheel) window.addEventListener('wheel', this.onWheel);\n this.three.onBeforeRender(this.updateProgress);\n this.three.onAfterResize(this.onResize);\n },\n initScene() {\n const renderer = this.three.renderer;\n const scene = this.$refs.scene.scene;\n\n this.plane1 = new AnimatedPlane({\n renderer, screen: this.three.size,\n size: 10,\n anim: 1,\n texture: this.textures[0],\n });\n\n this.plane2 = new AnimatedPlane({\n renderer, screen: this.three.size,\n size: 10,\n anim: 2,\n texture: this.textures[1],\n });\n\n this.setPlanesProgress(0);\n this.planes = new Object3D();\n this.planes.add(this.plane1.o3d);\n this.planes.add(this.plane2.o3d);\n scene.add(this.planes);\n },\n onResize() {\n this.plane1.resize();\n this.plane2.resize();\n },\n onWheel(e) {\n // e.preventDefault();\n if (e.deltaY > 0) {\n this.setTargetProgress(this.targetProgress + 1 / 20);\n } else {\n this.setTargetProgress(this.targetProgress - 1 / 20);\n }\n },\n onClick(e) {\n if (e.clientY < this.three.size.height / 2) {\n this.navPrevious();\n } else {\n this.navNext();\n }\n },\n onKeyup(e) {\n if (e.keyCode === 37 || e.keyCode === 38) {\n this.navPrevious();\n } else if (e.keyCode === 39 || e.keyCode === 40) {\n this.navNext();\n }\n },\n navNext() {\n if (Number.isInteger(this.targetProgress)) this.setTargetProgress(this.targetProgress + 1);\n else this.setTargetProgress(Math.ceil(this.targetProgress));\n },\n navPrevious() {\n if (Number.isInteger(this.targetProgress)) this.setTargetProgress(this.targetProgress - 1);\n else this.setTargetProgress(Math.floor(this.targetProgress));\n },\n setTargetProgress(value) {\n this.targetProgress = value;\n if (this.targetProgress < 0) {\n this.progress += this.images.length;\n this.targetProgress += this.images.length;\n }\n },\n updateProgress() {\n const progress1 = lerp(this.progress, this.targetProgress, 0.1);\n const pdiff = progress1 - this.progress;\n if (pdiff === 0) return;\n\n const p0 = this.progress % 1;\n const p1 = progress1 % 1;\n if ((pdiff > 0 && p1 < p0) || (pdiff < 0 && p0 < p1)) {\n const i = Math.floor(progress1) % this.images.length;\n const j = (i + 1) % this.images.length;\n this.plane1.setTexture(this.textures[i]);\n this.plane2.setTexture(this.textures[j]);\n }\n\n this.progress = progress1;\n this.setPlanesProgress(this.progress % 1);\n },\n setPlanesProgress(progress) {\n this.plane1.uProgress.value = progress;\n this.plane2.uProgress.value = -1 + progress;\n this.plane1.material.opacity = 1 - progress;\n this.plane2.material.opacity = progress;\n this.plane1.o3d.position.z = progress;\n this.plane2.o3d.position.z = progress - 1;\n },\n },\n};\n</script>\n","import {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tCanvasTexture,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tInterpolant,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLine,\n\tLineBasicMaterial,\n\tLineLoop,\n\tLineSegments,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tLoader,\n\tLoaderUtils,\n\tMaterial,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPoints,\n\tPointsMaterial,\n\tPropertyBinding,\n\tQuaternionKeyframeTrack,\n\tRGBFormat,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSphere,\n\tSpotLight,\n\tTangentSpaceNormalMap,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tsRGBEncoding\n} from '../../../build/three.module.js';\n\nvar GLTFLoader = ( function () {\n\n\tfunction GLTFLoader( manager ) {\n\n\t\tLoader.call( this, manager );\n\n\t\tthis.dracoLoader = null;\n\t\tthis.ddsLoader = null;\n\t\tthis.ktx2Loader = null;\n\t\tthis.meshoptDecoder = null;\n\n\t\tthis.pluginCallbacks = [];\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsClearcoatExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureBasisUExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureWebPExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsTransmissionExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFLightsExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMeshoptCompression( parser );\n\n\t\t} );\n\n\t}\n\n\tGLTFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\t\tconstructor: GLTFLoader,\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar resourcePath;\n\n\t\t\tif ( this.resourcePath !== '' ) {\n\n\t\t\t\tresourcePath = this.resourcePath;\n\n\t\t\t} else if ( this.path !== '' ) {\n\n\t\t\t\tresourcePath = this.path;\n\n\t\t\t} else {\n\n\t\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\n\n\t\t\t}\n\n\t\t\t// Tells the LoadingManager to track an extra item, which resolves after\n\t\t\t// the model is fully loaded. This means the count of items loaded will\n\t\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tvar _onError = function ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t};\n\n\t\t\tvar loader = new FileLoader( this.manager );\n\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\t\t\tloader.setRequestHeader( this.requestHeader );\n\t\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\t\tloader.load( url, function ( data ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\n\n\t\t\t\t\t\tonLoad( gltf );\n\n\t\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t\t}, _onError );\n\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t_onError( e );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, _onError );\n\n\t\t},\n\n\t\tsetDRACOLoader: function ( dracoLoader ) {\n\n\t\t\tthis.dracoLoader = dracoLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetDDSLoader: function ( ddsLoader ) {\n\n\t\t\tthis.ddsLoader = ddsLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetKTX2Loader: function ( ktx2Loader ) {\n\n\t\t\tthis.ktx2Loader = ktx2Loader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetMeshoptDecoder: function ( meshoptDecoder ) {\n\n\t\t\tthis.meshoptDecoder = meshoptDecoder;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tregister: function ( callback ) {\n\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\n\n\t\t\t\tthis.pluginCallbacks.push( callback );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tunregister: function ( callback ) {\n\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\n\n\t\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tparse: function ( data, path, onLoad, onError ) {\n\n\t\t\tvar content;\n\t\t\tvar extensions = {};\n\t\t\tvar plugins = {};\n\n\t\t\tif ( typeof data === 'string' ) {\n\n\t\t\t\tcontent = data;\n\n\t\t\t} else {\n\n\t\t\t\tvar magic = LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );\n\n\t\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontent = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcontent = LoaderUtils.decodeText( new Uint8Array( data ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar json = JSON.parse( content );\n\n\t\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar parser = new GLTFParser( json, {\n\n\t\t\t\tpath: path || this.resourcePath || '',\n\t\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\t\tmanager: this.manager,\n\t\t\t\tktx2Loader: this.ktx2Loader,\n\t\t\t\tmeshoptDecoder: this.meshoptDecoder\n\n\t\t\t} );\n\n\t\t\tparser.fileLoader.setRequestHeader( this.requestHeader );\n\n\t\t\tfor ( var i = 0; i < this.pluginCallbacks.length; i ++ ) {\n\n\t\t\t\tvar plugin = this.pluginCallbacks[ i ]( parser );\n\t\t\t\tplugins[ plugin.name ] = plugin;\n\n\t\t\t\t// Workaround to avoid determining as unknown extension\n\t\t\t\t// in addUnknownExtensionsToUserData().\n\t\t\t\t// Remove this workaround if we move all the existing\n\t\t\t\t// extension handlers to plugin system\n\t\t\t\textensions[ plugin.name ] = true;\n\n\t\t\t}\n\n\t\t\tif ( json.extensionsUsed ) {\n\n\t\t\t\tfor ( var i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\t\tvar extensionName = json.extensionsUsed[ i ];\n\t\t\t\t\tvar extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.MSFT_TEXTURE_DDS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureDDSExtension( this.ddsLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tparser.setExtensions( extensions );\n\t\t\tparser.setPlugins( plugins );\n\t\t\tparser.parse( onLoad, onError );\n\n\t\t}\n\n\t} );\n\n\t/* GLTFREGISTRY */\n\n\tfunction GLTFRegistry() {\n\n\t\tvar objects = {};\n\n\t\treturn\t{\n\n\t\t\tget: function ( key ) {\n\n\t\t\t\treturn objects[ key ];\n\n\t\t\t},\n\n\t\t\tadd: function ( key, object ) {\n\n\t\t\t\tobjects[ key ] = object;\n\n\t\t\t},\n\n\t\t\tremove: function ( key ) {\n\n\t\t\t\tdelete objects[ key ];\n\n\t\t\t},\n\n\t\t\tremoveAll: function () {\n\n\t\t\t\tobjects = {};\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t/*********************************/\n\t/********** EXTENSIONS ***********/\n\t/*********************************/\n\n\tvar EXTENSIONS = {\n\t\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\t\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\t\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\t\tKHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n\t\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n\t\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n\t\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\t\tKHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n\t\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n\t\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n\t\tEXT_TEXTURE_WEBP: 'EXT_texture_webp',\n\t\tEXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression',\n\t\tMSFT_TEXTURE_DDS: 'MSFT_texture_dds'\n\t};\n\n\t/**\n\t * DDS Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds\n\t *\n\t */\n\tfunction GLTFTextureDDSExtension( ddsLoader ) {\n\n\t\tif ( ! ddsLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing DDSLoader' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.MSFT_TEXTURE_DDS;\n\t\tthis.ddsLoader = ddsLoader;\n\n\t}\n\n\t/**\n\t * Punctual Lights Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n\t */\n\tfunction GLTFLightsExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\t// Object3D instance caches\n\t\tthis.cache = { refs: {}, uses: {} };\n\n\t}\n\n\tGLTFLightsExtension.prototype._markDefs = function () {\n\n\t\tvar parser = this.parser;\n\t\tvar nodeDefs = this.parser.json.nodes || [];\n\n\t\tfor ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tvar nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t&& nodeDef.extensions[ this.name ]\n\t\t\t\t&& nodeDef.extensions[ this.name ].light !== undefined ) {\n\n\t\t\t\tparser._addNodeRef( this.cache, nodeDef.extensions[ this.name ].light );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tGLTFLightsExtension.prototype._loadLight = function ( lightIndex ) {\n\n\t\tvar parser = this.parser;\n\t\tvar cacheKey = 'light:' + lightIndex;\n\t\tvar dependency = parser.cache.get( cacheKey );\n\n\t\tif ( dependency ) return dependency;\n\n\t\tvar json = parser.json;\n\t\tvar extensions = ( json.extensions && json.extensions[ this.name ] ) || {};\n\t\tvar lightDefs = extensions.lights || [];\n\t\tvar lightDef = lightDefs[ lightIndex ];\n\t\tvar lightNode;\n\n\t\tvar color = new Color( 0xffffff );\n\n\t\tif ( lightDef.color !== undefined ) color.fromArray( lightDef.color );\n\n\t\tvar range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\tswitch ( lightDef.type ) {\n\n\t\t\tcase 'directional':\n\t\t\t\tlightNode = new DirectionalLight( color );\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tcase 'point':\n\t\t\t\tlightNode = new PointLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\tbreak;\n\n\t\t\tcase 'spot':\n\t\t\t\tlightNode = new SpotLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\t// Handle spotlight properties.\n\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type: ' + lightDef.type );\n\n\t\t}\n\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\n\t\t// here, because node-level parsing will only override position if explicitly specified.\n\t\tlightNode.position.set( 0, 0, 0 );\n\n\t\tlightNode.decay = 2;\n\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\tlightNode.name = parser.createUniqueName( lightDef.name || ( 'light_' + lightIndex ) );\n\n\t\tdependency = Promise.resolve( lightNode );\n\n\t\tparser.cache.add( cacheKey, dependency );\n\n\t\treturn dependency;\n\n\t};\n\n\tGLTFLightsExtension.prototype.createNodeAttachment = function ( nodeIndex ) {\n\n\t\tvar self = this;\n\t\tvar parser = this.parser;\n\t\tvar json = parser.json;\n\t\tvar nodeDef = json.nodes[ nodeIndex ];\n\t\tvar lightDef = ( nodeDef.extensions && nodeDef.extensions[ this.name ] ) || {};\n\t\tvar lightIndex = lightDef.light;\n\n\t\tif ( lightIndex === undefined ) return null;\n\n\t\treturn this._loadLight( lightIndex ).then( function ( light ) {\n\n\t\t\treturn parser._getNodeRef( self.cache, lightIndex, light );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Unlit Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n\t */\n\tfunction GLTFMaterialsUnlitExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tGLTFMaterialsUnlitExtension.prototype.getMaterialType = function () {\n\n\t\treturn MeshBasicMaterial;\n\n\t};\n\n\tGLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, materialDef, parser ) {\n\n\t\tvar pending = [];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Clearcoat Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n\t */\n\tfunction GLTFMaterialsClearcoatExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n\n\t}\n\n\tGLTFMaterialsClearcoatExtension.prototype.getMaterialType = function ( materialIndex ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t};\n\n\tGLTFMaterialsClearcoatExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tvar extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.clearcoatFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoat = extension.clearcoatFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatNormalTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) );\n\n\t\t\tif ( extension.clearcoatNormalTexture.scale !== undefined ) {\n\n\t\t\t\tvar scale = extension.clearcoatNormalTexture.scale;\n\n\t\t\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\t\t\tmaterialParams.clearcoatNormalScale = new Vector2( scale, -scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Transmission Materials Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n\t * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n\t */\n\tfunction GLTFMaterialsTransmissionExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n\n\t}\n\n\tGLTFMaterialsTransmissionExtension.prototype.getMaterialType = function ( materialIndex ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t};\n\n\tGLTFMaterialsTransmissionExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\n\n\t\tvar parser = this.parser;\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tvar extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.transmissionFactor !== undefined ) {\n\n\t\t\tmaterialParams.transmission = extension.transmissionFactor;\n\n\t\t}\n\n\t\tif ( extension.transmissionTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * BasisU Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n\t */\n\tfunction GLTFTextureBasisUExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n\n\t}\n\n\tGLTFTextureBasisUExtension.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this.parser;\n\t\tvar json = parser.json;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar extension = textureDef.extensions[ this.name ];\n\t\tvar source = json.images[ extension.source ];\n\t\tvar loader = parser.options.ktx2Loader;\n\n\t\tif ( ! loader ) {\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' );\n\n\t\t\t} else {\n\n\t\t\t\t// Assumes that the extension is optional and that a fallback texture is present\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.loadTextureImage( textureIndex, source, loader );\n\n\t};\n\n\t/**\n\t * WebP Texture Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp\n\t */\n\tfunction GLTFTextureWebPExtension( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n\t\tthis.isSupported = null;\n\n\t}\n\n\tGLTFTextureWebPExtension.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar name = this.name;\n\t\tvar parser = this.parser;\n\t\tvar json = parser.json;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar extension = textureDef.extensions[ name ];\n\t\tvar source = json.images[ extension.source ];\n\t\tvar loader = source.uri ? parser.options.manager.getHandler( source.uri ) : parser.textureLoader;\n\n\t\treturn this.detectSupport().then( function ( isSupported ) {\n\n\t\t\tif ( isSupported ) return parser.loadTextureImage( textureIndex, source, loader );\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: WebP required by asset but unsupported.' );\n\n\t\t\t}\n\n\t\t\t// Fall back to PNG or JPEG.\n\t\t\treturn parser.loadTexture( textureIndex );\n\n\t\t} );\n\n\t};\n\n\tGLTFTextureWebPExtension.prototype.detectSupport = function () {\n\n\t\tif ( ! this.isSupported ) {\n\n\t\t\tthis.isSupported = new Promise( function ( resolve ) {\n\n\t\t\t\tvar image = new Image();\n\n\t\t\t\t// Lossy test image. Support for lossy images doesn't guarantee support for all\n\t\t\t\t// WebP images, unfortunately.\n\t\t\t\timage.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';\n\n\t\t\t\timage.onload = image.onerror = function () {\n\n\t\t\t\t\tresolve( image.height === 1 );\n\n\t\t\t\t};\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn this.isSupported;\n\n\t};\n\n\t/**\n\t* meshopt BufferView Compression Extension\n\t*\n\t* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression\n\t*/\n\tfunction GLTFMeshoptCompression( parser ) {\n\n\t\tthis.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n\t\tthis.parser = parser;\n\n\t}\n\n\tGLTFMeshoptCompression.prototype.loadBufferView = function ( index ) {\n\n\t\tvar json = this.parser.json;\n\t\tvar bufferView = json.bufferViews[ index ];\n\n\t\tif ( bufferView.extensions && bufferView.extensions[ this.name ] ) {\n\n\t\t\tvar extensionDef = bufferView.extensions[ this.name ];\n\n\t\t\tvar buffer = this.parser.getDependency( 'buffer', extensionDef.buffer );\n\t\t\tvar decoder = this.parser.options.meshoptDecoder;\n\n\t\t\tif ( ! decoder || ! decoder.supported ) {\n\n\t\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Assumes that the extension is optional and that fallback buffer data is present\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn Promise.all( [ buffer, decoder.ready ] ).then( function ( res ) {\n\n\t\t\t\tvar byteOffset = extensionDef.byteOffset || 0;\n\t\t\t\tvar byteLength = extensionDef.byteLength || 0;\n\n\t\t\t\tvar count = extensionDef.count;\n\t\t\t\tvar stride = extensionDef.byteStride;\n\n\t\t\t\tvar result = new ArrayBuffer( count * stride );\n\t\t\t\tvar source = new Uint8Array( res[ 0 ], byteOffset, byteLength );\n\n\t\t\t\tdecoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter );\n\t\t\t\treturn result;\n\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t};\n\n\t/* BINARY EXTENSION */\n\tvar BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\n\tvar BINARY_EXTENSION_HEADER_LENGTH = 12;\n\tvar BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\n\tfunction GLTFBinaryExtension( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tvar headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\n\t\tthis.header = {\n\t\t\tmagic: LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\n\n\t\t}\n\n\t\tvar chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n\t\tvar chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tvar chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkContentsLength ) {\n\n\t\t\tvar chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tvar chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tvar contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = LoaderUtils.decodeText( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tvar byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * DRACO Mesh Compression Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n\t */\n\tfunction GLTFDracoMeshCompressionExtension( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\t\tthis.dracoLoader.preload();\n\n\t}\n\n\tGLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) {\n\n\t\tvar json = this.json;\n\t\tvar dracoLoader = this.dracoLoader;\n\t\tvar bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tvar gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tvar threeAttributeMap = {};\n\t\tvar attributeNormalizedMap = {};\n\t\tvar attributeTypeMap = {};\n\n\t\tfor ( var attributeName in gltfAttributeMap ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( attributeName in primitive.attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tvar accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tvar componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType;\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( var attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tvar attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tvar normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Texture Transform Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n\t */\n\tfunction GLTFTextureTransformExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n\n\t}\n\n\tGLTFTextureTransformExtension.prototype.extendTexture = function ( texture, transform ) {\n\n\t\ttexture = texture.clone();\n\n\t\tif ( transform.offset !== undefined ) {\n\n\t\t\ttexture.offset.fromArray( transform.offset );\n\n\t\t}\n\n\t\tif ( transform.rotation !== undefined ) {\n\n\t\t\ttexture.rotation = transform.rotation;\n\n\t\t}\n\n\t\tif ( transform.scale !== undefined ) {\n\n\t\t\ttexture.repeat.fromArray( transform.scale );\n\n\t\t}\n\n\t\tif ( transform.texCoord !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.' );\n\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\n\t};\n\n\t/**\n\t * Specular-Glossiness Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness\n\t */\n\n\t/**\n\t * A sub class of StandardMaterial with some of the functionality\n\t * changed via the `onBeforeCompile` callback\n\t * @pailhead\n\t */\n\n\tfunction GLTFMeshStandardSGMaterial( params ) {\n\n\t\tMeshStandardMaterial.call( this );\n\n\t\tthis.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t//various chunks that need replacing\n\t\tvar specularMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tuniform sampler2D specularMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tuniform sampler2D glossinessMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar specularMapFragmentChunk = [\n\t\t\t'vec3 specularFactor = specular;',\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\n\t\t\t'\ttexelSpecular = sRGBToLinear( texelSpecular );',\n\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar glossinessMapFragmentChunk = [\n\t\t\t'float glossinessFactor = glossiness;',\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\n\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tvar lightPhysicalFragmentChunk = [\n\t\t\t'PhysicalMaterial material;',\n\t\t\t'material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );',\n\t\t\t'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',\n\t\t\t'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',\n\t\t\t'material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.',\n\t\t\t'material.specularRoughness += geometryRoughness;',\n\t\t\t'material.specularRoughness = min( material.specularRoughness, 1.0 );',\n\t\t\t'material.specularColor = specularFactor;',\n\t\t].join( '\\n' );\n\n\t\tvar uniforms = {\n\t\t\tspecular: { value: new Color().setHex( 0xffffff ) },\n\t\t\tglossiness: { value: 1 },\n\t\t\tspecularMap: { value: null },\n\t\t\tglossinessMap: { value: null }\n\t\t};\n\n\t\tthis._extraUniforms = uniforms;\n\n\t\tthis.onBeforeCompile = function ( shader ) {\n\n\t\t\tfor ( var uniformName in uniforms ) {\n\n\t\t\t\tshader.uniforms[ uniformName ] = uniforms[ uniformName ];\n\n\t\t\t}\n\n\t\t\tshader.fragmentShader = shader.fragmentShader\n\t\t\t\t.replace( 'uniform float roughness;', 'uniform vec3 specular;' )\n\t\t\t\t.replace( 'uniform float metalness;', 'uniform float glossiness;' )\n\t\t\t\t.replace( '#include <roughnessmap_pars_fragment>', specularMapParsFragmentChunk )\n\t\t\t\t.replace( '#include <metalnessmap_pars_fragment>', glossinessMapParsFragmentChunk )\n\t\t\t\t.replace( '#include <roughnessmap_fragment>', specularMapFragmentChunk )\n\t\t\t\t.replace( '#include <metalnessmap_fragment>', glossinessMapFragmentChunk )\n\t\t\t\t.replace( '#include <lights_physical_fragment>', lightPhysicalFragmentChunk );\n\n\t\t};\n\n\t\tObject.defineProperties( this, {\n\n\t\t\tspecular: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.specular.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.specular.value = v;\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tspecularMap: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.specularMap.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.specularMap.value = v;\n\n\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\tthis.defines.USE_SPECULARMAP = ''; // USE_UV is set by the renderer for specular maps\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdelete this.defines.USE_SPECULARMAP;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tglossiness: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.glossiness.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.glossiness.value = v;\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tglossinessMap: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.glossinessMap.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.glossinessMap.value = v;\n\n\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\tthis.defines.USE_GLOSSINESSMAP = '';\n\t\t\t\t\t\tthis.defines.USE_UV = '';\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdelete this.defines.USE_GLOSSINESSMAP;\n\t\t\t\t\t\tdelete this.defines.USE_UV;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t} );\n\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\n\t\tthis.setValues( params );\n\n\t}\n\n\tGLTFMeshStandardSGMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\n\tGLTFMeshStandardSGMaterial.prototype.constructor = GLTFMeshStandardSGMaterial;\n\n\tGLTFMeshStandardSGMaterial.prototype.copy = function ( source ) {\n\n\t\tMeshStandardMaterial.prototype.copy.call( this, source );\n\t\tthis.specularMap = source.specularMap;\n\t\tthis.specular.copy( source.specular );\n\t\tthis.glossinessMap = source.glossinessMap;\n\t\tthis.glossiness = source.glossiness;\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\t\treturn this;\n\n\t};\n\n\tfunction GLTFMaterialsPbrSpecularGlossinessExtension() {\n\n\t\treturn {\n\n\t\t\tname: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,\n\n\t\t\tspecularGlossinessParams: [\n\t\t\t\t'color',\n\t\t\t\t'map',\n\t\t\t\t'lightMap',\n\t\t\t\t'lightMapIntensity',\n\t\t\t\t'aoMap',\n\t\t\t\t'aoMapIntensity',\n\t\t\t\t'emissive',\n\t\t\t\t'emissiveIntensity',\n\t\t\t\t'emissiveMap',\n\t\t\t\t'bumpMap',\n\t\t\t\t'bumpScale',\n\t\t\t\t'normalMap',\n\t\t\t\t'normalMapType',\n\t\t\t\t'displacementMap',\n\t\t\t\t'displacementScale',\n\t\t\t\t'displacementBias',\n\t\t\t\t'specularMap',\n\t\t\t\t'specular',\n\t\t\t\t'glossinessMap',\n\t\t\t\t'glossiness',\n\t\t\t\t'alphaMap',\n\t\t\t\t'envMap',\n\t\t\t\t'envMapIntensity',\n\t\t\t\t'refractionRatio',\n\t\t\t],\n\n\t\t\tgetMaterialType: function () {\n\n\t\t\t\treturn GLTFMeshStandardSGMaterial;\n\n\t\t\t},\n\n\t\t\textendParams: function ( materialParams, materialDef, parser ) {\n\n\t\t\t\tvar pbrSpecularGlossiness = materialDef.extensions[ this.name ];\n\n\t\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\n\n\t\t\t\t\tvar array = pbrSpecularGlossiness.diffuseFactor;\n\n\t\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\n\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture ) );\n\n\t\t\t\t}\n\n\t\t\t\tmaterialParams.emissive = new Color( 0.0, 0.0, 0.0 );\n\t\t\t\tmaterialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n\t\t\t\tmaterialParams.specular = new Color( 1.0, 1.0, 1.0 );\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\n\n\t\t\t\t\tmaterialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\n\n\t\t\t\t\tvar specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) );\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t},\n\n\t\t\tcreateMaterial: function ( materialParams ) {\n\n\t\t\t\tvar material = new GLTFMeshStandardSGMaterial( materialParams );\n\t\t\t\tmaterial.fog = true;\n\n\t\t\t\tmaterial.color = materialParams.color;\n\n\t\t\t\tmaterial.map = materialParams.map === undefined ? null : materialParams.map;\n\n\t\t\t\tmaterial.lightMap = null;\n\t\t\t\tmaterial.lightMapIntensity = 1.0;\n\n\t\t\t\tmaterial.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\n\t\t\t\tmaterial.aoMapIntensity = 1.0;\n\n\t\t\t\tmaterial.emissive = materialParams.emissive;\n\t\t\t\tmaterial.emissiveIntensity = 1.0;\n\t\t\t\tmaterial.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\n\n\t\t\t\tmaterial.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n\t\t\t\tmaterial.bumpScale = 1;\n\n\t\t\t\tmaterial.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\n\t\t\t\tmaterial.normalMapType = TangentSpaceNormalMap;\n\n\t\t\t\tif ( materialParams.normalScale ) material.normalScale = materialParams.normalScale;\n\n\t\t\t\tmaterial.displacementMap = null;\n\t\t\t\tmaterial.displacementScale = 1;\n\t\t\t\tmaterial.displacementBias = 0;\n\n\t\t\t\tmaterial.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\n\t\t\t\tmaterial.specular = materialParams.specular;\n\n\t\t\t\tmaterial.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\n\t\t\t\tmaterial.glossiness = materialParams.glossiness;\n\n\t\t\t\tmaterial.alphaMap = null;\n\n\t\t\t\tmaterial.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\n\t\t\t\tmaterial.envMapIntensity = 1.0;\n\n\t\t\t\tmaterial.refractionRatio = 0.98;\n\n\t\t\t\treturn material;\n\n\t\t\t},\n\n\t\t};\n\n\t}\n\n\t/**\n\t * Mesh Quantization Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n\t */\n\tfunction GLTFMeshQuantizationExtension() {\n\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n\n\t}\n\n\t/*********************************/\n\t/********** INTERPOLATION ********/\n\t/*********************************/\n\n\t// Spline Interpolation\n\t// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\n\tfunction GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tGLTFCubicSplineInterpolant.prototype = Object.create( Interpolant.prototype );\n\tGLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant;\n\n\tGLTFCubicSplineInterpolant.prototype.copySampleValue_ = function ( index ) {\n\n\t\t// Copies a sample value to the result buffer. See description of glTF\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tvalueSize = this.valueSize,\n\t\t\toffset = index * valueSize * 3 + valueSize;\n\n\t\tfor ( var i = 0; i !== valueSize; i ++ ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\tGLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n\tGLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer;\n\t\tvar values = this.sampleValues;\n\t\tvar stride = this.valueSize;\n\n\t\tvar stride2 = stride * 2;\n\t\tvar stride3 = stride * 3;\n\n\t\tvar td = t1 - t0;\n\n\t\tvar p = ( t - t0 ) / td;\n\t\tvar pp = p * p;\n\t\tvar ppp = pp * p;\n\n\t\tvar offset1 = i1 * stride3;\n\t\tvar offset0 = offset1 - stride3;\n\n\t\tvar s2 = - 2 * ppp + 3 * pp;\n\t\tvar s3 = ppp - pp;\n\t\tvar s0 = 1 - s2;\n\t\tvar s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( var i = 0; i !== stride; i ++ ) {\n\n\t\t\tvar p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tvar m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tvar p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tvar m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\t/*********************************/\n\t/********** INTERNALS ************/\n\t/*********************************/\n\n\t/* CONSTANTS */\n\n\tvar WEBGL_CONSTANTS = {\n\t\tFLOAT: 5126,\n\t\t//FLOAT_MAT2: 35674,\n\t\tFLOAT_MAT3: 35675,\n\t\tFLOAT_MAT4: 35676,\n\t\tFLOAT_VEC2: 35664,\n\t\tFLOAT_VEC3: 35665,\n\t\tFLOAT_VEC4: 35666,\n\t\tLINEAR: 9729,\n\t\tREPEAT: 10497,\n\t\tSAMPLER_2D: 35678,\n\t\tPOINTS: 0,\n\t\tLINES: 1,\n\t\tLINE_LOOP: 2,\n\t\tLINE_STRIP: 3,\n\t\tTRIANGLES: 4,\n\t\tTRIANGLE_STRIP: 5,\n\t\tTRIANGLE_FAN: 6,\n\t\tUNSIGNED_BYTE: 5121,\n\t\tUNSIGNED_SHORT: 5123\n\t};\n\n\tvar WEBGL_COMPONENT_TYPES = {\n\t\t5120: Int8Array,\n\t\t5121: Uint8Array,\n\t\t5122: Int16Array,\n\t\t5123: Uint16Array,\n\t\t5125: Uint32Array,\n\t\t5126: Float32Array\n\t};\n\n\tvar WEBGL_FILTERS = {\n\t\t9728: NearestFilter,\n\t\t9729: LinearFilter,\n\t\t9984: NearestMipmapNearestFilter,\n\t\t9985: LinearMipmapNearestFilter,\n\t\t9986: NearestMipmapLinearFilter,\n\t\t9987: LinearMipmapLinearFilter\n\t};\n\n\tvar WEBGL_WRAPPINGS = {\n\t\t33071: ClampToEdgeWrapping,\n\t\t33648: MirroredRepeatWrapping,\n\t\t10497: RepeatWrapping\n\t};\n\n\tvar WEBGL_TYPE_SIZES = {\n\t\t'SCALAR': 1,\n\t\t'VEC2': 2,\n\t\t'VEC3': 3,\n\t\t'VEC4': 4,\n\t\t'MAT2': 4,\n\t\t'MAT3': 9,\n\t\t'MAT4': 16\n\t};\n\n\tvar ATTRIBUTES = {\n\t\tPOSITION: 'position',\n\t\tNORMAL: 'normal',\n\t\tTANGENT: 'tangent',\n\t\tTEXCOORD_0: 'uv',\n\t\tTEXCOORD_1: 'uv2',\n\t\tCOLOR_0: 'color',\n\t\tWEIGHTS_0: 'skinWeight',\n\t\tJOINTS_0: 'skinIndex',\n\t};\n\n\tvar PATH_PROPERTIES = {\n\t\tscale: 'scale',\n\t\ttranslation: 'position',\n\t\trotation: 'quaternion',\n\t\tweights: 'morphTargetInfluences'\n\t};\n\n\tvar INTERPOLATION = {\n\t\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n\t\t // keyframe track will be initialized with a default interpolation type, then modified.\n\t\tLINEAR: InterpolateLinear,\n\t\tSTEP: InterpolateDiscrete\n\t};\n\n\tvar ALPHA_MODES = {\n\t\tOPAQUE: 'OPAQUE',\n\t\tMASK: 'MASK',\n\t\tBLEND: 'BLEND'\n\t};\n\n\t/* UTILITY FUNCTIONS */\n\n\tfunction resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n\t */\n\tfunction createDefaultMaterial( cache ) {\n\n\t\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\n\n\t\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\n\t\t\t\tcolor: 0xFFFFFF,\n\t\t\t\temissive: 0x000000,\n\t\t\t\tmetalness: 1,\n\t\t\t\troughness: 1,\n\t\t\t\ttransparent: false,\n\t\t\t\tdepthTest: true,\n\t\t\t\tside: FrontSide\n\t\t\t} );\n\n\t\t}\n\n\t\treturn cache[ 'DefaultMaterial' ];\n\n\t}\n\n\tfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t\t// Add unknown glTF extensions to an object's userData.\n\n\t\tfor ( var name in objectDef.extensions ) {\n\n\t\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @param {Object3D|Material|BufferGeometry} object\n\t * @param {GLTF.definition} gltfDef\n\t */\n\tfunction assignExtrasToUserData( object, gltfDef ) {\n\n\t\tif ( gltfDef.extras !== undefined ) {\n\n\t\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\t\tObject.assign( object.userData, gltfDef.extras );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n\t *\n\t * @param {BufferGeometry} geometry\n\t * @param {Array<GLTF.Target>} targets\n\t * @param {GLTFParser} parser\n\t * @return {Promise<BufferGeometry>}\n\t */\n\tfunction addMorphTargets( geometry, targets, parser ) {\n\n\t\tvar hasMorphPosition = false;\n\t\tvar hasMorphNormal = false;\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\n\t\t\tif ( hasMorphPosition && hasMorphNormal ) break;\n\n\t\t}\n\n\t\tif ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry );\n\n\t\tvar pendingPositionAccessors = [];\n\t\tvar pendingNormalAccessors = [];\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( hasMorphPosition ) {\n\n\t\t\t\tvar pendingAccessor = target.POSITION !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\n\t\t\t\t\t: geometry.attributes.position;\n\n\t\t\t\tpendingPositionAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t\tif ( hasMorphNormal ) {\n\n\t\t\t\tvar pendingAccessor = target.NORMAL !== undefined\n\t\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\n\t\t\t\t\t: geometry.attributes.normal;\n\n\t\t\t\tpendingNormalAccessors.push( pendingAccessor );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( [\n\t\t\tPromise.all( pendingPositionAccessors ),\n\t\t\tPromise.all( pendingNormalAccessors )\n\t\t] ).then( function ( accessors ) {\n\n\t\t\tvar morphPositions = accessors[ 0 ];\n\t\t\tvar morphNormals = accessors[ 1 ];\n\n\t\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t\treturn geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {Mesh} mesh\n\t * @param {GLTF.Mesh} meshDef\n\t */\n\tfunction updateMorphTargets( mesh, meshDef ) {\n\n\t\tmesh.updateMorphTargets();\n\n\t\tif ( meshDef.weights !== undefined ) {\n\n\t\t\tfor ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\t\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\t\tvar targetNames = meshDef.extras.targetNames;\n\n\t\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\t\tfor ( var i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createPrimitiveKey( primitiveDef ) {\n\n\t\tvar dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n\t\tvar geometryKey;\n\n\t\tif ( dracoExtension ) {\n\n\t\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\n\t\t\t\t+ ':' + dracoExtension.indices\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\n\n\t\t} else {\n\n\t\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\n\n\t\t}\n\n\t\treturn geometryKey;\n\n\t}\n\n\tfunction createAttributesKey( attributes ) {\n\n\t\tvar attributesKey = '';\n\n\t\tvar keys = Object.keys( attributes ).sort();\n\n\t\tfor ( var i = 0, il = keys.length; i < il; i ++ ) {\n\n\t\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\n\n\t\t}\n\n\t\treturn attributesKey;\n\n\t}\n\n\t/* GLTF PARSER */\n\n\tfunction GLTFParser( json, options ) {\n\n\t\tthis.json = json || {};\n\t\tthis.extensions = {};\n\t\tthis.plugins = {};\n\t\tthis.options = options || {};\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// associations between Three.js objects and glTF elements\n\t\tthis.associations = new Map();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = {};\n\n\t\t// Object3D instance caches\n\t\tthis.meshCache = { refs: {}, uses: {} };\n\t\tthis.cameraCache = { refs: {}, uses: {} };\n\t\tthis.lightCache = { refs: {}, uses: {} };\n\n\t\t// Track node names, to ensure no duplicates\n\t\tthis.nodeNamesUsed = {};\n\n\t\t// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n\t\t// expensive work of uploading a texture to the GPU off the main thread.\n\t\tif ( typeof createImageBitmap !== 'undefined' && /Firefox/.test( navigator.userAgent ) === false ) {\n\n\t\t\tthis.textureLoader = new ImageBitmapLoader( this.options.manager );\n\n\t\t} else {\n\n\t\t\tthis.textureLoader = new TextureLoader( this.options.manager );\n\n\t\t}\n\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\n\n\t\t\tthis.fileLoader.setWithCredentials( true );\n\n\t\t}\n\n\t}\n\n\tGLTFParser.prototype.setExtensions = function ( extensions ) {\n\n\t\tthis.extensions = extensions;\n\n\t};\n\n\tGLTFParser.prototype.setPlugins = function ( plugins ) {\n\n\t\tthis.plugins = plugins;\n\n\t};\n\n\tGLTFParser.prototype.parse = function ( onLoad, onError ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis._invokeAll( function ( ext ) {\n\n\t\t\treturn ext._markDefs && ext._markDefs();\n\n\t\t} );\n\n\t\tPromise.all( [\n\n\t\t\tthis.getDependencies( 'scene' ),\n\t\t\tthis.getDependencies( 'animation' ),\n\t\t\tthis.getDependencies( 'camera' ),\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar result = {\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\n\t\t\t\tscenes: dependencies[ 0 ],\n\t\t\t\tanimations: dependencies[ 1 ],\n\t\t\t\tcameras: dependencies[ 2 ],\n\t\t\t\tasset: json.asset,\n\t\t\t\tparser: parser,\n\t\t\t\tuserData: {}\n\t\t\t};\n\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\n\n\t\t\tassignExtrasToUserData( result, json );\n\n\t\t\tonLoad( result );\n\n\t\t} ).catch( onError );\n\n\t};\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\tGLTFParser.prototype._markDefs = function () {\n\n\t\tvar nodeDefs = this.json.nodes || [];\n\t\tvar skinDefs = this.json.skins || [];\n\t\tvar meshDefs = this.json.meshes || [];\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tvar joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( var i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Iterate over all nodes, marking references to shared resources,\n\t\t// as well as skeleton joints.\n\t\tfor ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tvar nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.meshCache, nodeDef.mesh );\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.cameraCache, nodeDef.camera );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t/**\n\t * Counts references to shared node / Object3D resources. These resources\n\t * can be reused, or \"instantiated\", at multiple nodes in the scene\n\t * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n\t * be marked. Non-scenegraph resources (like Materials, Geometries, and\n\t * Textures) can be reused directly and are not marked here.\n\t *\n\t * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t */\n\tGLTFParser.prototype._addNodeRef = function ( cache, index ) {\n\n\t\tif ( index === undefined ) return;\n\n\t\tif ( cache.refs[ index ] === undefined ) {\n\n\t\t\tcache.refs[ index ] = cache.uses[ index ] = 0;\n\n\t\t}\n\n\t\tcache.refs[ index ] ++;\n\n\t};\n\n\t/** Returns a reference to a shared resource, cloning it if necessary. */\n\tGLTFParser.prototype._getNodeRef = function ( cache, index, object ) {\n\n\t\tif ( cache.refs[ index ] <= 1 ) return object;\n\n\t\tvar ref = object.clone();\n\n\t\tref.name += '_instance_' + ( cache.uses[ index ] ++ );\n\n\t\treturn ref;\n\n\t};\n\n\tGLTFParser.prototype._invokeOne = function ( func ) {\n\n\t\tvar extensions = Object.values( this.plugins );\n\t\textensions.push( this );\n\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tvar result = func( extensions[ i ] );\n\n\t\t\tif ( result ) return result;\n\n\t\t}\n\n\t};\n\n\tGLTFParser.prototype._invokeAll = function ( func ) {\n\n\t\tvar extensions = Object.values( this.plugins );\n\t\textensions.unshift( this );\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tvar result = func( extensions[ i ] );\n\n\t\t\tif ( result ) pending.push( result );\n\n\t\t}\n\n\t\treturn pending;\n\n\t};\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise<Object3D|Material|THREE.Texture|AnimationClip|ArrayBuffer|Object>}\n\t */\n\tGLTFParser.prototype.getDependency = function ( type, index ) {\n\n\t\tvar cacheKey = type + ':' + index;\n\t\tvar dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this.loadNode( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMesh && ext.loadMesh( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadBufferView && ext.loadBufferView( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMaterial && ext.loadMaterial( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadTexture && ext.loadTexture( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this.loadAnimation( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t};\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise<Array<Object>>}\n\t */\n\tGLTFParser.prototype.getDependencies = function ( type ) {\n\n\t\tvar dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tvar parser = this;\n\t\t\tvar defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise<ArrayBuffer>}\n\t */\n\tGLTFParser.prototype.loadBuffer = function ( bufferIndex ) {\n\n\t\tvar bufferDef = this.json.buffers[ bufferIndex ];\n\t\tvar loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tvar options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise<ArrayBuffer>}\n\t */\n\tGLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) {\n\n\t\tvar bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tvar byteLength = bufferViewDef.byteLength || 0;\n\t\t\tvar byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise<BufferAttribute|InterleavedBufferAttribute>}\n\t */\n\tGLTFParser.prototype.loadAccessor = function ( accessorIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\t// Ignore empty accessors, which may be used to declare runtime\n\t\t\t// information about attributes coming from another source (e.g. Draco\n\t\t\t// compression extension).\n\t\t\treturn Promise.resolve( null );\n\n\t\t}\n\n\t\tvar pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tvar bufferView = bufferViews[ 0 ];\n\n\t\t\tvar itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tvar TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tvar elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tvar itemBytes = elementBytes * itemSize;\n\t\t\tvar byteOffset = accessorDef.byteOffset || 0;\n\t\t\tvar byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n\t\t\tvar normalized = accessorDef.normalized === true;\n\t\t\tvar array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\n\t\t\t\tvar ibSlice = Math.floor( byteOffset / byteStride );\n\t\t\t\tvar ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n\t\t\t\tvar ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tvar itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tvar TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tvar byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tvar byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tvar sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tvar sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise<THREE.Texture>}\n\t */\n\tGLTFParser.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar textureExtensions = textureDef.extensions || {};\n\n\t\tvar source;\n\n\t\tif ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) {\n\n\t\t\tsource = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ];\n\n\t\t} else {\n\n\t\t\tsource = json.images[ textureDef.source ];\n\n\t\t}\n\n\t\tvar loader;\n\n\t\tif ( source.uri ) {\n\n\t\t\tloader = options.manager.getHandler( source.uri );\n\n\t\t}\n\n\t\tif ( ! loader ) {\n\n\t\t\tloader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ]\n\t\t\t\t? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader\n\t\t\t\t: this.textureLoader;\n\n\t\t}\n\n\t\treturn this.loadTextureImage( textureIndex, source, loader );\n\n\t};\n\n\tGLTFParser.prototype.loadTextureImage = function ( textureIndex, source, loader ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar URL = self.URL || self.webkitURL;\n\n\t\tvar sourceURI = source.uri;\n\t\tvar isObjectURL = false;\n\t\tvar hasAlpha = true;\n\n\t\tif ( source.mimeType === 'image/jpeg' ) hasAlpha = false;\n\n\t\tif ( source.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tif ( source.mimeType === 'image/png' ) {\n\n\t\t\t\t\t// Inspect the PNG 'IHDR' chunk to determine whether the image could have an\n\t\t\t\t\t// alpha channel. This check is conservative — the image could have an alpha\n\t\t\t\t\t// channel with all values == 1, and the indexed type (colorType == 3) only\n\t\t\t\t\t// sometimes contains alpha.\n\t\t\t\t\t//\n\t\t\t\t\t// https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header\n\t\t\t\t\tvar colorType = new DataView( bufferView, 25, 1 ).getUint8( 0, false );\n\t\t\t\t\thasAlpha = colorType === 6 || colorType === 4 || colorType === 3;\n\n\t\t\t\t}\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tvar blob = new Blob( [ bufferView ], { type: source.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tvar onLoad = resolve;\n\n\t\t\t\tif ( loader.isImageBitmapLoader === true ) {\n\n\t\t\t\t\tonLoad = function ( imageBitmap ) {\n\n\t\t\t\t\t\tresolve( new CanvasTexture( imageBitmap ) );\n\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tloader.load( resolveURL( sourceURI, options.path ), onLoad, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.flipY = false;\n\n\t\t\tif ( textureDef.name ) texture.name = textureDef.name;\n\n\t\t\t// When there is definitely no alpha channel in the texture, set RGBFormat to save space.\n\t\t\tif ( ! hasAlpha ) texture.format = RGBFormat;\n\n\t\t\tvar samplers = json.samplers || {};\n\t\t\tvar sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\n\n\t\t\tparser.associations.set( texture, {\n\t\t\t\ttype: 'textures',\n\t\t\t\tindex: textureIndex\n\t\t\t} );\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.assignTexture = function ( materialParams, mapName, mapDef ) {\n\n\t\tvar parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\t// Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n\t\t\t// However, we will copy UV set 0 to UV set 1 on demand for aoMap\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord != 0 && ! ( mapName === 'aoMap' && mapDef.texCoord == 1 ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.' );\n\n\t\t\t}\n\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\n\n\t\t\t\tvar transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\n\n\t\t\t\tif ( transform ) {\n\n\t\t\t\t\tvar gltfReference = parser.associations.get( texture );\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\n\t\t\t\t\tparser.associations.set( texture, gltfReference );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmaterialParams[ mapName ] = texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\n\t * already has a material (generated from the glTF material options alone)\n\t * but reuse of the same glTF material may require multiple threejs materials\n\t * to accomodate different primitive types, defines, etc. New materials will\n\t * be created if necessary, and reused from a cache.\n\t * @param {Object3D} mesh Mesh, Line, or Points instance.\n\t */\n\tGLTFParser.prototype.assignFinalMaterial = function ( mesh ) {\n\n\t\tvar geometry = mesh.geometry;\n\t\tvar material = mesh.material;\n\n\t\tvar useVertexTangents = geometry.attributes.tangent !== undefined;\n\t\tvar useVertexColors = geometry.attributes.color !== undefined;\n\t\tvar useFlatShading = geometry.attributes.normal === undefined;\n\t\tvar useSkinning = mesh.isSkinnedMesh === true;\n\t\tvar useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0;\n\t\tvar useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined;\n\n\t\tif ( mesh.isPoints ) {\n\n\t\t\tvar cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\tvar pointsMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\tpointsMaterial = new PointsMaterial();\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\n\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = pointsMaterial;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tvar cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\tvar lineMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\tlineMaterial = new LineBasicMaterial();\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\n\t\t\t\tlineMaterial.color.copy( material.color );\n\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = lineMaterial;\n\n\t\t}\n\n\t\t// Clone the material if it will be modified\n\t\tif ( useVertexTangents || useVertexColors || useFlatShading || useSkinning || useMorphTargets ) {\n\n\t\t\tvar cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:';\n\t\t\tif ( useSkinning ) cacheKey += 'skinning:';\n\t\t\tif ( useVertexTangents ) cacheKey += 'vertex-tangents:';\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\t\t\tif ( useMorphTargets ) cacheKey += 'morph-targets:';\n\t\t\tif ( useMorphNormals ) cacheKey += 'morph-normals:';\n\n\t\t\tvar cachedMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\tcachedMaterial = material.clone();\n\n\t\t\t\tif ( useSkinning ) cachedMaterial.skinning = true;\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = true;\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\t\t\t\tif ( useMorphTargets ) cachedMaterial.morphTargets = true;\n\t\t\t\tif ( useMorphNormals ) cachedMaterial.morphNormals = true;\n\n\t\t\t\tif ( useVertexTangents ) {\n\n\t\t\t\t\tcachedMaterial.vertexTangents = true;\n\n\t\t\t\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\t\t\t\tif ( cachedMaterial.normalScale ) cachedMaterial.normalScale.y *= -1;\n\t\t\t\t\tif ( cachedMaterial.clearcoatNormalScale ) cachedMaterial.clearcoatNormalScale.y *= -1;\n\n\t\t\t\t}\n\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t\tthis.associations.set( cachedMaterial, this.associations.get( material ) );\n\n\t\t\t}\n\n\t\t\tmaterial = cachedMaterial;\n\n\t\t}\n\n\t\t// workarounds for mesh and geometry\n\n\t\tif ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {\n\n\t\t\tgeometry.setAttribute( 'uv2', geometry.attributes.uv );\n\n\t\t}\n\n\t\tmesh.material = material;\n\n\t};\n\n\tGLTFParser.prototype.getMaterialType = function ( /* materialIndex */ ) {\n\n\t\treturn MeshStandardMaterial;\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise<Material>}\n\t */\n\tGLTFParser.prototype.loadMaterial = function ( materialIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar materialDef = json.materials[ materialIndex ];\n\n\t\tvar materialType;\n\t\tvar materialParams = {};\n\t\tvar materialExtensions = materialDef.extensions || {};\n\n\t\tvar pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\n\n\t\t\tvar sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\n\t\t\tmaterialType = sgExtension.getMaterialType();\n\t\t\tpending.push( sgExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tvar kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType();\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialType = this._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.getMaterialType && ext.getMaterialType( materialIndex );\n\n\t\t\t} );\n\n\t\t\tpending.push( Promise.all( this._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams );\n\n\t\t\t} ) ) );\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = DoubleSide;\n\n\t\t}\n\n\t\tvar alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/17706\n\t\t\tmaterialParams.depthWrite = false;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\n\n\t\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\t\tmaterialParams.normalScale = new Vector2( 1, -1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tmaterialParams.normalScale.set( materialDef.normalTexture.scale, -materialDef.normalTexture.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tmaterialParams.emissive = new Color().fromArray( materialDef.emissiveFactor );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tvar material;\n\n\t\t\tif ( materialType === GLTFMeshStandardSGMaterial ) {\n\n\t\t\t\tmaterial = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\n\n\t\t\t} else {\n\n\t\t\t\tmaterial = new materialType( materialParams );\n\n\t\t\t}\n\n\t\t\tif ( materialDef.name ) material.name = materialDef.name;\n\n\t\t\t// baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n\t\t\tif ( material.map ) material.map.encoding = sRGBEncoding;\n\t\t\tif ( material.emissiveMap ) material.emissiveMap.encoding = sRGBEncoding;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tparser.associations.set( material, { type: 'materials', index: materialIndex } );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t};\n\n\t/** When Object3D instances are targeted by animation, they need unique names. */\n\tGLTFParser.prototype.createUniqueName = function ( originalName ) {\n\n\t\tvar sanitizedName = PropertyBinding.sanitizeNodeName( originalName || '' );\n\n\t\tvar name = sanitizedName;\n\n\t\tfor ( var i = 1; this.nodeNamesUsed[ name ]; ++ i ) {\n\n\t\t\tname = sanitizedName + '_' + i;\n\n\t\t}\n\n\t\tthis.nodeNamesUsed[ name ] = true;\n\n\t\treturn name;\n\n\t};\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t */\n\tfunction computeBounds( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar box = new Box3();\n\n\t\tif ( attributes.POSITION !== undefined ) {\n\n\t\t\tvar accessor = parser.json.accessors[ attributes.POSITION ];\n\n\t\t\tvar min = accessor.min;\n\t\t\tvar max = accessor.max;\n\n\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\tbox.set(\n\t\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\n\t\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar targets = primitiveDef.targets;\n\n\t\tif ( targets !== undefined ) {\n\n\t\t\tvar maxDisplacement = new Vector3();\n\t\t\tvar vector = new Vector3();\n\n\t\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\t\tvar accessor = parser.json.accessors[ target.POSITION ];\n\t\t\t\t\tvar min = accessor.min;\n\t\t\t\t\tvar max = accessor.max;\n\n\t\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\n\t\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\n\t\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\n\t\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\n\n\t\t\t\t\t\t// Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\n\t\t\t\t\t\t// to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\n\t\t\t\t\t\t// are used to implement key-frame animations and as such only two are active at a time - this results in very large\n\t\t\t\t\t\t// boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\n\t\t\t\t\t\tmaxDisplacement.max( vector );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\n\t\t\tbox.expandByVector( maxDisplacement );\n\n\t\t}\n\n\t\tgeometry.boundingBox = box;\n\n\t\tvar sphere = new Sphere();\n\n\t\tbox.getCenter( sphere.center );\n\t\tsphere.radius = box.min.distanceTo( box.max ) / 2;\n\n\t\tgeometry.boundingSphere = sphere;\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {GLTF.Primitive} primitiveDef\n\t * @param {GLTFParser} parser\n\t * @return {Promise<BufferGeometry>}\n\t */\n\tfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tvar pending = [];\n\n\t\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\n\n\t\t\treturn parser.getDependency( 'accessor', accessorIndex )\n\t\t\t\t.then( function ( accessor ) {\n\n\t\t\t\t\tgeometry.setAttribute( attributeName, accessor );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tfor ( var gltfAttributeName in attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\n\n\t\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\n\n\t\t}\n\n\t\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\t\tvar accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\n\n\t\t\t\tgeometry.setIndex( accessor );\n\n\t\t\t} );\n\n\t\t\tpending.push( accessor );\n\n\t\t}\n\n\t\tassignExtrasToUserData( geometry, primitiveDef );\n\n\t\tcomputeBounds( geometry, primitiveDef, parser );\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\treturn primitiveDef.targets !== undefined\n\t\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\n\t\t\t\t: geometry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * @param {BufferGeometry} geometry\n\t * @param {Number} drawMode\n\t * @return {BufferGeometry}\n\t */\n\tfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\t\tvar index = geometry.getIndex();\n\n\t\t// generate index if not present\n\n\t\tif ( index === null ) {\n\n\t\t\tvar indices = [];\n\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < position.count; i ++ ) {\n\n\t\t\t\t\tindices.push( i );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setIndex( indices );\n\t\t\t\tindex = geometry.getIndex();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar numberOfTriangles = index.count - 2;\n\t\tvar newIndices = [];\n\n\t\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t\t// gl.TRIANGLE_FAN\n\n\t\t\tfor ( var i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// gl.TRIANGLE_STRIP\n\n\t\t\tfor ( var i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t\t}\n\n\t\t// build final geometry\n\n\t\tvar newGeometry = geometry.clone();\n\t\tnewGeometry.setIndex( newIndices );\n\n\t\treturn newGeometry;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t *\n\t * @param {Array<GLTF.Primitive>} primitives\n\t * @return {Promise<Array<BufferGeometry>>}\n\t */\n\tGLTFParser.prototype.loadGeometries = function ( primitives ) {\n\n\t\tvar parser = this;\n\t\tvar extensions = this.extensions;\n\t\tvar cache = this.primitiveCache;\n\n\t\tfunction createDracoPrimitive( primitive ) {\n\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar primitive = primitives[ i ];\n\t\t\tvar cacheKey = createPrimitiveKey( primitive );\n\n\t\t\t// See if we've already created this geometry\n\t\t\tvar cached = cache[ cacheKey ];\n\n\t\t\tif ( cached ) {\n\n\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\tpending.push( cached.promise );\n\n\t\t\t} else {\n\n\t\t\t\tvar geometryPromise;\n\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\n\n\t\t\t\t}\n\n\t\t\t\t// Cache this geometry\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise<Group|Mesh|SkinnedMesh>}\n\t */\n\tGLTFParser.prototype.loadMesh = function ( meshIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\n\t\tvar meshDef = json.meshes[ meshIndex ];\n\t\tvar primitives = meshDef.primitives;\n\n\t\tvar pending = [];\n\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar material = primitives[ i ].material === undefined\n\t\t\t\t? createDefaultMaterial( this.cache )\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\n\n\t\t\tpending.push( material );\n\n\t\t}\n\n\t\tpending.push( parser.loadGeometries( primitives ) );\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tvar materials = results.slice( 0, results.length - 1 );\n\t\t\tvar geometries = results[ results.length - 1 ];\n\n\t\t\tvar meshes = [];\n\n\t\t\tfor ( var i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\tvar geometry = geometries[ i ];\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\t// 1. create Mesh\n\n\t\t\t\tvar mesh;\n\n\t\t\t\tvar material = materials[ i ];\n\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\n\t\t\t\t\t\t: new Mesh( geometry, material );\n\n\t\t\t\t\t// Fix double sided rendered models on certain mobile devices, see https://github.com/mrdoob/three.js/issues/20997#issuecomment-756082184\n\n\t\t\t\t\tif ( material.isMeshStandardMaterial === true &&\n\t\t\t\t\t\tmaterial.side === DoubleSide &&\n\t\t\t\t\t\tgeometry.getIndex() !== null &&\n\t\t\t\t\t\tgeometry.hasAttribute( 'position' ) === true &&\n\t\t\t\t\t\tgeometry.hasAttribute( 'normal' ) === true &&\n\t\t\t\t\t\tgeometry.hasAttribute( 'uv' ) === true &&\n\t\t\t\t\t\tgeometry.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\t\t\t\tgeometry.computeTangents();\n\t\t\t\t\t\tmaterial.vertexTangents = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true && ! mesh.geometry.attributes.skinWeight.normalized ) {\n\n\t\t\t\t\t\t// we normalize floating point skin weight array to fix malformed assets (see #15319)\n\t\t\t\t\t\t// it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\tmesh = new Line( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\tmesh = new Points( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = parser.createUniqueName( meshDef.name || ( 'mesh_' + meshIndex ) );\n\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\tif ( primitive.extensions ) addUnknownExtensionsToUserData( extensions, mesh, primitive );\n\n\t\t\t\tparser.assignFinalMaterial( mesh );\n\n\t\t\t\tmeshes.push( mesh );\n\n\t\t\t}\n\n\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t}\n\n\t\t\tvar group = new Group();\n\n\t\t\tfor ( var i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise<THREE.Camera>}\n\t */\n\tGLTFParser.prototype.loadCamera = function ( cameraIndex ) {\n\n\t\tvar camera;\n\t\tvar cameraDef = this.json.cameras[ cameraIndex ];\n\t\tvar params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name ) camera.name = this.createUniqueName( cameraDef.name );\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise<Object>}\n\t */\n\tGLTFParser.prototype.loadSkin = function ( skinIndex ) {\n\n\t\tvar skinDef = this.json.skins[ skinIndex ];\n\n\t\tvar skinEntry = { joints: skinDef.joints };\n\n\t\tif ( skinDef.inverseBindMatrices === undefined ) {\n\n\t\t\treturn Promise.resolve( skinEntry );\n\n\t\t}\n\n\t\treturn this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) {\n\n\t\t\tskinEntry.inverseBindMatrices = accessor;\n\n\t\t\treturn skinEntry;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise<AnimationClip>}\n\t */\n\tGLTFParser.prototype.loadAnimation = function ( animationIndex ) {\n\n\t\tvar json = this.json;\n\n\t\tvar animationDef = json.animations[ animationIndex ];\n\n\t\tvar pendingNodes = [];\n\t\tvar pendingInputAccessors = [];\n\t\tvar pendingOutputAccessors = [];\n\t\tvar pendingSamplers = [];\n\t\tvar pendingTargets = [];\n\n\t\tfor ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\tvar channel = animationDef.channels[ i ];\n\t\t\tvar sampler = animationDef.samplers[ channel.sampler ];\n\t\t\tvar target = channel.target;\n\t\t\tvar name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\t\t\tvar input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\tvar output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\n\t\t\tpendingSamplers.push( sampler );\n\t\t\tpendingTargets.push( target );\n\n\t\t}\n\n\t\treturn Promise.all( [\n\n\t\t\tPromise.all( pendingNodes ),\n\t\t\tPromise.all( pendingInputAccessors ),\n\t\t\tPromise.all( pendingOutputAccessors ),\n\t\t\tPromise.all( pendingSamplers ),\n\t\t\tPromise.all( pendingTargets )\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar nodes = dependencies[ 0 ];\n\t\t\tvar inputAccessors = dependencies[ 1 ];\n\t\t\tvar outputAccessors = dependencies[ 2 ];\n\t\t\tvar samplers = dependencies[ 3 ];\n\t\t\tvar targets = dependencies[ 4 ];\n\n\t\t\tvar tracks = [];\n\n\t\t\tfor ( var i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tvar node = nodes[ i ];\n\t\t\t\tvar inputAccessor = inputAccessors[ i ];\n\t\t\t\tvar outputAccessor = outputAccessors[ i ];\n\t\t\t\tvar sampler = samplers[ i ];\n\t\t\t\tvar target = targets[ i ];\n\n\t\t\t\tif ( node === undefined ) continue;\n\n\t\t\t\tnode.updateMatrix();\n\t\t\t\tnode.matrixAutoUpdate = true;\n\n\t\t\t\tvar TypedKeyframeTrack;\n\n\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.position:\n\t\t\t\t\tcase PATH_PROPERTIES.scale:\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tvar targetName = node.name ? node.name : node.uuid;\n\n\t\t\t\tvar interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\t\t\t\tvar targetNames = [];\n\n\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\t\t\t// Node may be a Group (glTF mesh with several primitives) or a Mesh.\n\t\t\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\t\t\tif ( object.isMesh === true && object.morphTargetInfluences ) {\n\n\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttargetNames.push( targetName );\n\n\t\t\t\t}\n\n\t\t\t\tvar outputArray = outputAccessor.array;\n\n\t\t\t\tif ( outputAccessor.normalized ) {\n\n\t\t\t\t\tvar scale;\n\n\t\t\t\t\tif ( outputArray.constructor === Int8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 127;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint8Array ) {\n\n\t\t\t\t\t\tscale = 1 / 255;\n\n\t\t\t\t\t} else if ( outputArray.constructor == Int16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 32767;\n\n\t\t\t\t\t} else if ( outputArray.constructor === Uint16Array ) {\n\n\t\t\t\t\t\tscale = 1 / 65535;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported output accessor component type.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar scaled = new Float32Array( outputArray.length );\n\n\t\t\t\t\tfor ( var j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t\t\t}\n\n\t\t\t\t\toutputArray = scaled;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar track = new TypedKeyframeTrack(\n\t\t\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\t\t\tinputAccessor.array,\n\t\t\t\t\t\toutputArray,\n\t\t\t\t\t\tinterpolation\n\t\t\t\t\t);\n\n\t\t\t\t\t// Override interpolation with custom factory method.\n\t\t\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\t\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t\t\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t\t\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t\t\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\t\t\t\t\treturn new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\t\t\t\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( track );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n\n\t\t\treturn new AnimationClip( name, undefined, tracks );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise<Object3D>}\n\t */\n\tGLTFParser.prototype.loadNode = function ( nodeIndex ) {\n\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar parser = this;\n\n\t\tvar nodeDef = json.nodes[ nodeIndex ];\n\n\t\t// reserve node's name before its dependencies, so the root has the intended name.\n\t\tvar nodeName = nodeDef.name ? parser.createUniqueName( nodeDef.name ) : '';\n\n\t\treturn ( function () {\n\n\t\t\tvar pending = [];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\n\n\t\t\t\t\tvar node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh );\n\n\t\t\t\t\t// if weights are provided on the node, override weights on the mesh.\n\t\t\t\t\tif ( nodeDef.weights !== undefined ) {\n\n\t\t\t\t\t\tnode.traverse( function ( o ) {\n\n\t\t\t\t\t\t\tif ( ! o.isMesh ) return;\n\n\t\t\t\t\t\t\tfor ( var i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\n\n\t\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tparser._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex );\n\n\t\t\t} ).forEach( function ( promise ) {\n\n\t\t\t\tpending.push( promise );\n\n\t\t\t} );\n\n\t\t\treturn Promise.all( pending );\n\n\t\t}() ).then( function ( objects ) {\n\n\t\t\tvar node;\n\n\t\t\t// .isBone isn't in glTF spec. See ._markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new Bone();\n\n\t\t\t} else if ( objects.length > 1 ) {\n\n\t\t\t\tnode = new Group();\n\n\t\t\t} else if ( objects.length === 1 ) {\n\n\t\t\t\tnode = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new Object3D();\n\n\t\t\t}\n\n\t\t\tif ( node !== objects[ 0 ] ) {\n\n\t\t\t\tfor ( var i = 0, il = objects.length; i < il; i ++ ) {\n\n\t\t\t\t\tnode.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name ) {\n\n\t\t\t\tnode.userData.name = nodeDef.name;\n\t\t\t\tnode.name = nodeName;\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tvar matrix = new Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix4( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tparser.associations.set( node, { type: 'nodes', index: nodeIndex } );\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise<Group>}\n\t */\n\tGLTFParser.prototype.loadScene = function () {\n\n\t\t// scene node hierachy builder\n\n\t\tfunction buildNodeHierachy( nodeId, parentObject, json, parser ) {\n\n\t\t\tvar nodeDef = json.nodes[ nodeId ];\n\n\t\t\treturn parser.getDependency( 'node', nodeId ).then( function ( node ) {\n\n\t\t\t\tif ( nodeDef.skin === undefined ) return node;\n\n\t\t\t\t// build skeleton here as well\n\n\t\t\t\tvar skinEntry;\n\n\t\t\t\treturn parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) {\n\n\t\t\t\t\tskinEntry = skin;\n\n\t\t\t\t\tvar pendingJoints = [];\n\n\t\t\t\t\tfor ( var i = 0, il = skinEntry.joints.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tpendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.all( pendingJoints );\n\n\t\t\t\t} ).then( function ( jointNodes ) {\n\n\t\t\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\t\t\tif ( ! mesh.isMesh ) return;\n\n\t\t\t\t\t\tvar bones = [];\n\t\t\t\t\t\tvar boneInverses = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = jointNodes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar jointNode = jointNodes[ j ];\n\n\t\t\t\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\t\t\t\tvar mat = new Matrix4();\n\n\t\t\t\t\t\t\t\tif ( skinEntry.inverseBindMatrices !== undefined ) {\n\n\t\t\t\t\t\t\t\t\tmat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[ j ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmesh.bind( new Skeleton( bones, boneInverses ), mesh.matrixWorld );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t} );\n\n\t\t\t} ).then( function ( node ) {\n\n\t\t\t\t// build node hierachy\n\n\t\t\t\tparentObject.add( node );\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( nodeDef.children ) {\n\n\t\t\t\t\tvar children = nodeDef.children;\n\n\t\t\t\t\tfor ( var i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar child = children[ i ];\n\t\t\t\t\t\tpending.push( buildNodeHierachy( child, node, json, parser ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn function loadScene( sceneIndex ) {\n\n\t\t\tvar json = this.json;\n\t\t\tvar extensions = this.extensions;\n\t\t\tvar sceneDef = this.json.scenes[ sceneIndex ];\n\t\t\tvar parser = this;\n\n\t\t\t// Loader returns Group, not Scene.\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\t\t\tvar scene = new Group();\n\t\t\tif ( sceneDef.name ) scene.name = parser.createUniqueName( sceneDef.name );\n\n\t\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\t\tvar nodeIds = sceneDef.nodes || [];\n\n\t\t\tvar pending = [];\n\n\t\t\tfor ( var i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\t\tpending.push( buildNodeHierachy( nodeIds[ i ], scene, json, parser ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\t\treturn scene;\n\n\t\t\t} );\n\n\t\t};\n\n\t}();\n\n\treturn GLTFLoader;\n\n} )();\n\nexport { GLTFLoader };\n","<template>\n <Renderer ref=\"renderer\" :orbit-ctrl=\"{ enableDamping: true, dampingFactor: 0.05 }\">\n <Camera ref=\"camera\" :position=\"cameraPosition\"></Camera>\n <Scene>\n <slot></slot>\n </Scene>\n </Renderer>\n</template>\n\n<script>\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';\n\nexport default {\n props: {\n src: String,\n cameraPosition: Object,\n },\n mounted() {\n this.renderer = this.$refs.renderer;\n\n const loader = new GLTFLoader();\n loader.load(this.src, (gltf) => {\n this.renderer.three.scene.add(gltf.scene);\n });\n },\n};\n</script>\n","<template>\n <Renderer ref=\"renderer\" :orbit-ctrl=\"{ enableDamping: true, dampingFactor: 0.05 }\">\n <Camera ref=\"camera\" :position=\"cameraPosition\"></Camera>\n <Scene>\n <slot></slot>\n </Scene>\n </Renderer>\n</template>\n\n<script>\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';\n\nexport default {\n props: {\n src: String,\n cameraPosition: Object,\n },\n mounted() {\n this.renderer = this.$refs.renderer;\n\n const loader = new GLTFLoader();\n loader.load(this.src, (gltf) => {\n this.renderer.three.scene.add(gltf.scene);\n });\n },\n};\n</script>\n","import * as TROIS from './index.js';\n\nexport const TroisJSVuePlugin = {\n install: (app) => {\n const comps = [\n 'Camera',\n 'OrthographicCamera',\n 'PerspectiveCamera',\n 'Renderer',\n 'Scene',\n 'Group',\n\n 'BoxGeometry',\n 'CircleGeometry',\n 'ConeGeometry',\n 'CylinderGeometry',\n 'DodecahedronGeometry',\n 'IcosahedronGeometry',\n 'LatheGeometry',\n 'OctahedronGeometry',\n 'PolyhedronGeometry',\n 'RingGeometry',\n 'SphereGeometry',\n 'TetrahedronGeometry',\n 'TorusGeometry',\n 'TorusKnotGeometry',\n 'TubeGeometry',\n\n 'AmbientLight',\n 'DirectionalLight',\n 'PointLight',\n 'SpotLight',\n\n 'BasicMaterial',\n 'LambertMaterial',\n 'MatcapMaterial',\n 'PhongMaterial',\n 'PhysicalMaterial',\n 'ShaderMaterial',\n 'StandardMaterial',\n 'SubSurfaceMaterial',\n 'ToonMaterial',\n\n 'Texture',\n 'CubeTexture',\n\n 'Box',\n 'Circle',\n 'Cone',\n 'Cylinder',\n 'Dodecahedron',\n 'Icosahedron',\n 'Mesh',\n 'Lathe',\n 'Octahedron',\n 'Plane',\n 'Polyhedron',\n 'Ring',\n 'Sphere',\n 'Tetrahedron',\n 'Text',\n 'Torus',\n 'TorusKnot',\n 'Tube',\n\n 'Gem',\n 'Image',\n 'InstancedMesh',\n 'MirrorMesh',\n 'RefractionMesh',\n 'Sprite',\n\n 'BokehPass',\n 'EffectComposer',\n 'FilmPass',\n 'FXAAPass',\n 'HalftonePass',\n 'RenderPass',\n 'SAOPass',\n 'SMAAPass',\n 'TiltShiftPass',\n 'UnrealBloomPass',\n 'ZoomBlurPass',\n\n 'GLTFViewer',\n ];\n\n comps.forEach(comp => {\n app.component(comp, TROIS[comp]);\n });\n },\n};\n"],"names":["const","let","super","s","ce","cf","de","df","ae","af","be","bf","ac","ad","bc","bd","arguments","i","l","shapes","il","morphAttribute","group","start","count","j","jl","name","attribute","newAttribute","key","attributeData","end","a","b","c","groupMaterial","iy","ix","buffer","type","array","influence","uniforms","shadow","shadowUniforms","pars","depthMaterial","mipmap","samples","glInternalFormat","joint","inputSource","controller","geometry","material","__webglFramebuffer","bone","distSq","distance","x","y","h","hl","ahole","k","bs","vert","t","z","face","base","segment","shapeHole","startIndex","endIndex","giveUpAt","readOffset","writeOffset","m","callback","theta","typedArray","bufferAttribute","interleavedBuffer","sIdx","sLen","lastIndex","lastObject","bindingsForPath","o","toRef","watch","this","inject","BoxBufferGeometry","CircleBufferGeometry","ConeBufferGeometry","CylinderBufferGeometry","DodecahedronBufferGeometry","IcosahedronBufferGeometry","LatheBufferGeometry","OctahedronBufferGeometry","PolyhedronBufferGeometry","RingBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","TorusBufferGeometry","TorusKnotBufferGeometry","TubeBufferGeometry","Light","Material","ShaderMaterial","TShaderMaterial","Mesh","PlaneBufferGeometry","TextBufferGeometry","TMesh","Pass","Image","Plane","Sphere","_m1","_obj","_offset","Geometry","Face3","f","fl","v","vl","faceNormal","vertexNormals","vertexUvs","gsap","Power4","_createBlock","_createVNode","_renderSlot"],"mappings":"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G,CAAC;AAC3D;AACA,CAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D;AACA,CAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D,CAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D;AACA,CAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D,CAAE,EAAE,EA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"} |