super-three 0.173.5 → 0.176.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +185 -9
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -39,7 +39,7 @@ class Animation {
|
|
|
39
39
|
/**
|
|
40
40
|
* The user-defined animation loop.
|
|
41
41
|
*
|
|
42
|
-
* @type {Function
|
|
42
|
+
* @type {?Function}
|
|
43
43
|
* @default null
|
|
44
44
|
*/
|
|
45
45
|
this._animationLoop = null;
|
|
@@ -48,7 +48,7 @@ class Animation {
|
|
|
48
48
|
* The requestId which is returned from the `requestAnimationFrame()` call.
|
|
49
49
|
* Can be used to cancel the stop the animation loop.
|
|
50
50
|
*
|
|
51
|
-
* @type {
|
|
51
|
+
* @type {?number}
|
|
52
52
|
* @default null
|
|
53
53
|
*/
|
|
54
54
|
this._requestId = null;
|
|
@@ -60,7 +60,7 @@ class Animation {
|
|
|
60
60
|
*/
|
|
61
61
|
start() {
|
|
62
62
|
|
|
63
|
-
const update = ( time,
|
|
63
|
+
const update = ( time, xrFrame ) => {
|
|
64
64
|
|
|
65
65
|
this._requestId = this._context.requestAnimationFrame( update );
|
|
66
66
|
|
|
@@ -70,7 +70,7 @@ class Animation {
|
|
|
70
70
|
|
|
71
71
|
this.info.frame = this.nodes.nodeFrame.frameId;
|
|
72
72
|
|
|
73
|
-
if ( this._animationLoop !== null ) this._animationLoop( time,
|
|
73
|
+
if ( this._animationLoop !== null ) this._animationLoop( time, xrFrame );
|
|
74
74
|
|
|
75
75
|
};
|
|
76
76
|
|
|
@@ -92,7 +92,7 @@ class Animation {
|
|
|
92
92
|
/**
|
|
93
93
|
* Returns the user-level animation loop.
|
|
94
94
|
*
|
|
95
|
-
* @return {Function} The animation loop.
|
|
95
|
+
* @return {?Function} The animation loop.
|
|
96
96
|
*/
|
|
97
97
|
getAnimationLoop() {
|
|
98
98
|
|
|
@@ -103,7 +103,7 @@ class Animation {
|
|
|
103
103
|
/**
|
|
104
104
|
* Defines the user-level animation loop.
|
|
105
105
|
*
|
|
106
|
-
* @param {Function} callback - The animation loop.
|
|
106
|
+
* @param {?Function} callback - The animation loop.
|
|
107
107
|
*/
|
|
108
108
|
setAnimationLoop( callback ) {
|
|
109
109
|
|
|
@@ -33,13 +33,13 @@ class Attributes extends DataMap {
|
|
|
33
33
|
* Deletes the data for the given attribute.
|
|
34
34
|
*
|
|
35
35
|
* @param {BufferAttribute} attribute - The attribute.
|
|
36
|
-
* @return {Object} The deleted attribute data.
|
|
36
|
+
* @return {Object|null} The deleted attribute data.
|
|
37
37
|
*/
|
|
38
38
|
delete( attribute ) {
|
|
39
39
|
|
|
40
40
|
const attributeData = super.delete( attribute );
|
|
41
41
|
|
|
42
|
-
if ( attributeData !==
|
|
42
|
+
if ( attributeData !== null ) {
|
|
43
43
|
|
|
44
44
|
this.backend.destroyAttribute( attribute );
|
|
45
45
|
|
|
@@ -54,7 +54,7 @@ class Attributes extends DataMap {
|
|
|
54
54
|
* for new attributes and updates data for existing ones.
|
|
55
55
|
*
|
|
56
56
|
* @param {BufferAttribute} attribute - The attribute to update.
|
|
57
|
-
* @param {
|
|
57
|
+
* @param {number} type - The attribute type.
|
|
58
58
|
*/
|
|
59
59
|
update( attribute, type ) {
|
|
60
60
|
|
|
@@ -8,7 +8,7 @@ import { REVISION } from '../../constants.js';
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Most of the rendering related logic is implemented in the
|
|
11
|
-
* {@link
|
|
11
|
+
* {@link Renderer} module and related management components.
|
|
12
12
|
* Sometimes it is required though to execute commands which are
|
|
13
13
|
* specific to the current 3D backend (which is WebGPU or WebGL 2).
|
|
14
14
|
* This abstract base class defines an interface that encapsulates
|
|
@@ -45,7 +45,7 @@ class Backend {
|
|
|
45
45
|
/**
|
|
46
46
|
* A reference to the renderer.
|
|
47
47
|
*
|
|
48
|
-
* @type {Renderer
|
|
48
|
+
* @type {?Renderer}
|
|
49
49
|
* @default null
|
|
50
50
|
*/
|
|
51
51
|
this.renderer = null;
|
|
@@ -53,7 +53,7 @@ class Backend {
|
|
|
53
53
|
/**
|
|
54
54
|
* A reference to the canvas element the renderer is drawing to.
|
|
55
55
|
*
|
|
56
|
-
* @type {(HTMLCanvasElement|OffscreenCanvas)
|
|
56
|
+
* @type {?(HTMLCanvasElement|OffscreenCanvas)}
|
|
57
57
|
* @default null
|
|
58
58
|
*/
|
|
59
59
|
this.domElement = null;
|
|
@@ -61,13 +61,21 @@ class Backend {
|
|
|
61
61
|
/**
|
|
62
62
|
* A reference to the timestamp query pool.
|
|
63
63
|
*
|
|
64
|
-
* @type {{render: TimestampQueryPool
|
|
64
|
+
* @type {{render: ?TimestampQueryPool, compute: ?TimestampQueryPool}}
|
|
65
65
|
*/
|
|
66
66
|
this.timestampQueryPool = {
|
|
67
67
|
'render': null,
|
|
68
68
|
'compute': null
|
|
69
69
|
};
|
|
70
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Whether to track timestamps with a Timestamp Query API or not.
|
|
73
|
+
*
|
|
74
|
+
* @type {boolean}
|
|
75
|
+
* @default false
|
|
76
|
+
*/
|
|
77
|
+
this.trackTimestamp = ( parameters.trackTimestamp === true );
|
|
78
|
+
|
|
71
79
|
}
|
|
72
80
|
|
|
73
81
|
/**
|
|
@@ -89,7 +97,7 @@ class Backend {
|
|
|
89
97
|
* The coordinate system of the backend.
|
|
90
98
|
*
|
|
91
99
|
* @abstract
|
|
92
|
-
* @type {
|
|
100
|
+
* @type {number}
|
|
93
101
|
* @readonly
|
|
94
102
|
*/
|
|
95
103
|
get coordinateSystem() {}
|
|
@@ -186,8 +194,8 @@ class Backend {
|
|
|
186
194
|
* @abstract
|
|
187
195
|
* @param {BindGroup} bindGroup - The bind group.
|
|
188
196
|
* @param {Array<BindGroup>} bindings - Array of bind groups.
|
|
189
|
-
* @param {
|
|
190
|
-
* @param {
|
|
197
|
+
* @param {number} cacheIndex - The cache index.
|
|
198
|
+
* @param {number} version - The version.
|
|
191
199
|
*/
|
|
192
200
|
createBindings( /*bindGroup, bindings, cacheIndex, version*/ ) { }
|
|
193
201
|
|
|
@@ -197,8 +205,8 @@ class Backend {
|
|
|
197
205
|
* @abstract
|
|
198
206
|
* @param {BindGroup} bindGroup - The bind group.
|
|
199
207
|
* @param {Array<BindGroup>} bindings - Array of bind groups.
|
|
200
|
-
* @param {
|
|
201
|
-
* @param {
|
|
208
|
+
* @param {number} cacheIndex - The cache index.
|
|
209
|
+
* @param {number} version - The version.
|
|
202
210
|
*/
|
|
203
211
|
updateBindings( /*bindGroup, bindings, cacheIndex, version*/ ) { }
|
|
204
212
|
|
|
@@ -237,7 +245,7 @@ class Backend {
|
|
|
237
245
|
*
|
|
238
246
|
* @abstract
|
|
239
247
|
* @param {RenderObject} renderObject - The render object.
|
|
240
|
-
* @return {
|
|
248
|
+
* @return {boolean} Whether the render pipeline requires an update or not.
|
|
241
249
|
*/
|
|
242
250
|
needsRenderUpdate( /*renderObject*/ ) { }
|
|
243
251
|
|
|
@@ -246,7 +254,7 @@ class Backend {
|
|
|
246
254
|
*
|
|
247
255
|
* @abstract
|
|
248
256
|
* @param {RenderObject} renderObject - The render object.
|
|
249
|
-
* @return {
|
|
257
|
+
* @return {string} The cache key.
|
|
250
258
|
*/
|
|
251
259
|
getRenderCacheKey( /*renderObject*/ ) { }
|
|
252
260
|
|
|
@@ -329,11 +337,11 @@ class Backend {
|
|
|
329
337
|
* @abstract
|
|
330
338
|
* @async
|
|
331
339
|
* @param {Texture} texture - The texture to copy.
|
|
332
|
-
* @param {
|
|
333
|
-
* @param {
|
|
334
|
-
* @param {
|
|
335
|
-
* @param {
|
|
336
|
-
* @param {
|
|
340
|
+
* @param {number} x - The x coordinate of the copy origin.
|
|
341
|
+
* @param {number} y - The y coordinate of the copy origin.
|
|
342
|
+
* @param {number} width - The width of the copy.
|
|
343
|
+
* @param {number} height - The height of the copy.
|
|
344
|
+
* @param {number} faceIndex - The face index.
|
|
337
345
|
* @return {Promise<TypedArray>} A Promise that resolves with a typed array when the copy operation has finished.
|
|
338
346
|
*/
|
|
339
347
|
async copyTextureToBuffer( /*texture, x, y, width, height, faceIndex*/ ) {}
|
|
@@ -344,11 +352,12 @@ class Backend {
|
|
|
344
352
|
* @abstract
|
|
345
353
|
* @param {Texture} srcTexture - The source texture.
|
|
346
354
|
* @param {Texture} dstTexture - The destination texture.
|
|
347
|
-
* @param {
|
|
348
|
-
* @param {(Vector2|Vector3)
|
|
349
|
-
* @param {
|
|
355
|
+
* @param {?(Box3|Box2)} [srcRegion=null] - The region of the source texture to copy.
|
|
356
|
+
* @param {?(Vector2|Vector3)} [dstPosition=null] - The destination position of the copy.
|
|
357
|
+
* @param {number} [srcLevel=0] - The source mip level to copy from.
|
|
358
|
+
* @param {number} [dstLevel=0] - The destination mip level to copy to.
|
|
350
359
|
*/
|
|
351
|
-
copyTextureToTexture( /*srcTexture, dstTexture, srcRegion = null, dstPosition = null,
|
|
360
|
+
copyTextureToTexture( /*srcTexture, dstTexture, srcRegion = null, dstPosition = null, srcLevel = 0, dstLevel = 0*/ ) {}
|
|
352
361
|
|
|
353
362
|
/**
|
|
354
363
|
* Copies the current bound framebuffer to the given texture.
|
|
@@ -438,7 +447,7 @@ class Backend {
|
|
|
438
447
|
* @abstract
|
|
439
448
|
* @param {RenderContext} renderContext - The render context.
|
|
440
449
|
* @param {Object3D} object - The 3D object to test.
|
|
441
|
-
* @return {
|
|
450
|
+
* @return {boolean} Whether the 3D object is fully occluded or not.
|
|
442
451
|
*/
|
|
443
452
|
isOccluded( /*renderContext, object*/ ) {}
|
|
444
453
|
|
|
@@ -447,8 +456,8 @@ class Backend {
|
|
|
447
456
|
*
|
|
448
457
|
* @async
|
|
449
458
|
* @abstract
|
|
450
|
-
* @param {
|
|
451
|
-
* @return {Promise<
|
|
459
|
+
* @param {string} [type='render'] - The type of the time stamp.
|
|
460
|
+
* @return {Promise<number>} A Promise that resolves with the time stamp.
|
|
452
461
|
*/
|
|
453
462
|
async resolveTimestampsAsync( type = 'render' ) {
|
|
454
463
|
|
|
@@ -500,8 +509,8 @@ class Backend {
|
|
|
500
509
|
*
|
|
501
510
|
* @async
|
|
502
511
|
* @abstract
|
|
503
|
-
* @param {
|
|
504
|
-
* @return {Promise<
|
|
512
|
+
* @param {string} name - The feature's name.
|
|
513
|
+
* @return {Promise<boolean>} A Promise that resolves with a bool that indicates whether the feature is supported or not.
|
|
505
514
|
*/
|
|
506
515
|
async hasFeatureAsync( /*name*/ ) { }
|
|
507
516
|
|
|
@@ -509,8 +518,8 @@ class Backend {
|
|
|
509
518
|
* Checks if the given feature is supported by the backend.
|
|
510
519
|
*
|
|
511
520
|
* @abstract
|
|
512
|
-
* @param {
|
|
513
|
-
* @return {
|
|
521
|
+
* @param {string} name - The feature's name.
|
|
522
|
+
* @return {boolean} Whether the feature is supported or not.
|
|
514
523
|
*/
|
|
515
524
|
hasFeature( /*name*/ ) {}
|
|
516
525
|
|
|
@@ -518,7 +527,7 @@ class Backend {
|
|
|
518
527
|
* Returns the maximum anisotropy texture filtering value.
|
|
519
528
|
*
|
|
520
529
|
* @abstract
|
|
521
|
-
* @return {
|
|
530
|
+
* @return {number} The maximum anisotropy texture filtering value.
|
|
522
531
|
*/
|
|
523
532
|
getMaxAnisotropy() {}
|
|
524
533
|
|
|
@@ -539,7 +548,7 @@ class Backend {
|
|
|
539
548
|
* Defines the scissor test.
|
|
540
549
|
*
|
|
541
550
|
* @abstract
|
|
542
|
-
* @param {
|
|
551
|
+
* @param {boolean} boolean - Whether the scissor test should be enabled or not.
|
|
543
552
|
*/
|
|
544
553
|
setScissorTest( /*boolean*/ ) { }
|
|
545
554
|
|
|
@@ -557,7 +566,7 @@ class Backend {
|
|
|
557
566
|
|
|
558
567
|
renderer.getClearColor( _color4 );
|
|
559
568
|
|
|
560
|
-
_color4.getRGB( _color4
|
|
569
|
+
_color4.getRGB( _color4 );
|
|
561
570
|
|
|
562
571
|
return _color4;
|
|
563
572
|
|
|
@@ -627,7 +636,7 @@ class Backend {
|
|
|
627
636
|
* with data defined.
|
|
628
637
|
*
|
|
629
638
|
* @param {Object} object - The object.
|
|
630
|
-
* @return {
|
|
639
|
+
* @return {boolean} Whether a dictionary for the given object as been defined or not.
|
|
631
640
|
*/
|
|
632
641
|
has( object ) {
|
|
633
642
|
|
|
@@ -5,7 +5,7 @@ import NodeMaterial from '../../materials/nodes/NodeMaterial.js';
|
|
|
5
5
|
|
|
6
6
|
import { Mesh } from '../../objects/Mesh.js';
|
|
7
7
|
import { SphereGeometry } from '../../geometries/SphereGeometry.js';
|
|
8
|
-
import { BackSide
|
|
8
|
+
import { BackSide } from '../../constants.js';
|
|
9
9
|
|
|
10
10
|
const _clearColor = /*@__PURE__*/ new Color4();
|
|
11
11
|
|
|
@@ -64,14 +64,14 @@ class Background extends DataMap {
|
|
|
64
64
|
|
|
65
65
|
// no background settings, use clear color configuration from the renderer
|
|
66
66
|
|
|
67
|
-
renderer._clearColor.getRGB( _clearColor
|
|
67
|
+
renderer._clearColor.getRGB( _clearColor );
|
|
68
68
|
_clearColor.a = renderer._clearColor.a;
|
|
69
69
|
|
|
70
70
|
} else if ( background.isColor === true ) {
|
|
71
71
|
|
|
72
72
|
// background is an opaque color
|
|
73
73
|
|
|
74
|
-
background.getRGB( _clearColor
|
|
74
|
+
background.getRGB( _clearColor );
|
|
75
75
|
_clearColor.a = 1;
|
|
76
76
|
|
|
77
77
|
forceClear = true;
|
|
@@ -101,6 +101,7 @@ class Background extends DataMap {
|
|
|
101
101
|
nodeMaterial.side = BackSide;
|
|
102
102
|
nodeMaterial.depthTest = false;
|
|
103
103
|
nodeMaterial.depthWrite = false;
|
|
104
|
+
nodeMaterial.allowOverride = false;
|
|
104
105
|
nodeMaterial.fog = false;
|
|
105
106
|
nodeMaterial.lights = false;
|
|
106
107
|
nodeMaterial.vertexNode = viewProj;
|
|
@@ -12,9 +12,9 @@ class BindGroup {
|
|
|
12
12
|
/**
|
|
13
13
|
* Constructs a new bind group.
|
|
14
14
|
*
|
|
15
|
-
* @param {
|
|
15
|
+
* @param {string} name - The bind group's name.
|
|
16
16
|
* @param {Array<Binding>} bindings - An array of bindings.
|
|
17
|
-
* @param {
|
|
17
|
+
* @param {number} index - The group index.
|
|
18
18
|
* @param {Array<Binding>} bindingsReference - An array of reference bindings.
|
|
19
19
|
*/
|
|
20
20
|
constructor( name = '', bindings = [], index = 0, bindingsReference = [] ) {
|
|
@@ -22,7 +22,7 @@ class BindGroup {
|
|
|
22
22
|
/**
|
|
23
23
|
* The bind group's name.
|
|
24
24
|
*
|
|
25
|
-
* @type {
|
|
25
|
+
* @type {string}
|
|
26
26
|
*/
|
|
27
27
|
this.name = name;
|
|
28
28
|
|
|
@@ -36,7 +36,7 @@ class BindGroup {
|
|
|
36
36
|
/**
|
|
37
37
|
* The group index.
|
|
38
38
|
*
|
|
39
|
-
* @type {
|
|
39
|
+
* @type {number}
|
|
40
40
|
*/
|
|
41
41
|
this.index = index;
|
|
42
42
|
|
|
@@ -50,7 +50,7 @@ class BindGroup {
|
|
|
50
50
|
/**
|
|
51
51
|
* The group's ID.
|
|
52
52
|
*
|
|
53
|
-
* @type {
|
|
53
|
+
* @type {number}
|
|
54
54
|
*/
|
|
55
55
|
this.id = _id ++;
|
|
56
56
|
|
|
@@ -12,14 +12,14 @@ class Binding {
|
|
|
12
12
|
/**
|
|
13
13
|
* Constructs a new binding.
|
|
14
14
|
*
|
|
15
|
-
* @param {
|
|
15
|
+
* @param {string} [name=''] - The binding's name.
|
|
16
16
|
*/
|
|
17
17
|
constructor( name = '' ) {
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* The binding's name.
|
|
21
21
|
*
|
|
22
|
-
* @type {
|
|
22
|
+
* @type {string}
|
|
23
23
|
*/
|
|
24
24
|
this.name = name;
|
|
25
25
|
|
|
@@ -27,7 +27,7 @@ class Binding {
|
|
|
27
27
|
* A bitmask that defines in what shader stages the
|
|
28
28
|
* binding's resource is accessible.
|
|
29
29
|
*
|
|
30
|
-
* @type {
|
|
30
|
+
* @type {number}
|
|
31
31
|
*/
|
|
32
32
|
this.visibility = 0;
|
|
33
33
|
|
|
@@ -36,7 +36,7 @@ class Binding {
|
|
|
36
36
|
/**
|
|
37
37
|
* Makes sure binding's resource is visible for the given shader stage.
|
|
38
38
|
*
|
|
39
|
-
* @param {
|
|
39
|
+
* @param {number} visibility - The shader stage.
|
|
40
40
|
*/
|
|
41
41
|
setVisibility( visibility ) {
|
|
42
42
|
|
|
@@ -224,6 +224,16 @@ class Bindings extends DataMap {
|
|
|
224
224
|
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
+
if ( binding.isStorageBuffer ) {
|
|
228
|
+
|
|
229
|
+
const attribute = binding.attribute;
|
|
230
|
+
const attributeType = attribute.isIndirectStorageBufferAttribute ? AttributeType.INDIRECT : AttributeType.STORAGE;
|
|
231
|
+
|
|
232
|
+
this.attributes.update( attribute, attributeType );
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
}
|
|
236
|
+
|
|
227
237
|
if ( binding.isUniformBuffer ) {
|
|
228
238
|
|
|
229
239
|
const updated = binding.update();
|
|
@@ -13,7 +13,7 @@ class Buffer extends Binding {
|
|
|
13
13
|
/**
|
|
14
14
|
* Constructs a new buffer.
|
|
15
15
|
*
|
|
16
|
-
* @param {
|
|
16
|
+
* @param {string} name - The buffer's name.
|
|
17
17
|
* @param {TypedArray} [buffer=null] - The buffer.
|
|
18
18
|
*/
|
|
19
19
|
constructor( name, buffer = null ) {
|
|
@@ -23,7 +23,7 @@ class Buffer extends Binding {
|
|
|
23
23
|
/**
|
|
24
24
|
* This flag can be used for type testing.
|
|
25
25
|
*
|
|
26
|
-
* @type {
|
|
26
|
+
* @type {boolean}
|
|
27
27
|
* @readonly
|
|
28
28
|
* @default true
|
|
29
29
|
*/
|
|
@@ -32,7 +32,7 @@ class Buffer extends Binding {
|
|
|
32
32
|
/**
|
|
33
33
|
* The bytes per element.
|
|
34
34
|
*
|
|
35
|
-
* @type {
|
|
35
|
+
* @type {number}
|
|
36
36
|
*/
|
|
37
37
|
this.bytesPerElement = Float32Array.BYTES_PER_ELEMENT;
|
|
38
38
|
|
|
@@ -49,7 +49,7 @@ class Buffer extends Binding {
|
|
|
49
49
|
/**
|
|
50
50
|
* The buffer's byte length.
|
|
51
51
|
*
|
|
52
|
-
* @type {
|
|
52
|
+
* @type {number}
|
|
53
53
|
* @readonly
|
|
54
54
|
*/
|
|
55
55
|
get byteLength() {
|
|
@@ -73,7 +73,7 @@ class Buffer extends Binding {
|
|
|
73
73
|
/**
|
|
74
74
|
* Updates the binding.
|
|
75
75
|
*
|
|
76
|
-
* @return {
|
|
76
|
+
* @return {boolean} Whether the buffer has been updated and must be
|
|
77
77
|
* uploaded to the GPU.
|
|
78
78
|
*/
|
|
79
79
|
update() {
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { GPU_CHUNK_BYTES } from './Constants.js';
|
|
2
2
|
|
|
3
|
-
/** @module BufferUtils **/
|
|
4
|
-
|
|
5
3
|
/**
|
|
6
4
|
* This function is usually called with the length in bytes of an array buffer.
|
|
7
5
|
* It returns an padded value which ensure chunk size alignment according to STD140 layout.
|
|
8
6
|
*
|
|
9
7
|
* @function
|
|
10
|
-
* @param {
|
|
11
|
-
* @return {
|
|
8
|
+
* @param {number} floatLength - The buffer length.
|
|
9
|
+
* @return {number} The padded length.
|
|
12
10
|
*/
|
|
13
11
|
function getFloatLength( floatLength ) {
|
|
14
12
|
|
|
@@ -23,9 +21,9 @@ function getFloatLength( floatLength ) {
|
|
|
23
21
|
* a total length in bytes with buffer alignment according to STD140 layout.
|
|
24
22
|
*
|
|
25
23
|
* @function
|
|
26
|
-
* @param {
|
|
27
|
-
* @param {
|
|
28
|
-
* @return {
|
|
24
|
+
* @param {number} count - The number of vectors.
|
|
25
|
+
* @param {number} [vectorLength=4] - The vector length.
|
|
26
|
+
* @return {number} The padded length.
|
|
29
27
|
*/
|
|
30
28
|
function getVectorLength( count, vectorLength = 4 ) {
|
|
31
29
|
|
|
@@ -42,8 +40,8 @@ function getVectorLength( count, vectorLength = 4 ) {
|
|
|
42
40
|
* matches a predefined stride (in this case `4`).
|
|
43
41
|
*
|
|
44
42
|
* @function
|
|
45
|
-
* @param {
|
|
46
|
-
* @return {
|
|
43
|
+
* @param {number} vectorLength - The vector length.
|
|
44
|
+
* @return {number} The padded length.
|
|
47
45
|
*/
|
|
48
46
|
function getStrideLength( vectorLength ) {
|
|
49
47
|
|
|
@@ -24,7 +24,7 @@ class BundleGroup extends Group {
|
|
|
24
24
|
/**
|
|
25
25
|
* This flag can be used for type testing.
|
|
26
26
|
*
|
|
27
|
-
* @type {
|
|
27
|
+
* @type {boolean}
|
|
28
28
|
* @readonly
|
|
29
29
|
* @default true
|
|
30
30
|
*/
|
|
@@ -35,7 +35,7 @@ class BundleGroup extends Group {
|
|
|
35
35
|
* during serialization/deserialization. It should always
|
|
36
36
|
* match the class name.
|
|
37
37
|
*
|
|
38
|
-
* @type {
|
|
38
|
+
* @type {string}
|
|
39
39
|
* @readonly
|
|
40
40
|
* @default 'BundleGroup'
|
|
41
41
|
*/
|
|
@@ -49,7 +49,7 @@ class BundleGroup extends Group {
|
|
|
49
49
|
* If a change is required, an update can still be forced by setting the
|
|
50
50
|
* `needsUpdate` flag to `true`.
|
|
51
51
|
*
|
|
52
|
-
* @type {
|
|
52
|
+
* @type {boolean}
|
|
53
53
|
* @default true
|
|
54
54
|
*/
|
|
55
55
|
this.static = true;
|
|
@@ -57,7 +57,7 @@ class BundleGroup extends Group {
|
|
|
57
57
|
/**
|
|
58
58
|
* The bundle group's version.
|
|
59
59
|
*
|
|
60
|
-
* @type {
|
|
60
|
+
* @type {number}
|
|
61
61
|
* @readonly
|
|
62
62
|
* @default 0
|
|
63
63
|
*/
|
|
@@ -68,9 +68,9 @@ class BundleGroup extends Group {
|
|
|
68
68
|
/**
|
|
69
69
|
* Set this property to `true` when the bundle group has changed.
|
|
70
70
|
*
|
|
71
|
-
* @type {
|
|
71
|
+
* @type {boolean}
|
|
72
72
|
* @default false
|
|
73
|
-
* @param {
|
|
73
|
+
* @param {boolean} value
|
|
74
74
|
*/
|
|
75
75
|
set needsUpdate( value ) {
|
|
76
76
|
|
|
@@ -26,7 +26,7 @@ class ChainMap {
|
|
|
26
26
|
* Returns the value for the given array of keys.
|
|
27
27
|
*
|
|
28
28
|
* @param {Array<Object>} keys - List of keys.
|
|
29
|
-
* @return {
|
|
29
|
+
* @return {any} The value. Returns `undefined` if no value was found.
|
|
30
30
|
*/
|
|
31
31
|
get( keys ) {
|
|
32
32
|
|
|
@@ -48,7 +48,7 @@ class ChainMap {
|
|
|
48
48
|
* Sets the value for the given keys.
|
|
49
49
|
*
|
|
50
50
|
* @param {Array<Object>} keys - List of keys.
|
|
51
|
-
* @param {
|
|
51
|
+
* @param {any} value - The value to set.
|
|
52
52
|
* @return {ChainMap} A reference to this Chain Map.
|
|
53
53
|
*/
|
|
54
54
|
set( keys, value ) {
|
|
@@ -75,7 +75,7 @@ class ChainMap {
|
|
|
75
75
|
* Deletes a value for the given keys.
|
|
76
76
|
*
|
|
77
77
|
* @param {Array<Object>} keys - The keys.
|
|
78
|
-
* @return {
|
|
78
|
+
* @return {boolean} Returns `true` if the value has been removed successfully and `false` if the value has not be found.
|
|
79
79
|
*/
|
|
80
80
|
delete( keys ) {
|
|
81
81
|
|
|
@@ -17,14 +17,14 @@ class ClippingContext {
|
|
|
17
17
|
/**
|
|
18
18
|
* Constructs a new clipping context.
|
|
19
19
|
*
|
|
20
|
-
* @param {ClippingContext
|
|
20
|
+
* @param {?ClippingContext} [parentContext=null] - A reference to the parent clipping context.
|
|
21
21
|
*/
|
|
22
22
|
constructor( parentContext = null ) {
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* The clipping context's version.
|
|
26
26
|
*
|
|
27
|
-
* @type {
|
|
27
|
+
* @type {number}
|
|
28
28
|
* @readonly
|
|
29
29
|
*/
|
|
30
30
|
this.version = 0;
|
|
@@ -32,7 +32,7 @@ class ClippingContext {
|
|
|
32
32
|
/**
|
|
33
33
|
* Whether the intersection of the clipping planes is used to clip objects, rather than their union.
|
|
34
34
|
*
|
|
35
|
-
* @type {
|
|
35
|
+
* @type {?boolean}
|
|
36
36
|
* @default null
|
|
37
37
|
*/
|
|
38
38
|
this.clipIntersection = null;
|
|
@@ -40,14 +40,14 @@ class ClippingContext {
|
|
|
40
40
|
/**
|
|
41
41
|
* The clipping context's cache key.
|
|
42
42
|
*
|
|
43
|
-
* @type {
|
|
43
|
+
* @type {string}
|
|
44
44
|
*/
|
|
45
45
|
this.cacheKey = '';
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
48
|
* Whether the shadow pass is active or not.
|
|
49
49
|
*
|
|
50
|
-
* @type {
|
|
50
|
+
* @type {boolean}
|
|
51
51
|
* @default false
|
|
52
52
|
*/
|
|
53
53
|
this.shadowPass = false;
|
|
@@ -83,7 +83,7 @@ class ClippingContext {
|
|
|
83
83
|
/**
|
|
84
84
|
* The version of the clipping context's parent context.
|
|
85
85
|
*
|
|
86
|
-
* @type {
|
|
86
|
+
* @type {?number}
|
|
87
87
|
* @readonly
|
|
88
88
|
*/
|
|
89
89
|
this.parentVersion = null;
|
|
@@ -106,7 +106,7 @@ class ClippingContext {
|
|
|
106
106
|
*
|
|
107
107
|
* @param {Array<Plane>} source - The source clipping planes.
|
|
108
108
|
* @param {Array<Vector4>} destination - The destination.
|
|
109
|
-
* @param {
|
|
109
|
+
* @param {number} offset - The offset.
|
|
110
110
|
*/
|
|
111
111
|
projectPlanes( source, destination, offset ) {
|
|
112
112
|
|
|
@@ -248,7 +248,7 @@ class ClippingContext {
|
|
|
248
248
|
/**
|
|
249
249
|
* The count of union clipping planes.
|
|
250
250
|
*
|
|
251
|
-
* @type {
|
|
251
|
+
* @type {number}
|
|
252
252
|
* @readonly
|
|
253
253
|
*/
|
|
254
254
|
get unionClippingCount() {
|
|
@@ -15,10 +15,10 @@ class Color4 extends Color {
|
|
|
15
15
|
* You can also pass a single THREE.Color, hex or
|
|
16
16
|
* string argument to this constructor.
|
|
17
17
|
*
|
|
18
|
-
* @param {
|
|
19
|
-
* @param {
|
|
20
|
-
* @param {
|
|
21
|
-
* @param {
|
|
18
|
+
* @param {number|string} [r=1] - The red value.
|
|
19
|
+
* @param {number} [g=1] - The green value.
|
|
20
|
+
* @param {number} [b=1] - The blue value.
|
|
21
|
+
* @param {number} [a=1] - The alpha value.
|
|
22
22
|
*/
|
|
23
23
|
constructor( r, g, b, a = 1 ) {
|
|
24
24
|
|
|
@@ -33,10 +33,10 @@ class Color4 extends Color {
|
|
|
33
33
|
* You can also pass a single THREE.Color, hex or
|
|
34
34
|
* string argument to this method.
|
|
35
35
|
*
|
|
36
|
-
* @param {
|
|
37
|
-
* @param {
|
|
38
|
-
* @param {
|
|
39
|
-
* @param {
|
|
36
|
+
* @param {number|string|Color} r - The red value.
|
|
37
|
+
* @param {number} g - The green value.
|
|
38
|
+
* @param {number} b - The blue value.
|
|
39
|
+
* @param {number} [a=1] - The alpha value.
|
|
40
40
|
* @return {Color4} A reference to this object.
|
|
41
41
|
*/
|
|
42
42
|
set( r, g, b, a = 1 ) {
|
|
@@ -11,7 +11,7 @@ class ComputePipeline extends Pipeline {
|
|
|
11
11
|
/**
|
|
12
12
|
* Constructs a new render pipeline.
|
|
13
13
|
*
|
|
14
|
-
* @param {
|
|
14
|
+
* @param {string} cacheKey - The pipeline's cache key.
|
|
15
15
|
* @param {ProgrammableStage} computeProgram - The pipeline's compute shader.
|
|
16
16
|
*/
|
|
17
17
|
constructor( cacheKey, computeProgram ) {
|
|
@@ -28,7 +28,7 @@ class ComputePipeline extends Pipeline {
|
|
|
28
28
|
/**
|
|
29
29
|
* This flag can be used for type testing.
|
|
30
30
|
*
|
|
31
|
-
* @type {
|
|
31
|
+
* @type {boolean}
|
|
32
32
|
* @readonly
|
|
33
33
|
* @default true
|
|
34
34
|
*/
|