@plastic-software/three 0.175.13 → 0.178.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/README.md +3 -3
- package/build/three.cjs +7747 -6792
- package/build/three.core.js +7371 -6576
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +190 -30
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +19 -11
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +4989 -2235
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +5082 -2469
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +0 -1
- package/examples/jsm/animation/AnimationClipCreator.js +1 -0
- package/examples/jsm/animation/CCDIKSolver.js +6 -3
- package/examples/jsm/capabilities/WebGL.js +1 -27
- package/examples/jsm/capabilities/WebGPU.js +1 -0
- package/examples/jsm/controls/ArcballControls.js +15 -4
- package/examples/jsm/controls/DragControls.js +1 -0
- package/examples/jsm/controls/FirstPersonControls.js +1 -0
- package/examples/jsm/controls/FlyControls.js +1 -0
- package/examples/jsm/controls/MapControls.js +1 -0
- package/examples/jsm/controls/OrbitControls.js +1 -0
- package/examples/jsm/controls/PointerLockControls.js +5 -3
- package/examples/jsm/controls/TrackballControls.js +1 -0
- package/examples/jsm/controls/TransformControls.js +62 -14
- package/examples/jsm/csm/CSM.js +2 -0
- package/examples/jsm/csm/CSMFrustum.js +2 -0
- package/examples/jsm/csm/CSMHelper.js +1 -0
- package/examples/jsm/csm/CSMShader.js +4 -1
- package/examples/jsm/csm/CSMShadowNode.js +18 -4
- package/examples/jsm/curves/CurveExtras.js +14 -0
- package/examples/jsm/curves/NURBSCurve.js +1 -0
- package/examples/jsm/curves/NURBSSurface.js +2 -0
- package/examples/jsm/curves/NURBSUtils.js +4 -1
- package/examples/jsm/curves/NURBSVolume.js +2 -0
- package/examples/jsm/effects/AnaglyphEffect.js +2 -0
- package/examples/jsm/effects/AsciiEffect.js +2 -0
- package/examples/jsm/effects/OutlineEffect.js +2 -0
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -0
- package/examples/jsm/effects/StereoEffect.js +2 -0
- package/examples/jsm/environments/DebugEnvironment.js +1 -0
- package/examples/jsm/environments/RoomEnvironment.js +49 -35
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -0
- package/examples/jsm/exporters/GLTFExporter.js +7 -4
- package/examples/jsm/exporters/KTX2Exporter.js +2 -0
- package/examples/jsm/exporters/OBJExporter.js +3 -1
- package/examples/jsm/exporters/PLYExporter.js +4 -2
- package/examples/jsm/exporters/STLExporter.js +2 -0
- package/examples/jsm/exporters/USDZExporter.js +12 -10
- package/examples/jsm/geometries/BoxLineGeometry.js +1 -0
- package/examples/jsm/geometries/ConvexGeometry.js +1 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -0
- package/examples/jsm/geometries/ParametricFunctions.js +4 -1
- package/examples/jsm/geometries/ParametricGeometry.js +1 -0
- package/examples/jsm/geometries/RoundedBoxGeometry.js +2 -1
- package/examples/jsm/geometries/TeapotGeometry.js +1 -0
- package/examples/jsm/geometries/TextGeometry.js +1 -0
- package/examples/jsm/helpers/LightProbeHelper.js +1 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -0
- package/examples/jsm/helpers/OctreeHelper.js +1 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +1 -0
- package/examples/jsm/helpers/RapierHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +5 -4
- package/examples/jsm/helpers/VertexNormalsHelper.js +1 -0
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -0
- package/examples/jsm/helpers/ViewHelper.js +1 -0
- package/examples/jsm/interactive/HTMLMesh.js +7 -0
- package/examples/jsm/interactive/InteractiveGroup.js +1 -0
- package/examples/jsm/interactive/SelectionBox.js +2 -0
- package/examples/jsm/interactive/SelectionHelper.js +2 -0
- package/examples/jsm/lighting/TiledLighting.js +1 -0
- package/examples/jsm/lights/LightProbeGenerator.js +1 -0
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
- package/examples/jsm/lines/Line2.js +1 -0
- package/examples/jsm/lines/LineGeometry.js +1 -0
- package/examples/jsm/lines/LineMaterial.js +4 -4
- package/examples/jsm/lines/LineSegments2.js +1 -0
- package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
- package/examples/jsm/lines/Wireframe.js +1 -0
- package/examples/jsm/lines/WireframeGeometry2.js +1 -0
- package/examples/jsm/lines/webgpu/Line2.js +1 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +1 -0
- package/examples/jsm/loaders/AMFLoader.js +1 -0
- package/examples/jsm/loaders/BVHLoader.js +1 -0
- package/examples/jsm/loaders/ColladaLoader.js +6 -5
- package/examples/jsm/loaders/DDSLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -1
- package/examples/jsm/loaders/EXRLoader.js +1 -0
- package/examples/jsm/loaders/FBXLoader.js +25 -23
- package/examples/jsm/loaders/FontLoader.js +1 -0
- package/examples/jsm/loaders/GCodeLoader.js +1 -0
- package/examples/jsm/loaders/GLTFLoader.js +10 -82
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
- package/examples/jsm/loaders/IESLoader.js +1 -0
- package/examples/jsm/loaders/KMZLoader.js +1 -0
- package/examples/jsm/loaders/KTX2Loader.js +67 -26
- package/examples/jsm/loaders/KTXLoader.js +1 -0
- package/examples/jsm/loaders/LDrawLoader.js +55 -3
- package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
- package/examples/jsm/loaders/LUTImageLoader.js +1 -0
- package/examples/jsm/loaders/LWOLoader.js +1 -13
- package/examples/jsm/loaders/LottieLoader.js +15 -0
- package/examples/jsm/loaders/MD2Loader.js +1 -0
- package/examples/jsm/loaders/MDDLoader.js +1 -0
- package/examples/jsm/loaders/MTLLoader.js +4 -3
- package/examples/jsm/loaders/MaterialXLoader.js +1 -0
- package/examples/jsm/loaders/NRRDLoader.js +1 -0
- package/examples/jsm/loaders/OBJLoader.js +1 -0
- package/examples/jsm/loaders/PCDLoader.js +122 -19
- package/examples/jsm/loaders/PDBLoader.js +1 -0
- package/examples/jsm/loaders/PLYLoader.js +1 -0
- package/examples/jsm/loaders/PVRLoader.js +1 -0
- package/examples/jsm/loaders/RGBELoader.js +1 -0
- package/examples/jsm/loaders/RGBMLoader.js +1 -0
- package/examples/jsm/loaders/STLLoader.js +1 -0
- package/examples/jsm/loaders/SVGLoader.js +1 -0
- package/examples/jsm/loaders/TDSLoader.js +1 -0
- package/examples/jsm/loaders/TGALoader.js +1 -0
- package/examples/jsm/loaders/TIFFLoader.js +1 -0
- package/examples/jsm/loaders/TTFLoader.js +1 -0
- package/examples/jsm/loaders/USDZLoader.js +1 -0
- package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +3 -2
- package/examples/jsm/loaders/VTKLoader.js +1 -0
- package/examples/jsm/loaders/XYZLoader.js +1 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
- package/examples/jsm/math/Capsule.js +2 -0
- package/examples/jsm/math/ColorConverter.js +1 -0
- package/examples/jsm/math/ConvexHull.js +2 -0
- package/examples/jsm/math/ImprovedNoise.js +19 -14
- package/examples/jsm/math/Lut.js +2 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
- package/examples/jsm/math/OBB.js +2 -0
- package/examples/jsm/math/Octree.js +20 -1
- package/examples/jsm/math/SimplexNoise.js +2 -0
- package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/Gyroscope.js +1 -0
- package/examples/jsm/misc/MD2Character.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
- package/examples/jsm/misc/MorphAnimMesh.js +1 -0
- package/examples/jsm/misc/MorphBlendMesh.js +1 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +5 -0
- package/examples/jsm/misc/Timer.js +2 -0
- package/examples/jsm/misc/TubePainter.js +1 -0
- package/examples/jsm/misc/Volume.js +2 -0
- package/examples/jsm/misc/VolumeSlice.js +1 -0
- package/examples/jsm/modifiers/CurveModifier.js +3 -0
- package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
- package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
- package/examples/jsm/modifiers/TessellateModifier.js +2 -0
- package/examples/jsm/objects/GroundedSkybox.js +1 -0
- package/examples/jsm/objects/Lensflare.js +3 -0
- package/examples/jsm/objects/LensflareMesh.js +1 -0
- package/examples/jsm/objects/MarchingCubes.js +2 -0
- package/examples/jsm/objects/Reflector.js +1 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Refractor.js +1 -0
- package/examples/jsm/objects/ShadowMesh.js +1 -0
- package/examples/jsm/objects/Sky.js +2 -1
- package/examples/jsm/objects/SkyMesh.js +20 -17
- package/examples/jsm/objects/Water.js +1 -0
- package/examples/jsm/objects/Water2.js +1 -0
- package/examples/jsm/objects/Water2Mesh.js +3 -1
- package/examples/jsm/objects/WaterMesh.js +2 -1
- package/examples/jsm/physics/AmmoPhysics.js +1 -0
- package/examples/jsm/physics/JoltPhysics.js +1 -0
- package/examples/jsm/physics/RapierPhysics.js +139 -12
- package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
- package/examples/jsm/postprocessing/BloomPass.js +2 -1
- package/examples/jsm/postprocessing/BokehPass.js +2 -1
- package/examples/jsm/postprocessing/ClearPass.js +1 -0
- package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
- package/examples/jsm/postprocessing/EffectComposer.js +4 -2
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +1 -0
- package/examples/jsm/postprocessing/GTAOPass.js +4 -3
- package/examples/jsm/postprocessing/GlitchPass.js +2 -1
- package/examples/jsm/postprocessing/HalftonePass.js +2 -1
- package/examples/jsm/postprocessing/LUTPass.js +1 -0
- package/examples/jsm/postprocessing/MaskPass.js +1 -0
- package/examples/jsm/postprocessing/OutlinePass.js +5 -2
- package/examples/jsm/postprocessing/OutputPass.js +1 -0
- package/examples/jsm/postprocessing/Pass.js +3 -1
- package/examples/jsm/postprocessing/RenderPass.js +1 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
- package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
- package/examples/jsm/postprocessing/SAOPass.js +3 -2
- package/examples/jsm/postprocessing/SMAAPass.js +3 -2
- package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -1
- package/examples/jsm/postprocessing/SSRPass.js +4 -3
- package/examples/jsm/postprocessing/SavePass.js +2 -1
- package/examples/jsm/postprocessing/ShaderPass.js +1 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
- package/examples/jsm/postprocessing/TexturePass.js +1 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
- package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
- package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
- package/examples/jsm/renderers/Projector.js +2 -0
- package/examples/jsm/renderers/SVGRenderer.js +3 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
- package/examples/jsm/shaders/AfterimageShader.js +4 -1
- package/examples/jsm/shaders/BasicShader.js +4 -1
- package/examples/jsm/shaders/BleachBypassShader.js +4 -1
- package/examples/jsm/shaders/BlendShader.js +4 -1
- package/examples/jsm/shaders/BokehShader.js +4 -1
- package/examples/jsm/shaders/BokehShader2.js +4 -1
- package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
- package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
- package/examples/jsm/shaders/ColorifyShader.js +4 -1
- package/examples/jsm/shaders/ConvolutionShader.js +4 -1
- package/examples/jsm/shaders/CopyShader.js +4 -1
- package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
- package/examples/jsm/shaders/DigitalGlitch.js +4 -1
- package/examples/jsm/shaders/DotScreenShader.js +4 -1
- package/examples/jsm/shaders/ExposureShader.js +4 -1
- package/examples/jsm/shaders/FXAAShader.js +4 -1
- package/examples/jsm/shaders/FilmShader.js +4 -1
- package/examples/jsm/shaders/FocusShader.js +4 -1
- package/examples/jsm/shaders/FreiChenShader.js +4 -1
- package/examples/jsm/shaders/GTAOShader.js +4 -1
- package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
- package/examples/jsm/shaders/GodRaysShader.js +4 -1
- package/examples/jsm/shaders/HalftoneShader.js +4 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/HueSaturationShader.js +4 -1
- package/examples/jsm/shaders/KaleidoShader.js +4 -1
- package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
- package/examples/jsm/shaders/LuminosityShader.js +4 -1
- package/examples/jsm/shaders/MirrorShader.js +4 -1
- package/examples/jsm/shaders/NormalMapShader.js +4 -1
- package/examples/jsm/shaders/OutputShader.js +4 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
- package/examples/jsm/shaders/RGBShiftShader.js +4 -1
- package/examples/jsm/shaders/SAOShader.js +4 -1
- package/examples/jsm/shaders/SMAAShader.js +1 -0
- package/examples/jsm/shaders/SSAOShader.js +4 -1
- package/examples/jsm/shaders/SSRShader.js +1 -0
- package/examples/jsm/shaders/SepiaShader.js +4 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
- package/examples/jsm/shaders/TechnicolorShader.js +4 -1
- package/examples/jsm/shaders/ToonShader.js +2 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +4 -1
- package/examples/jsm/shaders/VelocityShader.js +4 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/VignetteShader.js +4 -1
- package/examples/jsm/shaders/VolumeShader.js +5 -2
- package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
- package/examples/jsm/textures/FlakesTexture.js +2 -0
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +226 -87
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +234 -85
- package/examples/jsm/transpiler/Transpiler.js +19 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +788 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
- package/examples/jsm/tsl/display/BloomNode.js +1 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
- package/examples/jsm/tsl/display/FXAANode.js +3 -2
- package/examples/jsm/tsl/display/FilmNode.js +1 -0
- package/examples/jsm/tsl/display/GTAONode.js +1 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +4 -29
- package/examples/jsm/tsl/display/LensflareNode.js +1 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
- package/examples/jsm/tsl/display/OutlineNode.js +1 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
- package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
- package/examples/jsm/tsl/display/SMAANode.js +9 -8
- package/examples/jsm/tsl/display/SSAAPassNode.js +5 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +5 -4
- package/examples/jsm/tsl/display/TransitionNode.js +1 -0
- package/examples/jsm/tsl/display/hashBlur.js +28 -6
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +4 -3
- package/examples/jsm/tsl/math/Bayer.js +4 -1
- package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/examples/jsm/tsl/utils/Raymarching.js +6 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +4 -1
- package/examples/jsm/utils/LDrawUtils.js +2 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -0
- package/examples/jsm/utils/SceneUtils.js +4 -1
- package/examples/jsm/utils/ShadowMapViewer.js +2 -0
- package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
- package/examples/jsm/utils/SkeletonUtils.js +4 -1
- package/examples/jsm/utils/SortUtils.js +4 -1
- package/examples/jsm/utils/UVsDebug.js +4 -1
- package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
- package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
- package/examples/jsm/utils/WorkerPool.js +2 -0
- package/examples/jsm/webxr/ARButton.js +1 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
- package/examples/jsm/webxr/Text2D.js +4 -1
- package/examples/jsm/webxr/VRButton.js +1 -0
- package/examples/jsm/webxr/XRButton.js +1 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
- package/examples/jsm/webxr/XREstimatedLight.js +1 -0
- package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
- package/examples/jsm/webxr/XRPlanes.js +1 -0
- package/package.json +6 -4
- package/src/Three.Core.js +1 -1
- package/src/Three.TSL.js +18 -10
- package/src/Three.WebGPU.Nodes.js +1 -0
- package/src/Three.WebGPU.js +3 -0
- package/src/audio/AudioListener.js +13 -10
- package/src/cameras/ArrayCamera.js +9 -1
- package/src/constants.js +47 -20
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +2 -5
- package/src/core/Clock.js +2 -8
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/Object3D.js +23 -22
- package/src/core/RenderTarget.js +65 -21
- package/src/core/RenderTarget3D.js +1 -0
- package/src/extras/TextureUtils.js +1 -5
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +22 -22
- package/src/geometries/CapsuleGeometry.js +167 -17
- package/src/geometries/ExtrudeGeometry.js +39 -29
- package/src/helpers/ArrowHelper.js +2 -2
- package/src/helpers/SkeletonHelper.js +1 -1
- package/src/lights/LightShadow.js +14 -0
- package/src/lights/SpotLightShadow.js +9 -1
- package/src/lights/webgpu/ProjectorLight.js +46 -0
- package/src/loaders/BufferGeometryLoader.js +1 -10
- package/src/loaders/FileLoader.js +2 -2
- package/src/loaders/ImageBitmapLoader.js +25 -9
- package/src/loaders/ImageLoader.js +55 -8
- package/src/loaders/ObjectLoader.js +44 -16
- package/src/loaders/nodes/NodeObjectLoader.js +2 -2
- package/src/materials/Material.js +1 -7
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +105 -19
- package/src/materials/nodes/manager/NodeMaterialObserver.js +20 -2
- package/src/math/Box3.js +28 -0
- package/src/math/Color.js +7 -7
- package/src/math/ColorManagement.js +22 -3
- package/src/math/Frustum.js +6 -1
- package/src/math/FrustumArray.js +253 -0
- package/src/math/Quaternion.js +1 -1
- package/src/math/Ray.js +2 -0
- package/src/math/Sphere.js +28 -0
- package/src/nodes/Nodes.js +2 -3
- package/src/nodes/TSL.js +5 -3
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +54 -26
- package/src/nodes/accessors/Camera.js +31 -4
- package/src/nodes/accessors/CubeTextureNode.js +50 -2
- package/src/nodes/accessors/InstanceNode.js +5 -4
- package/src/nodes/accessors/Lights.js +2 -2
- package/src/nodes/accessors/MaterialNode.js +4 -0
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +102 -16
- package/src/nodes/accessors/Object3DNode.js +7 -8
- package/src/nodes/accessors/Position.js +14 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SkinningNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +25 -0
- package/src/nodes/accessors/StorageTextureNode.js +14 -3
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +59 -8
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/accessors/VelocityNode.js +1 -0
- package/src/nodes/accessors/VertexColorNode.js +4 -4
- package/src/nodes/code/CodeNode.js +8 -11
- package/src/nodes/core/AssignNode.js +27 -5
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/ContextNode.js +7 -3
- package/src/nodes/core/Node.js +69 -20
- package/src/nodes/core/NodeBuilder.js +248 -29
- package/src/nodes/core/NodeUtils.js +42 -0
- package/src/nodes/core/NodeVarying.js +19 -1
- package/src/nodes/core/PropertyNode.js +8 -12
- package/src/nodes/core/StackNode.js +129 -26
- package/src/nodes/core/StructTypeNode.js +26 -4
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/VarNode.js +11 -2
- package/src/nodes/core/VaryingNode.js +45 -24
- package/src/nodes/display/BlendModes.js +42 -1
- package/src/nodes/display/ColorSpaceNode.js +4 -27
- package/src/nodes/display/FrontFacingNode.js +34 -2
- package/src/nodes/display/NormalMapNode.js +19 -50
- package/src/nodes/display/PassNode.js +18 -19
- package/src/nodes/display/ScreenNode.js +0 -26
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +14 -14
- package/src/nodes/functions/ShadowMaskModel.js +5 -1
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
- package/src/nodes/gpgpu/BarrierNode.js +3 -3
- package/src/nodes/gpgpu/ComputeNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +7 -13
- package/src/nodes/lighting/EnvironmentNode.js +5 -5
- package/src/nodes/lighting/HemisphereLightNode.js +2 -2
- package/src/nodes/lighting/IESSpotLightNode.js +2 -1
- package/src/nodes/lighting/LightsNode.js +29 -11
- package/src/nodes/lighting/ProjectorLightNode.js +78 -0
- package/src/nodes/lighting/ShadowBaseNode.js +1 -12
- package/src/nodes/lighting/ShadowFilterNode.js +274 -0
- package/src/nodes/lighting/ShadowNode.js +174 -242
- package/src/nodes/lighting/SpotLightNode.js +44 -7
- package/src/nodes/materialx/lib/mx_noise.js +1 -1
- package/src/nodes/math/ConditionalNode.js +0 -19
- package/src/nodes/math/MathNode.js +68 -21
- package/src/nodes/math/OperatorNode.js +108 -98
- package/src/nodes/shapes/Shapes.js +5 -4
- package/src/nodes/tsl/TSLBase.js +1 -0
- package/src/nodes/tsl/TSLCore.js +160 -65
- package/src/nodes/utils/DebugNode.js +15 -3
- package/src/nodes/utils/Discard.js +2 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/LoopNode.js +64 -34
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/RTTNode.js +13 -5
- package/src/nodes/utils/ReflectorNode.js +77 -7
- package/src/nodes/utils/SampleNode.js +81 -0
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +16 -4
- package/src/objects/Mesh.js +9 -0
- package/src/objects/Skeleton.js +1 -1
- package/src/objects/Sprite.js +9 -0
- package/src/renderers/WebGL3DRenderTarget.js +1 -0
- package/src/renderers/WebGLArrayRenderTarget.js +1 -0
- package/src/renderers/WebGLCubeRenderTarget.js +2 -4
- package/src/renderers/WebGLRenderer.js +25 -11
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Background.js +13 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/RenderList.js +0 -4
- package/src/renderers/common/RenderObject.js +80 -4
- package/src/renderers/common/Renderer.js +116 -8
- package/src/renderers/common/Storage3DTexture.js +79 -0
- package/src/renderers/common/StorageArrayTexture.js +63 -0
- package/src/renderers/common/Textures.js +15 -21
- package/src/renderers/common/TimestampQueryPool.js +1 -0
- package/src/renderers/common/Uniform.js +1 -1
- package/src/renderers/common/UniformsGroup.js +14 -18
- package/src/renderers/common/XRManager.js +157 -27
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +30 -23
- package/src/renderers/common/nodes/Nodes.js +13 -3
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLPrograms.js +4 -2
- package/src/renderers/webgl/WebGLShadowMap.js +3 -2
- package/src/renderers/webgl/WebGLState.js +4 -4
- package/src/renderers/webgl/WebGLTextures.js +144 -4
- package/src/renderers/webgl/WebGLUtils.js +1 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +244 -87
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +73 -7
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
- package/src/renderers/webgpu/WebGPUBackend.js +451 -128
- package/src/renderers/webgpu/WebGPURenderer.js +7 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +86 -33
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +28 -5
- package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +38 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +45 -50
- package/src/renderers/webxr/WebXRController.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +2 -1
- package/src/textures/DepthTexture.js +6 -10
- package/src/textures/Source.js +22 -0
- package/src/textures/Texture.js +118 -1
- package/src/textures/VideoTexture.js +1 -1
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
- package/src/core/RenderTargetArray.js +0 -40
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -1,60 +1,76 @@
|
|
|
1
1
|
import {
|
|
2
|
-
CompressedTexture,
|
|
3
2
|
CompressedArrayTexture,
|
|
4
3
|
CompressedCubeTexture,
|
|
4
|
+
CompressedTexture,
|
|
5
5
|
Data3DTexture,
|
|
6
6
|
DataTexture,
|
|
7
7
|
FileLoader,
|
|
8
8
|
FloatType,
|
|
9
9
|
HalfFloatType,
|
|
10
|
-
NoColorSpace,
|
|
11
10
|
LinearFilter,
|
|
12
11
|
LinearMipmapLinearFilter,
|
|
13
12
|
LinearSRGBColorSpace,
|
|
14
13
|
Loader,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
RGB_ETC1_Format,
|
|
18
|
-
RGB_ETC2_Format,
|
|
19
|
-
RGB_PVRTC_4BPPV1_Format,
|
|
14
|
+
NoColorSpace,
|
|
15
|
+
RGBAFormat,
|
|
20
16
|
RGBA_ASTC_4x4_Format,
|
|
21
17
|
RGBA_ASTC_6x6_Format,
|
|
22
18
|
RGBA_BPTC_Format,
|
|
19
|
+
RGBA_S3TC_DXT3_Format,
|
|
23
20
|
RGBA_ETC2_EAC_Format,
|
|
24
21
|
RGBA_PVRTC_4BPPV1_Format,
|
|
25
|
-
RGBA_S3TC_DXT5_Format,
|
|
26
22
|
RGBA_S3TC_DXT1_Format,
|
|
27
|
-
|
|
23
|
+
RGBA_S3TC_DXT5_Format,
|
|
24
|
+
RGB_BPTC_UNSIGNED_Format,
|
|
25
|
+
RGB_ETC1_Format,
|
|
26
|
+
RGB_ETC2_Format,
|
|
27
|
+
RGB_PVRTC_4BPPV1_Format,
|
|
28
|
+
RGB_S3TC_DXT1_Format,
|
|
28
29
|
RGFormat,
|
|
30
|
+
RedFormat,
|
|
29
31
|
SRGBColorSpace,
|
|
30
|
-
UnsignedByteType
|
|
32
|
+
UnsignedByteType
|
|
31
33
|
} from 'three';
|
|
32
34
|
import { WorkerPool } from '../utils/WorkerPool.js';
|
|
33
35
|
import {
|
|
34
36
|
read,
|
|
35
37
|
KHR_DF_FLAG_ALPHA_PREMULTIPLIED,
|
|
38
|
+
KHR_DF_PRIMARIES_BT709,
|
|
39
|
+
KHR_DF_PRIMARIES_DISPLAYP3,
|
|
40
|
+
KHR_DF_PRIMARIES_UNSPECIFIED,
|
|
36
41
|
KHR_DF_TRANSFER_SRGB,
|
|
37
42
|
KHR_SUPERCOMPRESSION_NONE,
|
|
38
43
|
KHR_SUPERCOMPRESSION_ZSTD,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT,
|
|
45
|
+
VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
|
|
46
|
+
VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
|
|
47
|
+
VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
|
|
48
|
+
VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
|
|
49
|
+
VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
|
|
50
|
+
VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
|
|
51
|
+
VK_FORMAT_BC1_RGB_SRGB_BLOCK,
|
|
52
|
+
VK_FORMAT_BC1_RGB_UNORM_BLOCK,
|
|
53
|
+
VK_FORMAT_BC3_SRGB_BLOCK,
|
|
54
|
+
VK_FORMAT_BC3_UNORM_BLOCK,
|
|
55
|
+
VK_FORMAT_BC5_SNORM_BLOCK,
|
|
56
|
+
VK_FORMAT_BC5_UNORM_BLOCK,
|
|
57
|
+
VK_FORMAT_BC7_SRGB_BLOCK,
|
|
58
|
+
VK_FORMAT_BC7_UNORM_BLOCK,
|
|
59
|
+
VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
|
|
60
|
+
VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
|
|
42
61
|
VK_FORMAT_R16G16B16A16_SFLOAT,
|
|
43
|
-
|
|
44
|
-
|
|
62
|
+
VK_FORMAT_R16G16_SFLOAT,
|
|
63
|
+
VK_FORMAT_R16_SFLOAT,
|
|
45
64
|
VK_FORMAT_R32G32B32A32_SFLOAT,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
VK_FORMAT_R8G8_SRGB,
|
|
49
|
-
VK_FORMAT_R8G8_UNORM,
|
|
65
|
+
VK_FORMAT_R32G32_SFLOAT,
|
|
66
|
+
VK_FORMAT_R32_SFLOAT,
|
|
50
67
|
VK_FORMAT_R8G8B8A8_SRGB,
|
|
51
68
|
VK_FORMAT_R8G8B8A8_UNORM,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
KHR_DF_PRIMARIES_DISPLAYP3
|
|
69
|
+
VK_FORMAT_R8G8_SRGB,
|
|
70
|
+
VK_FORMAT_R8G8_UNORM,
|
|
71
|
+
VK_FORMAT_R8_SRGB,
|
|
72
|
+
VK_FORMAT_R8_UNORM,
|
|
73
|
+
VK_FORMAT_UNDEFINED
|
|
58
74
|
} from '../libs/ktx-parse.module.js';
|
|
59
75
|
import { ZSTDDecoder } from '../libs/zstddec.module.js';
|
|
60
76
|
import { DisplayP3ColorSpace, LinearDisplayP3ColorSpace } from '../math/ColorSpaces.js';
|
|
@@ -90,6 +106,7 @@ let _zstd;
|
|
|
90
106
|
* ```
|
|
91
107
|
*
|
|
92
108
|
* @augments Loader
|
|
109
|
+
* @three_import import { KTX2Loader } from 'three/addons/loaders/KTX2Loader.js';
|
|
93
110
|
*/
|
|
94
111
|
class KTX2Loader extends Loader {
|
|
95
112
|
|
|
@@ -310,8 +327,10 @@ class KTX2Loader extends Loader {
|
|
|
310
327
|
|
|
311
328
|
const loader = new FileLoader( this.manager );
|
|
312
329
|
|
|
313
|
-
loader.
|
|
330
|
+
loader.setPath( this.path );
|
|
331
|
+
loader.setCrossOrigin( this.crossOrigin );
|
|
314
332
|
loader.setWithCredentials( this.withCredentials );
|
|
333
|
+
loader.setResponseType( 'arraybuffer' );
|
|
315
334
|
|
|
316
335
|
loader.load( url, ( buffer ) => {
|
|
317
336
|
|
|
@@ -918,10 +937,29 @@ const FORMAT_MAP = {
|
|
|
918
937
|
[ VK_FORMAT_R8_SRGB ]: RedFormat,
|
|
919
938
|
[ VK_FORMAT_R8_UNORM ]: RedFormat,
|
|
920
939
|
|
|
940
|
+
[ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ]: RGB_ETC2_Format,
|
|
941
|
+
[ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ]: RGBA_ETC2_EAC_Format,
|
|
942
|
+
|
|
921
943
|
[ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ]: RGBA_ASTC_4x4_Format,
|
|
944
|
+
[ VK_FORMAT_ASTC_4x4_SRGB_BLOCK ]: RGBA_ASTC_4x4_Format,
|
|
945
|
+
[ VK_FORMAT_ASTC_4x4_UNORM_BLOCK ]: RGBA_ASTC_4x4_Format,
|
|
922
946
|
[ VK_FORMAT_ASTC_6x6_SRGB_BLOCK ]: RGBA_ASTC_6x6_Format,
|
|
923
947
|
[ VK_FORMAT_ASTC_6x6_UNORM_BLOCK ]: RGBA_ASTC_6x6_Format,
|
|
924
948
|
|
|
949
|
+
[ VK_FORMAT_BC1_RGBA_UNORM_BLOCK ]: RGBA_S3TC_DXT1_Format,
|
|
950
|
+
[ VK_FORMAT_BC1_RGBA_SRGB_BLOCK ]: RGBA_S3TC_DXT1_Format,
|
|
951
|
+
[ VK_FORMAT_BC1_RGB_UNORM_BLOCK ]: RGB_S3TC_DXT1_Format,
|
|
952
|
+
[ VK_FORMAT_BC1_RGB_SRGB_BLOCK ]: RGB_S3TC_DXT1_Format,
|
|
953
|
+
|
|
954
|
+
[ VK_FORMAT_BC3_SRGB_BLOCK ]: RGBA_S3TC_DXT3_Format,
|
|
955
|
+
[ VK_FORMAT_BC3_UNORM_BLOCK ]: RGBA_S3TC_DXT3_Format,
|
|
956
|
+
|
|
957
|
+
[ VK_FORMAT_BC5_SNORM_BLOCK ]: RGBA_S3TC_DXT5_Format,
|
|
958
|
+
[ VK_FORMAT_BC5_UNORM_BLOCK ]: RGBA_S3TC_DXT5_Format,
|
|
959
|
+
|
|
960
|
+
[ VK_FORMAT_BC7_SRGB_BLOCK ]: RGBA_BPTC_Format,
|
|
961
|
+
[ VK_FORMAT_BC7_UNORM_BLOCK ]: RGBA_BPTC_Format,
|
|
962
|
+
|
|
925
963
|
};
|
|
926
964
|
|
|
927
965
|
const TYPE_MAP = {
|
|
@@ -941,6 +979,9 @@ const TYPE_MAP = {
|
|
|
941
979
|
[ VK_FORMAT_R8_SRGB ]: UnsignedByteType,
|
|
942
980
|
[ VK_FORMAT_R8_UNORM ]: UnsignedByteType,
|
|
943
981
|
|
|
982
|
+
[ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ]: UnsignedByteType,
|
|
983
|
+
[ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ]: UnsignedByteType,
|
|
984
|
+
|
|
944
985
|
[ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ]: HalfFloatType,
|
|
945
986
|
[ VK_FORMAT_ASTC_6x6_SRGB_BLOCK ]: UnsignedByteType,
|
|
946
987
|
[ VK_FORMAT_ASTC_6x6_UNORM_BLOCK ]: UnsignedByteType,
|
|
@@ -1776,6 +1776,7 @@ function createObject( loader, elements, elementSize, isConditionalSegments = fa
|
|
|
1776
1776
|
* ```
|
|
1777
1777
|
*
|
|
1778
1778
|
* @augments Loader
|
|
1779
|
+
* @three_import import { LDrawLoader } from 'three/addons/loaders/LDrawLoader.js';
|
|
1779
1780
|
*/
|
|
1780
1781
|
class LDrawLoader extends Loader {
|
|
1781
1782
|
|
|
@@ -1884,7 +1885,7 @@ class LDrawLoader extends Loader {
|
|
|
1884
1885
|
|
|
1885
1886
|
}
|
|
1886
1887
|
|
|
1887
|
-
this.
|
|
1888
|
+
this.addMaterials( materials );
|
|
1888
1889
|
|
|
1889
1890
|
}
|
|
1890
1891
|
|
|
@@ -1906,7 +1907,7 @@ class LDrawLoader extends Loader {
|
|
|
1906
1907
|
fileLoader.load( url, text => {
|
|
1907
1908
|
|
|
1908
1909
|
// Initializes the materials library with default materials
|
|
1909
|
-
this.
|
|
1910
|
+
this.addDefaultMaterials();
|
|
1910
1911
|
|
|
1911
1912
|
this.partsCache
|
|
1912
1913
|
.parseModel( text )
|
|
@@ -1947,16 +1948,61 @@ class LDrawLoader extends Loader {
|
|
|
1947
1948
|
|
|
1948
1949
|
}
|
|
1949
1950
|
|
|
1951
|
+
/**
|
|
1952
|
+
* Sets the loader's material library. This method clears existing
|
|
1953
|
+
* material definitions.
|
|
1954
|
+
*
|
|
1955
|
+
* @param {Array<Material>} materials - The materials to set.
|
|
1956
|
+
* @return {LDrawLoader} A reference to this loader.
|
|
1957
|
+
*/
|
|
1950
1958
|
setMaterials( materials ) {
|
|
1951
1959
|
|
|
1960
|
+
this.clearMaterials();
|
|
1961
|
+
this.addMaterials( materials );
|
|
1962
|
+
|
|
1963
|
+
return this;
|
|
1964
|
+
|
|
1965
|
+
}
|
|
1966
|
+
|
|
1967
|
+
/**
|
|
1968
|
+
* Clears the loader's material library.
|
|
1969
|
+
*
|
|
1970
|
+
* @return {LDrawLoader} A reference to this loader.
|
|
1971
|
+
*/
|
|
1972
|
+
clearMaterials() {
|
|
1973
|
+
|
|
1952
1974
|
this.materialLibrary = {};
|
|
1953
1975
|
this.materials = [];
|
|
1976
|
+
|
|
1977
|
+
return this;
|
|
1978
|
+
|
|
1979
|
+
}
|
|
1980
|
+
|
|
1981
|
+
/**
|
|
1982
|
+
* Adds a list of materials to the loader's material library.
|
|
1983
|
+
*
|
|
1984
|
+
* @param {Array<Material>} materials - The materials to add.
|
|
1985
|
+
* @return {LDrawLoader} A reference to this loader.
|
|
1986
|
+
*/
|
|
1987
|
+
addMaterials( materials ) {
|
|
1988
|
+
|
|
1954
1989
|
for ( let i = 0, l = materials.length; i < l; i ++ ) {
|
|
1955
1990
|
|
|
1956
1991
|
this.addMaterial( materials[ i ] );
|
|
1957
1992
|
|
|
1958
1993
|
}
|
|
1959
1994
|
|
|
1995
|
+
return this;
|
|
1996
|
+
|
|
1997
|
+
}
|
|
1998
|
+
|
|
1999
|
+
/**
|
|
2000
|
+
* Initializes the loader with default materials.
|
|
2001
|
+
*
|
|
2002
|
+
* @return {LDrawLoader} A reference to this loader.
|
|
2003
|
+
*/
|
|
2004
|
+
addDefaultMaterials() {
|
|
2005
|
+
|
|
1960
2006
|
// Add default main triangle and line edge materials (used in pieces that can be colored with a main color)
|
|
1961
2007
|
this.addMaterial( this.parseColorMetaDirective( new LineParser( 'Main_Colour CODE 16 VALUE #FF8080 EDGE #333333' ) ) );
|
|
1962
2008
|
this.addMaterial( this.parseColorMetaDirective( new LineParser( 'Edge_Colour CODE 24 VALUE #A0A0A0 EDGE #333333' ) ) );
|
|
@@ -1981,6 +2027,12 @@ class LDrawLoader extends Loader {
|
|
|
1981
2027
|
|
|
1982
2028
|
}
|
|
1983
2029
|
|
|
2030
|
+
/**
|
|
2031
|
+
* Adds a single material to the loader's material library.
|
|
2032
|
+
*
|
|
2033
|
+
* @param {Material} material - The material to add.
|
|
2034
|
+
* @return {LDrawLoader} A reference to this loader.
|
|
2035
|
+
*/
|
|
1984
2036
|
addMaterial( material ) {
|
|
1985
2037
|
|
|
1986
2038
|
// Adds a material to the material library which is on top of the parse scopes stack. And also to the materials array
|
|
@@ -2080,7 +2132,7 @@ class LDrawLoader extends Loader {
|
|
|
2080
2132
|
|
|
2081
2133
|
} else if ( finalMaterialPass ) {
|
|
2082
2134
|
|
|
2083
|
-
// see if we can get the final material from
|
|
2135
|
+
// see if we can get the final material from the "getMaterial" function which will attempt to
|
|
2084
2136
|
// parse the "direct" colors
|
|
2085
2137
|
material = loader.getMaterial( colorCode );
|
|
2086
2138
|
if ( material === null ) {
|
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @version 1.1.1
|
|
3
|
-
*
|
|
4
|
-
* @desc Load files in LWO3 and LWO2 format on Three.js
|
|
5
|
-
*
|
|
6
|
-
* LWO3 format specification:
|
|
7
|
-
* https://static.lightwave3d.com/sdk/2019/html/filefmts/lwo3.html
|
|
8
|
-
*
|
|
9
|
-
* LWO2 format specification:
|
|
10
|
-
* https://static.lightwave3d.com/sdk/2019/html/filefmts/lwo2.html
|
|
11
|
-
*
|
|
12
|
-
**/
|
|
13
|
-
|
|
14
1
|
import {
|
|
15
2
|
AddOperation,
|
|
16
3
|
BackSide,
|
|
@@ -61,6 +48,7 @@ let _lwoTree;
|
|
|
61
48
|
* ```
|
|
62
49
|
*
|
|
63
50
|
* @augments Loader
|
|
51
|
+
* @three_import import { LWOLoader } from 'three/addons/loaders/LWOLoader.js';
|
|
64
52
|
*/
|
|
65
53
|
class LWOLoader extends Loader {
|
|
66
54
|
|
|
@@ -29,9 +29,24 @@ import lottie from '../libs/lottie_canvas.module.js';
|
|
|
29
29
|
* ```
|
|
30
30
|
*
|
|
31
31
|
* @augments Loader
|
|
32
|
+
* @three_import import { LottieLoader } from 'three/addons/loaders/LottieLoader.js';
|
|
32
33
|
*/
|
|
33
34
|
class LottieLoader extends Loader {
|
|
34
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Constructs a new Lottie loader.
|
|
38
|
+
*
|
|
39
|
+
* @deprecated The loader has been deprecated and will be removed with r186. Use lottie-web instead and create your animated texture manually.
|
|
40
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
41
|
+
*/
|
|
42
|
+
constructor( manager ) {
|
|
43
|
+
|
|
44
|
+
super( manager );
|
|
45
|
+
|
|
46
|
+
console.warn( 'THREE.LottieLoader: The loader has been deprecated and will be removed with r186. Use lottie-web instead and create your animated texture manually.' );
|
|
47
|
+
|
|
48
|
+
}
|
|
49
|
+
|
|
35
50
|
/**
|
|
36
51
|
* Sets the texture quality.
|
|
37
52
|
*
|
|
@@ -29,6 +29,7 @@ import {
|
|
|
29
29
|
* ```
|
|
30
30
|
*
|
|
31
31
|
* @augments Loader
|
|
32
|
+
* @three_import import { MTLLoader } from 'three/addons/loaders/MTLLoader.js';
|
|
32
33
|
*/
|
|
33
34
|
class MTLLoader extends Loader {
|
|
34
35
|
|
|
@@ -391,21 +392,21 @@ class MaterialCreator {
|
|
|
391
392
|
|
|
392
393
|
// Diffuse color (color under white light) using RGB values
|
|
393
394
|
|
|
394
|
-
params.color = ColorManagement.
|
|
395
|
+
params.color = ColorManagement.colorSpaceToWorking( new Color().fromArray( value ), SRGBColorSpace );
|
|
395
396
|
|
|
396
397
|
break;
|
|
397
398
|
|
|
398
399
|
case 'ks':
|
|
399
400
|
|
|
400
401
|
// Specular color (color when light is reflected from shiny surface) using RGB values
|
|
401
|
-
params.specular = ColorManagement.
|
|
402
|
+
params.specular = ColorManagement.colorSpaceToWorking( new Color().fromArray( value ), SRGBColorSpace );
|
|
402
403
|
|
|
403
404
|
break;
|
|
404
405
|
|
|
405
406
|
case 'ke':
|
|
406
407
|
|
|
407
408
|
// Emissive using RGB values
|
|
408
|
-
params.emissive = ColorManagement.
|
|
409
|
+
params.emissive = ColorManagement.colorSpaceToWorking( new Color().fromArray( value ), SRGBColorSpace );
|
|
409
410
|
|
|
410
411
|
break;
|
|
411
412
|
|
|
@@ -156,6 +156,7 @@ MXElements.forEach( element => MtlXLibrary[ element.name ] = element );
|
|
|
156
156
|
* ```
|
|
157
157
|
*
|
|
158
158
|
* @augments Loader
|
|
159
|
+
* @three_import import { MaterialXLoader } from 'three/addons/loaders/MaterialXLoader.js';
|
|
159
160
|
*/
|
|
160
161
|
class MaterialXLoader extends Loader {
|
|
161
162
|
|
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
* ```
|
|
31
31
|
*
|
|
32
32
|
* @augments Loader
|
|
33
|
+
* @three_import import { PCDLoader } from 'three/addons/loaders/PCDLoader.js';
|
|
33
34
|
*/
|
|
34
35
|
class PCDLoader extends Loader {
|
|
35
36
|
|
|
@@ -96,6 +97,71 @@ class PCDLoader extends Loader {
|
|
|
96
97
|
|
|
97
98
|
}
|
|
98
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Get dataview value by field type and size.
|
|
102
|
+
*
|
|
103
|
+
* @param {DataView} dataview - The DataView to read from.
|
|
104
|
+
* @param {number} offset - The offset to start reading from.
|
|
105
|
+
* @param {'F' | 'U' | 'I'} type - Field type.
|
|
106
|
+
* @param {number} size - Field size.
|
|
107
|
+
* @returns {number} Field value.
|
|
108
|
+
*/
|
|
109
|
+
_getDataView( dataview, offset, type, size ) {
|
|
110
|
+
|
|
111
|
+
switch ( type ) {
|
|
112
|
+
|
|
113
|
+
case 'F': {
|
|
114
|
+
|
|
115
|
+
if ( size === 8 ) {
|
|
116
|
+
|
|
117
|
+
return dataview.getFloat64( offset, this.littleEndian );
|
|
118
|
+
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return dataview.getFloat32( offset, this.littleEndian );
|
|
122
|
+
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
case 'I': {
|
|
126
|
+
|
|
127
|
+
if ( size === 1 ) {
|
|
128
|
+
|
|
129
|
+
return dataview.getInt8( offset );
|
|
130
|
+
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if ( size === 2 ) {
|
|
134
|
+
|
|
135
|
+
return dataview.getInt16( offset, this.littleEndian );
|
|
136
|
+
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return dataview.getInt32( offset, this.littleEndian );
|
|
140
|
+
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
case 'U': {
|
|
144
|
+
|
|
145
|
+
if ( size === 1 ) {
|
|
146
|
+
|
|
147
|
+
return dataview.getUint8( offset );
|
|
148
|
+
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if ( size === 2 ) {
|
|
152
|
+
|
|
153
|
+
return dataview.getUint16( offset, this.littleEndian );
|
|
154
|
+
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return dataview.getUint32( offset, this.littleEndian );
|
|
158
|
+
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
}
|
|
164
|
+
|
|
99
165
|
/**
|
|
100
166
|
* Parses the given PCD data and returns a point cloud.
|
|
101
167
|
*
|
|
@@ -159,9 +225,40 @@ class PCDLoader extends Loader {
|
|
|
159
225
|
|
|
160
226
|
}
|
|
161
227
|
|
|
162
|
-
function parseHeader(
|
|
228
|
+
function parseHeader( binaryData ) {
|
|
163
229
|
|
|
164
230
|
const PCDheader = {};
|
|
231
|
+
|
|
232
|
+
const buffer = new Uint8Array( binaryData );
|
|
233
|
+
|
|
234
|
+
let data = '', line = '', i = 0, end = false;
|
|
235
|
+
|
|
236
|
+
const max = buffer.length;
|
|
237
|
+
|
|
238
|
+
while ( i < max && end === false ) {
|
|
239
|
+
|
|
240
|
+
const char = String.fromCharCode( buffer[ i ++ ] );
|
|
241
|
+
|
|
242
|
+
if ( char === '\n' || char === '\r' ) {
|
|
243
|
+
|
|
244
|
+
if ( line.trim().toLowerCase().startsWith( 'data' ) ) {
|
|
245
|
+
|
|
246
|
+
end = true;
|
|
247
|
+
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
line = '';
|
|
251
|
+
|
|
252
|
+
} else {
|
|
253
|
+
|
|
254
|
+
line += char;
|
|
255
|
+
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
data += char;
|
|
259
|
+
|
|
260
|
+
}
|
|
261
|
+
|
|
165
262
|
const result1 = data.search( /[\r\n]DATA\s(\S*)\s/i );
|
|
166
263
|
const result2 = /[\r\n]DATA\s(\S*)\s/i.exec( data.slice( result1 - 1 ) );
|
|
167
264
|
|
|
@@ -267,11 +364,9 @@ class PCDLoader extends Loader {
|
|
|
267
364
|
|
|
268
365
|
}
|
|
269
366
|
|
|
270
|
-
|
|
367
|
+
// parse header
|
|
271
368
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
const PCDheader = parseHeader( textData );
|
|
369
|
+
const PCDheader = parseHeader( data );
|
|
275
370
|
|
|
276
371
|
// parse data
|
|
277
372
|
|
|
@@ -288,6 +383,7 @@ class PCDLoader extends Loader {
|
|
|
288
383
|
if ( PCDheader.data === 'ascii' ) {
|
|
289
384
|
|
|
290
385
|
const offset = PCDheader.offset;
|
|
386
|
+
const textData = new TextDecoder().decode( data );
|
|
291
387
|
const pcdData = textData.slice( PCDheader.headerLen );
|
|
292
388
|
const lines = pcdData.split( '\n' );
|
|
293
389
|
|
|
@@ -380,9 +476,9 @@ class PCDLoader extends Loader {
|
|
|
380
476
|
const xIndex = PCDheader.fields.indexOf( 'x' );
|
|
381
477
|
const yIndex = PCDheader.fields.indexOf( 'y' );
|
|
382
478
|
const zIndex = PCDheader.fields.indexOf( 'z' );
|
|
383
|
-
position.push(
|
|
384
|
-
position.push(
|
|
385
|
-
position.push(
|
|
479
|
+
position.push( this._getDataView( dataview, ( PCDheader.points * offset.x ) + PCDheader.size[ xIndex ] * i, PCDheader.type[ xIndex ], PCDheader.size[ xIndex ] ) );
|
|
480
|
+
position.push( this._getDataView( dataview, ( PCDheader.points * offset.y ) + PCDheader.size[ yIndex ] * i, PCDheader.type[ yIndex ], PCDheader.size[ yIndex ] ) );
|
|
481
|
+
position.push( this._getDataView( dataview, ( PCDheader.points * offset.z ) + PCDheader.size[ zIndex ] * i, PCDheader.type[ zIndex ], PCDheader.size[ zIndex ] ) );
|
|
386
482
|
|
|
387
483
|
}
|
|
388
484
|
|
|
@@ -405,16 +501,16 @@ class PCDLoader extends Loader {
|
|
|
405
501
|
const xIndex = PCDheader.fields.indexOf( 'normal_x' );
|
|
406
502
|
const yIndex = PCDheader.fields.indexOf( 'normal_y' );
|
|
407
503
|
const zIndex = PCDheader.fields.indexOf( 'normal_z' );
|
|
408
|
-
normal.push(
|
|
409
|
-
normal.push(
|
|
410
|
-
normal.push(
|
|
504
|
+
normal.push( this._getDataView( dataview, ( PCDheader.points * offset.normal_x ) + PCDheader.size[ xIndex ] * i, PCDheader.type[ xIndex ], PCDheader.size[ xIndex ] ) );
|
|
505
|
+
normal.push( this._getDataView( dataview, ( PCDheader.points * offset.normal_y ) + PCDheader.size[ yIndex ] * i, PCDheader.type[ yIndex ], PCDheader.size[ yIndex ] ) );
|
|
506
|
+
normal.push( this._getDataView( dataview, ( PCDheader.points * offset.normal_z ) + PCDheader.size[ zIndex ] * i, PCDheader.type[ zIndex ], PCDheader.size[ zIndex ] ) );
|
|
411
507
|
|
|
412
508
|
}
|
|
413
509
|
|
|
414
510
|
if ( offset.intensity !== undefined ) {
|
|
415
511
|
|
|
416
512
|
const intensityIndex = PCDheader.fields.indexOf( 'intensity' );
|
|
417
|
-
intensity.push(
|
|
513
|
+
intensity.push( this._getDataView( dataview, ( PCDheader.points * offset.intensity ) + PCDheader.size[ intensityIndex ] * i, PCDheader.type[ intensityIndex ], PCDheader.size[ intensityIndex ] ) );
|
|
418
514
|
|
|
419
515
|
}
|
|
420
516
|
|
|
@@ -440,9 +536,12 @@ class PCDLoader extends Loader {
|
|
|
440
536
|
|
|
441
537
|
if ( offset.x !== undefined ) {
|
|
442
538
|
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
539
|
+
const xIndex = PCDheader.fields.indexOf( 'x' );
|
|
540
|
+
const yIndex = PCDheader.fields.indexOf( 'y' );
|
|
541
|
+
const zIndex = PCDheader.fields.indexOf( 'z' );
|
|
542
|
+
position.push( this._getDataView( dataview, row + offset.x, PCDheader.type[ xIndex ], PCDheader.size[ xIndex ] ) );
|
|
543
|
+
position.push( this._getDataView( dataview, row + offset.y, PCDheader.type[ yIndex ], PCDheader.size[ yIndex ] ) );
|
|
544
|
+
position.push( this._getDataView( dataview, row + offset.z, PCDheader.type[ zIndex ], PCDheader.size[ zIndex ] ) );
|
|
446
545
|
|
|
447
546
|
}
|
|
448
547
|
|
|
@@ -460,15 +559,19 @@ class PCDLoader extends Loader {
|
|
|
460
559
|
|
|
461
560
|
if ( offset.normal_x !== undefined ) {
|
|
462
561
|
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
562
|
+
const xIndex = PCDheader.fields.indexOf( 'normal_x' );
|
|
563
|
+
const yIndex = PCDheader.fields.indexOf( 'normal_y' );
|
|
564
|
+
const zIndex = PCDheader.fields.indexOf( 'normal_z' );
|
|
565
|
+
normal.push( this._getDataView( dataview, row + offset.normal_x, PCDheader.type[ xIndex ], PCDheader.size[ xIndex ] ) );
|
|
566
|
+
normal.push( this._getDataView( dataview, row + offset.normal_y, PCDheader.type[ yIndex ], PCDheader.size[ yIndex ] ) );
|
|
567
|
+
normal.push( this._getDataView( dataview, row + offset.normal_z, PCDheader.type[ zIndex ], PCDheader.size[ zIndex ] ) );
|
|
466
568
|
|
|
467
569
|
}
|
|
468
570
|
|
|
469
571
|
if ( offset.intensity !== undefined ) {
|
|
470
572
|
|
|
471
|
-
|
|
573
|
+
const intensityIndex = PCDheader.fields.indexOf( 'intensity' );
|
|
574
|
+
intensity.push( this._getDataView( dataview, row + offset.intensity, PCDheader.type[ intensityIndex ], PCDheader.size[ intensityIndex ] ) );
|
|
472
575
|
|
|
473
576
|
}
|
|
474
577
|
|