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
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import TempNode from '../core/TempNode.js';
|
|
2
2
|
import { nodeProxy } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
-
/** @module AtomicFunctionNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* `AtomicFunctionNode` represents any function that can operate on atomic variable types
|
|
8
6
|
* within a shader. In an atomic function, any modification to an atomic variable will
|
|
@@ -25,19 +23,18 @@ class AtomicFunctionNode extends TempNode {
|
|
|
25
23
|
/**
|
|
26
24
|
* Constructs a new atomic function node.
|
|
27
25
|
*
|
|
28
|
-
* @param {
|
|
26
|
+
* @param {string} method - The signature of the atomic function to construct.
|
|
29
27
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
30
28
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
31
|
-
* @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
32
29
|
*/
|
|
33
|
-
constructor( method, pointerNode, valueNode
|
|
30
|
+
constructor( method, pointerNode, valueNode ) {
|
|
34
31
|
|
|
35
32
|
super( 'uint' );
|
|
36
33
|
|
|
37
34
|
/**
|
|
38
35
|
* The signature of the atomic function to construct.
|
|
39
36
|
*
|
|
40
|
-
* @type {
|
|
37
|
+
* @type {string}
|
|
41
38
|
*/
|
|
42
39
|
this.method = method;
|
|
43
40
|
|
|
@@ -55,14 +52,6 @@ class AtomicFunctionNode extends TempNode {
|
|
|
55
52
|
*/
|
|
56
53
|
this.valueNode = valueNode;
|
|
57
54
|
|
|
58
|
-
/**
|
|
59
|
-
* A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
60
|
-
*
|
|
61
|
-
* @type {Node?}
|
|
62
|
-
* @default null
|
|
63
|
-
*/
|
|
64
|
-
this.storeNode = storeNode;
|
|
65
|
-
|
|
66
55
|
}
|
|
67
56
|
|
|
68
57
|
/**
|
|
@@ -70,7 +59,7 @@ class AtomicFunctionNode extends TempNode {
|
|
|
70
59
|
* the pointer node.
|
|
71
60
|
*
|
|
72
61
|
* @param {NodeBuilder} builder - The current node builder.
|
|
73
|
-
* @return {
|
|
62
|
+
* @return {string} The input type.
|
|
74
63
|
*/
|
|
75
64
|
getInputType( builder ) {
|
|
76
65
|
|
|
@@ -82,7 +71,7 @@ class AtomicFunctionNode extends TempNode {
|
|
|
82
71
|
* Overwritten since the node type is inferred from the input type.
|
|
83
72
|
*
|
|
84
73
|
* @param {NodeBuilder} builder - The current node builder.
|
|
85
|
-
* @return {
|
|
74
|
+
* @return {string} The node type.
|
|
86
75
|
*/
|
|
87
76
|
getNodeType( builder ) {
|
|
88
77
|
|
|
@@ -111,20 +100,16 @@ class AtomicFunctionNode extends TempNode {
|
|
|
111
100
|
|
|
112
101
|
}
|
|
113
102
|
|
|
114
|
-
const methodSnippet = `${ builder.getMethod( method, type ) }( ${params.join( ', ' )} )`;
|
|
103
|
+
const methodSnippet = `${ builder.getMethod( method, type ) }( ${ params.join( ', ' ) } )`;
|
|
115
104
|
|
|
116
|
-
if (
|
|
117
|
-
|
|
118
|
-
const varSnippet = this.storeNode.build( builder, inputType );
|
|
119
|
-
|
|
120
|
-
builder.addLineFlowCode( `${varSnippet} = ${methodSnippet}`, this );
|
|
121
|
-
|
|
122
|
-
} else {
|
|
105
|
+
if ( b !== null ) {
|
|
123
106
|
|
|
124
107
|
builder.addLineFlowCode( methodSnippet, this );
|
|
125
108
|
|
|
126
109
|
}
|
|
127
110
|
|
|
111
|
+
return methodSnippet;
|
|
112
|
+
|
|
128
113
|
}
|
|
129
114
|
|
|
130
115
|
}
|
|
@@ -144,11 +129,11 @@ export default AtomicFunctionNode;
|
|
|
144
129
|
/**
|
|
145
130
|
* TSL function for creating an atomic function node.
|
|
146
131
|
*
|
|
132
|
+
* @tsl
|
|
147
133
|
* @function
|
|
148
|
-
* @param {
|
|
134
|
+
* @param {string} method - The signature of the atomic function to construct.
|
|
149
135
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
150
136
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
151
|
-
* @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
152
137
|
* @returns {AtomicFunctionNode}
|
|
153
138
|
*/
|
|
154
139
|
const atomicNode = nodeProxy( AtomicFunctionNode );
|
|
@@ -156,16 +141,16 @@ const atomicNode = nodeProxy( AtomicFunctionNode );
|
|
|
156
141
|
/**
|
|
157
142
|
* TSL function for appending an atomic function call into the programmatic flow of a compute shader.
|
|
158
143
|
*
|
|
144
|
+
* @tsl
|
|
159
145
|
* @function
|
|
160
|
-
* @param {
|
|
146
|
+
* @param {string} method - The signature of the atomic function to construct.
|
|
161
147
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
162
148
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
163
|
-
* @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
164
149
|
* @returns {AtomicFunctionNode}
|
|
165
150
|
*/
|
|
166
|
-
export const atomicFunc = ( method, pointerNode, valueNode
|
|
151
|
+
export const atomicFunc = ( method, pointerNode, valueNode ) => {
|
|
167
152
|
|
|
168
|
-
const node = atomicNode( method, pointerNode, valueNode
|
|
153
|
+
const node = atomicNode( method, pointerNode, valueNode );
|
|
169
154
|
node.append();
|
|
170
155
|
|
|
171
156
|
return node;
|
|
@@ -175,97 +160,97 @@ export const atomicFunc = ( method, pointerNode, valueNode, storeNode = null ) =
|
|
|
175
160
|
/**
|
|
176
161
|
* Loads the value stored in the atomic variable.
|
|
177
162
|
*
|
|
163
|
+
* @tsl
|
|
178
164
|
* @function
|
|
179
165
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
180
|
-
* @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
181
166
|
* @returns {AtomicFunctionNode}
|
|
182
167
|
*/
|
|
183
|
-
export const atomicLoad = ( pointerNode
|
|
168
|
+
export const atomicLoad = ( pointerNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_LOAD, pointerNode, null );
|
|
184
169
|
|
|
185
170
|
/**
|
|
186
171
|
* Stores a value in the atomic variable.
|
|
187
172
|
*
|
|
173
|
+
* @tsl
|
|
188
174
|
* @function
|
|
189
175
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
190
176
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
191
|
-
* @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
192
177
|
* @returns {AtomicFunctionNode}
|
|
193
178
|
*/
|
|
194
|
-
export const atomicStore = ( pointerNode, valueNode
|
|
179
|
+
export const atomicStore = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_STORE, pointerNode, valueNode );
|
|
195
180
|
|
|
196
181
|
/**
|
|
197
182
|
* Increments the value stored in the atomic variable.
|
|
198
183
|
*
|
|
184
|
+
* @tsl
|
|
199
185
|
* @function
|
|
200
186
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
201
187
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
202
|
-
* @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
203
188
|
* @returns {AtomicFunctionNode}
|
|
204
189
|
*/
|
|
205
|
-
export const atomicAdd = ( pointerNode, valueNode
|
|
190
|
+
export const atomicAdd = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_ADD, pointerNode, valueNode );
|
|
206
191
|
|
|
207
192
|
/**
|
|
208
193
|
* Decrements the value stored in the atomic variable.
|
|
209
194
|
*
|
|
195
|
+
* @tsl
|
|
210
196
|
* @function
|
|
211
197
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
212
198
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
213
|
-
* @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
214
199
|
* @returns {AtomicFunctionNode}
|
|
215
200
|
*/
|
|
216
|
-
export const atomicSub = ( pointerNode, valueNode
|
|
201
|
+
export const atomicSub = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_SUB, pointerNode, valueNode );
|
|
217
202
|
|
|
218
203
|
/**
|
|
219
204
|
* Stores in an atomic variable the maximum between its current value and a parameter.
|
|
220
205
|
*
|
|
206
|
+
* @tsl
|
|
221
207
|
* @function
|
|
222
208
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
223
209
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
224
|
-
* @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
225
210
|
* @returns {AtomicFunctionNode}
|
|
226
211
|
*/
|
|
227
|
-
export const atomicMax = ( pointerNode, valueNode
|
|
212
|
+
export const atomicMax = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_MAX, pointerNode, valueNode );
|
|
228
213
|
|
|
229
214
|
/**
|
|
230
215
|
* Stores in an atomic variable the minimum between its current value and a parameter.
|
|
231
216
|
*
|
|
217
|
+
* @tsl
|
|
232
218
|
* @function
|
|
233
219
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
234
220
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
235
|
-
* @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
236
221
|
* @returns {AtomicFunctionNode}
|
|
237
222
|
*/
|
|
238
|
-
export const atomicMin = ( pointerNode, valueNode
|
|
223
|
+
export const atomicMin = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_MIN, pointerNode, valueNode );
|
|
239
224
|
|
|
240
225
|
/**
|
|
241
226
|
* Stores in an atomic variable the bitwise AND of its value with a parameter.
|
|
242
227
|
*
|
|
228
|
+
* @tsl
|
|
243
229
|
* @function
|
|
244
230
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
245
231
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
246
|
-
* @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
247
232
|
* @returns {AtomicFunctionNode}
|
|
248
233
|
*/
|
|
249
|
-
export const atomicAnd = ( pointerNode, valueNode
|
|
234
|
+
export const atomicAnd = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_AND, pointerNode, valueNode );
|
|
250
235
|
|
|
251
236
|
/**
|
|
252
237
|
* Stores in an atomic variable the bitwise OR of its value with a parameter.
|
|
253
238
|
*
|
|
239
|
+
* @tsl
|
|
254
240
|
* @function
|
|
255
241
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
256
242
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
257
|
-
* @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
258
243
|
* @returns {AtomicFunctionNode}
|
|
259
244
|
*/
|
|
260
|
-
export const atomicOr = ( pointerNode, valueNode
|
|
245
|
+
export const atomicOr = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_OR, pointerNode, valueNode );
|
|
261
246
|
|
|
262
247
|
/**
|
|
263
248
|
* Stores in an atomic variable the bitwise XOR of its value with a parameter.
|
|
264
249
|
*
|
|
250
|
+
* @tsl
|
|
265
251
|
* @function
|
|
266
252
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
267
253
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
268
|
-
* @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
269
254
|
* @returns {AtomicFunctionNode}
|
|
270
255
|
*/
|
|
271
|
-
export const atomicXor = ( pointerNode, valueNode
|
|
256
|
+
export const atomicXor = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_XOR, pointerNode, valueNode );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeProxy } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
-
/** @module BarrierNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Represents a GPU control barrier that synchronizes compute operations within a given scope.
|
|
8
6
|
*
|
|
@@ -15,7 +13,7 @@ class BarrierNode extends Node {
|
|
|
15
13
|
/**
|
|
16
14
|
* Constructs a new barrier node.
|
|
17
15
|
*
|
|
18
|
-
* @param {
|
|
16
|
+
* @param {string} scope - The scope defines the behavior of the node.
|
|
19
17
|
*/
|
|
20
18
|
constructor( scope ) {
|
|
21
19
|
|
|
@@ -49,8 +47,9 @@ export default BarrierNode;
|
|
|
49
47
|
/**
|
|
50
48
|
* TSL function for creating a barrier node.
|
|
51
49
|
*
|
|
50
|
+
* @tsl
|
|
52
51
|
* @function
|
|
53
|
-
* @param {
|
|
52
|
+
* @param {string} scope - The scope defines the behavior of the node..
|
|
54
53
|
* @returns {BarrierNode}
|
|
55
54
|
*/
|
|
56
55
|
const barrier = nodeProxy( BarrierNode );
|
|
@@ -60,6 +59,7 @@ const barrier = nodeProxy( BarrierNode );
|
|
|
60
59
|
* invocations must wait for each invocation within a workgroup to
|
|
61
60
|
* complete before the barrier can be surpassed.
|
|
62
61
|
*
|
|
62
|
+
* @tsl
|
|
63
63
|
* @function
|
|
64
64
|
* @returns {BarrierNode}
|
|
65
65
|
*/
|
|
@@ -70,6 +70,7 @@ export const workgroupBarrier = () => barrier( 'workgroup' ).append();
|
|
|
70
70
|
* wait for each access to variables within the 'storage' address space
|
|
71
71
|
* to complete before the barrier can be passed.
|
|
72
72
|
*
|
|
73
|
+
* @tsl
|
|
73
74
|
* @function
|
|
74
75
|
* @returns {BarrierNode}
|
|
75
76
|
*/
|
|
@@ -80,6 +81,7 @@ export const storageBarrier = () => barrier( 'storage' ).append();
|
|
|
80
81
|
* wait for each access to variables within the 'texture' address space
|
|
81
82
|
* to complete before the barrier can be passed.
|
|
82
83
|
*
|
|
84
|
+
* @tsl
|
|
83
85
|
* @function
|
|
84
86
|
* @returns {BarrierNode}
|
|
85
87
|
*/
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module ComputeBuiltinNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* `ComputeBuiltinNode` represents a compute-scope builtin value that expose information
|
|
8
6
|
* about the currently running dispatch and/or the device it is running on.
|
|
@@ -22,8 +20,8 @@ class ComputeBuiltinNode extends Node {
|
|
|
22
20
|
/**
|
|
23
21
|
* Constructs a new compute builtin node.
|
|
24
22
|
*
|
|
25
|
-
* @param {
|
|
26
|
-
* @param {
|
|
23
|
+
* @param {string} builtinName - The built-in name.
|
|
24
|
+
* @param {string} nodeType - The node type.
|
|
27
25
|
*/
|
|
28
26
|
constructor( builtinName, nodeType ) {
|
|
29
27
|
|
|
@@ -33,7 +31,7 @@ class ComputeBuiltinNode extends Node {
|
|
|
33
31
|
* The built-in name.
|
|
34
32
|
*
|
|
35
33
|
* @private
|
|
36
|
-
* @type {
|
|
34
|
+
* @type {string}
|
|
37
35
|
*/
|
|
38
36
|
this._builtinName = builtinName;
|
|
39
37
|
|
|
@@ -43,7 +41,7 @@ class ComputeBuiltinNode extends Node {
|
|
|
43
41
|
* This method is overwritten since hash is derived from the built-in name.
|
|
44
42
|
*
|
|
45
43
|
* @param {NodeBuilder} builder - The current node builder.
|
|
46
|
-
* @return {
|
|
44
|
+
* @return {string} The hash.
|
|
47
45
|
*/
|
|
48
46
|
getHash( builder ) {
|
|
49
47
|
|
|
@@ -55,7 +53,7 @@ class ComputeBuiltinNode extends Node {
|
|
|
55
53
|
* This method is overwritten since the node type is simply derived from `nodeType`..
|
|
56
54
|
*
|
|
57
55
|
* @param {NodeBuilder} builder - The current node builder.
|
|
58
|
-
* @return {
|
|
56
|
+
* @return {string} The node type.
|
|
59
57
|
*/
|
|
60
58
|
getNodeType( /*builder*/ ) {
|
|
61
59
|
|
|
@@ -66,7 +64,7 @@ class ComputeBuiltinNode extends Node {
|
|
|
66
64
|
/**
|
|
67
65
|
* Sets the builtin name.
|
|
68
66
|
*
|
|
69
|
-
* @param {
|
|
67
|
+
* @param {string} builtinName - The built-in name.
|
|
70
68
|
* @return {ComputeBuiltinNode} A reference to this node.
|
|
71
69
|
*/
|
|
72
70
|
setBuiltinName( builtinName ) {
|
|
@@ -81,7 +79,7 @@ class ComputeBuiltinNode extends Node {
|
|
|
81
79
|
* Returns the builtin name.
|
|
82
80
|
*
|
|
83
81
|
* @param {NodeBuilder} builder - The current node builder.
|
|
84
|
-
* @return {
|
|
82
|
+
* @return {string} The builtin name.
|
|
85
83
|
*/
|
|
86
84
|
getBuiltinName( /*builder*/ ) {
|
|
87
85
|
|
|
@@ -93,10 +91,11 @@ class ComputeBuiltinNode extends Node {
|
|
|
93
91
|
* Whether the current node builder has the builtin or not.
|
|
94
92
|
*
|
|
95
93
|
* @param {NodeBuilder} builder - The current node builder.
|
|
94
|
+
* @return {boolean} Whether the builder has the builtin or not.
|
|
96
95
|
*/
|
|
97
96
|
hasBuiltin( builder ) {
|
|
98
97
|
|
|
99
|
-
builder.hasBuiltin( this._builtinName );
|
|
98
|
+
return builder.hasBuiltin( this._builtinName );
|
|
100
99
|
|
|
101
100
|
}
|
|
102
101
|
|
|
@@ -143,15 +142,15 @@ export default ComputeBuiltinNode;
|
|
|
143
142
|
/**
|
|
144
143
|
* TSL function for creating a compute builtin node.
|
|
145
144
|
*
|
|
145
|
+
* @tsl
|
|
146
146
|
* @function
|
|
147
|
-
* @param {
|
|
148
|
-
* @param {
|
|
147
|
+
* @param {string} name - The built-in name.
|
|
148
|
+
* @param {string} nodeType - The node type.
|
|
149
149
|
* @returns {ComputeBuiltinNode}
|
|
150
150
|
*/
|
|
151
151
|
const computeBuiltin = ( name, nodeType ) => nodeObject( new ComputeBuiltinNode( name, nodeType ) );
|
|
152
152
|
|
|
153
153
|
/**
|
|
154
|
-
* TSL function for creating a `numWorkgroups` builtin node.
|
|
155
154
|
* Represents the number of workgroups dispatched by the compute shader.
|
|
156
155
|
* ```js
|
|
157
156
|
* // Run 512 invocations/threads with a workgroup size of 128.
|
|
@@ -171,19 +170,18 @@ const computeBuiltin = ( name, nodeType ) => nodeObject( new ComputeBuiltinNode(
|
|
|
171
170
|
* })().compute(512);
|
|
172
171
|
* ```
|
|
173
172
|
*
|
|
174
|
-
* @
|
|
175
|
-
* @
|
|
173
|
+
* @tsl
|
|
174
|
+
* @type {ComputeBuiltinNode<uvec3>}
|
|
176
175
|
*/
|
|
177
176
|
export const numWorkgroups = /*@__PURE__*/ computeBuiltin( 'numWorkgroups', 'uvec3' );
|
|
178
177
|
|
|
179
178
|
/**
|
|
180
|
-
* TSL function for creating a `workgroupId` builtin node.
|
|
181
179
|
* Represents the 3-dimensional index of the workgroup the current compute invocation belongs to.
|
|
182
180
|
* ```js
|
|
183
181
|
* // Execute 12 compute threads with a workgroup size of 3.
|
|
184
182
|
* const computeFn = Fn( () => {
|
|
185
183
|
*
|
|
186
|
-
* If( workgroupId.x.
|
|
184
|
+
* If( workgroupId.x.mod( 2 ).equal( 0 ), () => {
|
|
187
185
|
*
|
|
188
186
|
* storageBuffer.element( instanceIndex ).assign( instanceIndex );
|
|
189
187
|
*
|
|
@@ -199,34 +197,31 @@ export const numWorkgroups = /*@__PURE__*/ computeBuiltin( 'numWorkgroups', 'uve
|
|
|
199
197
|
* // Buffer Output = [0, 1, 2, 0, 0, 0, 6, 7, 8, 0, 0, 0];
|
|
200
198
|
* ```
|
|
201
199
|
*
|
|
202
|
-
* @
|
|
203
|
-
* @
|
|
200
|
+
* @tsl
|
|
201
|
+
* @type {ComputeBuiltinNode<uvec3>}
|
|
204
202
|
*/
|
|
205
203
|
export const workgroupId = /*@__PURE__*/ computeBuiltin( 'workgroupId', 'uvec3' );
|
|
206
204
|
|
|
207
205
|
/**
|
|
208
|
-
*
|
|
209
|
-
* representation of the current invocation's position within a 3D global grid.
|
|
206
|
+
* A non-linearized 3-dimensional representation of the current invocation's position within a 3D global grid.
|
|
210
207
|
*
|
|
211
|
-
* @
|
|
212
|
-
* @
|
|
208
|
+
* @tsl
|
|
209
|
+
* @type {ComputeBuiltinNode<uvec3>}
|
|
213
210
|
*/
|
|
214
211
|
export const globalId = /*@__PURE__*/ computeBuiltin( 'globalId', 'uvec3' );
|
|
215
212
|
/**
|
|
216
|
-
*
|
|
217
|
-
* representation of the current invocation's position within a 3D workgroup grid.
|
|
213
|
+
* A non-linearized 3-dimensional representation of the current invocation's position within a 3D workgroup grid.
|
|
218
214
|
*
|
|
219
|
-
* @
|
|
220
|
-
* @
|
|
215
|
+
* @tsl
|
|
216
|
+
* @type {ComputeBuiltinNode<uvec3>}
|
|
221
217
|
*/
|
|
222
218
|
export const localId = /*@__PURE__*/ computeBuiltin( 'localId', 'uvec3' );
|
|
223
219
|
|
|
224
220
|
/**
|
|
225
|
-
*
|
|
226
|
-
* that exposes the size of the current invocation's subgroup.
|
|
221
|
+
* A device dependent variable that exposes the size of the current invocation's subgroup.
|
|
227
222
|
*
|
|
228
|
-
* @
|
|
229
|
-
* @
|
|
223
|
+
* @tsl
|
|
224
|
+
* @type {ComputeBuiltinNode<uint>}
|
|
230
225
|
*/
|
|
231
226
|
export const subgroupSize = /*@__PURE__*/ computeBuiltin( 'subgroupSize', 'uint' );
|
|
232
227
|
|
|
@@ -2,8 +2,6 @@ import Node from '../core/Node.js';
|
|
|
2
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
3
3
|
import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
|
|
4
4
|
|
|
5
|
-
/** @module ComputeNode **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* TODO
|
|
9
7
|
*
|
|
@@ -21,8 +19,8 @@ class ComputeNode extends Node {
|
|
|
21
19
|
* Constructs a new compute node.
|
|
22
20
|
*
|
|
23
21
|
* @param {Node} computeNode - TODO
|
|
24
|
-
* @param {
|
|
25
|
-
* @param {Array<
|
|
22
|
+
* @param {number} count - TODO.
|
|
23
|
+
* @param {Array<number>} [workgroupSize=[64]] - TODO.
|
|
26
24
|
*/
|
|
27
25
|
constructor( computeNode, count, workgroupSize = [ 64 ] ) {
|
|
28
26
|
|
|
@@ -31,7 +29,7 @@ class ComputeNode extends Node {
|
|
|
31
29
|
/**
|
|
32
30
|
* This flag can be used for type testing.
|
|
33
31
|
*
|
|
34
|
-
* @type {
|
|
32
|
+
* @type {boolean}
|
|
35
33
|
* @readonly
|
|
36
34
|
* @default true
|
|
37
35
|
*/
|
|
@@ -47,14 +45,14 @@ class ComputeNode extends Node {
|
|
|
47
45
|
/**
|
|
48
46
|
* TODO
|
|
49
47
|
*
|
|
50
|
-
* @type {
|
|
48
|
+
* @type {number}
|
|
51
49
|
*/
|
|
52
50
|
this.count = count;
|
|
53
51
|
|
|
54
52
|
/**
|
|
55
53
|
* TODO
|
|
56
54
|
*
|
|
57
|
-
* @type {Array<
|
|
55
|
+
* @type {Array<number>}
|
|
58
56
|
* @default [64]
|
|
59
57
|
*/
|
|
60
58
|
this.workgroupSize = workgroupSize;
|
|
@@ -62,21 +60,21 @@ class ComputeNode extends Node {
|
|
|
62
60
|
/**
|
|
63
61
|
* TODO
|
|
64
62
|
*
|
|
65
|
-
* @type {
|
|
63
|
+
* @type {number}
|
|
66
64
|
*/
|
|
67
65
|
this.dispatchCount = 0;
|
|
68
66
|
|
|
69
67
|
/**
|
|
70
68
|
* TODO
|
|
71
69
|
*
|
|
72
|
-
* @type {
|
|
70
|
+
* @type {number}
|
|
73
71
|
*/
|
|
74
72
|
this.version = 1;
|
|
75
73
|
|
|
76
74
|
/**
|
|
77
75
|
* The name or label of the uniform.
|
|
78
76
|
*
|
|
79
|
-
* @type {
|
|
77
|
+
* @type {string}
|
|
80
78
|
* @default ''
|
|
81
79
|
*/
|
|
82
80
|
this.name = '';
|
|
@@ -85,7 +83,7 @@ class ComputeNode extends Node {
|
|
|
85
83
|
* The `updateBeforeType` is set to `NodeUpdateType.OBJECT` since {@link ComputeNode#updateBefore}
|
|
86
84
|
* is executed once per object by default.
|
|
87
85
|
*
|
|
88
|
-
* @type {
|
|
86
|
+
* @type {string}
|
|
89
87
|
* @default 'object'
|
|
90
88
|
*/
|
|
91
89
|
this.updateBeforeType = NodeUpdateType.OBJECT;
|
|
@@ -93,7 +91,7 @@ class ComputeNode extends Node {
|
|
|
93
91
|
/**
|
|
94
92
|
* TODO
|
|
95
93
|
*
|
|
96
|
-
* @type {Function}
|
|
94
|
+
* @type {?Function}
|
|
97
95
|
*/
|
|
98
96
|
this.onInitFunction = null;
|
|
99
97
|
|
|
@@ -113,7 +111,7 @@ class ComputeNode extends Node {
|
|
|
113
111
|
/**
|
|
114
112
|
* Sets the {@link ComputeNode#name} property.
|
|
115
113
|
*
|
|
116
|
-
* @param {
|
|
114
|
+
* @param {string} name - The name of the uniform.
|
|
117
115
|
* @return {ComputeNode} A reference to this node.
|
|
118
116
|
*/
|
|
119
117
|
label( name ) {
|
|
@@ -165,7 +163,24 @@ class ComputeNode extends Node {
|
|
|
165
163
|
|
|
166
164
|
}
|
|
167
165
|
|
|
168
|
-
|
|
166
|
+
setup( builder ) {
|
|
167
|
+
|
|
168
|
+
const result = this.computeNode.setup( builder );
|
|
169
|
+
|
|
170
|
+
if ( result ) {
|
|
171
|
+
|
|
172
|
+
const properties = builder.getNodeProperties( this );
|
|
173
|
+
properties.outputComputeNode = result.outputNode;
|
|
174
|
+
|
|
175
|
+
result.outputNode = null;
|
|
176
|
+
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return result;
|
|
180
|
+
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
generate( builder, output ) {
|
|
169
184
|
|
|
170
185
|
const { shaderStage } = builder;
|
|
171
186
|
|
|
@@ -179,6 +194,17 @@ class ComputeNode extends Node {
|
|
|
179
194
|
|
|
180
195
|
}
|
|
181
196
|
|
|
197
|
+
} else {
|
|
198
|
+
|
|
199
|
+
const properties = builder.getNodeProperties( this );
|
|
200
|
+
const outputComputeNode = properties.outputComputeNode;
|
|
201
|
+
|
|
202
|
+
if ( outputComputeNode ) {
|
|
203
|
+
|
|
204
|
+
return outputComputeNode.build( builder, output );
|
|
205
|
+
|
|
206
|
+
}
|
|
207
|
+
|
|
182
208
|
}
|
|
183
209
|
|
|
184
210
|
}
|
|
@@ -190,10 +216,11 @@ export default ComputeNode;
|
|
|
190
216
|
/**
|
|
191
217
|
* TSL function for creating a compute node.
|
|
192
218
|
*
|
|
219
|
+
* @tsl
|
|
193
220
|
* @function
|
|
194
221
|
* @param {Node} node - TODO
|
|
195
|
-
* @param {
|
|
196
|
-
* @param {Array<
|
|
222
|
+
* @param {number} count - TODO.
|
|
223
|
+
* @param {Array<number>} [workgroupSize=[64]] - TODO.
|
|
197
224
|
* @returns {AtomicFunctionNode}
|
|
198
225
|
*/
|
|
199
226
|
export const compute = ( node, count, workgroupSize ) => nodeObject( new ComputeNode( nodeObject( node ), count, workgroupSize ) );
|