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
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import TempNode from '../core/TempNode.js';
|
|
2
|
+
import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
|
|
3
|
+
|
|
4
|
+
class DebugNode extends TempNode {
|
|
5
|
+
|
|
6
|
+
static get type() {
|
|
7
|
+
|
|
8
|
+
return 'DebugNode';
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
constructor( node, callback = null ) {
|
|
13
|
+
|
|
14
|
+
super();
|
|
15
|
+
|
|
16
|
+
this.node = node;
|
|
17
|
+
this.callback = callback;
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
getNodeType( builder ) {
|
|
22
|
+
|
|
23
|
+
return this.node.getNodeType( builder );
|
|
24
|
+
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
setup( builder ) {
|
|
28
|
+
|
|
29
|
+
return this.node.build( builder );
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
analyze( builder ) {
|
|
34
|
+
|
|
35
|
+
return this.node.build( builder );
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
generate( builder ) {
|
|
40
|
+
|
|
41
|
+
const callback = this.callback;
|
|
42
|
+
const snippet = this.node.build( builder );
|
|
43
|
+
|
|
44
|
+
let code = '';
|
|
45
|
+
code += '// #--- TSL Debug ---#\n';
|
|
46
|
+
code += builder.flow.code.replace( /^\t/mg, '' ) + '\n';
|
|
47
|
+
code += '/* ... */ ' + snippet + ' /* ... */\n';
|
|
48
|
+
code += '// #-----------------#\n';
|
|
49
|
+
|
|
50
|
+
if ( callback !== null ) {
|
|
51
|
+
|
|
52
|
+
callback( code );
|
|
53
|
+
|
|
54
|
+
} else {
|
|
55
|
+
|
|
56
|
+
console.log( code );
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return snippet;
|
|
61
|
+
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export default DebugNode;
|
|
67
|
+
|
|
68
|
+
export const debug = ( node, callback = null ) => nodeObject( new DebugNode( nodeObject( node ), callback ) );
|
|
69
|
+
|
|
70
|
+
addMethodChaining( 'debug', debug );
|
|
@@ -2,13 +2,12 @@ import { select } from '../math/ConditionalNode.js';
|
|
|
2
2
|
import { expression } from '../code/ExpressionNode.js';
|
|
3
3
|
import { addMethodChaining } from '../tsl/TSLCore.js';
|
|
4
4
|
|
|
5
|
-
/** @module Discard **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* Represents a `discard` shader operation in TSL.
|
|
9
7
|
*
|
|
10
|
-
* @
|
|
11
|
-
* @
|
|
8
|
+
* @tsl
|
|
9
|
+
* @function
|
|
10
|
+
* @param {?ConditionalNode} conditional - An optional conditional node. It allows to decide whether the discard should be executed or not.
|
|
12
11
|
* @return {Node} The `discard` expression.
|
|
13
12
|
*/
|
|
14
13
|
export const Discard = ( conditional ) => ( conditional ? select( conditional, expression( 'discard' ) ) : expression( 'discard' ) ).append();
|
|
@@ -16,7 +15,8 @@ export const Discard = ( conditional ) => ( conditional ? select( conditional, e
|
|
|
16
15
|
/**
|
|
17
16
|
* Represents a `return` shader operation in TSL.
|
|
18
17
|
*
|
|
19
|
-
* @
|
|
18
|
+
* @tsl
|
|
19
|
+
* @function
|
|
20
20
|
* @return {ExpressionNode} The `return` expression.
|
|
21
21
|
*/
|
|
22
22
|
export const Return = () => expression( 'return' ).append();
|
|
@@ -2,8 +2,6 @@ import TempNode from '../core/TempNode.js';
|
|
|
2
2
|
import { positionWorldDirection } from '../accessors/Position.js';
|
|
3
3
|
import { nodeProxy, vec2 } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
|
-
/** @module EquirectUVNode **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* Can be used to compute texture coordinates for projecting an
|
|
9
7
|
* equirectangular texture onto a mesh for using it as the scene's
|
|
@@ -59,8 +57,9 @@ export default EquirectUVNode;
|
|
|
59
57
|
/**
|
|
60
58
|
* TSL function for creating an equirect uv node.
|
|
61
59
|
*
|
|
60
|
+
* @tsl
|
|
62
61
|
* @function
|
|
63
|
-
* @param {Node<vec3>} [dirNode=positionWorldDirection] - A direction vector for sampling which is by default `positionWorldDirection`.
|
|
62
|
+
* @param {?Node<vec3>} [dirNode=positionWorldDirection] - A direction vector for sampling which is by default `positionWorldDirection`.
|
|
64
63
|
* @returns {EquirectUVNode}
|
|
65
64
|
*/
|
|
66
|
-
export const equirectUV = /*@__PURE__*/ nodeProxy( EquirectUVNode );
|
|
65
|
+
export const equirectUV = /*@__PURE__*/ nodeProxy( EquirectUVNode ).setParameterLength( 0, 1 );
|
|
@@ -28,7 +28,7 @@ class FlipNode extends TempNode {
|
|
|
28
28
|
* Constructs a new flip node.
|
|
29
29
|
*
|
|
30
30
|
* @param {Node} sourceNode - The node which component(s) should be flipped.
|
|
31
|
-
* @param {
|
|
31
|
+
* @param {string} components - The components that should be flipped e.g. `'x'` or `'xy'`.
|
|
32
32
|
*/
|
|
33
33
|
constructor( sourceNode, components ) {
|
|
34
34
|
|
|
@@ -44,7 +44,7 @@ class FlipNode extends TempNode {
|
|
|
44
44
|
/**
|
|
45
45
|
* The components that should be flipped e.g. `'x'` or `'xy'`.
|
|
46
46
|
*
|
|
47
|
-
* @type {
|
|
47
|
+
* @type {string}
|
|
48
48
|
*/
|
|
49
49
|
this.components = components;
|
|
50
50
|
|
|
@@ -54,7 +54,7 @@ class FlipNode extends TempNode {
|
|
|
54
54
|
* This method is overwritten since the node type is inferred from the source node.
|
|
55
55
|
*
|
|
56
56
|
* @param {NodeBuilder} builder - The current node builder.
|
|
57
|
-
* @return {
|
|
57
|
+
* @return {string} The node type.
|
|
58
58
|
*/
|
|
59
59
|
getNodeType( builder ) {
|
|
60
60
|
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeProxy } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
-
/** @module FunctionOverloadingNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* This class allows to define multiple overloaded versions
|
|
8
6
|
* of the same function. Depending on the parameters of the function
|
|
@@ -53,7 +51,7 @@ class FunctionOverloadingNode extends Node {
|
|
|
53
51
|
/**
|
|
54
52
|
* This node is marked as global.
|
|
55
53
|
*
|
|
56
|
-
* @type {
|
|
54
|
+
* @type {boolean}
|
|
57
55
|
* @default true
|
|
58
56
|
*/
|
|
59
57
|
this.global = true;
|
|
@@ -65,7 +63,7 @@ class FunctionOverloadingNode extends Node {
|
|
|
65
63
|
* the function's return type.
|
|
66
64
|
*
|
|
67
65
|
* @param {NodeBuilder} builder - The current node builder.
|
|
68
|
-
* @return {
|
|
66
|
+
* @return {string} The node type.
|
|
69
67
|
*/
|
|
70
68
|
getNodeType() {
|
|
71
69
|
|
|
@@ -146,6 +144,7 @@ const overloadingBaseFn = /*@__PURE__*/ nodeProxy( FunctionOverloadingNode );
|
|
|
146
144
|
/**
|
|
147
145
|
* TSL function for creating a function overloading node.
|
|
148
146
|
*
|
|
147
|
+
* @tsl
|
|
149
148
|
* @function
|
|
150
149
|
* @param {Array<Function>} functionNodes - Array of `Fn` function definitions.
|
|
151
150
|
* @returns {FunctionOverloadingNode}
|
|
@@ -19,7 +19,7 @@ class JoinNode extends TempNode {
|
|
|
19
19
|
* Constructs a new join node.
|
|
20
20
|
*
|
|
21
21
|
* @param {Array<Node>} nodes - An array of nodes that should be joined.
|
|
22
|
-
* @param {
|
|
22
|
+
* @param {?string} [nodeType=null] - The node type.
|
|
23
23
|
*/
|
|
24
24
|
constructor( nodes = [], nodeType = null ) {
|
|
25
25
|
|
|
@@ -39,7 +39,7 @@ class JoinNode extends TempNode {
|
|
|
39
39
|
* joined data length if not explicitly defined.
|
|
40
40
|
*
|
|
41
41
|
* @param {NodeBuilder} builder - The current node builder.
|
|
42
|
-
* @return {
|
|
42
|
+
* @return {string} The node type.
|
|
43
43
|
*/
|
|
44
44
|
getNodeType( builder ) {
|
|
45
45
|
|
|
@@ -56,17 +56,42 @@ class JoinNode extends TempNode {
|
|
|
56
56
|
generate( builder, output ) {
|
|
57
57
|
|
|
58
58
|
const type = this.getNodeType( builder );
|
|
59
|
+
const maxLength = builder.getTypeLength( type );
|
|
60
|
+
|
|
59
61
|
const nodes = this.nodes;
|
|
60
62
|
|
|
61
63
|
const primitiveType = builder.getComponentType( type );
|
|
62
64
|
|
|
63
65
|
const snippetValues = [];
|
|
64
66
|
|
|
67
|
+
let length = 0;
|
|
68
|
+
|
|
65
69
|
for ( const input of nodes ) {
|
|
66
70
|
|
|
67
|
-
|
|
71
|
+
if ( length >= maxLength ) {
|
|
72
|
+
|
|
73
|
+
console.error( `THREE.TSL: Length of parameters exceeds maximum length of function '${ type }()' type.` );
|
|
74
|
+
break;
|
|
75
|
+
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
let inputType = input.getNodeType( builder );
|
|
79
|
+
let inputTypeLength = builder.getTypeLength( inputType );
|
|
80
|
+
let inputSnippet;
|
|
81
|
+
|
|
82
|
+
if ( length + inputTypeLength > maxLength ) {
|
|
83
|
+
|
|
84
|
+
console.error( `THREE.TSL: Length of '${ type }()' data exceeds maximum length of output type.` );
|
|
85
|
+
|
|
86
|
+
inputTypeLength = maxLength - length;
|
|
87
|
+
inputType = builder.getTypeFromLength( inputTypeLength );
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
length += inputTypeLength;
|
|
92
|
+
inputSnippet = input.build( builder, inputType );
|
|
68
93
|
|
|
69
|
-
const inputPrimitiveType = builder.getComponentType(
|
|
94
|
+
const inputPrimitiveType = builder.getComponentType( inputType );
|
|
70
95
|
|
|
71
96
|
if ( inputPrimitiveType !== primitiveType ) {
|
|
72
97
|
|
|
@@ -2,8 +2,6 @@ import Node from '../core/Node.js';
|
|
|
2
2
|
import { expression } from '../code/ExpressionNode.js';
|
|
3
3
|
import { nodeObject, nodeArray } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
|
-
/** @module LoopNode **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* This module offers a variety of ways to implement loops in TSL. In it's basic form it's:
|
|
9
7
|
* ```js
|
|
@@ -27,6 +25,16 @@ import { nodeObject, nodeArray } from '../tsl/TSLBase.js';
|
|
|
27
25
|
* ```js
|
|
28
26
|
* Loop( { start: 10 }, () => {} );
|
|
29
27
|
* ```
|
|
28
|
+
* It is possible to execute with boolean values, similar to the `while` syntax.
|
|
29
|
+
* ```js
|
|
30
|
+
* const value = float( 0 ).toVar();
|
|
31
|
+
*
|
|
32
|
+
* Loop( value.lessThan( 10 ), () => {
|
|
33
|
+
*
|
|
34
|
+
* value.addAssign( 1 );
|
|
35
|
+
*
|
|
36
|
+
* } );
|
|
37
|
+
* ```
|
|
30
38
|
* The module also provides `Break()` and `Continue()` TSL expression for loop control.
|
|
31
39
|
* @augments Node
|
|
32
40
|
*/
|
|
@@ -41,7 +49,7 @@ class LoopNode extends Node {
|
|
|
41
49
|
/**
|
|
42
50
|
* Constructs a new loop node.
|
|
43
51
|
*
|
|
44
|
-
* @param {Array<
|
|
52
|
+
* @param {Array<any>} params - Depending on the loop type, array holds different parameterization values for the loop.
|
|
45
53
|
*/
|
|
46
54
|
constructor( params = [] ) {
|
|
47
55
|
|
|
@@ -55,8 +63,8 @@ class LoopNode extends Node {
|
|
|
55
63
|
* Returns a loop variable name based on an index. The pattern is
|
|
56
64
|
* `0` = `i`, `1`= `j`, `2`= `k` and so on.
|
|
57
65
|
*
|
|
58
|
-
* @param {
|
|
59
|
-
* @return {
|
|
66
|
+
* @param {number} index - The index.
|
|
67
|
+
* @return {string} The loop variable name.
|
|
60
68
|
*/
|
|
61
69
|
getVarName( index ) {
|
|
62
70
|
|
|
@@ -106,7 +114,7 @@ class LoopNode extends Node {
|
|
|
106
114
|
* This method is overwritten since the node type is inferred based on the loop configuration.
|
|
107
115
|
*
|
|
108
116
|
* @param {NodeBuilder} builder - The current node builder.
|
|
109
|
-
* @return {
|
|
117
|
+
* @return {string} The node type.
|
|
110
118
|
*/
|
|
111
119
|
getNodeType( builder ) {
|
|
112
120
|
|
|
@@ -135,15 +143,25 @@ class LoopNode extends Node {
|
|
|
135
143
|
|
|
136
144
|
const param = params[ i ];
|
|
137
145
|
|
|
138
|
-
let start = null, end = null, name = null, type = null, condition = null, update = null;
|
|
146
|
+
let isWhile = false, start = null, end = null, name = null, type = null, condition = null, update = null;
|
|
139
147
|
|
|
140
148
|
if ( param.isNode ) {
|
|
141
149
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
150
|
+
if ( param.getNodeType( builder ) === 'bool' ) {
|
|
151
|
+
|
|
152
|
+
isWhile = true;
|
|
153
|
+
type = 'bool';
|
|
154
|
+
end = param.build( builder, type );
|
|
155
|
+
|
|
156
|
+
} else {
|
|
157
|
+
|
|
158
|
+
type = 'int';
|
|
159
|
+
name = this.getVarName( i );
|
|
160
|
+
start = '0';
|
|
161
|
+
end = param.build( builder, type );
|
|
162
|
+
condition = '<';
|
|
163
|
+
|
|
164
|
+
}
|
|
147
165
|
|
|
148
166
|
} else {
|
|
149
167
|
|
|
@@ -189,41 +207,51 @@ class LoopNode extends Node {
|
|
|
189
207
|
|
|
190
208
|
}
|
|
191
209
|
|
|
192
|
-
|
|
210
|
+
let loopSnippet;
|
|
193
211
|
|
|
194
|
-
|
|
212
|
+
if ( isWhile ) {
|
|
195
213
|
|
|
196
|
-
|
|
197
|
-
const endSnippet = internalParam.end;
|
|
214
|
+
loopSnippet = `while ( ${ end } )`;
|
|
198
215
|
|
|
199
|
-
|
|
200
|
-
let conditionalSnippet = '';
|
|
201
|
-
let updateSnippet = '';
|
|
216
|
+
} else {
|
|
202
217
|
|
|
203
|
-
|
|
218
|
+
const internalParam = { start, end, condition };
|
|
204
219
|
|
|
205
|
-
|
|
220
|
+
//
|
|
206
221
|
|
|
207
|
-
|
|
208
|
-
|
|
222
|
+
const startSnippet = internalParam.start;
|
|
223
|
+
const endSnippet = internalParam.end;
|
|
209
224
|
|
|
210
|
-
|
|
225
|
+
let declarationSnippet = '';
|
|
226
|
+
let conditionalSnippet = '';
|
|
227
|
+
let updateSnippet = '';
|
|
211
228
|
|
|
212
|
-
|
|
213
|
-
|
|
229
|
+
if ( ! update ) {
|
|
230
|
+
|
|
231
|
+
if ( type === 'int' || type === 'uint' ) {
|
|
232
|
+
|
|
233
|
+
if ( condition.includes( '<' ) ) update = '++';
|
|
234
|
+
else update = '--';
|
|
235
|
+
|
|
236
|
+
} else {
|
|
237
|
+
|
|
238
|
+
if ( condition.includes( '<' ) ) update = '+= 1.';
|
|
239
|
+
else update = '-= 1.';
|
|
240
|
+
|
|
241
|
+
}
|
|
214
242
|
|
|
215
243
|
}
|
|
216
244
|
|
|
217
|
-
|
|
245
|
+
declarationSnippet += builder.getVar( type, name ) + ' = ' + startSnippet;
|
|
218
246
|
|
|
219
|
-
|
|
247
|
+
conditionalSnippet += name + ' ' + condition + ' ' + endSnippet;
|
|
248
|
+
updateSnippet += name + ' ' + update;
|
|
220
249
|
|
|
221
|
-
|
|
222
|
-
updateSnippet += name + ' ' + update;
|
|
250
|
+
loopSnippet = `for ( ${ declarationSnippet }; ${ conditionalSnippet }; ${ updateSnippet } )`;
|
|
223
251
|
|
|
224
|
-
|
|
252
|
+
}
|
|
225
253
|
|
|
226
|
-
builder.addFlowCode( ( i === 0 ? '\n' : '' ) + builder.tab +
|
|
254
|
+
builder.addFlowCode( ( i === 0 ? '\n' : '' ) + builder.tab + loopSnippet + ' {\n\n' ).addFlowTab();
|
|
227
255
|
|
|
228
256
|
}
|
|
229
257
|
|
|
@@ -252,8 +280,9 @@ export default LoopNode;
|
|
|
252
280
|
/**
|
|
253
281
|
* TSL function for creating a loop node.
|
|
254
282
|
*
|
|
283
|
+
* @tsl
|
|
255
284
|
* @function
|
|
256
|
-
* @param {...
|
|
285
|
+
* @param {...any} params - A list of parameters.
|
|
257
286
|
* @returns {LoopNode}
|
|
258
287
|
*/
|
|
259
288
|
export const Loop = ( ...params ) => nodeObject( new LoopNode( nodeArray( params, 'int' ) ) ).append();
|
|
@@ -261,6 +290,7 @@ export const Loop = ( ...params ) => nodeObject( new LoopNode( nodeArray( params
|
|
|
261
290
|
/**
|
|
262
291
|
* TSL function for creating a `Continue()` expression.
|
|
263
292
|
*
|
|
293
|
+
* @tsl
|
|
264
294
|
* @function
|
|
265
295
|
* @returns {ExpressionNode}
|
|
266
296
|
*/
|
|
@@ -269,6 +299,7 @@ export const Continue = () => expression( 'continue' ).append();
|
|
|
269
299
|
/**
|
|
270
300
|
* TSL function for creating a `Break()` expression.
|
|
271
301
|
*
|
|
302
|
+
* @tsl
|
|
272
303
|
* @function
|
|
273
304
|
* @returns {ExpressionNode}
|
|
274
305
|
*/
|
|
@@ -277,15 +308,16 @@ export const Break = () => expression( 'break' ).append();
|
|
|
277
308
|
// Deprecated
|
|
278
309
|
|
|
279
310
|
/**
|
|
311
|
+
* @tsl
|
|
280
312
|
* @function
|
|
281
313
|
* @deprecated since r168. Use {@link Loop} instead.
|
|
282
314
|
*
|
|
283
|
-
* @param
|
|
315
|
+
* @param {...any} params
|
|
284
316
|
* @returns {LoopNode}
|
|
285
317
|
*/
|
|
286
318
|
export const loop = ( ...params ) => { // @deprecated, r168
|
|
287
319
|
|
|
288
|
-
console.warn( 'TSL
|
|
320
|
+
console.warn( 'THREE.TSL: loop() has been renamed to Loop().' );
|
|
289
321
|
return Loop( ...params );
|
|
290
322
|
|
|
291
323
|
};
|
|
@@ -3,8 +3,6 @@ import { transformedNormalView } from '../accessors/Normal.js';
|
|
|
3
3
|
import { positionViewDirection } from '../accessors/Position.js';
|
|
4
4
|
import { nodeImmutable, vec2, vec3 } from '../tsl/TSLBase.js';
|
|
5
5
|
|
|
6
|
-
/** @module MatcapUVNode **/
|
|
7
|
-
|
|
8
6
|
/**
|
|
9
7
|
* Can be used to compute texture coordinates for projecting a
|
|
10
8
|
* matcap onto a mesh. Used by {@link MeshMatcapNodeMaterial}.
|
|
@@ -44,6 +42,7 @@ export default MatcapUVNode;
|
|
|
44
42
|
/**
|
|
45
43
|
* TSL function for creating a matcap uv node.
|
|
46
44
|
*
|
|
45
|
+
* @tsl
|
|
47
46
|
* @function
|
|
48
47
|
* @returns {MatcapUVNode}
|
|
49
48
|
*/
|
|
@@ -2,8 +2,6 @@ import UniformNode from '../core/UniformNode.js';
|
|
|
2
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
3
3
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
|
-
/** @module MatcapUVNode **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* A special type of uniform node that computes the
|
|
9
7
|
* maximum mipmap level for a given texture node.
|
|
@@ -12,7 +10,7 @@ import { nodeProxy } from '../tsl/TSLBase.js';
|
|
|
12
10
|
* const level = maxMipLevel( textureNode );
|
|
13
11
|
* ```
|
|
14
12
|
*
|
|
15
|
-
* @augments
|
|
13
|
+
* @augments UniformNode
|
|
16
14
|
*/
|
|
17
15
|
class MaxMipLevelNode extends UniformNode {
|
|
18
16
|
|
|
@@ -43,7 +41,7 @@ class MaxMipLevelNode extends UniformNode {
|
|
|
43
41
|
* The `updateType` is set to `NodeUpdateType.FRAME` since the node updates
|
|
44
42
|
* the texture once per frame in its {@link MaxMipLevelNode#update} method.
|
|
45
43
|
*
|
|
46
|
-
* @type {
|
|
44
|
+
* @type {string}
|
|
47
45
|
* @default 'frame'
|
|
48
46
|
*/
|
|
49
47
|
this.updateType = NodeUpdateType.FRAME;
|
|
@@ -97,8 +95,9 @@ export default MaxMipLevelNode;
|
|
|
97
95
|
/**
|
|
98
96
|
* TSL function for creating a max mip level node.
|
|
99
97
|
*
|
|
98
|
+
* @tsl
|
|
100
99
|
* @function
|
|
101
100
|
* @param {TextureNode} textureNode - The texture node to compute the max mip level for.
|
|
102
101
|
* @returns {MaxMipLevelNode}
|
|
103
102
|
*/
|
|
104
|
-
export const maxMipLevel = /*@__PURE__*/ nodeProxy( MaxMipLevelNode );
|
|
103
|
+
export const maxMipLevel = /*@__PURE__*/ nodeProxy( MaxMipLevelNode ).setParameterLength( 1 );
|
|
@@ -18,7 +18,7 @@ class MemberNode extends Node {
|
|
|
18
18
|
* Constructs an array element node.
|
|
19
19
|
*
|
|
20
20
|
* @param {Node} node - The array-like node.
|
|
21
|
-
* @param {
|
|
21
|
+
* @param {string} property - The property name.
|
|
22
22
|
*/
|
|
23
23
|
constructor( node, property ) {
|
|
24
24
|
|
|
@@ -41,7 +41,7 @@ class MemberNode extends Node {
|
|
|
41
41
|
/**
|
|
42
42
|
* This flag can be used for type testing.
|
|
43
43
|
*
|
|
44
|
-
* @type {
|
|
44
|
+
* @type {boolean}
|
|
45
45
|
* @readonly
|
|
46
46
|
* @default true
|
|
47
47
|
*/
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { time } from './Timer.js';
|
|
2
2
|
|
|
3
|
-
/** @module Oscillators **/
|
|
4
|
-
|
|
5
3
|
/**
|
|
6
4
|
* Generates a sine wave oscillation based on a timer.
|
|
7
5
|
*
|
|
8
|
-
* @
|
|
6
|
+
* @tsl
|
|
7
|
+
* @function
|
|
9
8
|
* @param {Node<float>} t - The timer to generate the oscillation with.
|
|
10
9
|
* @return {Node<float>} The oscillation node.
|
|
11
10
|
*/
|
|
@@ -14,7 +13,8 @@ export const oscSine = ( t = time ) => t.add( 0.75 ).mul( Math.PI * 2 ).sin().mu
|
|
|
14
13
|
/**
|
|
15
14
|
* Generates a square wave oscillation based on a timer.
|
|
16
15
|
*
|
|
17
|
-
* @
|
|
16
|
+
* @tsl
|
|
17
|
+
* @function
|
|
18
18
|
* @param {Node<float>} t - The timer to generate the oscillation with.
|
|
19
19
|
* @return {Node<float>} The oscillation node.
|
|
20
20
|
*/
|
|
@@ -23,7 +23,8 @@ export const oscSquare = ( t = time ) => t.fract().round();
|
|
|
23
23
|
/**
|
|
24
24
|
* Generates a triangle wave oscillation based on a timer.
|
|
25
25
|
*
|
|
26
|
-
* @
|
|
26
|
+
* @tsl
|
|
27
|
+
* @function
|
|
27
28
|
* @param {Node<float>} t - The timer to generate the oscillation with.
|
|
28
29
|
* @return {Node<float>} The oscillation node.
|
|
29
30
|
*/
|
|
@@ -32,7 +33,8 @@ export const oscTriangle = ( t = time ) => t.add( 0.5 ).fract().mul( 2 ).sub( 1
|
|
|
32
33
|
/**
|
|
33
34
|
* Generates a sawtooth wave oscillation based on a timer.
|
|
34
35
|
*
|
|
35
|
-
* @
|
|
36
|
+
* @tsl
|
|
37
|
+
* @function
|
|
36
38
|
* @param {Node<float>} t - The timer to generate the oscillation with.
|
|
37
39
|
* @return {Node<float>} The oscillation node.
|
|
38
40
|
*/
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
2
2
|
|
|
3
|
-
/** @module Packing **/
|
|
4
|
-
|
|
5
3
|
/**
|
|
6
4
|
* Packs a direction vector into a color value.
|
|
7
5
|
*
|
|
8
|
-
* @
|
|
6
|
+
* @tsl
|
|
7
|
+
* @function
|
|
9
8
|
* @param {Node<vec3>} node - The direction to pack.
|
|
10
9
|
* @return {Node<vec3>} The color.
|
|
11
10
|
*/
|
|
@@ -14,7 +13,8 @@ export const directionToColor = ( node ) => nodeObject( node ).mul( 0.5 ).add( 0
|
|
|
14
13
|
/**
|
|
15
14
|
* Unpacks a color value into a direction vector.
|
|
16
15
|
*
|
|
17
|
-
* @
|
|
16
|
+
* @tsl
|
|
17
|
+
* @function
|
|
18
18
|
* @param {Node<vec3>} node - The color to unpack.
|
|
19
19
|
* @return {Node<vec3>} The direction.
|
|
20
20
|
*/
|
|
@@ -3,13 +3,12 @@ import { textureSize } from '../accessors/TextureSizeNode.js';
|
|
|
3
3
|
import { textureLoad } from '../accessors/TextureNode.js';
|
|
4
4
|
import { WebGPUCoordinateSystem } from '../../constants.js';
|
|
5
5
|
|
|
6
|
-
/** @module PostProcessingUtils **/
|
|
7
|
-
|
|
8
6
|
/**
|
|
9
7
|
* Computes a position in view space based on a fragment's screen position expressed as uv coordinates, the fragments
|
|
10
8
|
* depth value and the camera's inverse projection matrix.
|
|
11
9
|
*
|
|
12
|
-
* @
|
|
10
|
+
* @tsl
|
|
11
|
+
* @function
|
|
13
12
|
* @param {Node<vec2>} screenPosition - The fragment's screen position expressed as uv coordinates.
|
|
14
13
|
* @param {Node<float>} depth - The fragment's depth value.
|
|
15
14
|
* @param {Node<mat4>} projectionMatrixInverse - The camera's inverse projection matrix.
|
|
@@ -40,7 +39,8 @@ export const getViewPosition = /*@__PURE__*/ Fn( ( [ screenPosition, depth, proj
|
|
|
40
39
|
* Computes a screen position expressed as uv coordinates based on a fragment's position in view space
|
|
41
40
|
* and the camera's projection matrix
|
|
42
41
|
*
|
|
43
|
-
* @
|
|
42
|
+
* @tsl
|
|
43
|
+
* @function
|
|
44
44
|
* @param {Node<vec3>} viewPosition - The fragments position in view space.
|
|
45
45
|
* @param {Node<mat4>} projectionMatrix - The camera's projection matrix.
|
|
46
46
|
* @return {Node<vec2>} The fragment's screen position expressed as uv coordinates.
|
|
@@ -57,7 +57,8 @@ export const getScreenPosition = /*@__PURE__*/ Fn( ( [ viewPosition, projectionM
|
|
|
57
57
|
* Computes a normal vector based on depth data. Can be used as a fallback when no normal render
|
|
58
58
|
* target is available or if flat surface normals are required.
|
|
59
59
|
*
|
|
60
|
-
* @
|
|
60
|
+
* @tsl
|
|
61
|
+
* @function
|
|
61
62
|
* @param {Node<vec2>} uv - The texture coordinate.
|
|
62
63
|
* @param {DepthTexture} depthTexture - The depth texture.
|
|
63
64
|
* @param {Node<mat4>} projectionMatrixInverse - The camera's inverse projection matrix.
|