@needle-tools/three 0.145.4 → 0.146.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/three.cjs +32586 -35951
- package/build/three.js +32600 -35965
- package/build/three.min.js +6 -7
- package/build/three.module.js +1547 -1154
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +49 -66
- package/examples/js/animation/MMDAnimationHelper.js +66 -137
- package/examples/js/animation/MMDPhysics.js +70 -134
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +138 -405
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -54
- package/examples/js/controls/FlyControls.js +29 -55
- package/examples/js/controls/OrbitControls.js +85 -95
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +84 -169
- package/examples/js/csm/CSM.js +4 -39
- package/examples/js/csm/CSMFrustum.js +3 -9
- package/examples/js/csm/CSMHelper.js +24 -4
- package/examples/js/csm/CSMShader.js +2 -6
- package/examples/js/curves/CurveExtras.js +27 -27
- package/examples/js/curves/NURBSCurve.js +4 -16
- package/examples/js/curves/NURBSSurface.js +3 -9
- package/examples/js/curves/NURBSUtils.js +8 -45
- package/examples/js/effects/AnaglyphEffect.js +4 -18
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +26 -30
- package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
- package/examples/js/effects/PeppersGhostEffect.js +12 -39
- package/examples/js/effects/StereoEffect.js +0 -4
- package/examples/js/environments/RoomEnvironment.js +12 -10
- package/examples/js/exporters/ColladaExporter.js +48 -65
- package/examples/js/exporters/DRACOExporter.js +22 -22
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +143 -261
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +42 -33
- package/examples/js/exporters/PLYExporter.js +38 -33
- package/examples/js/exporters/STLExporter.js +5 -7
- package/examples/js/exporters/USDZExporter.js +110 -25
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +11 -6
- package/examples/js/geometries/DecalGeometry.js +53 -20
- package/examples/js/geometries/LightningStrike.js +54 -67
- package/examples/js/geometries/ParametricGeometries.js +8 -7
- package/examples/js/geometries/ParametricGeometry.js +25 -12
- package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
- package/examples/js/geometries/TeapotGeometry.js +54 -50
- package/examples/js/geometries/TextGeometry.js +6 -4
- package/examples/js/helpers/LightProbeHelper.js +1 -2
- package/examples/js/helpers/OctreeHelper.js +22 -20
- package/examples/js/helpers/PositionalAudioHelper.js +8 -6
- package/examples/js/helpers/RectAreaLightHelper.js +6 -7
- package/examples/js/helpers/VertexNormalsHelper.js +15 -13
- package/examples/js/helpers/VertexTangentsHelper.js +15 -9
- package/examples/js/helpers/ViewHelper.js +31 -16
- package/examples/js/interactive/HTMLMesh.js +22 -33
- package/examples/js/interactive/InteractiveGroup.js +6 -12
- package/examples/js/interactive/SelectionBox.js +3 -70
- package/examples/js/interactive/SelectionHelper.js +0 -8
- package/examples/js/lights/LightProbeGenerator.js +32 -39
- package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
- package/examples/js/lines/LineGeometry.js +3 -5
- package/examples/js/lines/LineMaterial.js +4 -11
- package/examples/js/lines/LineSegments2.js +38 -89
- package/examples/js/lines/LineSegmentsGeometry.js +7 -28
- package/examples/js/lines/Wireframe.js +2 -7
- package/examples/js/lines/WireframeGeometry2.js +3 -1
- package/examples/js/loaders/3DMLoader.js +58 -155
- package/examples/js/loaders/3MFLoader.js +72 -106
- package/examples/js/loaders/AMFLoader.js +0 -25
- package/examples/js/loaders/BVHLoader.js +44 -43
- package/examples/js/loaders/BasisTextureLoader.js +16 -46
- package/examples/js/loaders/ColladaLoader.js +201 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +29 -66
- package/examples/js/loaders/EXRLoader.js +67 -164
- package/examples/js/loaders/FBXLoader.js +286 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +354 -405
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +178 -289
- package/examples/js/loaders/LUT3dlLoader.js +7 -11
- package/examples/js/loaders/LUTCubeLoader.js +0 -8
- package/examples/js/loaders/LWOLoader.js +59 -124
- package/examples/js/loaders/LogLuvLoader.js +27 -77
- package/examples/js/loaders/LottieLoader.js +4 -4
- package/examples/js/loaders/MD2Loader.js +26 -27
- package/examples/js/loaders/MDDLoader.js +6 -10
- package/examples/js/loaders/MMDLoader.js +180 -189
- package/examples/js/loaders/MTLLoader.js +18 -47
- package/examples/js/loaders/MaterialXLoader.js +392 -0
- package/examples/js/loaders/NRRDLoader.js +44 -84
- package/examples/js/loaders/OBJLoader.js +50 -65
- package/examples/js/loaders/PCDLoader.js +34 -29
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +9 -39
- package/examples/js/loaders/PRWMLoader.js +11 -22
- package/examples/js/loaders/PVRLoader.js +7 -16
- package/examples/js/loaders/RGBELoader.js +36 -61
- package/examples/js/loaders/RGBMLoader.js +26 -87
- package/examples/js/loaders/STLLoader.js +20 -27
- package/examples/js/loaders/SVGLoader.js +361 -233
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +0 -1
- package/examples/js/loaders/TTFLoader.js +0 -8
- package/examples/js/loaders/TiltLoader.js +14 -15
- package/examples/js/loaders/VOXLoader.js +8 -16
- package/examples/js/loaders/VRMLLoader.js +243 -340
- package/examples/js/loaders/VTKLoader.js +101 -118
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
- package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
- package/examples/js/materials/MeshGouraudMaterial.js +15 -13
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -3
- package/examples/js/math/ConvexHull.js +183 -139
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/math/Lut.js +8 -15
- package/examples/js/math/MeshSurfaceSampler.js +6 -28
- package/examples/js/math/OBB.js +90 -49
- package/examples/js/math/Octree.js +2 -57
- package/examples/js/math/SimplexNoise.js +74 -88
- package/examples/js/misc/ConvexObjectBreaker.js +37 -48
- package/examples/js/misc/GPUComputationRenderer.js +14 -18
- package/examples/js/misc/Gyroscope.js +5 -9
- package/examples/js/misc/MD2Character.js +14 -23
- package/examples/js/misc/MD2CharacterComplex.js +73 -54
- package/examples/js/misc/MorphAnimMesh.js +0 -6
- package/examples/js/misc/MorphBlendMesh.js +3 -30
- package/examples/js/misc/ProgressiveLightMap.js +47 -43
- package/examples/js/misc/RollerCoaster.js +17 -24
- package/examples/js/misc/TubePainter.js +18 -12
- package/examples/js/misc/Volume.js +16 -45
- package/examples/js/misc/VolumeSlice.js +14 -24
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +56 -59
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +2 -14
- package/examples/js/objects/Lensflare.js +47 -38
- package/examples/js/objects/LightningStorm.js +10 -13
- package/examples/js/objects/MarchingCubes.js +80 -59
- package/examples/js/objects/Reflector.js +22 -20
- package/examples/js/objects/ReflectorForSSRPass.js +19 -23
- package/examples/js/objects/Refractor.js +52 -30
- package/examples/js/objects/ShadowMesh.js +1 -2
- package/examples/js/objects/Sky.js +2 -7
- package/examples/js/objects/Water.js +23 -18
- package/examples/js/objects/Water2.js +20 -19
- package/examples/js/physics/AmmoPhysics.js +23 -20
- package/examples/js/physics/OimoPhysics.js +19 -17
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
- package/examples/js/postprocessing/AfterimagePass.js +19 -12
- package/examples/js/postprocessing/BloomPass.js +38 -17
- package/examples/js/postprocessing/BokehPass.js +29 -12
- package/examples/js/postprocessing/ClearPass.js +1 -6
- package/examples/js/postprocessing/CubeTexturePass.js +12 -9
- package/examples/js/postprocessing/DotScreenPass.js +7 -5
- package/examples/js/postprocessing/EffectComposer.js +25 -32
- package/examples/js/postprocessing/FilmPass.js +7 -5
- package/examples/js/postprocessing/GlitchPass.js +10 -11
- package/examples/js/postprocessing/HalftonePass.js +9 -9
- package/examples/js/postprocessing/LUTPass.js +2 -15
- package/examples/js/postprocessing/MaskPass.js +20 -17
- package/examples/js/postprocessing/OutlinePass.js +45 -36
- package/examples/js/postprocessing/Pass.js +11 -14
- package/examples/js/postprocessing/RenderPass.js +3 -7
- package/examples/js/postprocessing/SAOPass.js +40 -32
- package/examples/js/postprocessing/SMAAPass.js +34 -17
- package/examples/js/postprocessing/SSAARenderPass.js +14 -14
- package/examples/js/postprocessing/SSAOPass.js +56 -42
- package/examples/js/postprocessing/SSRPass.js +78 -61
- package/examples/js/postprocessing/SavePass.js +14 -6
- package/examples/js/postprocessing/ShaderPass.js +9 -8
- package/examples/js/postprocessing/TAARenderPass.js +11 -9
- package/examples/js/postprocessing/TexturePass.js +7 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
- package/examples/js/renderers/CSS2DRenderer.js +2 -21
- package/examples/js/renderers/CSS3DRenderer.js +3 -24
- package/examples/js/renderers/Projector.js +29 -85
- package/examples/js/renderers/SVGRenderer.js +4 -50
- package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
- package/examples/js/shaders/AfterimageShader.js +3 -6
- package/examples/js/shaders/BasicShader.js +3 -6
- package/examples/js/shaders/BleachBypassShader.js +3 -6
- package/examples/js/shaders/BlendShader.js +3 -6
- package/examples/js/shaders/BokehShader.js +3 -6
- package/examples/js/shaders/BokehShader2.js +4 -13
- package/examples/js/shaders/BrightnessContrastShader.js +3 -6
- package/examples/js/shaders/ColorCorrectionShader.js +2 -6
- package/examples/js/shaders/ColorifyShader.js +2 -6
- package/examples/js/shaders/ConvolutionShader.js +5 -10
- package/examples/js/shaders/CopyShader.js +3 -6
- package/examples/js/shaders/DOFMipMapShader.js +3 -6
- package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
- package/examples/js/shaders/DigitalGlitch.js +3 -6
- package/examples/js/shaders/DotScreenShader.js +2 -6
- package/examples/js/shaders/FXAAShader.js +1 -3
- package/examples/js/shaders/FilmShader.js +3 -6
- package/examples/js/shaders/FocusShader.js +3 -6
- package/examples/js/shaders/FreiChenShader.js +2 -6
- package/examples/js/shaders/GammaCorrectionShader.js +3 -6
- package/examples/js/shaders/GodRaysShader.js +11 -24
- package/examples/js/shaders/HalftoneShader.js +3 -6
- package/examples/js/shaders/HorizontalBlurShader.js +3 -6
- package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
- package/examples/js/shaders/HueSaturationShader.js +3 -6
- package/examples/js/shaders/KaleidoShader.js +3 -6
- package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
- package/examples/js/shaders/LuminosityShader.js +3 -6
- package/examples/js/shaders/MMDToonShader.js +2 -6
- package/examples/js/shaders/MirrorShader.js +3 -6
- package/examples/js/shaders/NormalMapShader.js +2 -6
- package/examples/js/shaders/RGBShiftShader.js +3 -6
- package/examples/js/shaders/SAOShader.js +2 -6
- package/examples/js/shaders/SMAAShader.js +6 -18
- package/examples/js/shaders/SSAOShader.js +2 -6
- package/examples/js/shaders/SSRShader.js +6 -18
- package/examples/js/shaders/SepiaShader.js +3 -6
- package/examples/js/shaders/SobelOperatorShader.js +2 -6
- package/examples/js/shaders/TechnicolorShader.js +3 -6
- package/examples/js/shaders/ToneMapShader.js +3 -6
- package/examples/js/shaders/ToonShader.js +8 -24
- package/examples/js/shaders/TriangleBlurShader.js +2 -6
- package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
- package/examples/js/shaders/VelocityShader.js +126 -0
- package/examples/js/shaders/VerticalBlurShader.js +3 -6
- package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
- package/examples/js/shaders/VignetteShader.js +3 -6
- package/examples/js/shaders/VolumeShader.js +2 -6
- package/examples/js/shaders/WaterRefractionShader.js +2 -6
- package/examples/js/textures/FlakesTexture.js +0 -1
- package/examples/js/utils/BufferGeometryUtils.js +234 -168
- package/examples/js/utils/CameraUtils.js +5 -20
- package/examples/js/utils/GPUStatsPanel.js +3 -12
- package/examples/js/utils/GeometryCompressionUtils.js +19 -44
- package/examples/js/utils/GeometryUtils.js +13 -18
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +117 -6
- package/examples/js/utils/ShadowMapViewer.js +17 -14
- package/examples/js/utils/SkeletonUtils.js +13 -27
- package/examples/js/utils/UVsDebug.js +20 -12
- package/examples/js/utils/WorkerPool.js +1 -11
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/exporters/GLTFExporter.js +17 -131
- package/examples/jsm/exporters/USDZExporter.js +75 -19
- package/examples/jsm/interactive/HTMLMesh.js +2 -0
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +16 -2
- package/examples/jsm/loaders/GLTFLoader.js +204 -377
- package/examples/jsm/loaders/KTX2Loader.js +68 -29
- package/examples/jsm/loaders/LDrawLoader.js +14 -13
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/PCDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +68 -16
- package/examples/jsm/loaders/SVGLoader.js +227 -14
- package/examples/jsm/loaders/USDZLoader.js +31 -16
- package/examples/jsm/nodes/Nodes.js +14 -2
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeVarying.js +7 -4
- package/examples/jsm/nodes/core/VaryingNode.js +6 -4
- package/examples/jsm/nodes/core/constants.js +13 -13
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
- package/examples/jsm/nodes/materials/Materials.js +9 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -0
- package/examples/jsm/nodes/math/OperatorNode.js +6 -1
- package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +8 -2
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +1 -1
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
- package/examples/jsm/postprocessing/BloomPass.js +22 -3
- package/examples/jsm/postprocessing/BokehPass.js +18 -4
- package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
- package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
- package/examples/jsm/postprocessing/EffectComposer.js +9 -0
- package/examples/jsm/postprocessing/FilmPass.js +8 -0
- package/examples/jsm/postprocessing/GlitchPass.js +13 -1
- package/examples/jsm/postprocessing/HalftonePass.js +8 -0
- package/examples/jsm/postprocessing/OutlinePass.js +10 -0
- package/examples/jsm/postprocessing/Pass.js +2 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
- package/examples/jsm/postprocessing/SAOPass.js +20 -0
- package/examples/jsm/postprocessing/SMAAPass.js +16 -0
- package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
- package/examples/jsm/postprocessing/SavePass.js +17 -1
- package/examples/jsm/postprocessing/ShaderPass.js +8 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
- package/examples/jsm/postprocessing/TexturePass.js +8 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
- package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/utils/TextureUtils.js +85 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
- package/package.json +11 -12
- package/src/Three.js +1 -0
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -14
- package/src/constants.js +1 -1
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/extras/Earcut.js +67 -67
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +2 -2
- package/src/loaders/FileLoader.js +4 -1
- package/src/loaders/ObjectLoader.js +5 -1
- package/src/materials/Material.js +1 -1
- package/src/math/Color.js +5 -5
- package/src/math/Matrix3.js +53 -18
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +19 -26
- package/src/objects/InstancedMesh.js +7 -0
- package/src/objects/LOD.js +25 -6
- package/src/renderers/WebGL3DRenderTarget.js +1 -1
- package/src/renderers/WebGLArrayRenderTarget.js +1 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -1
- package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
- package/src/renderers/WebGLRenderTarget.js +1 -1
- package/src/renderers/WebGLRenderer.js +36 -62
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk.js +3 -0
- package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
- package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +20 -6
- package/src/renderers/shaders/UniformsLib.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +15 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +15 -7
- package/src/renderers/webgl/WebGLLights.js +0 -4
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -1
- package/src/renderers/webgl/WebGLState.js +31 -1
- package/src/renderers/webgl/WebGLTextures.js +71 -18
- package/src/renderers/webgl/WebGLUniforms.js +116 -20
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +85 -3
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/shaders/PixelShader.js +0 -44
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
super( manager );
|
|
8
8
|
|
|
9
9
|
}
|
|
10
|
-
|
|
11
10
|
parse( buffer, loadMipmaps ) {
|
|
12
11
|
|
|
13
12
|
const dds = {
|
|
@@ -16,19 +15,25 @@
|
|
|
16
15
|
height: 0,
|
|
17
16
|
format: null,
|
|
18
17
|
mipmapCount: 1
|
|
19
|
-
};
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// Adapted from @toji's DDS utils
|
|
20
21
|
// https://github.com/toji/webgl-texture-utils/blob/master/texture-util/dds.js
|
|
22
|
+
|
|
21
23
|
// All values and structures referenced from:
|
|
22
24
|
// http://msdn.microsoft.com/en-us/library/bb943991.aspx/
|
|
23
25
|
|
|
24
|
-
const DDS_MAGIC = 0x20534444;
|
|
26
|
+
const DDS_MAGIC = 0x20534444;
|
|
27
|
+
|
|
28
|
+
// const DDSD_CAPS = 0x1;
|
|
25
29
|
// const DDSD_HEIGHT = 0x2;
|
|
26
30
|
// const DDSD_WIDTH = 0x4;
|
|
27
31
|
// const DDSD_PITCH = 0x8;
|
|
28
32
|
// const DDSD_PIXELFORMAT = 0x1000;
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
const DDSD_MIPMAPCOUNT = 0x20000;
|
|
34
|
+
// const DDSD_LINEARSIZE = 0x80000;
|
|
31
35
|
// const DDSD_DEPTH = 0x800000;
|
|
36
|
+
|
|
32
37
|
// const DDSCAPS_COMPLEX = 0x8;
|
|
33
38
|
// const DDSCAPS_MIPMAP = 0x400000;
|
|
34
39
|
// const DDSCAPS_TEXTURE = 0x1000;
|
|
@@ -39,7 +44,9 @@
|
|
|
39
44
|
const DDSCAPS2_CUBEMAP_POSITIVEY = 0x1000;
|
|
40
45
|
const DDSCAPS2_CUBEMAP_NEGATIVEY = 0x2000;
|
|
41
46
|
const DDSCAPS2_CUBEMAP_POSITIVEZ = 0x4000;
|
|
42
|
-
const DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000;
|
|
47
|
+
const DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000;
|
|
48
|
+
// const DDSCAPS2_VOLUME = 0x200000;
|
|
49
|
+
|
|
43
50
|
// const DDPF_ALPHAPIXELS = 0x1;
|
|
44
51
|
// const DDPF_ALPHA = 0x2;
|
|
45
52
|
// const DDPF_FOURCC = 0x4;
|
|
@@ -66,7 +73,6 @@
|
|
|
66
73
|
const byteArray = new Uint8Array( dataLength );
|
|
67
74
|
let dst = 0;
|
|
68
75
|
let src = 0;
|
|
69
|
-
|
|
70
76
|
for ( let y = 0; y < height; y ++ ) {
|
|
71
77
|
|
|
72
78
|
for ( let x = 0; x < width; x ++ ) {
|
|
@@ -81,13 +87,10 @@
|
|
|
81
87
|
src ++;
|
|
82
88
|
byteArray[ dst ] = r;
|
|
83
89
|
dst ++; //r
|
|
84
|
-
|
|
85
90
|
byteArray[ dst ] = g;
|
|
86
91
|
dst ++; //g
|
|
87
|
-
|
|
88
92
|
byteArray[ dst ] = b;
|
|
89
93
|
dst ++; //b
|
|
90
|
-
|
|
91
94
|
byteArray[ dst ] = a;
|
|
92
95
|
dst ++; //a
|
|
93
96
|
|
|
@@ -104,6 +107,7 @@
|
|
|
104
107
|
const FOURCC_DXT5 = fourCCToInt32( 'DXT5' );
|
|
105
108
|
const FOURCC_ETC1 = fourCCToInt32( 'ETC1' );
|
|
106
109
|
const headerLengthInt = 31; // The header length in 32 bit ints
|
|
110
|
+
|
|
107
111
|
// Offsets into the header array
|
|
108
112
|
|
|
109
113
|
const off_magic = 0;
|
|
@@ -111,21 +115,24 @@
|
|
|
111
115
|
const off_flags = 2;
|
|
112
116
|
const off_height = 3;
|
|
113
117
|
const off_width = 4;
|
|
114
|
-
const off_mipmapCount = 7;
|
|
118
|
+
const off_mipmapCount = 7;
|
|
115
119
|
|
|
120
|
+
// const off_pfFlags = 20;
|
|
116
121
|
const off_pfFourCC = 21;
|
|
117
122
|
const off_RGBBitCount = 22;
|
|
118
123
|
const off_RBitMask = 23;
|
|
119
124
|
const off_GBitMask = 24;
|
|
120
125
|
const off_BBitMask = 25;
|
|
121
|
-
const off_ABitMask = 26;
|
|
126
|
+
const off_ABitMask = 26;
|
|
122
127
|
|
|
123
|
-
|
|
128
|
+
// const off_caps = 27;
|
|
129
|
+
const off_caps2 = 28;
|
|
130
|
+
// const off_caps3 = 29;
|
|
124
131
|
// const off_caps4 = 30;
|
|
132
|
+
|
|
125
133
|
// Parse header
|
|
126
134
|
|
|
127
135
|
const header = new Int32Array( buffer, 0, headerLengthInt );
|
|
128
|
-
|
|
129
136
|
if ( header[ off_magic ] !== DDS_MAGIC ) {
|
|
130
137
|
|
|
131
138
|
console.error( 'THREE.DDSLoader.parse: Invalid magic number in DDS header.' );
|
|
@@ -136,29 +143,24 @@
|
|
|
136
143
|
let blockBytes;
|
|
137
144
|
const fourCC = header[ off_pfFourCC ];
|
|
138
145
|
let isRGBAUncompressed = false;
|
|
139
|
-
|
|
140
146
|
switch ( fourCC ) {
|
|
141
147
|
|
|
142
148
|
case FOURCC_DXT1:
|
|
143
149
|
blockBytes = 8;
|
|
144
150
|
dds.format = THREE.RGB_S3TC_DXT1_Format;
|
|
145
151
|
break;
|
|
146
|
-
|
|
147
152
|
case FOURCC_DXT3:
|
|
148
153
|
blockBytes = 16;
|
|
149
154
|
dds.format = THREE.RGBA_S3TC_DXT3_Format;
|
|
150
155
|
break;
|
|
151
|
-
|
|
152
156
|
case FOURCC_DXT5:
|
|
153
157
|
blockBytes = 16;
|
|
154
158
|
dds.format = THREE.RGBA_S3TC_DXT5_Format;
|
|
155
159
|
break;
|
|
156
|
-
|
|
157
160
|
case FOURCC_ETC1:
|
|
158
161
|
blockBytes = 8;
|
|
159
162
|
dds.format = THREE.RGB_ETC1_Format;
|
|
160
163
|
break;
|
|
161
|
-
|
|
162
164
|
default:
|
|
163
165
|
if ( header[ off_RGBBitCount ] === 32 && header[ off_RBitMask ] & 0xff0000 && header[ off_GBitMask ] & 0xff00 && header[ off_BBitMask ] & 0xff && header[ off_ABitMask ] & 0xff000000 ) {
|
|
164
166
|
|
|
@@ -176,7 +178,6 @@
|
|
|
176
178
|
}
|
|
177
179
|
|
|
178
180
|
dds.mipmapCount = 1;
|
|
179
|
-
|
|
180
181
|
if ( header[ off_flags ] & DDSD_MIPMAPCOUNT && loadMipmaps !== false ) {
|
|
181
182
|
|
|
182
183
|
dds.mipmapCount = Math.max( 1, header[ off_mipmapCount ] );
|
|
@@ -185,7 +186,6 @@
|
|
|
185
186
|
|
|
186
187
|
const caps2 = header[ off_caps2 ];
|
|
187
188
|
dds.isCubemap = caps2 & DDSCAPS2_CUBEMAP ? true : false;
|
|
188
|
-
|
|
189
189
|
if ( dds.isCubemap && ( ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEX ) || ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEX ) || ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEY ) || ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEY ) || ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEZ ) || ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEZ ) ) ) {
|
|
190
190
|
|
|
191
191
|
console.error( 'THREE.DDSLoader.parse: Incomplete cubemap faces' );
|
|
@@ -195,19 +195,18 @@
|
|
|
195
195
|
|
|
196
196
|
dds.width = header[ off_width ];
|
|
197
197
|
dds.height = header[ off_height ];
|
|
198
|
-
let dataOffset = header[ off_size ] + 4;
|
|
198
|
+
let dataOffset = header[ off_size ] + 4;
|
|
199
199
|
|
|
200
|
-
|
|
200
|
+
// Extract mipmaps buffers
|
|
201
201
|
|
|
202
|
+
const faces = dds.isCubemap ? 6 : 1;
|
|
202
203
|
for ( let face = 0; face < faces; face ++ ) {
|
|
203
204
|
|
|
204
205
|
let width = dds.width;
|
|
205
206
|
let height = dds.height;
|
|
206
|
-
|
|
207
207
|
for ( let i = 0; i < dds.mipmapCount; i ++ ) {
|
|
208
208
|
|
|
209
209
|
let byteArray, dataLength;
|
|
210
|
-
|
|
211
210
|
if ( isRGBAUncompressed ) {
|
|
212
211
|
|
|
213
212
|
byteArray = loadARGBMip( buffer, dataOffset, width, height );
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
3
|
const _taskCache = new WeakMap();
|
|
4
|
-
|
|
5
4
|
class DRACOLoader extends THREE.Loader {
|
|
6
5
|
|
|
7
6
|
constructor( manager ) {
|
|
@@ -29,28 +28,24 @@
|
|
|
29
28
|
};
|
|
30
29
|
|
|
31
30
|
}
|
|
32
|
-
|
|
33
31
|
setDecoderPath( path ) {
|
|
34
32
|
|
|
35
33
|
this.decoderPath = path;
|
|
36
34
|
return this;
|
|
37
35
|
|
|
38
36
|
}
|
|
39
|
-
|
|
40
37
|
setDecoderConfig( config ) {
|
|
41
38
|
|
|
42
39
|
this.decoderConfig = config;
|
|
43
40
|
return this;
|
|
44
41
|
|
|
45
42
|
}
|
|
46
|
-
|
|
47
43
|
setWorkerLimit( workerLimit ) {
|
|
48
44
|
|
|
49
45
|
this.workerLimit = workerLimit;
|
|
50
46
|
return this;
|
|
51
47
|
|
|
52
48
|
}
|
|
53
|
-
|
|
54
49
|
load( url, onLoad, onProgress, onError ) {
|
|
55
50
|
|
|
56
51
|
const loader = new THREE.FileLoader( this.manager );
|
|
@@ -65,7 +60,6 @@
|
|
|
65
60
|
}, onProgress, onError );
|
|
66
61
|
|
|
67
62
|
}
|
|
68
|
-
|
|
69
63
|
decodeDracoFile( buffer, callback, attributeIDs, attributeTypes ) {
|
|
70
64
|
|
|
71
65
|
const taskConfig = {
|
|
@@ -76,16 +70,15 @@
|
|
|
76
70
|
return this.decodeGeometry( buffer, taskConfig ).then( callback );
|
|
77
71
|
|
|
78
72
|
}
|
|
79
|
-
|
|
80
73
|
decodeGeometry( buffer, taskConfig ) {
|
|
81
74
|
|
|
82
|
-
const taskKey = JSON.stringify( taskConfig );
|
|
83
|
-
// again from this thread.
|
|
75
|
+
const taskKey = JSON.stringify( taskConfig );
|
|
84
76
|
|
|
77
|
+
// Check for an existing task using this buffer. A transferred buffer cannot be transferred
|
|
78
|
+
// again from this thread.
|
|
85
79
|
if ( _taskCache.has( buffer ) ) {
|
|
86
80
|
|
|
87
81
|
const cachedTask = _taskCache.get( buffer );
|
|
88
|
-
|
|
89
82
|
if ( cachedTask.key === taskKey ) {
|
|
90
83
|
|
|
91
84
|
return cachedTask.promise;
|
|
@@ -100,14 +93,16 @@
|
|
|
100
93
|
|
|
101
94
|
}
|
|
102
95
|
|
|
103
|
-
}
|
|
96
|
+
}
|
|
104
97
|
|
|
98
|
+
//
|
|
105
99
|
|
|
106
100
|
let worker;
|
|
107
101
|
const taskID = this.workerNextTaskID ++;
|
|
108
|
-
const taskCost = buffer.byteLength;
|
|
109
|
-
// when the task completes.
|
|
102
|
+
const taskCost = buffer.byteLength;
|
|
110
103
|
|
|
104
|
+
// Obtain a worker and assign a task, and construct a geometry instance
|
|
105
|
+
// when the task completes.
|
|
111
106
|
const geometryPending = this._getWorker( taskID, taskCost ).then( _worker => {
|
|
112
107
|
|
|
113
108
|
worker = _worker;
|
|
@@ -122,37 +117,39 @@
|
|
|
122
117
|
id: taskID,
|
|
123
118
|
taskConfig,
|
|
124
119
|
buffer
|
|
125
|
-
}, [ buffer ] );
|
|
120
|
+
}, [ buffer ] );
|
|
126
121
|
|
|
127
|
-
|
|
122
|
+
// this.debug();
|
|
128
123
|
|
|
129
|
-
|
|
130
|
-
// Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)
|
|
124
|
+
} );
|
|
131
125
|
|
|
126
|
+
} ).then( message => this._createGeometry( message.geometry ) );
|
|
132
127
|
|
|
128
|
+
// Remove task from the task list.
|
|
129
|
+
// Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)
|
|
133
130
|
geometryPending.catch( () => true ).then( () => {
|
|
134
131
|
|
|
135
132
|
if ( worker && taskID ) {
|
|
136
133
|
|
|
137
|
-
this._releaseTask( worker, taskID );
|
|
134
|
+
this._releaseTask( worker, taskID );
|
|
135
|
+
|
|
136
|
+
// this.debug();
|
|
138
137
|
|
|
139
138
|
}
|
|
140
139
|
|
|
141
|
-
} );
|
|
140
|
+
} );
|
|
142
141
|
|
|
142
|
+
// Cache the task result.
|
|
143
143
|
_taskCache.set( buffer, {
|
|
144
144
|
key: taskKey,
|
|
145
145
|
promise: geometryPending
|
|
146
146
|
} );
|
|
147
|
-
|
|
148
147
|
return geometryPending;
|
|
149
148
|
|
|
150
149
|
}
|
|
151
|
-
|
|
152
150
|
_createGeometry( geometryData ) {
|
|
153
151
|
|
|
154
152
|
const geometry = new THREE.BufferGeometry();
|
|
155
|
-
|
|
156
153
|
if ( geometryData.index ) {
|
|
157
154
|
|
|
158
155
|
geometry.setIndex( new THREE.BufferAttribute( geometryData.index.array, 1 ) );
|
|
@@ -172,7 +169,6 @@
|
|
|
172
169
|
return geometry;
|
|
173
170
|
|
|
174
171
|
}
|
|
175
|
-
|
|
176
172
|
_loadLibrary( url, responseType ) {
|
|
177
173
|
|
|
178
174
|
const loader = new THREE.FileLoader( this.manager );
|
|
@@ -186,21 +182,17 @@
|
|
|
186
182
|
} );
|
|
187
183
|
|
|
188
184
|
}
|
|
189
|
-
|
|
190
185
|
preload() {
|
|
191
186
|
|
|
192
187
|
this._initDecoder();
|
|
193
|
-
|
|
194
188
|
return this;
|
|
195
189
|
|
|
196
190
|
}
|
|
197
|
-
|
|
198
191
|
_initDecoder() {
|
|
199
192
|
|
|
200
193
|
if ( this.decoderPending ) return this.decoderPending;
|
|
201
194
|
const useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js';
|
|
202
195
|
const librariesPending = [];
|
|
203
|
-
|
|
204
196
|
if ( useJS ) {
|
|
205
197
|
|
|
206
198
|
librariesPending.push( this._loadLibrary( 'draco_decoder.js', 'text' ) );
|
|
@@ -215,7 +207,6 @@
|
|
|
215
207
|
this.decoderPending = Promise.all( librariesPending ).then( libraries => {
|
|
216
208
|
|
|
217
209
|
const jsContent = libraries[ 0 ];
|
|
218
|
-
|
|
219
210
|
if ( ! useJS ) {
|
|
220
211
|
|
|
221
212
|
this.decoderConfig.wasmBinary = libraries[ 1 ];
|
|
@@ -230,7 +221,6 @@
|
|
|
230
221
|
return this.decoderPending;
|
|
231
222
|
|
|
232
223
|
}
|
|
233
|
-
|
|
234
224
|
_getWorker( taskID, taskCost ) {
|
|
235
225
|
|
|
236
226
|
return this._initDecoder().then( () => {
|
|
@@ -245,23 +235,17 @@
|
|
|
245
235
|
type: 'init',
|
|
246
236
|
decoderConfig: this.decoderConfig
|
|
247
237
|
} );
|
|
248
|
-
|
|
249
238
|
worker.onmessage = function ( e ) {
|
|
250
239
|
|
|
251
240
|
const message = e.data;
|
|
252
|
-
|
|
253
241
|
switch ( message.type ) {
|
|
254
242
|
|
|
255
243
|
case 'decode':
|
|
256
244
|
worker._callbacks[ message.id ].resolve( message );
|
|
257
|
-
|
|
258
245
|
break;
|
|
259
|
-
|
|
260
246
|
case 'error':
|
|
261
247
|
worker._callbacks[ message.id ].reject( message );
|
|
262
|
-
|
|
263
248
|
break;
|
|
264
|
-
|
|
265
249
|
default:
|
|
266
250
|
console.error( 'THREE.DRACOLoader: Unexpected message, "' + message.type + '"' );
|
|
267
251
|
|
|
@@ -289,7 +273,6 @@
|
|
|
289
273
|
} );
|
|
290
274
|
|
|
291
275
|
}
|
|
292
|
-
|
|
293
276
|
_releaseTask( worker, taskID ) {
|
|
294
277
|
|
|
295
278
|
worker._taskLoad -= worker._taskCosts[ taskID ];
|
|
@@ -297,13 +280,11 @@
|
|
|
297
280
|
delete worker._taskCosts[ taskID ];
|
|
298
281
|
|
|
299
282
|
}
|
|
300
|
-
|
|
301
283
|
debug() {
|
|
302
284
|
|
|
303
285
|
console.log( 'Task load: ', this.workerPool.map( worker => worker._taskLoad ) );
|
|
304
286
|
|
|
305
287
|
}
|
|
306
|
-
|
|
307
288
|
dispose() {
|
|
308
289
|
|
|
309
290
|
for ( let i = 0; i < this.workerPool.length; ++ i ) {
|
|
@@ -318,25 +299,21 @@
|
|
|
318
299
|
}
|
|
319
300
|
|
|
320
301
|
}
|
|
321
|
-
/* WEB WORKER */
|
|
322
302
|
|
|
303
|
+
/* WEB WORKER */
|
|
323
304
|
|
|
324
305
|
function DRACOWorker() {
|
|
325
306
|
|
|
326
307
|
let decoderConfig;
|
|
327
308
|
let decoderPending;
|
|
328
|
-
|
|
329
309
|
onmessage = function ( e ) {
|
|
330
310
|
|
|
331
311
|
const message = e.data;
|
|
332
|
-
|
|
333
312
|
switch ( message.type ) {
|
|
334
313
|
|
|
335
314
|
case 'init':
|
|
336
315
|
decoderConfig = message.decoderConfig;
|
|
337
|
-
decoderPending = new Promise( function ( resolve
|
|
338
|
-
/*, reject*/
|
|
339
|
-
) {
|
|
316
|
+
decoderPending = new Promise( function ( resolve /*, reject*/ ) {
|
|
340
317
|
|
|
341
318
|
decoderConfig.onModuleLoaded = function ( draco ) {
|
|
342
319
|
|
|
@@ -350,8 +327,8 @@
|
|
|
350
327
|
DracoDecoderModule( decoderConfig ); // eslint-disable-line no-undef
|
|
351
328
|
|
|
352
329
|
} );
|
|
353
|
-
break;
|
|
354
330
|
|
|
331
|
+
break;
|
|
355
332
|
case 'decode':
|
|
356
333
|
const buffer = message.buffer;
|
|
357
334
|
const taskConfig = message.taskConfig;
|
|
@@ -361,7 +338,6 @@
|
|
|
361
338
|
const decoder = new draco.Decoder();
|
|
362
339
|
const decoderBuffer = new draco.DecoderBuffer();
|
|
363
340
|
decoderBuffer.Init( new Int8Array( buffer ), buffer.byteLength );
|
|
364
|
-
|
|
365
341
|
try {
|
|
366
342
|
|
|
367
343
|
const geometry = decodeGeometry( draco, decoder, decoderBuffer, taskConfig );
|
|
@@ -403,7 +379,6 @@
|
|
|
403
379
|
let dracoGeometry;
|
|
404
380
|
let decodingStatus;
|
|
405
381
|
const geometryType = decoder.GetEncodedGeometryType( decoderBuffer );
|
|
406
|
-
|
|
407
382
|
if ( geometryType === draco.TRIANGULAR_MESH ) {
|
|
408
383
|
|
|
409
384
|
dracoGeometry = new draco.Mesh();
|
|
@@ -429,17 +404,19 @@
|
|
|
429
404
|
const geometry = {
|
|
430
405
|
index: null,
|
|
431
406
|
attributes: []
|
|
432
|
-
};
|
|
407
|
+
};
|
|
433
408
|
|
|
409
|
+
// Gather all vertex attributes.
|
|
434
410
|
for ( const attributeName in attributeIDs ) {
|
|
435
411
|
|
|
436
412
|
const attributeType = self[ attributeTypes[ attributeName ] ];
|
|
437
413
|
let attribute;
|
|
438
|
-
let attributeID;
|
|
414
|
+
let attributeID;
|
|
415
|
+
|
|
416
|
+
// A Draco file may be created with default vertex attributes, whose attribute IDs
|
|
439
417
|
// are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively,
|
|
440
418
|
// a Draco file may contain a custom set of attributes, identified by known unique
|
|
441
419
|
// IDs. glTF files always do the latter, and `.drc` files typically do the former.
|
|
442
|
-
|
|
443
420
|
if ( taskConfig.useUniqueIDs ) {
|
|
444
421
|
|
|
445
422
|
attributeID = attributeIDs[ attributeName ];
|
|
@@ -455,9 +432,9 @@
|
|
|
455
432
|
|
|
456
433
|
geometry.attributes.push( decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) );
|
|
457
434
|
|
|
458
|
-
}
|
|
459
|
-
|
|
435
|
+
}
|
|
460
436
|
|
|
437
|
+
// Add index.
|
|
461
438
|
if ( geometryType === draco.TRIANGULAR_MESH ) {
|
|
462
439
|
|
|
463
440
|
geometry.index = decodeIndex( draco, decoder, dracoGeometry );
|
|
@@ -474,14 +451,10 @@
|
|
|
474
451
|
const numFaces = dracoGeometry.num_faces();
|
|
475
452
|
const numIndices = numFaces * 3;
|
|
476
453
|
const byteLength = numIndices * 4;
|
|
477
|
-
|
|
478
454
|
const ptr = draco._malloc( byteLength );
|
|
479
|
-
|
|
480
455
|
decoder.GetTrianglesUInt32Array( dracoGeometry, byteLength, ptr );
|
|
481
456
|
const index = new Uint32Array( draco.HEAPF32.buffer, ptr, numIndices ).slice();
|
|
482
|
-
|
|
483
457
|
draco._free( ptr );
|
|
484
|
-
|
|
485
458
|
return {
|
|
486
459
|
array: index,
|
|
487
460
|
itemSize: 1
|
|
@@ -496,14 +469,10 @@
|
|
|
496
469
|
const numValues = numPoints * numComponents;
|
|
497
470
|
const byteLength = numValues * attributeType.BYTES_PER_ELEMENT;
|
|
498
471
|
const dataType = getDracoDataType( draco, attributeType );
|
|
499
|
-
|
|
500
472
|
const ptr = draco._malloc( byteLength );
|
|
501
|
-
|
|
502
473
|
decoder.GetAttributeDataArrayForAllPoints( dracoGeometry, attribute, dataType, byteLength, ptr );
|
|
503
474
|
const array = new attributeType( draco.HEAPF32.buffer, ptr, numValues ).slice();
|
|
504
|
-
|
|
505
475
|
draco._free( ptr );
|
|
506
|
-
|
|
507
476
|
return {
|
|
508
477
|
name: attributeName,
|
|
509
478
|
array: array,
|
|
@@ -518,22 +487,16 @@
|
|
|
518
487
|
|
|
519
488
|
case Float32Array:
|
|
520
489
|
return draco.DT_FLOAT32;
|
|
521
|
-
|
|
522
490
|
case Int8Array:
|
|
523
491
|
return draco.DT_INT8;
|
|
524
|
-
|
|
525
492
|
case Int16Array:
|
|
526
493
|
return draco.DT_INT16;
|
|
527
|
-
|
|
528
494
|
case Int32Array:
|
|
529
495
|
return draco.DT_INT32;
|
|
530
|
-
|
|
531
496
|
case Uint8Array:
|
|
532
497
|
return draco.DT_UINT8;
|
|
533
|
-
|
|
534
498
|
case Uint16Array:
|
|
535
499
|
return draco.DT_UINT16;
|
|
536
|
-
|
|
537
500
|
case Uint32Array:
|
|
538
501
|
return draco.DT_UINT32;
|
|
539
502
|
|