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
|
@@ -7,10 +7,19 @@ import { Interpolant } from '../Interpolant.js';
|
|
|
7
7
|
* It was derived from a Hermitian construction setting the first derivative
|
|
8
8
|
* at each sample position to the linear slope between neighboring positions
|
|
9
9
|
* over their parameter interval.
|
|
10
|
+
*
|
|
11
|
+
* @augments Interpolant
|
|
10
12
|
*/
|
|
11
|
-
|
|
12
13
|
class CubicInterpolant extends Interpolant {
|
|
13
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Constructs a new cubic interpolant.
|
|
17
|
+
*
|
|
18
|
+
* @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.
|
|
19
|
+
* @param {TypedArray} sampleValues - The sample values.
|
|
20
|
+
* @param {number} sampleSize - The sample size
|
|
21
|
+
* @param {TypedArray} [resultBuffer] - The result buffer.
|
|
22
|
+
*/
|
|
14
23
|
constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
|
|
15
24
|
|
|
16
25
|
super( parameterPositions, sampleValues, sampleSize, resultBuffer );
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import { Interpolant } from '../Interpolant.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
4
|
* Interpolant that evaluates to the sample value at the position preceding
|
|
6
5
|
* the parameter.
|
|
6
|
+
*
|
|
7
|
+
* @augments Interpolant
|
|
7
8
|
*/
|
|
8
|
-
|
|
9
9
|
class DiscreteInterpolant extends Interpolant {
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new discrete interpolant.
|
|
13
|
+
*
|
|
14
|
+
* @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.
|
|
15
|
+
* @param {TypedArray} sampleValues - The sample values.
|
|
16
|
+
* @param {number} sampleSize - The sample size
|
|
17
|
+
* @param {TypedArray} [resultBuffer] - The result buffer.
|
|
18
|
+
*/
|
|
11
19
|
constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
|
|
12
20
|
|
|
13
21
|
super( parameterPositions, sampleValues, sampleSize, resultBuffer );
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import { Interpolant } from '../Interpolant.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A basic linear interpolant.
|
|
5
|
+
*
|
|
6
|
+
* @augments Interpolant
|
|
7
|
+
*/
|
|
3
8
|
class LinearInterpolant extends Interpolant {
|
|
4
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Constructs a new linear interpolant.
|
|
12
|
+
*
|
|
13
|
+
* @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.
|
|
14
|
+
* @param {TypedArray} sampleValues - The sample values.
|
|
15
|
+
* @param {number} sampleSize - The sample size
|
|
16
|
+
* @param {TypedArray} [resultBuffer] - The result buffer.
|
|
17
|
+
*/
|
|
5
18
|
constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
|
|
6
19
|
|
|
7
20
|
super( parameterPositions, sampleValues, sampleSize, resultBuffer );
|
|
@@ -3,10 +3,19 @@ import { Quaternion } from '../Quaternion.js';
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Spherical linear unit quaternion interpolant.
|
|
6
|
+
*
|
|
7
|
+
* @augments Interpolant
|
|
6
8
|
*/
|
|
7
|
-
|
|
8
9
|
class QuaternionLinearInterpolant extends Interpolant {
|
|
9
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new SLERP interpolant.
|
|
13
|
+
*
|
|
14
|
+
* @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.
|
|
15
|
+
* @param {TypedArray} sampleValues - The sample values.
|
|
16
|
+
* @param {number} sampleSize - The sample size
|
|
17
|
+
* @param {TypedArray} [resultBuffer] - The result buffer.
|
|
18
|
+
*/
|
|
10
19
|
constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
|
|
11
20
|
|
|
12
21
|
super( parameterPositions, sampleValues, sampleSize, resultBuffer );
|
package/src/nodes/Nodes.js
CHANGED
|
@@ -56,6 +56,7 @@ export { default as TriplanarTexturesNode } from './utils/TriplanarTexturesNode.
|
|
|
56
56
|
export { default as ReflectorNode } from './utils/ReflectorNode.js';
|
|
57
57
|
export { default as RTTNode } from './utils/RTTNode.js';
|
|
58
58
|
export { default as MemberNode } from './utils/MemberNode.js';
|
|
59
|
+
export { default as DebugNode } from './utils/DebugNode.js';
|
|
59
60
|
|
|
60
61
|
// accessors
|
|
61
62
|
export { default as UniformArrayNode } from './accessors/UniformArrayNode.js';
|
package/src/nodes/TSL.js
CHANGED
|
@@ -134,6 +134,7 @@ export * from './lighting/LightsNode.js';
|
|
|
134
134
|
export * from './lighting/LightingContextNode.js';
|
|
135
135
|
export * from './lighting/ShadowBaseNode.js';
|
|
136
136
|
export * from './lighting/ShadowNode.js';
|
|
137
|
+
export * from './lighting/PointShadowNode.js';
|
|
137
138
|
export * from './lighting/PointLightNode.js';
|
|
138
139
|
|
|
139
140
|
// pmrem
|
|
@@ -6,11 +6,10 @@ import { mix } from '../math/MathNode.js';
|
|
|
6
6
|
import { anisotropy, anisotropyB, roughness } from '../core/PropertyNode.js';
|
|
7
7
|
import { positionViewDirection } from './Position.js';
|
|
8
8
|
|
|
9
|
-
/** @module AccessorsUtils **/
|
|
10
|
-
|
|
11
9
|
/**
|
|
12
10
|
* TSL object that represents the TBN matrix in view space.
|
|
13
11
|
*
|
|
12
|
+
* @tsl
|
|
14
13
|
* @type {Node<mat3>}
|
|
15
14
|
*/
|
|
16
15
|
export const TBNViewMatrix = /*@__PURE__*/ mat3( tangentView, bitangentView, normalView );
|
|
@@ -18,6 +17,7 @@ export const TBNViewMatrix = /*@__PURE__*/ mat3( tangentView, bitangentView, nor
|
|
|
18
17
|
/**
|
|
19
18
|
* TSL object that represents the parallax direction.
|
|
20
19
|
*
|
|
20
|
+
* @tsl
|
|
21
21
|
* @type {Node<mat3>}
|
|
22
22
|
*/
|
|
23
23
|
export const parallaxDirection = /*@__PURE__*/ positionViewDirection.mul( TBNViewMatrix )/*.normalize()*/;
|
|
@@ -25,6 +25,7 @@ export const parallaxDirection = /*@__PURE__*/ positionViewDirection.mul( TBNVie
|
|
|
25
25
|
/**
|
|
26
26
|
* TSL function for computing parallax uv coordinates.
|
|
27
27
|
*
|
|
28
|
+
* @tsl
|
|
28
29
|
* @function
|
|
29
30
|
* @param {Node<vec2>} uv - A uv node.
|
|
30
31
|
* @param {Node<vec2>} scale - A scale node.
|
|
@@ -35,6 +36,7 @@ export const parallaxUV = ( uv, scale ) => uv.sub( parallaxDirection.mul( scale
|
|
|
35
36
|
/**
|
|
36
37
|
* TSL function for computing bent normals.
|
|
37
38
|
*
|
|
39
|
+
* @tsl
|
|
38
40
|
* @function
|
|
39
41
|
* @returns {Node<vec3>} Bent normals.
|
|
40
42
|
*/
|
|
@@ -3,14 +3,13 @@ import StorageBufferAttribute from '../../renderers/common/StorageBufferAttribut
|
|
|
3
3
|
import { storage } from './StorageBufferNode.js';
|
|
4
4
|
import { getLengthFromType, getTypedArrayFromType } from '../core/NodeUtils.js';
|
|
5
5
|
|
|
6
|
-
/** @module Arrays **/
|
|
7
|
-
|
|
8
6
|
/**
|
|
9
7
|
* TSL function for creating a storage buffer node with a configured `StorageBufferAttribute`.
|
|
10
8
|
*
|
|
9
|
+
* @tsl
|
|
11
10
|
* @function
|
|
12
|
-
* @param {
|
|
13
|
-
* @param {
|
|
11
|
+
* @param {number|TypedArray} count - The data count. It is also valid to pass a typed array as an argument.
|
|
12
|
+
* @param {string|Struct} [type='float'] - The data type.
|
|
14
13
|
* @returns {StorageBufferNode}
|
|
15
14
|
*/
|
|
16
15
|
export const attributeArray = ( count, type = 'float' ) => {
|
|
@@ -39,9 +38,10 @@ export const attributeArray = ( count, type = 'float' ) => {
|
|
|
39
38
|
/**
|
|
40
39
|
* TSL function for creating a storage buffer node with a configured `StorageInstancedBufferAttribute`.
|
|
41
40
|
*
|
|
41
|
+
* @tsl
|
|
42
42
|
* @function
|
|
43
|
-
* @param {
|
|
44
|
-
* @param {
|
|
43
|
+
* @param {number|TypedArray} count - The data count. It is also valid to pass a typed array as an argument.
|
|
44
|
+
* @param {string|Struct} [type='float'] - The data type.
|
|
45
45
|
* @returns {StorageBufferNode}
|
|
46
46
|
*/
|
|
47
47
|
export const instancedArray = ( count, type = 'float' ) => {
|
|
@@ -8,8 +8,6 @@ import { tangentLocal } from './Tangent.js';
|
|
|
8
8
|
import { instanceIndex, drawIndex } from '../core/IndexNode.js';
|
|
9
9
|
import { varyingProperty } from '../core/PropertyNode.js';
|
|
10
10
|
|
|
11
|
-
/** @module BatchNode **/
|
|
12
|
-
|
|
13
11
|
/**
|
|
14
12
|
* This node implements the vertex shader logic which is required
|
|
15
13
|
* when rendering 3D objects via batching. `BatchNode` must be used
|
|
@@ -44,7 +42,7 @@ class BatchNode extends Node {
|
|
|
44
42
|
/**
|
|
45
43
|
* The batching index node.
|
|
46
44
|
*
|
|
47
|
-
* @type {IndexNode
|
|
45
|
+
* @type {?IndexNode}
|
|
48
46
|
* @default null
|
|
49
47
|
*/
|
|
50
48
|
this.batchingIdNode = null;
|
|
@@ -76,8 +74,8 @@ class BatchNode extends Node {
|
|
|
76
74
|
|
|
77
75
|
const getIndirectIndex = Fn( ( [ id ] ) => {
|
|
78
76
|
|
|
79
|
-
const size = int( textureSize( textureLoad( this.batchMesh._indirectTexture ), 0 ) );
|
|
80
|
-
const x = int( id ).
|
|
77
|
+
const size = int( textureSize( textureLoad( this.batchMesh._indirectTexture ), 0 ).x );
|
|
78
|
+
const x = int( id ).mod( size );
|
|
81
79
|
const y = int( id ).div( size );
|
|
82
80
|
return textureLoad( this.batchMesh._indirectTexture, ivec2( x, y ) ).x;
|
|
83
81
|
|
|
@@ -93,11 +91,11 @@ class BatchNode extends Node {
|
|
|
93
91
|
|
|
94
92
|
const matricesTexture = this.batchMesh._matricesTexture;
|
|
95
93
|
|
|
96
|
-
const size = textureSize( textureLoad( matricesTexture ), 0 );
|
|
94
|
+
const size = int( textureSize( textureLoad( matricesTexture ), 0 ).x );
|
|
97
95
|
const j = float( indirectId ).mul( 4 ).toInt().toVar();
|
|
98
96
|
|
|
99
|
-
const x = j.
|
|
100
|
-
const y = j.div(
|
|
97
|
+
const x = j.mod( size );
|
|
98
|
+
const y = j.div( size );
|
|
101
99
|
const batchingMatrix = mat4(
|
|
102
100
|
textureLoad( matricesTexture, ivec2( x, y ) ),
|
|
103
101
|
textureLoad( matricesTexture, ivec2( x.add( 1 ), y ) ),
|
|
@@ -112,9 +110,9 @@ class BatchNode extends Node {
|
|
|
112
110
|
|
|
113
111
|
const getBatchingColor = Fn( ( [ id ] ) => {
|
|
114
112
|
|
|
115
|
-
const size = textureSize( textureLoad( colorsTexture ), 0 ).x;
|
|
113
|
+
const size = int( textureSize( textureLoad( colorsTexture ), 0 ).x );
|
|
116
114
|
const j = id;
|
|
117
|
-
const x = j.
|
|
115
|
+
const x = j.mod( size );
|
|
118
116
|
const y = j.div( size );
|
|
119
117
|
return textureLoad( colorsTexture, ivec2( x, y ) ).rgb;
|
|
120
118
|
|
|
@@ -157,8 +155,9 @@ export default BatchNode;
|
|
|
157
155
|
/**
|
|
158
156
|
* TSL function for creating a batch node.
|
|
159
157
|
*
|
|
158
|
+
* @tsl
|
|
160
159
|
* @function
|
|
161
160
|
* @param {BatchedMesh} batchMesh - A reference to batched mesh.
|
|
162
161
|
* @returns {BatchNode}
|
|
163
162
|
*/
|
|
164
|
-
export const batch = /*@__PURE__*/ nodeProxy( BatchNode );
|
|
163
|
+
export const batch = /*@__PURE__*/ nodeProxy( BatchNode ).setParameterLength( 1 );
|
|
@@ -3,13 +3,12 @@ import { cameraViewMatrix } from './Camera.js';
|
|
|
3
3
|
import { normalGeometry, normalLocal, normalView, normalWorld, transformedNormalView } from './Normal.js';
|
|
4
4
|
import { tangentGeometry, tangentLocal, tangentView, tangentWorld, transformedTangentView } from './Tangent.js';
|
|
5
5
|
|
|
6
|
-
/** @module Bitangent **/
|
|
7
|
-
|
|
8
6
|
const getBitangent = ( crossNormalTangent ) => crossNormalTangent.mul( tangentGeometry.w ).xyz;
|
|
9
7
|
|
|
10
8
|
/**
|
|
11
9
|
* TSL object that represents the bitangent attribute of the current rendered object.
|
|
12
10
|
*
|
|
11
|
+
* @tsl
|
|
13
12
|
* @type {Node<vec3>}
|
|
14
13
|
*/
|
|
15
14
|
export const bitangentGeometry = /*@__PURE__*/ varying( getBitangent( normalGeometry.cross( tangentGeometry ) ), 'v_bitangentGeometry' ).normalize().toVar( 'bitangentGeometry' );
|
|
@@ -17,6 +16,7 @@ export const bitangentGeometry = /*@__PURE__*/ varying( getBitangent( normalGeom
|
|
|
17
16
|
/**
|
|
18
17
|
* TSL object that represents the vertex bitangent in local space of the current rendered object.
|
|
19
18
|
*
|
|
19
|
+
* @tsl
|
|
20
20
|
* @type {Node<vec3>}
|
|
21
21
|
*/
|
|
22
22
|
export const bitangentLocal = /*@__PURE__*/ varying( getBitangent( normalLocal.cross( tangentLocal ) ), 'v_bitangentLocal' ).normalize().toVar( 'bitangentLocal' );
|
|
@@ -24,6 +24,7 @@ export const bitangentLocal = /*@__PURE__*/ varying( getBitangent( normalLocal.c
|
|
|
24
24
|
/**
|
|
25
25
|
* TSL object that represents the vertex bitangent in view space of the current rendered object.
|
|
26
26
|
*
|
|
27
|
+
* @tsl
|
|
27
28
|
* @type {Node<vec4>}
|
|
28
29
|
*/
|
|
29
30
|
export const bitangentView = /*@__PURE__*/ varying( getBitangent( normalView.cross( tangentView ) ), 'v_bitangentView' ).normalize().toVar( 'bitangentView' );
|
|
@@ -31,6 +32,7 @@ export const bitangentView = /*@__PURE__*/ varying( getBitangent( normalView.cro
|
|
|
31
32
|
/**
|
|
32
33
|
* TSL object that represents the vertex bitangent in world space of the current rendered object.
|
|
33
34
|
*
|
|
35
|
+
* @tsl
|
|
34
36
|
* @type {Node<vec4>}
|
|
35
37
|
*/
|
|
36
38
|
export const bitangentWorld = /*@__PURE__*/ varying( getBitangent( normalWorld.cross( tangentWorld ) ), 'v_bitangentWorld' ).normalize().toVar( 'bitangentWorld' );
|
|
@@ -38,6 +40,7 @@ export const bitangentWorld = /*@__PURE__*/ varying( getBitangent( normalWorld.c
|
|
|
38
40
|
/**
|
|
39
41
|
* TSL object that represents the transformed vertex bitangent in view space of the current rendered object.
|
|
40
42
|
*
|
|
43
|
+
* @tsl
|
|
41
44
|
* @type {Node<vec4>}
|
|
42
45
|
*/
|
|
43
46
|
export const transformedBitangentView = /*@__PURE__*/ getBitangent( transformedNormalView.cross( transformedTangentView ) ).normalize().toVar( 'transformedBitangentView' );
|
|
@@ -45,6 +48,7 @@ export const transformedBitangentView = /*@__PURE__*/ getBitangent( transformedN
|
|
|
45
48
|
/**
|
|
46
49
|
* TSL object that represents the transformed vertex bitangent in world space of the current rendered object.
|
|
47
50
|
*
|
|
51
|
+
* @tsl
|
|
48
52
|
* @type {Node<vec4>}
|
|
49
53
|
*/
|
|
50
54
|
export const transformedBitangentWorld = /*@__PURE__*/ transformedBitangentView.transformDirection( cameraViewMatrix ).normalize().toVar( 'transformedBitangentWorld' );
|
|
@@ -6,8 +6,6 @@ import { InterleavedBufferAttribute } from '../../core/InterleavedBufferAttribut
|
|
|
6
6
|
import { InterleavedBuffer } from '../../core/InterleavedBuffer.js';
|
|
7
7
|
import { StaticDrawUsage, DynamicDrawUsage } from '../../constants.js';
|
|
8
8
|
|
|
9
|
-
/** @module BufferAttributeNode **/
|
|
10
|
-
|
|
11
9
|
/**
|
|
12
10
|
* In earlier `three.js` versions it was only possible to define attribute data
|
|
13
11
|
* on geometry level. With `BufferAttributeNode`, it is also possible to do this
|
|
@@ -42,9 +40,9 @@ class BufferAttributeNode extends InputNode {
|
|
|
42
40
|
* Constructs a new buffer attribute node.
|
|
43
41
|
*
|
|
44
42
|
* @param {BufferAttribute|InterleavedBuffer|TypedArray} value - The attribute data.
|
|
45
|
-
* @param {
|
|
46
|
-
* @param {
|
|
47
|
-
* @param {
|
|
43
|
+
* @param {?string} [bufferType=null] - The buffer type (e.g. `'vec3'`).
|
|
44
|
+
* @param {number} [bufferStride=0] - The buffer stride.
|
|
45
|
+
* @param {number} [bufferOffset=0] - The buffer offset.
|
|
48
46
|
*/
|
|
49
47
|
constructor( value, bufferType = null, bufferStride = 0, bufferOffset = 0 ) {
|
|
50
48
|
|
|
@@ -53,7 +51,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
53
51
|
/**
|
|
54
52
|
* This flag can be used for type testing.
|
|
55
53
|
*
|
|
56
|
-
* @type {
|
|
54
|
+
* @type {boolean}
|
|
57
55
|
* @readonly
|
|
58
56
|
* @default true
|
|
59
57
|
*/
|
|
@@ -62,7 +60,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
62
60
|
/**
|
|
63
61
|
* The buffer type (e.g. `'vec3'`).
|
|
64
62
|
*
|
|
65
|
-
* @type {
|
|
63
|
+
* @type {?string}
|
|
66
64
|
* @default null
|
|
67
65
|
*/
|
|
68
66
|
this.bufferType = bufferType;
|
|
@@ -70,7 +68,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
70
68
|
/**
|
|
71
69
|
* The buffer stride.
|
|
72
70
|
*
|
|
73
|
-
* @type {
|
|
71
|
+
* @type {number}
|
|
74
72
|
* @default 0
|
|
75
73
|
*/
|
|
76
74
|
this.bufferStride = bufferStride;
|
|
@@ -78,7 +76,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
78
76
|
/**
|
|
79
77
|
* The buffer offset.
|
|
80
78
|
*
|
|
81
|
-
* @type {
|
|
79
|
+
* @type {number}
|
|
82
80
|
* @default 0
|
|
83
81
|
*/
|
|
84
82
|
this.bufferOffset = bufferOffset;
|
|
@@ -87,7 +85,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
87
85
|
* The usage property. Set this to `THREE.DynamicDrawUsage` via `.setUsage()`,
|
|
88
86
|
* if you are planning to update the attribute data per frame.
|
|
89
87
|
*
|
|
90
|
-
* @type {
|
|
88
|
+
* @type {number}
|
|
91
89
|
* @default StaticDrawUsage
|
|
92
90
|
*/
|
|
93
91
|
this.usage = StaticDrawUsage;
|
|
@@ -95,7 +93,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
95
93
|
/**
|
|
96
94
|
* Whether the attribute is instanced or not.
|
|
97
95
|
*
|
|
98
|
-
* @type {
|
|
96
|
+
* @type {boolean}
|
|
99
97
|
* @default false
|
|
100
98
|
*/
|
|
101
99
|
this.instanced = false;
|
|
@@ -103,7 +101,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
103
101
|
/**
|
|
104
102
|
* A reference to the buffer attribute.
|
|
105
103
|
*
|
|
106
|
-
* @type {BufferAttribute
|
|
104
|
+
* @type {?BufferAttribute}
|
|
107
105
|
* @default null
|
|
108
106
|
*/
|
|
109
107
|
this.attribute = null;
|
|
@@ -111,7 +109,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
111
109
|
/**
|
|
112
110
|
* `BufferAttributeNode` sets this property to `true` by default.
|
|
113
111
|
*
|
|
114
|
-
* @type {
|
|
112
|
+
* @type {boolean}
|
|
115
113
|
* @default true
|
|
116
114
|
*/
|
|
117
115
|
this.global = true;
|
|
@@ -131,7 +129,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
131
129
|
* and thus the hash should be shared as well.
|
|
132
130
|
*
|
|
133
131
|
* @param {NodeBuilder} builder - The current node builder.
|
|
134
|
-
* @return {
|
|
132
|
+
* @return {string} The hash.
|
|
135
133
|
*/
|
|
136
134
|
getHash( builder ) {
|
|
137
135
|
|
|
@@ -162,7 +160,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
162
160
|
* the buffer attribute.
|
|
163
161
|
*
|
|
164
162
|
* @param {NodeBuilder} builder - The current node builder.
|
|
165
|
-
* @return {
|
|
163
|
+
* @return {string} The node type.
|
|
166
164
|
*/
|
|
167
165
|
getNodeType( builder ) {
|
|
168
166
|
|
|
@@ -207,7 +205,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
207
205
|
* Generates the code snippet of the buffer attribute node.
|
|
208
206
|
*
|
|
209
207
|
* @param {NodeBuilder} builder - The current node builder.
|
|
210
|
-
* @return {
|
|
208
|
+
* @return {string} The generated code snippet.
|
|
211
209
|
*/
|
|
212
210
|
generate( builder ) {
|
|
213
211
|
|
|
@@ -240,7 +238,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
240
238
|
* Overwrites the default implementation to return a fixed value `'bufferAttribute'`.
|
|
241
239
|
*
|
|
242
240
|
* @param {NodeBuilder} builder - The current node builder.
|
|
243
|
-
* @return {
|
|
241
|
+
* @return {string} The input type.
|
|
244
242
|
*/
|
|
245
243
|
getInputType( /*builder*/ ) {
|
|
246
244
|
|
|
@@ -251,7 +249,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
251
249
|
/**
|
|
252
250
|
* Sets the `usage` property to the given value.
|
|
253
251
|
*
|
|
254
|
-
* @param {
|
|
252
|
+
* @param {number} value - The usage to set.
|
|
255
253
|
* @return {BufferAttributeNode} A reference to this node.
|
|
256
254
|
*/
|
|
257
255
|
setUsage( value ) {
|
|
@@ -271,7 +269,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
271
269
|
/**
|
|
272
270
|
* Sets the `instanced` property to the given value.
|
|
273
271
|
*
|
|
274
|
-
* @param {
|
|
272
|
+
* @param {boolean} value - The value to set.
|
|
275
273
|
* @return {BufferAttributeNode} A reference to this node.
|
|
276
274
|
*/
|
|
277
275
|
setInstanced( value ) {
|
|
@@ -289,11 +287,12 @@ export default BufferAttributeNode;
|
|
|
289
287
|
/**
|
|
290
288
|
* TSL function for creating a buffer attribute node.
|
|
291
289
|
*
|
|
290
|
+
* @tsl
|
|
292
291
|
* @function
|
|
293
292
|
* @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
|
|
294
|
-
* @param {
|
|
295
|
-
* @param {
|
|
296
|
-
* @param {
|
|
293
|
+
* @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
|
|
294
|
+
* @param {number} [stride=0] - The buffer stride.
|
|
295
|
+
* @param {number} [offset=0] - The buffer offset.
|
|
297
296
|
* @returns {BufferAttributeNode}
|
|
298
297
|
*/
|
|
299
298
|
export const bufferAttribute = ( array, type = null, stride = 0, offset = 0 ) => nodeObject( new BufferAttributeNode( array, type, stride, offset ) );
|
|
@@ -302,11 +301,12 @@ export const bufferAttribute = ( array, type = null, stride = 0, offset = 0 ) =>
|
|
|
302
301
|
* TSL function for creating a buffer attribute node but with dynamic draw usage.
|
|
303
302
|
* Use this function if attribute data are updated per frame.
|
|
304
303
|
*
|
|
304
|
+
* @tsl
|
|
305
305
|
* @function
|
|
306
306
|
* @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
|
|
307
|
-
* @param {
|
|
308
|
-
* @param {
|
|
309
|
-
* @param {
|
|
307
|
+
* @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
|
|
308
|
+
* @param {number} [stride=0] - The buffer stride.
|
|
309
|
+
* @param {number} [offset=0] - The buffer offset.
|
|
310
310
|
* @returns {BufferAttributeNode}
|
|
311
311
|
*/
|
|
312
312
|
export const dynamicBufferAttribute = ( array, type = null, stride = 0, offset = 0 ) => bufferAttribute( array, type, stride, offset ).setUsage( DynamicDrawUsage );
|
|
@@ -314,11 +314,12 @@ export const dynamicBufferAttribute = ( array, type = null, stride = 0, offset =
|
|
|
314
314
|
/**
|
|
315
315
|
* TSL function for creating a buffer attribute node but with enabled instancing
|
|
316
316
|
*
|
|
317
|
+
* @tsl
|
|
317
318
|
* @function
|
|
318
319
|
* @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
|
|
319
|
-
* @param {
|
|
320
|
-
* @param {
|
|
321
|
-
* @param {
|
|
320
|
+
* @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
|
|
321
|
+
* @param {number} [stride=0] - The buffer stride.
|
|
322
|
+
* @param {number} [offset=0] - The buffer offset.
|
|
322
323
|
* @returns {BufferAttributeNode}
|
|
323
324
|
*/
|
|
324
325
|
export const instancedBufferAttribute = ( array, type = null, stride = 0, offset = 0 ) => bufferAttribute( array, type, stride, offset ).setInstanced( true );
|
|
@@ -326,11 +327,12 @@ export const instancedBufferAttribute = ( array, type = null, stride = 0, offset
|
|
|
326
327
|
/**
|
|
327
328
|
* TSL function for creating a buffer attribute node but with dynamic draw usage and enabled instancing
|
|
328
329
|
*
|
|
330
|
+
* @tsl
|
|
329
331
|
* @function
|
|
330
332
|
* @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
|
|
331
|
-
* @param {
|
|
332
|
-
* @param {
|
|
333
|
-
* @param {
|
|
333
|
+
* @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
|
|
334
|
+
* @param {number} [stride=0] - The buffer stride.
|
|
335
|
+
* @param {number} [offset=0] - The buffer offset.
|
|
334
336
|
* @returns {BufferAttributeNode}
|
|
335
337
|
*/
|
|
336
338
|
export const instancedDynamicBufferAttribute = ( array, type = null, stride = 0, offset = 0 ) => dynamicBufferAttribute( array, type, stride, offset ).setInstanced( true );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import UniformNode from '../core/UniformNode.js';
|
|
2
2
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module BufferNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* A special type of uniform node which represents array-like data
|
|
8
6
|
* as uniform buffers. The access usually happens via `element()`
|
|
@@ -15,7 +13,7 @@ import { nodeObject } from '../tsl/TSLBase.js';
|
|
|
15
13
|
* In general, it is recommended to use the more managed {@link UniformArrayNode}
|
|
16
14
|
* since it handles more input types and automatically cares about buffer paddings.
|
|
17
15
|
*
|
|
18
|
-
* @augments
|
|
16
|
+
* @augments UniformNode
|
|
19
17
|
*/
|
|
20
18
|
class BufferNode extends UniformNode {
|
|
21
19
|
|
|
@@ -28,9 +26,9 @@ class BufferNode extends UniformNode {
|
|
|
28
26
|
/**
|
|
29
27
|
* Constructs a new buffer node.
|
|
30
28
|
*
|
|
31
|
-
* @param {Array<
|
|
32
|
-
* @param {
|
|
33
|
-
* @param {
|
|
29
|
+
* @param {Array<number>} value - Array-like buffer data.
|
|
30
|
+
* @param {string} bufferType - The data type of the buffer.
|
|
31
|
+
* @param {number} [bufferCount=0] - The count of buffer elements.
|
|
34
32
|
*/
|
|
35
33
|
constructor( value, bufferType, bufferCount = 0 ) {
|
|
36
34
|
|
|
@@ -39,7 +37,7 @@ class BufferNode extends UniformNode {
|
|
|
39
37
|
/**
|
|
40
38
|
* This flag can be used for type testing.
|
|
41
39
|
*
|
|
42
|
-
* @type {
|
|
40
|
+
* @type {boolean}
|
|
43
41
|
* @readonly
|
|
44
42
|
* @default true
|
|
45
43
|
*/
|
|
@@ -48,14 +46,14 @@ class BufferNode extends UniformNode {
|
|
|
48
46
|
/**
|
|
49
47
|
* The data type of the buffer.
|
|
50
48
|
*
|
|
51
|
-
* @type {
|
|
49
|
+
* @type {string}
|
|
52
50
|
*/
|
|
53
51
|
this.bufferType = bufferType;
|
|
54
52
|
|
|
55
53
|
/**
|
|
56
54
|
* The uniform node that holds the value of the reference node.
|
|
57
55
|
*
|
|
58
|
-
* @type {
|
|
56
|
+
* @type {number}
|
|
59
57
|
* @default 0
|
|
60
58
|
*/
|
|
61
59
|
this.bufferCount = bufferCount;
|
|
@@ -66,7 +64,7 @@ class BufferNode extends UniformNode {
|
|
|
66
64
|
* The data type of the buffer elements.
|
|
67
65
|
*
|
|
68
66
|
* @param {NodeBuilder} builder - The current node builder.
|
|
69
|
-
* @return {
|
|
67
|
+
* @return {string} The element type.
|
|
70
68
|
*/
|
|
71
69
|
getElementType( builder ) {
|
|
72
70
|
|
|
@@ -78,7 +76,7 @@ class BufferNode extends UniformNode {
|
|
|
78
76
|
* Overwrites the default implementation to return a fixed value `'buffer'`.
|
|
79
77
|
*
|
|
80
78
|
* @param {NodeBuilder} builder - The current node builder.
|
|
81
|
-
* @return {
|
|
79
|
+
* @return {string} The input type.
|
|
82
80
|
*/
|
|
83
81
|
getInputType( /*builder*/ ) {
|
|
84
82
|
|
|
@@ -93,10 +91,11 @@ export default BufferNode;
|
|
|
93
91
|
/**
|
|
94
92
|
* TSL function for creating a buffer node.
|
|
95
93
|
*
|
|
94
|
+
* @tsl
|
|
96
95
|
* @function
|
|
97
96
|
* @param {Array} value - Array-like buffer data.
|
|
98
|
-
* @param {
|
|
99
|
-
* @param {
|
|
97
|
+
* @param {string} type - The data type of a buffer element.
|
|
98
|
+
* @param {number} count - The count of buffer elements.
|
|
100
99
|
* @returns {BufferNode}
|
|
101
100
|
*/
|
|
102
101
|
export const buffer = ( value, type, count ) => nodeObject( new BufferNode( value, type, count ) );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module BuiltinNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* The node allows to set values for built-in shader variables. That is
|
|
8
6
|
* required for features like hardware-accelerated vertex clipping.
|
|
@@ -14,7 +12,7 @@ class BuiltinNode extends Node {
|
|
|
14
12
|
/**
|
|
15
13
|
* Constructs a new builtin node.
|
|
16
14
|
*
|
|
17
|
-
* @param {
|
|
15
|
+
* @param {string} name - The name of the built-in shader variable.
|
|
18
16
|
*/
|
|
19
17
|
constructor( name ) {
|
|
20
18
|
|
|
@@ -23,14 +21,14 @@ class BuiltinNode extends Node {
|
|
|
23
21
|
/**
|
|
24
22
|
* The name of the built-in shader variable.
|
|
25
23
|
*
|
|
26
|
-
* @type {
|
|
24
|
+
* @type {string}
|
|
27
25
|
*/
|
|
28
26
|
this.name = name;
|
|
29
27
|
|
|
30
28
|
/**
|
|
31
29
|
* This flag can be used for type testing.
|
|
32
30
|
*
|
|
33
|
-
* @type {
|
|
31
|
+
* @type {boolean}
|
|
34
32
|
* @readonly
|
|
35
33
|
* @default true
|
|
36
34
|
*/
|
|
@@ -42,7 +40,7 @@ class BuiltinNode extends Node {
|
|
|
42
40
|
* Generates the code snippet of the builtin node.
|
|
43
41
|
*
|
|
44
42
|
* @param {NodeBuilder} builder - The current node builder.
|
|
45
|
-
* @return {
|
|
43
|
+
* @return {string} The generated code snippet.
|
|
46
44
|
*/
|
|
47
45
|
generate( /* builder */ ) {
|
|
48
46
|
|
|
@@ -57,8 +55,9 @@ export default BuiltinNode;
|
|
|
57
55
|
/**
|
|
58
56
|
* TSL function for creating a builtin node.
|
|
59
57
|
*
|
|
58
|
+
* @tsl
|
|
60
59
|
* @function
|
|
61
|
-
* @param {
|
|
60
|
+
* @param {string} name - The name of the built-in shader variable.
|
|
62
61
|
* @returns {BuiltinNode}
|
|
63
62
|
*/
|
|
64
|
-
export const builtin = nodeProxy( BuiltinNode );
|
|
63
|
+
export const builtin = nodeProxy( BuiltinNode ).setParameterLength( 1 );
|