@plastic-software/three 0.175.14 → 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 +7746 -6791
- package/build/three.core.js +7371 -6576
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +189 -29
- 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/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
|
@@ -37,6 +37,8 @@ const _scale = new Vector3();
|
|
|
37
37
|
* const selectionBox = new SelectionBox( camera, scene );
|
|
38
38
|
* const selectedObjects = selectionBox.select( startPoint, endPoint );
|
|
39
39
|
* ```
|
|
40
|
+
*
|
|
41
|
+
* @three_import import { SelectionBox } from 'three/addons/interactive/SelectionBox.js';
|
|
40
42
|
*/
|
|
41
43
|
class SelectionBox {
|
|
42
44
|
|
|
@@ -4,6 +4,8 @@ import { Vector2 } from 'three';
|
|
|
4
4
|
* A helper for {@link SelectionBox}.
|
|
5
5
|
*
|
|
6
6
|
* It visualizes the current selection box with a `div` container element.
|
|
7
|
+
*
|
|
8
|
+
* @three_import import { SelectionHelper } from 'three/addons/interactive/SelectionHelper.js';
|
|
7
9
|
*/
|
|
8
10
|
class SelectionHelper {
|
|
9
11
|
|
|
@@ -12,6 +12,7 @@ import { RectAreaLightTexturesLib } from './RectAreaLightTexturesLib.js';
|
|
|
12
12
|
* ```
|
|
13
13
|
*
|
|
14
14
|
* @hideconstructor
|
|
15
|
+
* @three_import import { RectAreaLightUniformsLib } from 'three/addons/lights/RectAreaLightUniformsLib.js';
|
|
15
16
|
*/
|
|
16
17
|
class RectAreaLightUniformsLib {
|
|
17
18
|
|
|
@@ -17,6 +17,7 @@ import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js';
|
|
|
17
17
|
* ```
|
|
18
18
|
*
|
|
19
19
|
* @augments LineSegmentsGeometry
|
|
20
|
+
* @three_import import { LineLineGeometry2 } from 'three/addons/lines/LineGeometry.js';
|
|
20
21
|
*/
|
|
21
22
|
class LineGeometry extends LineSegmentsGeometry {
|
|
22
23
|
|
|
@@ -311,6 +311,9 @@ ShaderLib[ 'line' ] = {
|
|
|
311
311
|
|
|
312
312
|
void main() {
|
|
313
313
|
|
|
314
|
+
float alpha = opacity;
|
|
315
|
+
vec4 diffuseColor = vec4( diffuse, alpha );
|
|
316
|
+
|
|
314
317
|
#include <clipping_planes_fragment>
|
|
315
318
|
|
|
316
319
|
#ifdef USE_DASH
|
|
@@ -321,8 +324,6 @@ ShaderLib[ 'line' ] = {
|
|
|
321
324
|
|
|
322
325
|
#endif
|
|
323
326
|
|
|
324
|
-
float alpha = opacity;
|
|
325
|
-
|
|
326
327
|
#ifdef WORLD_UNITS
|
|
327
328
|
|
|
328
329
|
// Find the closest points on the view ray and the line segment
|
|
@@ -387,8 +388,6 @@ ShaderLib[ 'line' ] = {
|
|
|
387
388
|
|
|
388
389
|
#endif
|
|
389
390
|
|
|
390
|
-
vec4 diffuseColor = vec4( diffuse, alpha );
|
|
391
|
-
|
|
392
391
|
#include <logdepthbuf_fragment>
|
|
393
392
|
#include <color_fragment>
|
|
394
393
|
|
|
@@ -413,6 +412,7 @@ ShaderLib[ 'line' ] = {
|
|
|
413
412
|
* use {@link Line2NodeMaterial}.
|
|
414
413
|
*
|
|
415
414
|
* @augments ShaderMaterial
|
|
415
|
+
* @three_import import { LineMaterial } from 'three/addons/lines/LineMaterial.js';
|
|
416
416
|
*/
|
|
417
417
|
class LineMaterial extends ShaderMaterial {
|
|
418
418
|
|
|
@@ -18,6 +18,7 @@ const _vector = new Vector3();
|
|
|
18
18
|
* This is used in {@link LineSegments2} to describe the shape.
|
|
19
19
|
*
|
|
20
20
|
* @augments InstancedBufferGeometry
|
|
21
|
+
* @three_import import { LineSegmentsGeometry } from 'three/addons/lines/LineSegmentsGeometry.js';
|
|
21
22
|
*/
|
|
22
23
|
class LineSegmentsGeometry extends InstancedBufferGeometry {
|
|
23
24
|
|
|
@@ -14,6 +14,7 @@ import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js';
|
|
|
14
14
|
* ```
|
|
15
15
|
*
|
|
16
16
|
* @augments LineSegmentsGeometry
|
|
17
|
+
* @three_import import { WireframeGeometry2 } from 'three/addons/lines/WireframeGeometry2.js';
|
|
17
18
|
*/
|
|
18
19
|
class WireframeGeometry2 extends LineSegmentsGeometry {
|
|
19
20
|
|
|
@@ -94,9 +94,10 @@ function raycastWorldUnits( lineSegments, intersects ) {
|
|
|
94
94
|
function raycastScreenSpace( lineSegments, camera, intersects ) {
|
|
95
95
|
|
|
96
96
|
const projectionMatrix = camera.projectionMatrix;
|
|
97
|
-
const resolution = lineSegments.resolution;
|
|
98
97
|
const matrixWorld = lineSegments.matrixWorld;
|
|
99
98
|
|
|
99
|
+
const resolution = lineSegments._resolution;
|
|
100
|
+
|
|
100
101
|
const geometry = lineSegments.geometry;
|
|
101
102
|
const instanceStart = geometry.attributes.instanceStart;
|
|
102
103
|
const instanceEnd = geometry.attributes.instanceEnd;
|
|
@@ -234,6 +235,7 @@ function raycastScreenSpace( lineSegments, camera, intersects ) {
|
|
|
234
235
|
* import the class from `lines/LineSegments2.js`.
|
|
235
236
|
*
|
|
236
237
|
* @augments Mesh
|
|
238
|
+
* @three_import import { LineSegments2 } from 'three/addons/lines/webgpu/LineSegments2.js';
|
|
237
239
|
*/
|
|
238
240
|
class LineSegments2 extends Mesh {
|
|
239
241
|
|
|
@@ -58,6 +58,7 @@ import { TGALoader } from '../loaders/TGALoader.js';
|
|
|
58
58
|
* ```
|
|
59
59
|
*
|
|
60
60
|
* @augments Loader
|
|
61
|
+
* @three_import import { ColladaLoader } from 'three/addons/loaders/ColladaLoader.js';
|
|
61
62
|
*/
|
|
62
63
|
class ColladaLoader extends Loader {
|
|
63
64
|
|
|
@@ -107,7 +108,7 @@ class ColladaLoader extends Loader {
|
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
/**
|
|
110
|
-
* Parses the given Collada data and returns a result
|
|
111
|
+
* Parses the given Collada data and returns a result object holding the parsed scene,
|
|
111
112
|
* an array of animation clips and kinematics.
|
|
112
113
|
*
|
|
113
114
|
* @param {string} text - The raw Collada data as a string.
|
|
@@ -1717,9 +1718,9 @@ class ColladaLoader extends Loader {
|
|
|
1717
1718
|
|
|
1718
1719
|
}
|
|
1719
1720
|
|
|
1720
|
-
ColorManagement.
|
|
1721
|
-
if ( material.specular ) ColorManagement.
|
|
1722
|
-
if ( material.emissive ) ColorManagement.
|
|
1721
|
+
ColorManagement.colorSpaceToWorking( material.color, SRGBColorSpace );
|
|
1722
|
+
if ( material.specular ) ColorManagement.colorSpaceToWorking( material.specular, SRGBColorSpace );
|
|
1723
|
+
if ( material.emissive ) ColorManagement.colorSpaceToWorking( material.emissive, SRGBColorSpace );
|
|
1723
1724
|
|
|
1724
1725
|
//
|
|
1725
1726
|
|
|
@@ -2056,7 +2057,7 @@ class ColladaLoader extends Loader {
|
|
|
2056
2057
|
case 'color':
|
|
2057
2058
|
const array = parseFloats( child.textContent );
|
|
2058
2059
|
data.color = new Color().fromArray( array );
|
|
2059
|
-
ColorManagement.
|
|
2060
|
+
ColorManagement.colorSpaceToWorking( data.color, SRGBColorSpace );
|
|
2060
2061
|
break;
|
|
2061
2062
|
|
|
2062
2063
|
case 'falloff_angle':
|
|
@@ -41,6 +41,7 @@ const _taskCache = new WeakMap();
|
|
|
41
41
|
* ```
|
|
42
42
|
*
|
|
43
43
|
* @augments Loader
|
|
44
|
+
* @three_import import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
|
|
44
45
|
*/
|
|
45
46
|
class DRACOLoader extends Loader {
|
|
46
47
|
|
|
@@ -309,7 +310,7 @@ class DRACOLoader extends Loader {
|
|
|
309
310
|
for ( let i = 0, il = attribute.count; i < il; i ++ ) {
|
|
310
311
|
|
|
311
312
|
_color.fromBufferAttribute( attribute, i );
|
|
312
|
-
ColorManagement.
|
|
313
|
+
ColorManagement.colorSpaceToWorking( _color, SRGBColorSpace );
|
|
313
314
|
attribute.setXYZ( i, _color.r, _color.g, _color.b );
|
|
314
315
|
|
|
315
316
|
}
|
|
@@ -73,6 +73,7 @@ let sceneGraph;
|
|
|
73
73
|
* ```
|
|
74
74
|
*
|
|
75
75
|
* @augments Loader
|
|
76
|
+
* @three_import import { FBXLoader } from 'three/addons/loaders/FBXLoader.js';
|
|
76
77
|
*/
|
|
77
78
|
class FBXLoader extends Loader {
|
|
78
79
|
|
|
@@ -137,7 +138,7 @@ class FBXLoader extends Loader {
|
|
|
137
138
|
/**
|
|
138
139
|
* Parses the given FBX data and returns the resulting group.
|
|
139
140
|
*
|
|
140
|
-
* @param {
|
|
141
|
+
* @param {ArrayBuffer} FBXBuffer - The raw FBX data as an array buffer.
|
|
141
142
|
* @param {string} path - The URL base path.
|
|
142
143
|
* @return {Group} An object representing the parsed asset.
|
|
143
144
|
*/
|
|
@@ -347,6 +348,11 @@ class FBXTreeParser {
|
|
|
347
348
|
type = 'image/tga';
|
|
348
349
|
break;
|
|
349
350
|
|
|
351
|
+
case 'webp':
|
|
352
|
+
|
|
353
|
+
type = 'image/webp';
|
|
354
|
+
break;
|
|
355
|
+
|
|
350
356
|
default:
|
|
351
357
|
|
|
352
358
|
console.warn( 'FBXLoader: Image type "' + extension + '" is not supported.' );
|
|
@@ -436,21 +442,10 @@ class FBXTreeParser {
|
|
|
436
442
|
// load a texture specified as a blob or data URI, or via an external URL using TextureLoader
|
|
437
443
|
loadTexture( textureNode, images ) {
|
|
438
444
|
|
|
439
|
-
const nonNativeExtensions = new Set( [ 'tga', 'tif', 'tiff', 'exr', 'dds', 'hdr', 'ktx2' ] );
|
|
440
|
-
|
|
441
445
|
const extension = textureNode.FileName.split( '.' ).pop().toLowerCase();
|
|
442
446
|
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
if ( ! loader ) {
|
|
446
|
-
|
|
447
|
-
console.warn(
|
|
448
|
-
`FBXLoader: ${extension.toUpperCase()} loader not found, creating placeholder texture for`,
|
|
449
|
-
textureNode.RelativeFilename
|
|
450
|
-
);
|
|
451
|
-
return new Texture();
|
|
452
|
-
|
|
453
|
-
}
|
|
447
|
+
let loader = this.manager.getHandler( `.${extension}` );
|
|
448
|
+
if ( loader === null ) loader = this.textureLoader;
|
|
454
449
|
|
|
455
450
|
const loaderPath = loader.path;
|
|
456
451
|
|
|
@@ -476,6 +471,13 @@ class FBXTreeParser {
|
|
|
476
471
|
|
|
477
472
|
}
|
|
478
473
|
|
|
474
|
+
if ( fileName === undefined ) {
|
|
475
|
+
|
|
476
|
+
console.warn( 'FBXLoader: Undefined filename, creating placeholder texture.' );
|
|
477
|
+
return new Texture();
|
|
478
|
+
|
|
479
|
+
}
|
|
480
|
+
|
|
479
481
|
const texture = loader.load( fileName );
|
|
480
482
|
|
|
481
483
|
// revert to initial path
|
|
@@ -567,12 +569,12 @@ class FBXTreeParser {
|
|
|
567
569
|
|
|
568
570
|
if ( materialNode.Diffuse ) {
|
|
569
571
|
|
|
570
|
-
parameters.color = ColorManagement.
|
|
572
|
+
parameters.color = ColorManagement.colorSpaceToWorking( new Color().fromArray( materialNode.Diffuse.value ), SRGBColorSpace );
|
|
571
573
|
|
|
572
574
|
} else if ( materialNode.DiffuseColor && ( materialNode.DiffuseColor.type === 'Color' || materialNode.DiffuseColor.type === 'ColorRGB' ) ) {
|
|
573
575
|
|
|
574
576
|
// The blender exporter exports diffuse here instead of in materialNode.Diffuse
|
|
575
|
-
parameters.color = ColorManagement.
|
|
577
|
+
parameters.color = ColorManagement.colorSpaceToWorking( new Color().fromArray( materialNode.DiffuseColor.value ), SRGBColorSpace );
|
|
576
578
|
|
|
577
579
|
}
|
|
578
580
|
|
|
@@ -584,12 +586,12 @@ class FBXTreeParser {
|
|
|
584
586
|
|
|
585
587
|
if ( materialNode.Emissive ) {
|
|
586
588
|
|
|
587
|
-
parameters.emissive = ColorManagement.
|
|
589
|
+
parameters.emissive = ColorManagement.colorSpaceToWorking( new Color().fromArray( materialNode.Emissive.value ), SRGBColorSpace );
|
|
588
590
|
|
|
589
591
|
} else if ( materialNode.EmissiveColor && ( materialNode.EmissiveColor.type === 'Color' || materialNode.EmissiveColor.type === 'ColorRGB' ) ) {
|
|
590
592
|
|
|
591
593
|
// The blender exporter exports emissive color here instead of in materialNode.Emissive
|
|
592
|
-
parameters.emissive = ColorManagement.
|
|
594
|
+
parameters.emissive = ColorManagement.colorSpaceToWorking( new Color().fromArray( materialNode.EmissiveColor.value ), SRGBColorSpace );
|
|
593
595
|
|
|
594
596
|
}
|
|
595
597
|
|
|
@@ -635,12 +637,12 @@ class FBXTreeParser {
|
|
|
635
637
|
|
|
636
638
|
if ( materialNode.Specular ) {
|
|
637
639
|
|
|
638
|
-
parameters.specular = ColorManagement.
|
|
640
|
+
parameters.specular = ColorManagement.colorSpaceToWorking( new Color().fromArray( materialNode.Specular.value ), SRGBColorSpace );
|
|
639
641
|
|
|
640
642
|
} else if ( materialNode.SpecularColor && materialNode.SpecularColor.type === 'Color' ) {
|
|
641
643
|
|
|
642
644
|
// The blender exporter exports specular color here instead of in materialNode.Specular
|
|
643
|
-
parameters.specular = ColorManagement.
|
|
645
|
+
parameters.specular = ColorManagement.colorSpaceToWorking( new Color().fromArray( materialNode.SpecularColor.value ), SRGBColorSpace );
|
|
644
646
|
|
|
645
647
|
}
|
|
646
648
|
|
|
@@ -1191,7 +1193,7 @@ class FBXTreeParser {
|
|
|
1191
1193
|
|
|
1192
1194
|
if ( lightAttribute.Color !== undefined ) {
|
|
1193
1195
|
|
|
1194
|
-
color = ColorManagement.
|
|
1196
|
+
color = ColorManagement.colorSpaceToWorking( new Color().fromArray( lightAttribute.Color.value ), SRGBColorSpace );
|
|
1195
1197
|
|
|
1196
1198
|
}
|
|
1197
1199
|
|
|
@@ -1782,7 +1784,7 @@ class GeometryParser {
|
|
|
1782
1784
|
geoInfo.vertexPositions = ( geoNode.Vertices !== undefined ) ? geoNode.Vertices.a : [];
|
|
1783
1785
|
geoInfo.vertexIndices = ( geoNode.PolygonVertexIndex !== undefined ) ? geoNode.PolygonVertexIndex.a : [];
|
|
1784
1786
|
|
|
1785
|
-
if ( geoNode.LayerElementColor ) {
|
|
1787
|
+
if ( geoNode.LayerElementColor && geoNode.LayerElementColor.Color ) {
|
|
1786
1788
|
|
|
1787
1789
|
geoInfo.color = this.parseVertexColors( geoNode.LayerElementColor[ 0 ] );
|
|
1788
1790
|
|
|
@@ -2389,7 +2391,7 @@ class GeometryParser {
|
|
|
2389
2391
|
for ( let i = 0, c = new Color(); i < buffer.length; i += 4 ) {
|
|
2390
2392
|
|
|
2391
2393
|
c.fromArray( buffer, i );
|
|
2392
|
-
ColorManagement.
|
|
2394
|
+
ColorManagement.colorSpaceToWorking( c, SRGBColorSpace );
|
|
2393
2395
|
c.toArray( buffer, i );
|
|
2394
2396
|
|
|
2395
2397
|
}
|
|
@@ -115,6 +115,7 @@ import { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';
|
|
|
115
115
|
* ```
|
|
116
116
|
*
|
|
117
117
|
* @augments Loader
|
|
118
|
+
* @three_import import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
|
|
118
119
|
*/
|
|
119
120
|
class GLTFLoader extends Loader {
|
|
120
121
|
|
|
@@ -1580,7 +1581,6 @@ class GLTFTextureWebPExtension {
|
|
|
1580
1581
|
|
|
1581
1582
|
this.parser = parser;
|
|
1582
1583
|
this.name = EXTENSIONS.EXT_TEXTURE_WEBP;
|
|
1583
|
-
this.isSupported = null;
|
|
1584
1584
|
|
|
1585
1585
|
}
|
|
1586
1586
|
|
|
@@ -1609,46 +1609,7 @@ class GLTFTextureWebPExtension {
|
|
|
1609
1609
|
|
|
1610
1610
|
}
|
|
1611
1611
|
|
|
1612
|
-
return
|
|
1613
|
-
|
|
1614
|
-
if ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );
|
|
1615
|
-
|
|
1616
|
-
if ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {
|
|
1617
|
-
|
|
1618
|
-
throw new Error( 'THREE.GLTFLoader: WebP required by asset but unsupported.' );
|
|
1619
|
-
|
|
1620
|
-
}
|
|
1621
|
-
|
|
1622
|
-
// Fall back to PNG or JPEG.
|
|
1623
|
-
return parser.loadTexture( textureIndex );
|
|
1624
|
-
|
|
1625
|
-
} );
|
|
1626
|
-
|
|
1627
|
-
}
|
|
1628
|
-
|
|
1629
|
-
detectSupport() {
|
|
1630
|
-
|
|
1631
|
-
if ( ! this.isSupported ) {
|
|
1632
|
-
|
|
1633
|
-
this.isSupported = new Promise( function ( resolve ) {
|
|
1634
|
-
|
|
1635
|
-
const image = new Image();
|
|
1636
|
-
|
|
1637
|
-
// Lossy test image. Support for lossy images doesn't guarantee support for all
|
|
1638
|
-
// WebP images, unfortunately.
|
|
1639
|
-
image.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';
|
|
1640
|
-
|
|
1641
|
-
image.onload = image.onerror = function () {
|
|
1642
|
-
|
|
1643
|
-
resolve( image.height === 1 );
|
|
1644
|
-
|
|
1645
|
-
};
|
|
1646
|
-
|
|
1647
|
-
} );
|
|
1648
|
-
|
|
1649
|
-
}
|
|
1650
|
-
|
|
1651
|
-
return this.isSupported;
|
|
1612
|
+
return parser.loadTextureImage( textureIndex, extension.source, loader );
|
|
1652
1613
|
|
|
1653
1614
|
}
|
|
1654
1615
|
|
|
@@ -1667,7 +1628,6 @@ class GLTFTextureAVIFExtension {
|
|
|
1667
1628
|
|
|
1668
1629
|
this.parser = parser;
|
|
1669
1630
|
this.name = EXTENSIONS.EXT_TEXTURE_AVIF;
|
|
1670
|
-
this.isSupported = null;
|
|
1671
1631
|
|
|
1672
1632
|
}
|
|
1673
1633
|
|
|
@@ -1696,44 +1656,7 @@ class GLTFTextureAVIFExtension {
|
|
|
1696
1656
|
|
|
1697
1657
|
}
|
|
1698
1658
|
|
|
1699
|
-
return
|
|
1700
|
-
|
|
1701
|
-
if ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );
|
|
1702
|
-
|
|
1703
|
-
if ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {
|
|
1704
|
-
|
|
1705
|
-
throw new Error( 'THREE.GLTFLoader: AVIF required by asset but unsupported.' );
|
|
1706
|
-
|
|
1707
|
-
}
|
|
1708
|
-
|
|
1709
|
-
// Fall back to PNG or JPEG.
|
|
1710
|
-
return parser.loadTexture( textureIndex );
|
|
1711
|
-
|
|
1712
|
-
} );
|
|
1713
|
-
|
|
1714
|
-
}
|
|
1715
|
-
|
|
1716
|
-
detectSupport() {
|
|
1717
|
-
|
|
1718
|
-
if ( ! this.isSupported ) {
|
|
1719
|
-
|
|
1720
|
-
this.isSupported = new Promise( function ( resolve ) {
|
|
1721
|
-
|
|
1722
|
-
const image = new Image();
|
|
1723
|
-
|
|
1724
|
-
// Lossy test image.
|
|
1725
|
-
image.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=';
|
|
1726
|
-
image.onload = image.onerror = function () {
|
|
1727
|
-
|
|
1728
|
-
resolve( image.height === 1 );
|
|
1729
|
-
|
|
1730
|
-
};
|
|
1731
|
-
|
|
1732
|
-
} );
|
|
1733
|
-
|
|
1734
|
-
}
|
|
1735
|
-
|
|
1736
|
-
return this.isSupported;
|
|
1659
|
+
return parser.loadTextureImage( textureIndex, extension.source, loader );
|
|
1737
1660
|
|
|
1738
1661
|
}
|
|
1739
1662
|
|
|
@@ -2294,7 +2217,7 @@ class GLTFCubicSplineInterpolant extends Interpolant {
|
|
|
2294
2217
|
|
|
2295
2218
|
}
|
|
2296
2219
|
|
|
2297
|
-
const
|
|
2220
|
+
const _quaternion = new Quaternion();
|
|
2298
2221
|
|
|
2299
2222
|
class GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {
|
|
2300
2223
|
|
|
@@ -2302,7 +2225,7 @@ class GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {
|
|
|
2302
2225
|
|
|
2303
2226
|
const result = super.interpolate_( i1, t0, t, t1 );
|
|
2304
2227
|
|
|
2305
|
-
|
|
2228
|
+
_quaternion.fromArray( result ).normalize().toArray( result );
|
|
2306
2229
|
|
|
2307
2230
|
return result;
|
|
2308
2231
|
|
|
@@ -4528,6 +4451,11 @@ class GLTFParser {
|
|
|
4528
4451
|
|
|
4529
4452
|
parser.associations.set( node, {} );
|
|
4530
4453
|
|
|
4454
|
+
} else if ( nodeDef.mesh !== undefined && parser.meshCache.refs[ nodeDef.mesh ] > 1 ) {
|
|
4455
|
+
|
|
4456
|
+
const mapping = parser.associations.get( node );
|
|
4457
|
+
parser.associations.set( node, { ...mapping } );
|
|
4458
|
+
|
|
4531
4459
|
}
|
|
4532
4460
|
|
|
4533
4461
|
parser.associations.get( node ).nodes = nodeIndex;
|