super-three 0.173.5 → 0.176.0
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/build/three.cjs +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +185 -9
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -24,7 +24,8 @@ import {
|
|
|
24
24
|
CompressedTexture,
|
|
25
25
|
Vector3,
|
|
26
26
|
Quaternion,
|
|
27
|
-
REVISION
|
|
27
|
+
REVISION,
|
|
28
|
+
ImageUtils
|
|
28
29
|
} from 'three';
|
|
29
30
|
|
|
30
31
|
/**
|
|
@@ -61,11 +62,55 @@ const KHR_mesh_quantization_ExtraAttrTypes = {
|
|
|
61
62
|
],
|
|
62
63
|
};
|
|
63
64
|
|
|
64
|
-
|
|
65
|
+
/**
|
|
66
|
+
* An exporter for `glTF` 2.0.
|
|
67
|
+
*
|
|
68
|
+
* glTF (GL Transmission Format) is an [open format specification]{@link https://github.com/KhronosGroup/glTF/tree/master/specification/2.0}
|
|
69
|
+
* for efficient delivery and loading of 3D content. Assets may be provided either in JSON (.gltf)
|
|
70
|
+
* or binary (.glb) format. External files store textures (.jpg, .png) and additional binary
|
|
71
|
+
* data (.bin). A glTF asset may deliver one or more scenes, including meshes, materials,
|
|
72
|
+
* textures, skins, skeletons, morph targets, animations, lights, and/or cameras.
|
|
73
|
+
*
|
|
74
|
+
* GLTFExporter supports the [glTF 2.0 extensions]{@link https://github.com/KhronosGroup/glTF/tree/master/extensions/}:
|
|
75
|
+
*
|
|
76
|
+
* - KHR_lights_punctual
|
|
77
|
+
* - KHR_materials_clearcoat
|
|
78
|
+
* - KHR_materials_dispersion
|
|
79
|
+
* - KHR_materials_emissive_strength
|
|
80
|
+
* - KHR_materials_ior
|
|
81
|
+
* - KHR_materials_iridescence
|
|
82
|
+
* - KHR_materials_specular
|
|
83
|
+
* - KHR_materials_sheen
|
|
84
|
+
* - KHR_materials_transmission
|
|
85
|
+
* - KHR_materials_unlit
|
|
86
|
+
* - KHR_materials_volume
|
|
87
|
+
* - KHR_mesh_quantization
|
|
88
|
+
* - KHR_texture_transform
|
|
89
|
+
* - EXT_materials_bump
|
|
90
|
+
* - EXT_mesh_gpu_instancing
|
|
91
|
+
*
|
|
92
|
+
* The following glTF 2.0 extension is supported by an external user plugin:
|
|
93
|
+
*
|
|
94
|
+
* - [KHR_materials_variants]{@link https://github.com/takahirox/three-gltf-extensions}
|
|
95
|
+
*
|
|
96
|
+
* ```js
|
|
97
|
+
* const exporter = new GLTFExporter();
|
|
98
|
+
* const data = await exporter.parseAsync( scene, options );
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
65
101
|
class GLTFExporter {
|
|
66
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Constructs a new glTF exporter.
|
|
105
|
+
*/
|
|
67
106
|
constructor() {
|
|
68
107
|
|
|
108
|
+
/**
|
|
109
|
+
* A reference to a texture utils module.
|
|
110
|
+
*
|
|
111
|
+
* @type {?(WebGLTextureUtils|WebGPUTextureUtils)}
|
|
112
|
+
* @default null
|
|
113
|
+
*/
|
|
69
114
|
this.textureUtils = null;
|
|
70
115
|
|
|
71
116
|
this.pluginCallbacks = [];
|
|
@@ -156,6 +201,14 @@ class GLTFExporter {
|
|
|
156
201
|
|
|
157
202
|
}
|
|
158
203
|
|
|
204
|
+
/**
|
|
205
|
+
* Registers a plugin callback. This API is internally used to implement the various
|
|
206
|
+
* glTF extensions but can also used by third-party code to add additional logic
|
|
207
|
+
* to the exporter.
|
|
208
|
+
*
|
|
209
|
+
* @param {function(writer:GLTFWriter)} callback - The callback function to register.
|
|
210
|
+
* @return {GLTFExporter} A reference to this exporter.
|
|
211
|
+
*/
|
|
159
212
|
register( callback ) {
|
|
160
213
|
|
|
161
214
|
if ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {
|
|
@@ -168,6 +221,12 @@ class GLTFExporter {
|
|
|
168
221
|
|
|
169
222
|
}
|
|
170
223
|
|
|
224
|
+
/**
|
|
225
|
+
* Unregisters a plugin callback.
|
|
226
|
+
*
|
|
227
|
+
* @param {Function} callback - The callback function to unregister.
|
|
228
|
+
* @return {GLTFExporter} A reference to this exporter.
|
|
229
|
+
*/
|
|
171
230
|
unregister( callback ) {
|
|
172
231
|
|
|
173
232
|
if ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {
|
|
@@ -180,6 +239,15 @@ class GLTFExporter {
|
|
|
180
239
|
|
|
181
240
|
}
|
|
182
241
|
|
|
242
|
+
/**
|
|
243
|
+
* Sets the texture utils for this exporter. Only relevant when compressed textures have to be exported.
|
|
244
|
+
*
|
|
245
|
+
* Depending on whether you use {@link WebGLRenderer} or {@link WebGPURenderer}, you must inject the
|
|
246
|
+
* corresponding texture utils {@link WebGLTextureUtils} or {@link WebGPUTextureUtils}.
|
|
247
|
+
*
|
|
248
|
+
* @param {WebGLTextureUtils|WebGPUTextureUtils} utils - The texture utils.
|
|
249
|
+
* @return {GLTFExporter} A reference to this exporter.
|
|
250
|
+
*/
|
|
183
251
|
setTextureUtils( utils ) {
|
|
184
252
|
|
|
185
253
|
this.textureUtils = utils;
|
|
@@ -189,12 +257,12 @@ class GLTFExporter {
|
|
|
189
257
|
}
|
|
190
258
|
|
|
191
259
|
/**
|
|
192
|
-
*
|
|
260
|
+
* Parses the given scenes and generates the glTF output.
|
|
193
261
|
*
|
|
194
|
-
* @param
|
|
195
|
-
* @param
|
|
196
|
-
* @param
|
|
197
|
-
* @param
|
|
262
|
+
* @param {Scene|Array<Scene>} input - A scene or an array of scenes.
|
|
263
|
+
* @param {GLTFExporter~OnDone} onDone - A callback function that is executed when the export has finished.
|
|
264
|
+
* @param {GLTFExporter~OnError} onError - A callback function that is executed when an error happens.
|
|
265
|
+
* @param {GLTFExporter~Options} options - options
|
|
198
266
|
*/
|
|
199
267
|
parse( input, onDone, onError, options ) {
|
|
200
268
|
|
|
@@ -213,6 +281,13 @@ class GLTFExporter {
|
|
|
213
281
|
|
|
214
282
|
}
|
|
215
283
|
|
|
284
|
+
/**
|
|
285
|
+
* Async version of {@link GLTFExporter#parse}.
|
|
286
|
+
*
|
|
287
|
+
* @param {Scene|Array<Scene>} input - A scene or an array of scenes.
|
|
288
|
+
* @param {GLTFExporter~Options} options - options.
|
|
289
|
+
* @return {Promise<ArrayBuffer|string>} A Promise that resolved with the exported glTF data.
|
|
290
|
+
*/
|
|
216
291
|
parseAsync( input, options ) {
|
|
217
292
|
|
|
218
293
|
const scope = this;
|
|
@@ -304,9 +379,11 @@ const GLB_CHUNK_TYPE_BIN = 0x004E4942;
|
|
|
304
379
|
|
|
305
380
|
/**
|
|
306
381
|
* Compare two arrays
|
|
307
|
-
*
|
|
308
|
-
* @
|
|
309
|
-
* @
|
|
382
|
+
*
|
|
383
|
+
* @private
|
|
384
|
+
* @param {Array} array1 Array 1 to compare
|
|
385
|
+
* @param {Array} array2 Array 2 to compare
|
|
386
|
+
* @return {boolean} Returns true if both arrays are equal
|
|
310
387
|
*/
|
|
311
388
|
function equalArray( array1, array2 ) {
|
|
312
389
|
|
|
@@ -320,7 +397,9 @@ function equalArray( array1, array2 ) {
|
|
|
320
397
|
|
|
321
398
|
/**
|
|
322
399
|
* Converts a string to an ArrayBuffer.
|
|
323
|
-
*
|
|
400
|
+
*
|
|
401
|
+
* @private
|
|
402
|
+
* @param {string} text
|
|
324
403
|
* @return {ArrayBuffer}
|
|
325
404
|
*/
|
|
326
405
|
function stringToArrayBuffer( text ) {
|
|
@@ -332,8 +411,9 @@ function stringToArrayBuffer( text ) {
|
|
|
332
411
|
/**
|
|
333
412
|
* Is identity matrix
|
|
334
413
|
*
|
|
414
|
+
* @private
|
|
335
415
|
* @param {Matrix4} matrix
|
|
336
|
-
* @returns {
|
|
416
|
+
* @returns {boolean} Returns true, if parameter is identity matrix
|
|
337
417
|
*/
|
|
338
418
|
function isIdentityMatrix( matrix ) {
|
|
339
419
|
|
|
@@ -344,9 +424,10 @@ function isIdentityMatrix( matrix ) {
|
|
|
344
424
|
/**
|
|
345
425
|
* Get the min and max vectors from the given attribute
|
|
346
426
|
*
|
|
347
|
-
* @
|
|
348
|
-
* @param
|
|
349
|
-
* @param
|
|
427
|
+
* @private
|
|
428
|
+
* @param {BufferAttribute} attribute Attribute to find the min/max in range from start to start + count
|
|
429
|
+
* @param {number} start Start index
|
|
430
|
+
* @param {number} count Range to cover
|
|
350
431
|
* @return {Object} Object containing the `min` and `max` values (As an array of attribute.itemSize components)
|
|
351
432
|
*/
|
|
352
433
|
function getMinMax( attribute, start, count ) {
|
|
@@ -400,8 +481,9 @@ function getMinMax( attribute, start, count ) {
|
|
|
400
481
|
* Get the required size + padding for a buffer, rounded to the next 4-byte boundary.
|
|
401
482
|
* https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#data-alignment
|
|
402
483
|
*
|
|
403
|
-
* @
|
|
404
|
-
* @
|
|
484
|
+
* @private
|
|
485
|
+
* @param {number} bufferSize The size the original buffer. Should be an integer.
|
|
486
|
+
* @returns {number} new buffer size with required padding as an integer.
|
|
405
487
|
*
|
|
406
488
|
*/
|
|
407
489
|
function getPaddedBufferSize( bufferSize ) {
|
|
@@ -413,8 +495,9 @@ function getPaddedBufferSize( bufferSize ) {
|
|
|
413
495
|
/**
|
|
414
496
|
* Returns a buffer aligned to 4-byte boundary.
|
|
415
497
|
*
|
|
498
|
+
* @private
|
|
416
499
|
* @param {ArrayBuffer} arrayBuffer Buffer to pad
|
|
417
|
-
* @param {
|
|
500
|
+
* @param {number} [paddingByte=0] Should be an integer
|
|
418
501
|
* @returns {ArrayBuffer} The same buffer if it's already aligned to 4-byte boundary or a new buffer
|
|
419
502
|
*/
|
|
420
503
|
function getPaddedArrayBuffer( arrayBuffer, paddingByte = 0 ) {
|
|
@@ -489,6 +572,8 @@ function getToBlobPromise( canvas, mimeType ) {
|
|
|
489
572
|
|
|
490
573
|
/**
|
|
491
574
|
* Writer
|
|
575
|
+
*
|
|
576
|
+
* @private
|
|
492
577
|
*/
|
|
493
578
|
class GLTFWriter {
|
|
494
579
|
|
|
@@ -713,9 +798,9 @@ class GLTFWriter {
|
|
|
713
798
|
/**
|
|
714
799
|
* Returns ids for buffer attributes.
|
|
715
800
|
*
|
|
716
|
-
* @param
|
|
801
|
+
* @param {Object} attribute
|
|
717
802
|
* @param {boolean} [isRelativeCopy=false]
|
|
718
|
-
* @return {
|
|
803
|
+
* @return {number} An integer
|
|
719
804
|
*/
|
|
720
805
|
getUID( attribute, isRelativeCopy = false ) {
|
|
721
806
|
|
|
@@ -740,7 +825,7 @@ class GLTFWriter {
|
|
|
740
825
|
* Checks if normal attribute values are normalized.
|
|
741
826
|
*
|
|
742
827
|
* @param {BufferAttribute} normal
|
|
743
|
-
* @returns {
|
|
828
|
+
* @returns {boolean}
|
|
744
829
|
*/
|
|
745
830
|
isNormalizedNormalAttribute( normal ) {
|
|
746
831
|
|
|
@@ -968,7 +1053,7 @@ class GLTFWriter {
|
|
|
968
1053
|
|
|
969
1054
|
/**
|
|
970
1055
|
* Process a buffer to append to the default one.
|
|
971
|
-
* @param
|
|
1056
|
+
* @param {ArrayBuffer} buffer
|
|
972
1057
|
* @return {0}
|
|
973
1058
|
*/
|
|
974
1059
|
processBuffer( buffer ) {
|
|
@@ -987,11 +1072,11 @@ class GLTFWriter {
|
|
|
987
1072
|
|
|
988
1073
|
/**
|
|
989
1074
|
* Process and generate a BufferView
|
|
990
|
-
* @param
|
|
991
|
-
* @param
|
|
992
|
-
* @param
|
|
993
|
-
* @param
|
|
994
|
-
* @param
|
|
1075
|
+
* @param {BufferAttribute} attribute
|
|
1076
|
+
* @param {number} componentType
|
|
1077
|
+
* @param {number} start
|
|
1078
|
+
* @param {number} count
|
|
1079
|
+
* @param {number} [target] Target usage of the BufferView
|
|
995
1080
|
* @return {Object}
|
|
996
1081
|
*/
|
|
997
1082
|
processBufferView( attribute, componentType, start, count, target ) {
|
|
@@ -1145,7 +1230,7 @@ class GLTFWriter {
|
|
|
1145
1230
|
/**
|
|
1146
1231
|
* Process and generate a BufferView from an image Blob.
|
|
1147
1232
|
* @param {Blob} blob
|
|
1148
|
-
* @return {Promise<
|
|
1233
|
+
* @return {Promise<number>} An integer
|
|
1149
1234
|
*/
|
|
1150
1235
|
processBufferViewImage( blob ) {
|
|
1151
1236
|
|
|
@@ -1179,11 +1264,11 @@ class GLTFWriter {
|
|
|
1179
1264
|
|
|
1180
1265
|
/**
|
|
1181
1266
|
* Process attribute to generate an accessor
|
|
1182
|
-
* @param
|
|
1183
|
-
* @param
|
|
1184
|
-
* @param
|
|
1185
|
-
* @param
|
|
1186
|
-
* @return {
|
|
1267
|
+
* @param {BufferAttribute} attribute Attribute to process
|
|
1268
|
+
* @param {?BufferGeometry} [geometry] Geometry used for truncated draw range
|
|
1269
|
+
* @param {number} [start=0]
|
|
1270
|
+
* @param {number} [count=Infinity]
|
|
1271
|
+
* @return {?number} Index of the processed accessor on the "accessors" array
|
|
1187
1272
|
*/
|
|
1188
1273
|
processAccessor( attribute, geometry, start, count ) {
|
|
1189
1274
|
|
|
@@ -1277,11 +1362,11 @@ class GLTFWriter {
|
|
|
1277
1362
|
|
|
1278
1363
|
/**
|
|
1279
1364
|
* Process image
|
|
1280
|
-
* @param
|
|
1281
|
-
* @param
|
|
1282
|
-
* @param
|
|
1283
|
-
* @param
|
|
1284
|
-
* @return {
|
|
1365
|
+
* @param {Image} image to process
|
|
1366
|
+
* @param {number} format Identifier of the format (RGBAFormat)
|
|
1367
|
+
* @param {boolean} flipY before writing out the image
|
|
1368
|
+
* @param {string} mimeType export format
|
|
1369
|
+
* @return {number} Index of the processed texture in the "images" array
|
|
1285
1370
|
*/
|
|
1286
1371
|
processImage( image, format, flipY, mimeType = 'image/png' ) {
|
|
1287
1372
|
|
|
@@ -1381,25 +1466,7 @@ class GLTFWriter {
|
|
|
1381
1466
|
|
|
1382
1467
|
} else {
|
|
1383
1468
|
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
imageDef.uri = canvas.toDataURL( mimeType );
|
|
1387
|
-
|
|
1388
|
-
} else {
|
|
1389
|
-
|
|
1390
|
-
pending.push(
|
|
1391
|
-
|
|
1392
|
-
getToBlobPromise( canvas, mimeType )
|
|
1393
|
-
.then( blob => new FileReader().readAsDataURL( blob ) )
|
|
1394
|
-
.then( dataURL => {
|
|
1395
|
-
|
|
1396
|
-
imageDef.uri = dataURL;
|
|
1397
|
-
|
|
1398
|
-
} )
|
|
1399
|
-
|
|
1400
|
-
);
|
|
1401
|
-
|
|
1402
|
-
}
|
|
1469
|
+
imageDef.uri = ImageUtils.getDataURL( canvas, mimeType );
|
|
1403
1470
|
|
|
1404
1471
|
}
|
|
1405
1472
|
|
|
@@ -1417,8 +1484,8 @@ class GLTFWriter {
|
|
|
1417
1484
|
|
|
1418
1485
|
/**
|
|
1419
1486
|
* Process sampler
|
|
1420
|
-
* @param
|
|
1421
|
-
* @return {
|
|
1487
|
+
* @param {Texture} map Texture to process
|
|
1488
|
+
* @return {number} Index of the processed texture in the "samplers" array
|
|
1422
1489
|
*/
|
|
1423
1490
|
processSampler( map ) {
|
|
1424
1491
|
|
|
@@ -1439,8 +1506,8 @@ class GLTFWriter {
|
|
|
1439
1506
|
|
|
1440
1507
|
/**
|
|
1441
1508
|
* Process texture
|
|
1442
|
-
* @param
|
|
1443
|
-
* @return {Promise<
|
|
1509
|
+
* @param {Texture} map Map to process
|
|
1510
|
+
* @return {Promise<number>} Index of the processed texture in the "textures" array
|
|
1444
1511
|
*/
|
|
1445
1512
|
async processTextureAsync( map ) {
|
|
1446
1513
|
|
|
@@ -1485,8 +1552,8 @@ class GLTFWriter {
|
|
|
1485
1552
|
|
|
1486
1553
|
/**
|
|
1487
1554
|
* Process material
|
|
1488
|
-
* @param
|
|
1489
|
-
* @return {Promise<
|
|
1555
|
+
* @param {THREE.Material} material Material to process
|
|
1556
|
+
* @return {Promise<number|null>} Index of the processed material in the "materials" array
|
|
1490
1557
|
*/
|
|
1491
1558
|
async processMaterialAsync( material ) {
|
|
1492
1559
|
|
|
@@ -1661,8 +1728,8 @@ class GLTFWriter {
|
|
|
1661
1728
|
|
|
1662
1729
|
/**
|
|
1663
1730
|
* Process mesh
|
|
1664
|
-
* @param
|
|
1665
|
-
* @return {Promise<
|
|
1731
|
+
* @param {THREE.Mesh} mesh Mesh to process
|
|
1732
|
+
* @return {Promise<number|null>} Index of the processed mesh in the "meshes" array
|
|
1666
1733
|
*/
|
|
1667
1734
|
async processMeshAsync( mesh ) {
|
|
1668
1735
|
|
|
@@ -2066,8 +2133,8 @@ class GLTFWriter {
|
|
|
2066
2133
|
|
|
2067
2134
|
/**
|
|
2068
2135
|
* Process camera
|
|
2069
|
-
* @param
|
|
2070
|
-
* @return {
|
|
2136
|
+
* @param {THREE.Camera} camera Camera to process
|
|
2137
|
+
* @return {number} Index of the processed mesh in the "camera" array
|
|
2071
2138
|
*/
|
|
2072
2139
|
processCamera( camera ) {
|
|
2073
2140
|
|
|
@@ -2267,8 +2334,8 @@ class GLTFWriter {
|
|
|
2267
2334
|
|
|
2268
2335
|
/**
|
|
2269
2336
|
* Process Object3D node
|
|
2270
|
-
* @param
|
|
2271
|
-
* @return {Promise<
|
|
2337
|
+
* @param {THREE.Object3D} object Object3D to processNodeAsync
|
|
2338
|
+
* @return {Promise<number>} Index of the node in the nodes list
|
|
2272
2339
|
*/
|
|
2273
2340
|
async processNodeAsync( object ) {
|
|
2274
2341
|
|
|
@@ -2375,7 +2442,7 @@ class GLTFWriter {
|
|
|
2375
2442
|
|
|
2376
2443
|
/**
|
|
2377
2444
|
* Process Scene
|
|
2378
|
-
* @param
|
|
2445
|
+
* @param {Scene} scene Scene to process
|
|
2379
2446
|
*/
|
|
2380
2447
|
async processSceneAsync( scene ) {
|
|
2381
2448
|
|
|
@@ -2419,7 +2486,7 @@ class GLTFWriter {
|
|
|
2419
2486
|
|
|
2420
2487
|
/**
|
|
2421
2488
|
* Creates a Scene to hold a list of objects and parse it
|
|
2422
|
-
* @param
|
|
2489
|
+
* @param {Array<THREE.Object3D>} objects List of objects to process
|
|
2423
2490
|
*/
|
|
2424
2491
|
async processObjectsAsync( objects ) {
|
|
2425
2492
|
|
|
@@ -2511,6 +2578,8 @@ class GLTFWriter {
|
|
|
2511
2578
|
* Punctual Lights Extension
|
|
2512
2579
|
*
|
|
2513
2580
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual
|
|
2581
|
+
*
|
|
2582
|
+
* @private
|
|
2514
2583
|
*/
|
|
2515
2584
|
class GLTFLightExtension {
|
|
2516
2585
|
|
|
@@ -2606,6 +2675,8 @@ class GLTFLightExtension {
|
|
|
2606
2675
|
* Unlit Materials Extension
|
|
2607
2676
|
*
|
|
2608
2677
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit
|
|
2678
|
+
*
|
|
2679
|
+
* @private
|
|
2609
2680
|
*/
|
|
2610
2681
|
class GLTFMaterialsUnlitExtension {
|
|
2611
2682
|
|
|
@@ -2639,6 +2710,8 @@ class GLTFMaterialsUnlitExtension {
|
|
|
2639
2710
|
* Clearcoat Materials Extension
|
|
2640
2711
|
*
|
|
2641
2712
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat
|
|
2713
|
+
*
|
|
2714
|
+
* @private
|
|
2642
2715
|
*/
|
|
2643
2716
|
class GLTFMaterialsClearcoatExtension {
|
|
2644
2717
|
|
|
@@ -2712,6 +2785,8 @@ class GLTFMaterialsClearcoatExtension {
|
|
|
2712
2785
|
* Materials dispersion Extension
|
|
2713
2786
|
*
|
|
2714
2787
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_dispersion
|
|
2788
|
+
*
|
|
2789
|
+
* @private
|
|
2715
2790
|
*/
|
|
2716
2791
|
class GLTFMaterialsDispersionExtension {
|
|
2717
2792
|
|
|
@@ -2746,6 +2821,8 @@ class GLTFMaterialsDispersionExtension {
|
|
|
2746
2821
|
* Iridescence Materials Extension
|
|
2747
2822
|
*
|
|
2748
2823
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence
|
|
2824
|
+
*
|
|
2825
|
+
* @private
|
|
2749
2826
|
*/
|
|
2750
2827
|
class GLTFMaterialsIridescenceExtension {
|
|
2751
2828
|
|
|
@@ -2806,6 +2883,8 @@ class GLTFMaterialsIridescenceExtension {
|
|
|
2806
2883
|
* Transmission Materials Extension
|
|
2807
2884
|
*
|
|
2808
2885
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission
|
|
2886
|
+
*
|
|
2887
|
+
* @private
|
|
2809
2888
|
*/
|
|
2810
2889
|
class GLTFMaterialsTransmissionExtension {
|
|
2811
2890
|
|
|
@@ -2851,6 +2930,8 @@ class GLTFMaterialsTransmissionExtension {
|
|
|
2851
2930
|
* Materials Volume Extension
|
|
2852
2931
|
*
|
|
2853
2932
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume
|
|
2933
|
+
*
|
|
2934
|
+
* @private
|
|
2854
2935
|
*/
|
|
2855
2936
|
class GLTFMaterialsVolumeExtension {
|
|
2856
2937
|
|
|
@@ -2904,6 +2985,8 @@ class GLTFMaterialsVolumeExtension {
|
|
|
2904
2985
|
* Materials ior Extension
|
|
2905
2986
|
*
|
|
2906
2987
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior
|
|
2988
|
+
*
|
|
2989
|
+
* @private
|
|
2907
2990
|
*/
|
|
2908
2991
|
class GLTFMaterialsIorExtension {
|
|
2909
2992
|
|
|
@@ -2938,6 +3021,8 @@ class GLTFMaterialsIorExtension {
|
|
|
2938
3021
|
* Materials specular Extension
|
|
2939
3022
|
*
|
|
2940
3023
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular
|
|
3024
|
+
*
|
|
3025
|
+
* @private
|
|
2941
3026
|
*/
|
|
2942
3027
|
class GLTFMaterialsSpecularExtension {
|
|
2943
3028
|
|
|
@@ -2997,6 +3082,8 @@ class GLTFMaterialsSpecularExtension {
|
|
|
2997
3082
|
* Sheen Materials Extension
|
|
2998
3083
|
*
|
|
2999
3084
|
* Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen
|
|
3085
|
+
*
|
|
3086
|
+
* @private
|
|
3000
3087
|
*/
|
|
3001
3088
|
class GLTFMaterialsSheenExtension {
|
|
3002
3089
|
|
|
@@ -3054,6 +3141,8 @@ class GLTFMaterialsSheenExtension {
|
|
|
3054
3141
|
* Anisotropy Materials Extension
|
|
3055
3142
|
*
|
|
3056
3143
|
* Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_anisotropy
|
|
3144
|
+
*
|
|
3145
|
+
* @private
|
|
3057
3146
|
*/
|
|
3058
3147
|
class GLTFMaterialsAnisotropyExtension {
|
|
3059
3148
|
|
|
@@ -3097,6 +3186,8 @@ class GLTFMaterialsAnisotropyExtension {
|
|
|
3097
3186
|
* Materials Emissive Strength Extension
|
|
3098
3187
|
*
|
|
3099
3188
|
* Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md
|
|
3189
|
+
*
|
|
3190
|
+
* @private
|
|
3100
3191
|
*/
|
|
3101
3192
|
class GLTFMaterialsEmissiveStrengthExtension {
|
|
3102
3193
|
|
|
@@ -3132,6 +3223,8 @@ class GLTFMaterialsEmissiveStrengthExtension {
|
|
|
3132
3223
|
* Materials bump Extension
|
|
3133
3224
|
*
|
|
3134
3225
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump
|
|
3226
|
+
*
|
|
3227
|
+
* @private
|
|
3135
3228
|
*/
|
|
3136
3229
|
class GLTFMaterialsBumpExtension {
|
|
3137
3230
|
|
|
@@ -3179,6 +3272,8 @@ class GLTFMaterialsBumpExtension {
|
|
|
3179
3272
|
* GPU Instancing Extension
|
|
3180
3273
|
*
|
|
3181
3274
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing
|
|
3275
|
+
*
|
|
3276
|
+
* @private
|
|
3182
3277
|
*/
|
|
3183
3278
|
class GLTFMeshGpuInstancing {
|
|
3184
3279
|
|
|
@@ -3238,6 +3333,8 @@ class GLTFMeshGpuInstancing {
|
|
|
3238
3333
|
|
|
3239
3334
|
/**
|
|
3240
3335
|
* Static utility functions
|
|
3336
|
+
*
|
|
3337
|
+
* @private
|
|
3241
3338
|
*/
|
|
3242
3339
|
GLTFExporter.Utils = {
|
|
3243
3340
|
|
|
@@ -3458,4 +3555,30 @@ GLTFExporter.Utils = {
|
|
|
3458
3555
|
|
|
3459
3556
|
};
|
|
3460
3557
|
|
|
3558
|
+
/**
|
|
3559
|
+
* Export options of `GLTFExporter`.
|
|
3560
|
+
*
|
|
3561
|
+
* @typedef {Object} GLTFExporter~Options
|
|
3562
|
+
* @property {boolean} [trs=false] - Export position, rotation and scale instead of matrix per node.
|
|
3563
|
+
* @property {boolean} [onlyVisible=true] - Export only visible 3D objects.
|
|
3564
|
+
* @property {boolean} [binary=false] - Export in binary (.glb) format, returning an ArrayBuffer.
|
|
3565
|
+
* @property {number} [maxTextureSize=Infinity] - Restricts the image maximum size (both width and height) to the given value.
|
|
3566
|
+
* @property {Array<AnimationClip>} [animations=[]] - List of animations to be included in the export.
|
|
3567
|
+
* @property {boolean} [includeCustomExtensions=false] - Export custom glTF extensions defined on an object's `userData.gltfExtensions` property.
|
|
3568
|
+
**/
|
|
3569
|
+
|
|
3570
|
+
/**
|
|
3571
|
+
* onDone callback of `GLTFExporter`.
|
|
3572
|
+
*
|
|
3573
|
+
* @callback GLTFExporter~OnDone
|
|
3574
|
+
* @param {ArrayBuffer|string} result - The generated .gltf (JSON) or .glb (binary).
|
|
3575
|
+
*/
|
|
3576
|
+
|
|
3577
|
+
/**
|
|
3578
|
+
* onError callback of `GLTFExporter`.
|
|
3579
|
+
*
|
|
3580
|
+
* @callback GLTFExporter~OnError
|
|
3581
|
+
* @param {Error} error - The error object.
|
|
3582
|
+
*/
|
|
3583
|
+
|
|
3461
3584
|
export { GLTFExporter };
|
|
@@ -127,8 +127,28 @@ const ERROR_FORMAT = 'THREE.KTX2Exporter: Supported formats are RGBAFormat, RGFo
|
|
|
127
127
|
const ERROR_TYPE = 'THREE.KTX2Exporter: Supported types are FloatType, HalfFloatType, or UnsignedByteType."';
|
|
128
128
|
const ERROR_COLOR_SPACE = 'THREE.KTX2Exporter: Supported color spaces are SRGBColorSpace (UnsignedByteType only), LinearSRGBColorSpace, or NoColorSpace.';
|
|
129
129
|
|
|
130
|
+
/**
|
|
131
|
+
* An exporter for KTX2.
|
|
132
|
+
*
|
|
133
|
+
* ```js
|
|
134
|
+
* const exporter = new KTX2Exporter();
|
|
135
|
+
* const result = await exporter.parse( dataTexture );
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
130
138
|
export class KTX2Exporter {
|
|
131
139
|
|
|
140
|
+
/**
|
|
141
|
+
* This method has two variants.
|
|
142
|
+
*
|
|
143
|
+
* - When exporting a data texture, it receives one parameter. The data or 3D data texture.
|
|
144
|
+
* - When exporting a render target (e.g. a PMREM), it receives two parameters. The renderer and the
|
|
145
|
+
* render target.
|
|
146
|
+
*
|
|
147
|
+
* @async
|
|
148
|
+
* @param {(DataTexture|Data3DTexture|WebGPURenderer|WebGLRenderer)} arg1 - The data texture to export or a renderer.
|
|
149
|
+
* @param {RenderTarget} [arg2] - The render target that should be exported
|
|
150
|
+
* @return {Promise<Uint8Array>} A Promise that resolves with the exported KTX2.
|
|
151
|
+
*/
|
|
132
152
|
async parse( arg1, arg2 ) {
|
|
133
153
|
|
|
134
154
|
let texture;
|
|
@@ -7,8 +7,26 @@ import {
|
|
|
7
7
|
Vector3
|
|
8
8
|
} from 'three';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* An exporter for OBJ.
|
|
12
|
+
*
|
|
13
|
+
* `OBJExporter` is not able to export material data into MTL files so only geometry data are supported.
|
|
14
|
+
*
|
|
15
|
+
* ```js
|
|
16
|
+
* const exporter = new OBJExporter();
|
|
17
|
+
* const data = exporter.parse( scene );
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
10
20
|
class OBJExporter {
|
|
11
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Parses the given 3D object and generates the OBJ output.
|
|
24
|
+
*
|
|
25
|
+
* If the 3D object is composed of multiple children and geometry, they are merged into a single mesh in the file.
|
|
26
|
+
*
|
|
27
|
+
* @param {Object3D} object - The 3D object to export.
|
|
28
|
+
* @return {string} The exported OBJ.
|
|
29
|
+
*/
|
|
12
30
|
parse( object ) {
|
|
13
31
|
|
|
14
32
|
let output = '';
|
|
@@ -7,22 +7,34 @@ import {
|
|
|
7
7
|
} from 'three';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* An exporter for PLY.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* PLY (Polygon or Stanford Triangle Format) is a file format for efficient delivery and
|
|
13
|
+
* loading of simple, static 3D content in a dense format. Both binary and ascii formats are
|
|
14
|
+
* supported. PLY can store vertex positions, colors, normals and uv coordinates. No textures
|
|
15
|
+
* or texture references are saved.
|
|
14
16
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* http://paulbourke.net/dataformats/ply/
|
|
17
|
+
* ```js
|
|
18
|
+
* const exporter = new PLYExporter();
|
|
19
|
+
* const data = exporter.parse( scene, options );
|
|
20
|
+
* ```
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
22
|
class PLYExporter {
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Parses the given 3D object and generates the PLY output.
|
|
26
|
+
*
|
|
27
|
+
* If the 3D object is composed of multiple children and geometry, they are merged into a single mesh in the file.
|
|
28
|
+
*
|
|
29
|
+
* @param {Object3D} object - The 3D object to export.
|
|
30
|
+
* @param {PLYExporter~OnDone} onDone - A callback function that is executed when the export has finished.
|
|
31
|
+
* @param {PLYExporter~Options} options - The export options.
|
|
32
|
+
* @return {?string|ArrayBuffer} The exported PLY.
|
|
33
|
+
*/
|
|
24
34
|
parse( object, onDone, options = {} ) {
|
|
25
35
|
|
|
36
|
+
// reference https://github.com/gkjohnson/ply-exporter-js
|
|
37
|
+
|
|
26
38
|
// Iterate over the valid meshes in the object
|
|
27
39
|
function traverseMeshes( cb ) {
|
|
28
40
|
|
|
@@ -527,4 +539,22 @@ class PLYExporter {
|
|
|
527
539
|
|
|
528
540
|
}
|
|
529
541
|
|
|
542
|
+
/**
|
|
543
|
+
* Export options of `PLYExporter`.
|
|
544
|
+
*
|
|
545
|
+
* @typedef {Object} PLYExporter~Options
|
|
546
|
+
* @property {boolean} [binary=false] - Whether to export in binary format or ASCII.
|
|
547
|
+
* @property {Array<string>} [excludeAttributes] - Which properties to explicitly exclude from
|
|
548
|
+
* the exported PLY file. Valid values are `'color'`, `'normal'`, `'uv'`, and `'index'`. If triangle
|
|
549
|
+
* indices are excluded, then a point cloud is exported.
|
|
550
|
+
* @property {boolean} [littleEndian=false] - Whether the binary export uses little or big endian.
|
|
551
|
+
**/
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* onDone callback of `PLYExporter`.
|
|
555
|
+
*
|
|
556
|
+
* @callback PLYExporter~OnDone
|
|
557
|
+
* @param {string|ArrayBuffer} result - The generated PLY ascii or binary.
|
|
558
|
+
*/
|
|
559
|
+
|
|
530
560
|
export { PLYExporter };
|