super-three 0.173.4 → 0.175.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 +22198 -1564
- package/build/three.core.js +21287 -1346
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +882 -189
- 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 +19358 -17482
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19342 -17482
- 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 +187 -11
- 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
|
@@ -9,8 +9,6 @@ import { RenderTarget } from '../../core/RenderTarget.js';
|
|
|
9
9
|
import { Vector2 } from '../../math/Vector2.js';
|
|
10
10
|
import { HalfFloatType } from '../../constants.js';
|
|
11
11
|
|
|
12
|
-
/** @module RTTNode **/
|
|
13
|
-
|
|
14
12
|
const _size = /*@__PURE__*/ new Vector2();
|
|
15
13
|
|
|
16
14
|
/**
|
|
@@ -19,7 +17,7 @@ const _size = /*@__PURE__*/ new Vector2();
|
|
|
19
17
|
* texture input for their effects. With the helper function `convertToTexture()` which is based
|
|
20
18
|
* on this module, the node system can automatically ensure texture input if required.
|
|
21
19
|
*
|
|
22
|
-
* @augments
|
|
20
|
+
* @augments TextureNode
|
|
23
21
|
*/
|
|
24
22
|
class RTTNode extends TextureNode {
|
|
25
23
|
|
|
@@ -33,8 +31,8 @@ class RTTNode extends TextureNode {
|
|
|
33
31
|
* Constructs a new RTT node.
|
|
34
32
|
*
|
|
35
33
|
* @param {Node} node - The node to render a texture with.
|
|
36
|
-
* @param {
|
|
37
|
-
* @param {
|
|
34
|
+
* @param {?number} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.
|
|
35
|
+
* @param {?number} [height=null] - The height of the internal render target.
|
|
38
36
|
* @param {Object} [options={type:HalfFloatType}] - The options for the internal render target.
|
|
39
37
|
*/
|
|
40
38
|
constructor( node, width = null, height = null, options = { type: HalfFloatType } ) {
|
|
@@ -54,7 +52,7 @@ class RTTNode extends TextureNode {
|
|
|
54
52
|
* The width of the internal render target.
|
|
55
53
|
* If not width is applied, the render target is automatically resized.
|
|
56
54
|
*
|
|
57
|
-
* @type {
|
|
55
|
+
* @type {?number}
|
|
58
56
|
* @default null
|
|
59
57
|
*/
|
|
60
58
|
this.width = width;
|
|
@@ -62,7 +60,7 @@ class RTTNode extends TextureNode {
|
|
|
62
60
|
/**
|
|
63
61
|
* The height of the internal render target.
|
|
64
62
|
*
|
|
65
|
-
* @type {
|
|
63
|
+
* @type {?number}
|
|
66
64
|
* @default null
|
|
67
65
|
*/
|
|
68
66
|
this.height = height;
|
|
@@ -70,7 +68,7 @@ class RTTNode extends TextureNode {
|
|
|
70
68
|
/**
|
|
71
69
|
* The pixel ratio
|
|
72
70
|
*
|
|
73
|
-
* @type {
|
|
71
|
+
* @type {number}
|
|
74
72
|
* @default 1
|
|
75
73
|
*/
|
|
76
74
|
this.pixelRatio = 1;
|
|
@@ -85,7 +83,7 @@ class RTTNode extends TextureNode {
|
|
|
85
83
|
/**
|
|
86
84
|
* Whether the texture requires an update or not.
|
|
87
85
|
*
|
|
88
|
-
* @type {
|
|
86
|
+
* @type {boolean}
|
|
89
87
|
* @default true
|
|
90
88
|
*/
|
|
91
89
|
this.textureNeedsUpdate = true;
|
|
@@ -93,7 +91,7 @@ class RTTNode extends TextureNode {
|
|
|
93
91
|
/**
|
|
94
92
|
* Whether the texture should automatically be updated or not.
|
|
95
93
|
*
|
|
96
|
-
* @type {
|
|
94
|
+
* @type {boolean}
|
|
97
95
|
* @default true
|
|
98
96
|
*/
|
|
99
97
|
this.autoUpdate = true;
|
|
@@ -119,7 +117,7 @@ class RTTNode extends TextureNode {
|
|
|
119
117
|
* The `updateBeforeType` is set to `NodeUpdateType.RENDER` since the node updates
|
|
120
118
|
* the texture once per render in its {@link RTTNode#updateBefore} method.
|
|
121
119
|
*
|
|
122
|
-
* @type {
|
|
120
|
+
* @type {string}
|
|
123
121
|
* @default 'render'
|
|
124
122
|
*/
|
|
125
123
|
this.updateBeforeType = NodeUpdateType.RENDER;
|
|
@@ -129,7 +127,7 @@ class RTTNode extends TextureNode {
|
|
|
129
127
|
/**
|
|
130
128
|
* Whether the internal render target should automatically be resized or not.
|
|
131
129
|
*
|
|
132
|
-
* @type {
|
|
130
|
+
* @type {boolean}
|
|
133
131
|
* @readonly
|
|
134
132
|
* @default true
|
|
135
133
|
*/
|
|
@@ -152,8 +150,8 @@ class RTTNode extends TextureNode {
|
|
|
152
150
|
/**
|
|
153
151
|
* Sets the size of the internal render target
|
|
154
152
|
*
|
|
155
|
-
* @param {
|
|
156
|
-
* @param {
|
|
153
|
+
* @param {number} width - The width to set.
|
|
154
|
+
* @param {number} height - The width to set.
|
|
157
155
|
*/
|
|
158
156
|
setSize( width, height ) {
|
|
159
157
|
|
|
@@ -172,7 +170,7 @@ class RTTNode extends TextureNode {
|
|
|
172
170
|
/**
|
|
173
171
|
* Sets the pixel ratio. This will also resize the render target.
|
|
174
172
|
*
|
|
175
|
-
* @param {
|
|
173
|
+
* @param {number} pixelRatio - The pixel ratio to set.
|
|
176
174
|
*/
|
|
177
175
|
setPixelRatio( pixelRatio ) {
|
|
178
176
|
|
|
@@ -233,10 +231,11 @@ export default RTTNode;
|
|
|
233
231
|
/**
|
|
234
232
|
* TSL function for creating a RTT node.
|
|
235
233
|
*
|
|
234
|
+
* @tsl
|
|
236
235
|
* @function
|
|
237
236
|
* @param {Node} node - The node to render a texture with.
|
|
238
|
-
* @param {
|
|
239
|
-
* @param {
|
|
237
|
+
* @param {?number} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.
|
|
238
|
+
* @param {?number} [height=null] - The height of the internal render target.
|
|
240
239
|
* @param {Object} [options={type:HalfFloatType}] - The options for the internal render target.
|
|
241
240
|
* @returns {RTTNode}
|
|
242
241
|
*/
|
|
@@ -245,10 +244,11 @@ export const rtt = ( node, ...params ) => nodeObject( new RTTNode( nodeObject( n
|
|
|
245
244
|
/**
|
|
246
245
|
* TSL function for converting nodes to textures nodes.
|
|
247
246
|
*
|
|
247
|
+
* @tsl
|
|
248
248
|
* @function
|
|
249
249
|
* @param {Node} node - The node to render a texture with.
|
|
250
|
-
* @param {
|
|
251
|
-
* @param {
|
|
250
|
+
* @param {?number} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.
|
|
251
|
+
* @param {?number} [height=null] - The height of the internal render target.
|
|
252
252
|
* @param {Object} [options={type:HalfFloatType}] - The options for the internal render target.
|
|
253
253
|
* @returns {RTTNode}
|
|
254
254
|
*/
|
|
@@ -14,8 +14,6 @@ import { Matrix4 } from '../../math/Matrix4.js';
|
|
|
14
14
|
import { RenderTarget } from '../../core/RenderTarget.js';
|
|
15
15
|
import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
16
16
|
|
|
17
|
-
/** @module ReflectorNode **/
|
|
18
|
-
|
|
19
17
|
const _reflectorPlane = new Plane();
|
|
20
18
|
const _normal = new Vector3();
|
|
21
19
|
const _reflectorWorldPosition = new Vector3();
|
|
@@ -48,7 +46,7 @@ let _inReflector = false;
|
|
|
48
46
|
* plane.add( groundReflector.target );
|
|
49
47
|
* ```
|
|
50
48
|
*
|
|
51
|
-
* @augments
|
|
49
|
+
* @augments TextureNode
|
|
52
50
|
*/
|
|
53
51
|
class ReflectorNode extends TextureNode {
|
|
54
52
|
|
|
@@ -63,10 +61,10 @@ class ReflectorNode extends TextureNode {
|
|
|
63
61
|
*
|
|
64
62
|
* @param {Object} [parameters={}] - An object holding configuration parameters.
|
|
65
63
|
* @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
|
|
66
|
-
* @param {
|
|
67
|
-
* @param {
|
|
68
|
-
* @param {
|
|
69
|
-
* @param {
|
|
64
|
+
* @param {number} [parameters.resolution=1] - The resolution scale.
|
|
65
|
+
* @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
|
|
66
|
+
* @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
|
|
67
|
+
* @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
|
|
70
68
|
* @param {TextureNode} [parameters.defaultTexture] - The default texture node.
|
|
71
69
|
* @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.
|
|
72
70
|
*/
|
|
@@ -78,8 +76,8 @@ class ReflectorNode extends TextureNode {
|
|
|
78
76
|
* A reference to the internal reflector base node which holds the actual implementation.
|
|
79
77
|
*
|
|
80
78
|
* @private
|
|
81
|
-
* @type {ReflectorBaseNode
|
|
82
|
-
* @default
|
|
79
|
+
* @type {ReflectorBaseNode}
|
|
80
|
+
* @default ReflectorBaseNode
|
|
83
81
|
*/
|
|
84
82
|
this._reflectorBaseNode = parameters.reflector || new ReflectorBaseNode( this, parameters );
|
|
85
83
|
|
|
@@ -87,7 +85,7 @@ class ReflectorNode extends TextureNode {
|
|
|
87
85
|
* A reference to the internal depth node.
|
|
88
86
|
*
|
|
89
87
|
* @private
|
|
90
|
-
* @type {Node
|
|
88
|
+
* @type {?Node}
|
|
91
89
|
* @default null
|
|
92
90
|
*/
|
|
93
91
|
this._depthNode = null;
|
|
@@ -188,10 +186,10 @@ class ReflectorBaseNode extends Node {
|
|
|
188
186
|
* @param {TextureNode} textureNode - Represents the rendered reflections as a texture node.
|
|
189
187
|
* @param {Object} [parameters={}] - An object holding configuration parameters.
|
|
190
188
|
* @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
|
|
191
|
-
* @param {
|
|
192
|
-
* @param {
|
|
193
|
-
* @param {
|
|
194
|
-
* @param {
|
|
189
|
+
* @param {number} [parameters.resolution=1] - The resolution scale.
|
|
190
|
+
* @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
|
|
191
|
+
* @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
|
|
192
|
+
* @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
|
|
195
193
|
*/
|
|
196
194
|
constructor( textureNode, parameters = {} ) {
|
|
197
195
|
|
|
@@ -223,7 +221,7 @@ class ReflectorBaseNode extends Node {
|
|
|
223
221
|
/**
|
|
224
222
|
* The resolution scale.
|
|
225
223
|
*
|
|
226
|
-
* @type {
|
|
224
|
+
* @type {number}
|
|
227
225
|
* @default {1}
|
|
228
226
|
*/
|
|
229
227
|
this.resolution = resolution;
|
|
@@ -231,7 +229,7 @@ class ReflectorBaseNode extends Node {
|
|
|
231
229
|
/**
|
|
232
230
|
* Whether mipmaps should be generated or not.
|
|
233
231
|
*
|
|
234
|
-
* @type {
|
|
232
|
+
* @type {boolean}
|
|
235
233
|
* @default {false}
|
|
236
234
|
*/
|
|
237
235
|
this.generateMipmaps = generateMipmaps;
|
|
@@ -239,7 +237,7 @@ class ReflectorBaseNode extends Node {
|
|
|
239
237
|
/**
|
|
240
238
|
* Whether reflectors can render other reflector nodes or not.
|
|
241
239
|
*
|
|
242
|
-
* @type {
|
|
240
|
+
* @type {boolean}
|
|
243
241
|
* @default {true}
|
|
244
242
|
*/
|
|
245
243
|
this.bounces = bounces;
|
|
@@ -247,7 +245,7 @@ class ReflectorBaseNode extends Node {
|
|
|
247
245
|
/**
|
|
248
246
|
* Whether depth data should be generated or not.
|
|
249
247
|
*
|
|
250
|
-
* @type {
|
|
248
|
+
* @type {boolean}
|
|
251
249
|
* @default {false}
|
|
252
250
|
*/
|
|
253
251
|
this.depth = depth;
|
|
@@ -256,7 +254,7 @@ class ReflectorBaseNode extends Node {
|
|
|
256
254
|
* The `updateBeforeType` is set to `NodeUpdateType.RENDER` when {@link ReflectorBaseNode#bounces}
|
|
257
255
|
* is `true`. Otherwise it's `NodeUpdateType.FRAME`.
|
|
258
256
|
*
|
|
259
|
-
* @type {
|
|
257
|
+
* @type {string}
|
|
260
258
|
* @default 'render'
|
|
261
259
|
*/
|
|
262
260
|
this.updateBeforeType = bounces ? NodeUpdateType.RENDER : NodeUpdateType.FRAME;
|
|
@@ -275,6 +273,14 @@ class ReflectorBaseNode extends Node {
|
|
|
275
273
|
*/
|
|
276
274
|
this.renderTargets = new WeakMap();
|
|
277
275
|
|
|
276
|
+
/**
|
|
277
|
+
* Force render even if reflector is facing away from camera.
|
|
278
|
+
*
|
|
279
|
+
* @type {boolean}
|
|
280
|
+
* @default {false}
|
|
281
|
+
*/
|
|
282
|
+
this.forceUpdate = false;
|
|
283
|
+
|
|
278
284
|
}
|
|
279
285
|
|
|
280
286
|
/**
|
|
@@ -389,9 +395,10 @@ class ReflectorBaseNode extends Node {
|
|
|
389
395
|
|
|
390
396
|
_view.subVectors( _reflectorWorldPosition, _cameraWorldPosition );
|
|
391
397
|
|
|
392
|
-
// Avoid rendering when reflector is facing away
|
|
398
|
+
// Avoid rendering when reflector is facing away unless forcing an update
|
|
399
|
+
const isFacingAway = _view.dot( _normal ) > 0;
|
|
393
400
|
|
|
394
|
-
if (
|
|
401
|
+
if ( isFacingAway === true && this.forceUpdate === false ) return;
|
|
395
402
|
|
|
396
403
|
_view.reflect( _normal ).negate();
|
|
397
404
|
_view.add( _reflectorWorldPosition );
|
|
@@ -476,6 +483,8 @@ class ReflectorBaseNode extends Node {
|
|
|
476
483
|
|
|
477
484
|
_inReflector = false;
|
|
478
485
|
|
|
486
|
+
this.forceUpdate = false;
|
|
487
|
+
|
|
479
488
|
}
|
|
480
489
|
|
|
481
490
|
}
|
|
@@ -483,13 +492,14 @@ class ReflectorBaseNode extends Node {
|
|
|
483
492
|
/**
|
|
484
493
|
* TSL function for creating a reflector node.
|
|
485
494
|
*
|
|
495
|
+
* @tsl
|
|
486
496
|
* @function
|
|
487
497
|
* @param {Object} [parameters={}] - An object holding configuration parameters.
|
|
488
498
|
* @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
|
|
489
|
-
* @param {
|
|
490
|
-
* @param {
|
|
491
|
-
* @param {
|
|
492
|
-
* @param {
|
|
499
|
+
* @param {number} [parameters.resolution=1] - The resolution scale.
|
|
500
|
+
* @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
|
|
501
|
+
* @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
|
|
502
|
+
* @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
|
|
493
503
|
* @param {TextureNode} [parameters.defaultTexture] - The default texture node.
|
|
494
504
|
* @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.
|
|
495
505
|
* @returns {ReflectorNode}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { float, addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
-
/** @module RemapNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* This node allows to remap a node value from one range into another. E.g a value of
|
|
8
6
|
* `0.4` in the range `[ 0.3, 0.5 ]` should be remapped into the normalized range `[ 0, 1 ]`.
|
|
@@ -72,7 +70,7 @@ class RemapNode extends Node {
|
|
|
72
70
|
* Whether the node value should be clamped before
|
|
73
71
|
* remapping it to the target range.
|
|
74
72
|
*
|
|
75
|
-
* @type {
|
|
73
|
+
* @type {boolean}
|
|
76
74
|
* @default true
|
|
77
75
|
*/
|
|
78
76
|
this.doClamp = true;
|
|
@@ -98,28 +96,30 @@ export default RemapNode;
|
|
|
98
96
|
/**
|
|
99
97
|
* TSL function for creating a remap node.
|
|
100
98
|
*
|
|
99
|
+
* @tsl
|
|
101
100
|
* @function
|
|
102
101
|
* @param {Node} node - The node that should be remapped.
|
|
103
102
|
* @param {Node} inLowNode - The source or current lower bound of the range.
|
|
104
103
|
* @param {Node} inHighNode - The source or current upper bound of the range.
|
|
105
|
-
* @param {Node} [outLowNode=float(0)] - The target lower bound of the range.
|
|
106
|
-
* @param {Node} [outHighNode=float(1)] - The target upper bound of the range.
|
|
104
|
+
* @param {?Node} [outLowNode=float(0)] - The target lower bound of the range.
|
|
105
|
+
* @param {?Node} [outHighNode=float(1)] - The target upper bound of the range.
|
|
107
106
|
* @returns {RemapNode}
|
|
108
107
|
*/
|
|
109
|
-
export const remap = /*@__PURE__*/ nodeProxy( RemapNode, null, null, { doClamp: false } );
|
|
108
|
+
export const remap = /*@__PURE__*/ nodeProxy( RemapNode, null, null, { doClamp: false } ).setParameterLength( 3, 5 );
|
|
110
109
|
|
|
111
110
|
/**
|
|
112
111
|
* TSL function for creating a remap node, but with enabled clamping.
|
|
113
112
|
*
|
|
113
|
+
* @tsl
|
|
114
114
|
* @function
|
|
115
115
|
* @param {Node} node - The node that should be remapped.
|
|
116
116
|
* @param {Node} inLowNode - The source or current lower bound of the range.
|
|
117
117
|
* @param {Node} inHighNode - The source or current upper bound of the range.
|
|
118
|
-
* @param {Node} [outLowNode=float(0)] - The target lower bound of the range.
|
|
119
|
-
* @param {Node} [outHighNode=float(1)] - The target upper bound of the range.
|
|
118
|
+
* @param {?Node} [outLowNode=float(0)] - The target lower bound of the range.
|
|
119
|
+
* @param {?Node} [outHighNode=float(1)] - The target upper bound of the range.
|
|
120
120
|
* @returns {RemapNode}
|
|
121
121
|
*/
|
|
122
|
-
export const remapClamp = /*@__PURE__*/ nodeProxy( RemapNode );
|
|
122
|
+
export const remapClamp = /*@__PURE__*/ nodeProxy( RemapNode ).setParameterLength( 3, 5 );
|
|
123
123
|
|
|
124
124
|
addMethodChaining( 'remap', remap );
|
|
125
125
|
addMethodChaining( 'remapClamp', remapClamp );
|
|
@@ -2,8 +2,6 @@ import TempNode from '../core/TempNode.js';
|
|
|
2
2
|
import { nodeProxy, vec4, mat2, mat4 } from '../tsl/TSLBase.js';
|
|
3
3
|
import { cos, sin } from '../math/MathNode.js';
|
|
4
4
|
|
|
5
|
-
/** @module RotateNode **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* Applies a rotation to the given position node.
|
|
9
7
|
*
|
|
@@ -49,7 +47,7 @@ class RotateNode extends TempNode {
|
|
|
49
47
|
* The type of the {@link RotateNode#positionNode} defines the node's type.
|
|
50
48
|
*
|
|
51
49
|
* @param {NodeBuilder} builder - The current node builder.
|
|
52
|
-
* @return {
|
|
50
|
+
* @return {string} The node's type.
|
|
53
51
|
*/
|
|
54
52
|
getNodeType( builder ) {
|
|
55
53
|
|
|
@@ -95,10 +93,11 @@ export default RotateNode;
|
|
|
95
93
|
/**
|
|
96
94
|
* TSL function for creating a rotate node.
|
|
97
95
|
*
|
|
96
|
+
* @tsl
|
|
98
97
|
* @function
|
|
99
98
|
* @param {Node} positionNode - The position node.
|
|
100
99
|
* @param {Node} rotationNode - Represents the rotation that is applied to the position node. Depending
|
|
101
100
|
* on whether the position data are 2D or 3D, the rotation is expressed a single float value or an Euler value.
|
|
102
101
|
* @returns {RotateNode}
|
|
103
102
|
*/
|
|
104
|
-
export const rotate = /*@__PURE__*/ nodeProxy( RotateNode );
|
|
103
|
+
export const rotate = /*@__PURE__*/ nodeProxy( RotateNode ).setParameterLength( 2 );
|
|
@@ -24,7 +24,7 @@ class SetNode extends TempNode {
|
|
|
24
24
|
* Constructs a new set node.
|
|
25
25
|
*
|
|
26
26
|
* @param {Node} sourceNode - The node that should be updated.
|
|
27
|
-
* @param {
|
|
27
|
+
* @param {string} components - The components that should be updated.
|
|
28
28
|
* @param {Node} targetNode - The value node.
|
|
29
29
|
*/
|
|
30
30
|
constructor( sourceNode, components, targetNode ) {
|
|
@@ -41,7 +41,7 @@ class SetNode extends TempNode {
|
|
|
41
41
|
/**
|
|
42
42
|
* The components that should be updated.
|
|
43
43
|
*
|
|
44
|
-
* @type {
|
|
44
|
+
* @type {string}
|
|
45
45
|
*/
|
|
46
46
|
this.components = components;
|
|
47
47
|
|
|
@@ -58,7 +58,7 @@ class SetNode extends TempNode {
|
|
|
58
58
|
* This method is overwritten since the node type is inferred from {@link SetNode#sourceNode}.
|
|
59
59
|
*
|
|
60
60
|
* @param {NodeBuilder} builder - The current node builder.
|
|
61
|
-
* @return {
|
|
61
|
+
* @return {string} The node type.
|
|
62
62
|
*/
|
|
63
63
|
getNodeType( builder ) {
|
|
64
64
|
|
|
@@ -26,7 +26,7 @@ class SplitNode extends Node {
|
|
|
26
26
|
* Constructs a new split node.
|
|
27
27
|
*
|
|
28
28
|
* @param {Node} node - The node that should be accessed.
|
|
29
|
-
* @param {
|
|
29
|
+
* @param {string} [components='x'] - The components that should be accessed.
|
|
30
30
|
*/
|
|
31
31
|
constructor( node, components = 'x' ) {
|
|
32
32
|
|
|
@@ -49,7 +49,7 @@ class SplitNode extends Node {
|
|
|
49
49
|
/**
|
|
50
50
|
* This flag can be used for type testing.
|
|
51
51
|
*
|
|
52
|
-
* @type {
|
|
52
|
+
* @type {boolean}
|
|
53
53
|
* @readonly
|
|
54
54
|
* @default true
|
|
55
55
|
*/
|
|
@@ -60,7 +60,7 @@ class SplitNode extends Node {
|
|
|
60
60
|
/**
|
|
61
61
|
* Returns the vector length which is computed based on the requested components.
|
|
62
62
|
*
|
|
63
|
-
* @return {
|
|
63
|
+
* @return {number} The vector length.
|
|
64
64
|
*/
|
|
65
65
|
getVectorLength() {
|
|
66
66
|
|
|
@@ -80,7 +80,7 @@ class SplitNode extends Node {
|
|
|
80
80
|
* Returns the component type of the node's type.
|
|
81
81
|
*
|
|
82
82
|
* @param {NodeBuilder} builder - The current node builder.
|
|
83
|
-
* @return {
|
|
83
|
+
* @return {string} The component type.
|
|
84
84
|
*/
|
|
85
85
|
getComponentType( builder ) {
|
|
86
86
|
|
|
@@ -92,7 +92,7 @@ class SplitNode extends Node {
|
|
|
92
92
|
* This method is overwritten since the node type is inferred from requested components.
|
|
93
93
|
*
|
|
94
94
|
* @param {NodeBuilder} builder - The current node builder.
|
|
95
|
-
* @return {
|
|
95
|
+
* @return {string} The node type.
|
|
96
96
|
*/
|
|
97
97
|
getNodeType( builder ) {
|
|
98
98
|
|
|
@@ -2,8 +2,6 @@ import Node from '../core/Node.js';
|
|
|
2
2
|
import { uv } from '../accessors/UV.js';
|
|
3
3
|
import { nodeProxy, float, vec2 } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
|
-
/** @module SpriteSheetUVNode **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* Can be used to compute texture coordinates for animated sprite sheets.
|
|
9
7
|
*
|
|
@@ -82,10 +80,11 @@ export default SpriteSheetUVNode;
|
|
|
82
80
|
/**
|
|
83
81
|
* TSL function for creating a sprite sheet uv node.
|
|
84
82
|
*
|
|
83
|
+
* @tsl
|
|
85
84
|
* @function
|
|
86
85
|
* @param {Node<vec2>} countNode - The node that defines the number of sprites in the x and y direction (e.g 6x6).
|
|
87
|
-
* @param {Node<vec2>} [uvNode=uv()] - The uv node.
|
|
88
|
-
* @param {Node<float>} [frameNode=float()] - The node that defines the current frame/sprite.
|
|
86
|
+
* @param {?Node<vec2>} [uvNode=uv()] - The uv node.
|
|
87
|
+
* @param {?Node<float>} [frameNode=float()] - The node that defines the current frame/sprite.
|
|
89
88
|
* @returns {SpriteSheetUVNode}
|
|
90
89
|
*/
|
|
91
|
-
export const spritesheetUV = /*@__PURE__*/ nodeProxy( SpriteSheetUVNode );
|
|
90
|
+
export const spritesheetUV = /*@__PURE__*/ nodeProxy( SpriteSheetUVNode ).setParameterLength( 3 );
|
|
@@ -3,8 +3,6 @@ import { cameraViewMatrix, cameraProjectionMatrix } from '../accessors/Camera.js
|
|
|
3
3
|
import { positionLocal } from '../accessors/Position.js';
|
|
4
4
|
import { Fn, defined } from '../tsl/TSLBase.js';
|
|
5
5
|
|
|
6
|
-
/** @module SpriteUtils **/
|
|
7
|
-
|
|
8
6
|
/**
|
|
9
7
|
* This can be used to achieve a billboarding behavior for flat meshes. That means they are
|
|
10
8
|
* oriented always towards the camera.
|
|
@@ -13,11 +11,12 @@ import { Fn, defined } from '../tsl/TSLBase.js';
|
|
|
13
11
|
* material.vertexNode = billboarding();
|
|
14
12
|
* ```
|
|
15
13
|
*
|
|
16
|
-
* @
|
|
14
|
+
* @tsl
|
|
15
|
+
* @function
|
|
17
16
|
* @param {Object} config - The configuration object.
|
|
18
|
-
* @param {Node<vec3
|
|
19
|
-
* @param {
|
|
20
|
-
* @param {
|
|
17
|
+
* @param {?Node<vec3>} [config.position=null] - Can be used to define the vertex positions in world space.
|
|
18
|
+
* @param {boolean} [config.horizontal=true] - Whether to follow the camera rotation horizontally or not.
|
|
19
|
+
* @param {boolean} [config.vertical=false] - Whether to follow the camera rotation vertically or not.
|
|
21
20
|
* @return {Node<vec3>} The updated vertex position in clip space.
|
|
22
21
|
*/
|
|
23
22
|
export const billboarding = /*@__PURE__*/ Fn( ( { position = null, horizontal = true, vertical = false } ) => {
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
2
2
|
import ArrayElementNode from './ArrayElementNode.js';
|
|
3
3
|
|
|
4
|
-
/** @module StorageArrayElementNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* This class enables element access on instances of {@link StorageBufferNode}.
|
|
8
6
|
* In most cases, it is indirectly used when accessing elements with the
|
|
@@ -35,7 +33,7 @@ class StorageArrayElementNode extends ArrayElementNode {
|
|
|
35
33
|
/**
|
|
36
34
|
* This flag can be used for type testing.
|
|
37
35
|
*
|
|
38
|
-
* @type {
|
|
36
|
+
* @type {boolean}
|
|
39
37
|
* @readonly
|
|
40
38
|
* @default true
|
|
41
39
|
*/
|
|
@@ -136,9 +134,10 @@ export default StorageArrayElementNode;
|
|
|
136
134
|
/**
|
|
137
135
|
* TSL function for creating a storage element node.
|
|
138
136
|
*
|
|
137
|
+
* @tsl
|
|
139
138
|
* @function
|
|
140
139
|
* @param {StorageBufferNode} storageBufferNode - The storage buffer node.
|
|
141
140
|
* @param {Node} indexNode - The index node that defines the element access.
|
|
142
141
|
* @returns {StorageArrayElementNode}
|
|
143
142
|
*/
|
|
144
|
-
export const storageElement = /*@__PURE__*/ nodeProxy( StorageArrayElementNode );
|
|
143
|
+
export const storageElement = /*@__PURE__*/ nodeProxy( StorageArrayElementNode ).setParameterLength( 2 );
|
package/src/nodes/utils/Timer.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { renderGroup } from '../core/UniformGroupNode.js';
|
|
2
2
|
import { uniform } from '../core/UniformNode.js';
|
|
3
3
|
|
|
4
|
-
/** @module Timer **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Represents the elapsed time in seconds.
|
|
8
6
|
*
|
|
7
|
+
* @tsl
|
|
9
8
|
* @type {UniformNode<float>}
|
|
10
9
|
*/
|
|
11
10
|
export const time = /*@__PURE__*/ uniform( 0 ).setGroup( renderGroup ).onRenderUpdate( ( frame ) => frame.time );
|
|
@@ -13,6 +12,7 @@ export const time = /*@__PURE__*/ uniform( 0 ).setGroup( renderGroup ).onRenderU
|
|
|
13
12
|
/**
|
|
14
13
|
* Represents the delta time in seconds.
|
|
15
14
|
*
|
|
15
|
+
* @tsl
|
|
16
16
|
* @type {UniformNode<float>}
|
|
17
17
|
*/
|
|
18
18
|
export const deltaTime = /*@__PURE__*/ uniform( 0 ).setGroup( renderGroup ).onRenderUpdate( ( frame ) => frame.deltaTime );
|
|
@@ -20,6 +20,7 @@ export const deltaTime = /*@__PURE__*/ uniform( 0 ).setGroup( renderGroup ).onRe
|
|
|
20
20
|
/**
|
|
21
21
|
* Represents the current frame ID.
|
|
22
22
|
*
|
|
23
|
+
* @tsl
|
|
23
24
|
* @type {UniformNode<uint>}
|
|
24
25
|
*/
|
|
25
26
|
export const frameId = /*@__PURE__*/ uniform( 0, 'uint' ).setGroup( renderGroup ).onRenderUpdate( ( frame ) => frame.frameId );
|
|
@@ -27,10 +28,11 @@ export const frameId = /*@__PURE__*/ uniform( 0, 'uint' ).setGroup( renderGroup
|
|
|
27
28
|
// Deprecated
|
|
28
29
|
|
|
29
30
|
/**
|
|
31
|
+
* @tsl
|
|
30
32
|
* @function
|
|
31
33
|
* @deprecated since r170. Use {@link time} instead.
|
|
32
34
|
*
|
|
33
|
-
* @param {
|
|
35
|
+
* @param {number} [timeScale=1] - The time scale.
|
|
34
36
|
* @returns {UniformNode<float>}
|
|
35
37
|
*/
|
|
36
38
|
export const timerLocal = ( timeScale = 1 ) => { // @deprecated, r170
|
|
@@ -41,10 +43,11 @@ export const timerLocal = ( timeScale = 1 ) => { // @deprecated, r170
|
|
|
41
43
|
};
|
|
42
44
|
|
|
43
45
|
/**
|
|
46
|
+
* @tsl
|
|
44
47
|
* @function
|
|
45
48
|
* @deprecated since r170. Use {@link time} instead.
|
|
46
49
|
*
|
|
47
|
-
* @param {
|
|
50
|
+
* @param {number} [timeScale=1] - The time scale.
|
|
48
51
|
* @returns {UniformNode<float>}
|
|
49
52
|
*/
|
|
50
53
|
export const timerGlobal = ( timeScale = 1 ) => { // @deprecated, r170
|
|
@@ -55,10 +58,11 @@ export const timerGlobal = ( timeScale = 1 ) => { // @deprecated, r170
|
|
|
55
58
|
};
|
|
56
59
|
|
|
57
60
|
/**
|
|
61
|
+
* @tsl
|
|
58
62
|
* @function
|
|
59
63
|
* @deprecated since r170. Use {@link deltaTime} instead.
|
|
60
64
|
*
|
|
61
|
-
* @param {
|
|
65
|
+
* @param {number} [timeScale=1] - The time scale.
|
|
62
66
|
* @returns {UniformNode<float>}
|
|
63
67
|
*/
|
|
64
68
|
export const timerDelta = ( timeScale = 1 ) => { // @deprecated, r170
|