super-three 0.173.5 → 0.176.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +185 -9
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -7,14 +7,12 @@ import { maxMipLevel } from '../utils/MaxMipLevelNode.js';
|
|
|
7
7
|
import { nodeProxy, vec3, nodeObject, int } from '../tsl/TSLBase.js';
|
|
8
8
|
import { NodeUpdateType } from '../core/constants.js';
|
|
9
9
|
|
|
10
|
-
import { IntType, UnsignedIntType } from '../../constants.js';
|
|
11
|
-
|
|
12
|
-
/** @module TextureNode **/
|
|
10
|
+
import { IntType, NearestFilter, UnsignedIntType } from '../../constants.js';
|
|
13
11
|
|
|
14
12
|
/**
|
|
15
13
|
* This type of uniform node represents a 2D texture.
|
|
16
14
|
*
|
|
17
|
-
* @augments
|
|
15
|
+
* @augments UniformNode
|
|
18
16
|
*/
|
|
19
17
|
class TextureNode extends UniformNode {
|
|
20
18
|
|
|
@@ -28,9 +26,9 @@ class TextureNode extends UniformNode {
|
|
|
28
26
|
* Constructs a new texture node.
|
|
29
27
|
*
|
|
30
28
|
* @param {Texture} value - The texture.
|
|
31
|
-
* @param {Node<vec2|vec3
|
|
32
|
-
* @param {Node<int
|
|
33
|
-
* @param {Node<float
|
|
29
|
+
* @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
|
|
30
|
+
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
31
|
+
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
34
32
|
*/
|
|
35
33
|
constructor( value, uvNode = null, levelNode = null, biasNode = null ) {
|
|
36
34
|
|
|
@@ -39,7 +37,7 @@ class TextureNode extends UniformNode {
|
|
|
39
37
|
/**
|
|
40
38
|
* This flag can be used for type testing.
|
|
41
39
|
*
|
|
42
|
-
* @type {
|
|
40
|
+
* @type {boolean}
|
|
43
41
|
* @readonly
|
|
44
42
|
* @default true
|
|
45
43
|
*/
|
|
@@ -48,7 +46,7 @@ class TextureNode extends UniformNode {
|
|
|
48
46
|
/**
|
|
49
47
|
* Represents the texture coordinates.
|
|
50
48
|
*
|
|
51
|
-
* @type {Node<vec2|vec3
|
|
49
|
+
* @type {?Node<vec2|vec3>}
|
|
52
50
|
* @default null
|
|
53
51
|
*/
|
|
54
52
|
this.uvNode = uvNode;
|
|
@@ -56,7 +54,7 @@ class TextureNode extends UniformNode {
|
|
|
56
54
|
/**
|
|
57
55
|
* Represents the mip level that should be selected.
|
|
58
56
|
*
|
|
59
|
-
* @type {Node<int
|
|
57
|
+
* @type {?Node<int>}
|
|
60
58
|
* @default null
|
|
61
59
|
*/
|
|
62
60
|
this.levelNode = levelNode;
|
|
@@ -64,7 +62,7 @@ class TextureNode extends UniformNode {
|
|
|
64
62
|
/**
|
|
65
63
|
* Represents the bias to be applied during level-of-detail computation.
|
|
66
64
|
*
|
|
67
|
-
* @type {Node<float
|
|
65
|
+
* @type {?Node<float>}
|
|
68
66
|
* @default null
|
|
69
67
|
*/
|
|
70
68
|
this.biasNode = biasNode;
|
|
@@ -72,7 +70,7 @@ class TextureNode extends UniformNode {
|
|
|
72
70
|
/**
|
|
73
71
|
* Represents a reference value a texture sample is compared to.
|
|
74
72
|
*
|
|
75
|
-
* @type {Node<float
|
|
73
|
+
* @type {?Node<float>}
|
|
76
74
|
* @default null
|
|
77
75
|
*/
|
|
78
76
|
this.compareNode = null;
|
|
@@ -80,7 +78,7 @@ class TextureNode extends UniformNode {
|
|
|
80
78
|
/**
|
|
81
79
|
* When using texture arrays, the depth node defines the layer to select.
|
|
82
80
|
*
|
|
83
|
-
* @type {Node<int
|
|
81
|
+
* @type {?Node<int>}
|
|
84
82
|
* @default null
|
|
85
83
|
*/
|
|
86
84
|
this.depthNode = null;
|
|
@@ -88,7 +86,7 @@ class TextureNode extends UniformNode {
|
|
|
88
86
|
/**
|
|
89
87
|
* When defined, a texture is sampled using explicit gradients.
|
|
90
88
|
*
|
|
91
|
-
* @type {Array<Node<vec2
|
|
89
|
+
* @type {?Array<Node<vec2>>}
|
|
92
90
|
* @default null
|
|
93
91
|
*/
|
|
94
92
|
this.gradNode = null;
|
|
@@ -96,7 +94,7 @@ class TextureNode extends UniformNode {
|
|
|
96
94
|
/**
|
|
97
95
|
* Whether texture values should be sampled or fetched.
|
|
98
96
|
*
|
|
99
|
-
* @type {
|
|
97
|
+
* @type {boolean}
|
|
100
98
|
* @default true
|
|
101
99
|
*/
|
|
102
100
|
this.sampler = true;
|
|
@@ -106,7 +104,7 @@ class TextureNode extends UniformNode {
|
|
|
106
104
|
* automatically updated or not. Use `setUpdateMatrix()`
|
|
107
105
|
* if you want to change the value of the property.
|
|
108
106
|
*
|
|
109
|
-
* @type {
|
|
107
|
+
* @type {boolean}
|
|
110
108
|
* @default false
|
|
111
109
|
*/
|
|
112
110
|
this.updateMatrix = false;
|
|
@@ -116,7 +114,7 @@ class TextureNode extends UniformNode {
|
|
|
116
114
|
* sets the value to `frame` when the uv transformation matrix should
|
|
117
115
|
* automatically be updated.
|
|
118
116
|
*
|
|
119
|
-
* @type {
|
|
117
|
+
* @type {string}
|
|
120
118
|
* @default 'none'
|
|
121
119
|
*/
|
|
122
120
|
this.updateType = NodeUpdateType.NONE;
|
|
@@ -124,7 +122,7 @@ class TextureNode extends UniformNode {
|
|
|
124
122
|
/**
|
|
125
123
|
* The reference node.
|
|
126
124
|
*
|
|
127
|
-
* @type {Node
|
|
125
|
+
* @type {?Node}
|
|
128
126
|
* @default null
|
|
129
127
|
*/
|
|
130
128
|
this.referenceNode = null;
|
|
@@ -141,7 +139,7 @@ class TextureNode extends UniformNode {
|
|
|
141
139
|
* The uniform node that represents the uv transformation matrix.
|
|
142
140
|
*
|
|
143
141
|
* @private
|
|
144
|
-
* @type {UniformNode<mat3
|
|
142
|
+
* @type {?UniformNode<mat3>}
|
|
145
143
|
*/
|
|
146
144
|
this._matrixUniform = null;
|
|
147
145
|
|
|
@@ -178,7 +176,7 @@ class TextureNode extends UniformNode {
|
|
|
178
176
|
* Overwritten since the uniform hash is defined by the texture's UUID.
|
|
179
177
|
*
|
|
180
178
|
* @param {NodeBuilder} builder - The current node builder.
|
|
181
|
-
* @return {
|
|
179
|
+
* @return {string} The uniform hash.
|
|
182
180
|
*/
|
|
183
181
|
getUniformHash( /*builder*/ ) {
|
|
184
182
|
|
|
@@ -190,7 +188,7 @@ class TextureNode extends UniformNode {
|
|
|
190
188
|
* Overwritten since the node type is inferred from the texture type.
|
|
191
189
|
*
|
|
192
190
|
* @param {NodeBuilder} builder - The current node builder.
|
|
193
|
-
* @return {
|
|
191
|
+
* @return {string} The node type.
|
|
194
192
|
*/
|
|
195
193
|
getNodeType( /*builder*/ ) {
|
|
196
194
|
|
|
@@ -214,7 +212,7 @@ class TextureNode extends UniformNode {
|
|
|
214
212
|
* Overwrites the default implementation to return a fixed value `'texture'`.
|
|
215
213
|
*
|
|
216
214
|
* @param {NodeBuilder} builder - The current node builder.
|
|
217
|
-
* @return {
|
|
215
|
+
* @return {string} The input type.
|
|
218
216
|
*/
|
|
219
217
|
getInputType( /*builder*/ ) {
|
|
220
218
|
|
|
@@ -236,7 +234,7 @@ class TextureNode extends UniformNode {
|
|
|
236
234
|
/**
|
|
237
235
|
* Overwritten to always return the texture reference of the node.
|
|
238
236
|
*
|
|
239
|
-
* @param {
|
|
237
|
+
* @param {any} state - This method can be invocated in different contexts so `state` can refer to any object type.
|
|
240
238
|
* @return {Texture} The texture reference.
|
|
241
239
|
*/
|
|
242
240
|
updateReference( /*state*/ ) {
|
|
@@ -262,7 +260,7 @@ class TextureNode extends UniformNode {
|
|
|
262
260
|
/**
|
|
263
261
|
* Defines whether the uv transformation matrix should automatically be updated or not.
|
|
264
262
|
*
|
|
265
|
-
* @param {
|
|
263
|
+
* @param {boolean} value - The update toggle.
|
|
266
264
|
* @return {TextureNode} A reference to this node.
|
|
267
265
|
*/
|
|
268
266
|
setUpdateMatrix( value ) {
|
|
@@ -370,7 +368,7 @@ class TextureNode extends UniformNode {
|
|
|
370
368
|
*
|
|
371
369
|
* @param {NodeBuilder} builder - The current node builder.
|
|
372
370
|
* @param {Node} uvNode - The uv node to generate code for.
|
|
373
|
-
* @return {
|
|
371
|
+
* @return {string} The generated code snippet.
|
|
374
372
|
*/
|
|
375
373
|
generateUV( builder, uvNode ) {
|
|
376
374
|
|
|
@@ -382,14 +380,14 @@ class TextureNode extends UniformNode {
|
|
|
382
380
|
* Generates the snippet for the texture sampling.
|
|
383
381
|
*
|
|
384
382
|
* @param {NodeBuilder} builder - The current node builder.
|
|
385
|
-
* @param {
|
|
386
|
-
* @param {
|
|
387
|
-
* @param {
|
|
388
|
-
* @param {
|
|
389
|
-
* @param {
|
|
390
|
-
* @param {
|
|
391
|
-
* @param {Array<
|
|
392
|
-
* @return {
|
|
383
|
+
* @param {string} textureProperty - The texture property.
|
|
384
|
+
* @param {string} uvSnippet - The uv snippet.
|
|
385
|
+
* @param {?string} levelSnippet - The level snippet.
|
|
386
|
+
* @param {?string} biasSnippet - The bias snippet.
|
|
387
|
+
* @param {?string} depthSnippet - The depth snippet.
|
|
388
|
+
* @param {?string} compareSnippet - The compare snippet.
|
|
389
|
+
* @param {?Array<string>} gradSnippet - The grad snippet.
|
|
390
|
+
* @return {string} The generated code snippet.
|
|
393
391
|
*/
|
|
394
392
|
generateSnippet( builder, textureProperty, uvSnippet, levelSnippet, biasSnippet, depthSnippet, compareSnippet, gradSnippet ) {
|
|
395
393
|
|
|
@@ -431,8 +429,8 @@ class TextureNode extends UniformNode {
|
|
|
431
429
|
* Generates the code snippet of the texture node.
|
|
432
430
|
*
|
|
433
431
|
* @param {NodeBuilder} builder - The current node builder.
|
|
434
|
-
* @param {
|
|
435
|
-
* @return {
|
|
432
|
+
* @param {string} output - The current output.
|
|
433
|
+
* @return {string} The generated code snippet.
|
|
436
434
|
*/
|
|
437
435
|
generate( builder, output ) {
|
|
438
436
|
|
|
@@ -441,7 +439,7 @@ class TextureNode extends UniformNode {
|
|
|
441
439
|
const properties = builder.getNodeProperties( this );
|
|
442
440
|
const textureProperty = super.generate( builder, 'property' );
|
|
443
441
|
|
|
444
|
-
if ( output
|
|
442
|
+
if ( /^sampler/.test( output ) ) {
|
|
445
443
|
|
|
446
444
|
return textureProperty + '_sampler';
|
|
447
445
|
|
|
@@ -497,7 +495,7 @@ class TextureNode extends UniformNode {
|
|
|
497
495
|
/**
|
|
498
496
|
* Sets the sampler value.
|
|
499
497
|
*
|
|
500
|
-
* @param {
|
|
498
|
+
* @param {boolean} value - The sampler value to set.
|
|
501
499
|
* @return {TextureNode} A reference to this texture node.
|
|
502
500
|
*/
|
|
503
501
|
setSampler( value ) {
|
|
@@ -511,7 +509,7 @@ class TextureNode extends UniformNode {
|
|
|
511
509
|
/**
|
|
512
510
|
* Returns the sampler value.
|
|
513
511
|
*
|
|
514
|
-
* @return {
|
|
512
|
+
* @return {boolean} The sampler value.
|
|
515
513
|
*/
|
|
516
514
|
getSampler() {
|
|
517
515
|
|
|
@@ -564,6 +562,16 @@ class TextureNode extends UniformNode {
|
|
|
564
562
|
textureNode.biasNode = nodeObject( amountNode ).mul( maxMipLevel( textureNode ) );
|
|
565
563
|
textureNode.referenceNode = this.getSelf();
|
|
566
564
|
|
|
565
|
+
const map = textureNode.value;
|
|
566
|
+
|
|
567
|
+
if ( map && map.generateMipmaps === false || map.minFilter === NearestFilter || map.magFilter === NearestFilter ) {
|
|
568
|
+
|
|
569
|
+
console.warn( 'THREE.TSL: texture().blur() requires mipmaps and sampling. Use .generateMipmaps=true and .minFilter/.magFilter=THREE.LinearFilter in the Texture.' );
|
|
570
|
+
|
|
571
|
+
textureNode.biasNode = null;
|
|
572
|
+
|
|
573
|
+
}
|
|
574
|
+
|
|
567
575
|
return nodeObject( textureNode );
|
|
568
576
|
|
|
569
577
|
}
|
|
@@ -724,23 +732,25 @@ export default TextureNode;
|
|
|
724
732
|
/**
|
|
725
733
|
* TSL function for creating a texture node.
|
|
726
734
|
*
|
|
735
|
+
* @tsl
|
|
727
736
|
* @function
|
|
728
737
|
* @param {Texture} value - The texture.
|
|
729
|
-
* @param {Node<vec2|vec3
|
|
730
|
-
* @param {Node<int
|
|
731
|
-
* @param {Node<float
|
|
738
|
+
* @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
|
|
739
|
+
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
740
|
+
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
732
741
|
* @returns {TextureNode}
|
|
733
742
|
*/
|
|
734
|
-
export const texture = /*@__PURE__*/ nodeProxy( TextureNode );
|
|
743
|
+
export const texture = /*@__PURE__*/ nodeProxy( TextureNode ).setParameterLength( 1, 4 );
|
|
735
744
|
|
|
736
745
|
/**
|
|
737
746
|
* TSL function for creating a texture node that fetches/loads texels without interpolation.
|
|
738
747
|
*
|
|
748
|
+
* @tsl
|
|
739
749
|
* @function
|
|
740
750
|
* @param {Texture} value - The texture.
|
|
741
|
-
* @param {Node<vec2|vec3
|
|
742
|
-
* @param {Node<int
|
|
743
|
-
* @param {Node<float
|
|
751
|
+
* @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
|
|
752
|
+
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
753
|
+
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
744
754
|
* @returns {TextureNode}
|
|
745
755
|
*/
|
|
746
756
|
export const textureLoad = ( ...params ) => texture( ...params ).setSampler( false );
|
|
@@ -750,8 +760,19 @@ export const textureLoad = ( ...params ) => texture( ...params ).setSampler( fal
|
|
|
750
760
|
/**
|
|
751
761
|
* Converts a texture or texture node to a sampler.
|
|
752
762
|
*
|
|
763
|
+
* @tsl
|
|
764
|
+
* @function
|
|
765
|
+
* @param {TextureNode|Texture} value - The texture or texture node to convert.
|
|
766
|
+
* @returns {Node}
|
|
767
|
+
*/
|
|
768
|
+
export const sampler = ( value ) => ( value.isNode === true ? value : texture( value ) ).convert( 'sampler' );
|
|
769
|
+
|
|
770
|
+
/**
|
|
771
|
+
* Converts a texture or texture node to a sampler comparison.
|
|
772
|
+
*
|
|
773
|
+
* @tsl
|
|
753
774
|
* @function
|
|
754
|
-
* @param {TextureNode|Texture}
|
|
775
|
+
* @param {TextureNode|Texture} value - The texture or texture node to convert.
|
|
755
776
|
* @returns {Node}
|
|
756
777
|
*/
|
|
757
|
-
export const
|
|
778
|
+
export const samplerComparison = ( value ) => ( value.isNode === true ? value : texture( value ) ).convert( 'samplerComparison' );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module TextureSizeNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* A node that represents the dimensions of a texture. The texture size is
|
|
8
6
|
* retrieved in the shader via built-in shader functions like `textureDimensions()`
|
|
@@ -22,7 +20,7 @@ class TextureSizeNode extends Node {
|
|
|
22
20
|
* Constructs a new texture size node.
|
|
23
21
|
*
|
|
24
22
|
* @param {TextureNode} textureNode - A texture node which size should be retrieved.
|
|
25
|
-
* @param {Node<int
|
|
23
|
+
* @param {?Node<int>} [levelNode=null] - A level node which defines the requested mip.
|
|
26
24
|
*/
|
|
27
25
|
constructor( textureNode, levelNode = null ) {
|
|
28
26
|
|
|
@@ -31,7 +29,7 @@ class TextureSizeNode 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
|
*/
|
|
@@ -70,9 +68,10 @@ export default TextureSizeNode;
|
|
|
70
68
|
/**
|
|
71
69
|
* TSL function for creating a texture size node.
|
|
72
70
|
*
|
|
71
|
+
* @tsl
|
|
73
72
|
* @function
|
|
74
73
|
* @param {TextureNode} textureNode - A texture node which size should be retrieved.
|
|
75
|
-
* @param {Node<int
|
|
74
|
+
* @param {?Node<int>} [levelNode=null] - A level node which defines the requested mip.
|
|
76
75
|
* @returns {TextureSizeNode}
|
|
77
76
|
*/
|
|
78
|
-
export const textureSize = /*@__PURE__*/ nodeProxy( TextureSizeNode );
|
|
77
|
+
export const textureSize = /*@__PURE__*/ nodeProxy( TextureSizeNode ).setParameterLength( 1, 2 );
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { attribute } from '../core/AttributeNode.js';
|
|
2
2
|
|
|
3
|
-
/** @module UV **/
|
|
4
|
-
|
|
5
3
|
/**
|
|
6
4
|
* TSL function for creating an uv attribute node with the given index.
|
|
7
5
|
*
|
|
6
|
+
* @tsl
|
|
8
7
|
* @function
|
|
9
|
-
* @param {
|
|
8
|
+
* @param {number} [index=0] - The uv index.
|
|
10
9
|
* @return {AttributeNode<vec2>} The uv attribute node.
|
|
11
10
|
*/
|
|
12
11
|
export const uv = ( index = 0 ) => attribute( 'uv' + ( index > 0 ? index : '' ), 'vec2' );
|
|
@@ -4,8 +4,6 @@ import { getValueType } from '../core/NodeUtils.js';
|
|
|
4
4
|
import ArrayElementNode from '../utils/ArrayElementNode.js';
|
|
5
5
|
import BufferNode from './BufferNode.js';
|
|
6
6
|
|
|
7
|
-
/** @module UniformArrayNode **/
|
|
8
|
-
|
|
9
7
|
/**
|
|
10
8
|
* Represents the element access on uniform array nodes.
|
|
11
9
|
*
|
|
@@ -32,7 +30,7 @@ class UniformArrayElementNode extends ArrayElementNode {
|
|
|
32
30
|
/**
|
|
33
31
|
* This flag can be used for type testing.
|
|
34
32
|
*
|
|
35
|
-
* @type {
|
|
33
|
+
* @type {boolean}
|
|
36
34
|
* @readonly
|
|
37
35
|
* @default true
|
|
38
36
|
*/
|
|
@@ -53,8 +51,8 @@ class UniformArrayElementNode extends ArrayElementNode {
|
|
|
53
51
|
}
|
|
54
52
|
|
|
55
53
|
/**
|
|
56
|
-
* Similar to {@link
|
|
57
|
-
* uniform buffers. Unlike {@link
|
|
54
|
+
* Similar to {@link BufferNode} this module represents array-like data as
|
|
55
|
+
* uniform buffers. Unlike {@link BufferNode}, it can handle more common
|
|
58
56
|
* data types in the array (e.g `three.js` primitives) and automatically
|
|
59
57
|
* manage buffer padding. It should be the first choice when working with
|
|
60
58
|
* uniforms buffers.
|
|
@@ -67,7 +65,7 @@ class UniformArrayElementNode extends ArrayElementNode {
|
|
|
67
65
|
*
|
|
68
66
|
* const redColor = tintColors.element( 0 );
|
|
69
67
|
*
|
|
70
|
-
* @augments
|
|
68
|
+
* @augments BufferNode
|
|
71
69
|
*/
|
|
72
70
|
class UniformArrayNode extends BufferNode {
|
|
73
71
|
|
|
@@ -80,26 +78,26 @@ class UniformArrayNode extends BufferNode {
|
|
|
80
78
|
/**
|
|
81
79
|
* Constructs a new uniform array node.
|
|
82
80
|
*
|
|
83
|
-
* @param {Array<
|
|
84
|
-
* @param {
|
|
81
|
+
* @param {Array<any>} value - Array holding the buffer data.
|
|
82
|
+
* @param {?string} [elementType=null] - The data type of a buffer element.
|
|
85
83
|
*/
|
|
86
84
|
constructor( value, elementType = null ) {
|
|
87
85
|
|
|
88
86
|
super( null );
|
|
89
87
|
|
|
90
88
|
/**
|
|
91
|
-
* Array holding the buffer data. Unlike {@link
|
|
89
|
+
* Array holding the buffer data. Unlike {@link BufferNode}, the array can
|
|
92
90
|
* hold number primitives as well as three.js objects like vectors, matrices
|
|
93
91
|
* or colors.
|
|
94
92
|
*
|
|
95
|
-
* @type {Array<
|
|
93
|
+
* @type {Array<any>}
|
|
96
94
|
*/
|
|
97
95
|
this.array = value;
|
|
98
96
|
|
|
99
97
|
/**
|
|
100
98
|
* The data type of an array element.
|
|
101
99
|
*
|
|
102
|
-
* @type {
|
|
100
|
+
* @type {string}
|
|
103
101
|
*/
|
|
104
102
|
this.elementType = elementType === null ? getValueType( value[ 0 ] ) : elementType;
|
|
105
103
|
|
|
@@ -107,14 +105,14 @@ class UniformArrayNode extends BufferNode {
|
|
|
107
105
|
* The padded type. Uniform buffers must conform to a certain buffer layout
|
|
108
106
|
* so a separate type is computed to ensure correct buffer size.
|
|
109
107
|
*
|
|
110
|
-
* @type {
|
|
108
|
+
* @type {string}
|
|
111
109
|
*/
|
|
112
110
|
this.paddedType = this.getPaddedType();
|
|
113
111
|
|
|
114
112
|
/**
|
|
115
113
|
* Overwritten since uniform array nodes are updated per render.
|
|
116
114
|
*
|
|
117
|
-
* @type {
|
|
115
|
+
* @type {string}
|
|
118
116
|
* @default 'render'
|
|
119
117
|
*/
|
|
120
118
|
this.updateType = NodeUpdateType.RENDER;
|
|
@@ -122,7 +120,7 @@ class UniformArrayNode extends BufferNode {
|
|
|
122
120
|
/**
|
|
123
121
|
* This flag can be used for type testing.
|
|
124
122
|
*
|
|
125
|
-
* @type {
|
|
123
|
+
* @type {boolean}
|
|
126
124
|
* @readonly
|
|
127
125
|
* @default true
|
|
128
126
|
*/
|
|
@@ -132,10 +130,10 @@ class UniformArrayNode extends BufferNode {
|
|
|
132
130
|
|
|
133
131
|
/**
|
|
134
132
|
* This method is overwritten since the node type is inferred from the
|
|
135
|
-
* {@link
|
|
133
|
+
* {@link UniformArrayNode#paddedType}.
|
|
136
134
|
*
|
|
137
135
|
* @param {NodeBuilder} builder - The current node builder.
|
|
138
|
-
* @return {
|
|
136
|
+
* @return {string} The node type.
|
|
139
137
|
*/
|
|
140
138
|
getNodeType( /*builder*/ ) {
|
|
141
139
|
|
|
@@ -147,7 +145,7 @@ class UniformArrayNode extends BufferNode {
|
|
|
147
145
|
* The data type of the array elements.
|
|
148
146
|
*
|
|
149
147
|
* @param {NodeBuilder} builder - The current node builder.
|
|
150
|
-
* @return {
|
|
148
|
+
* @return {string} The element type.
|
|
151
149
|
*/
|
|
152
150
|
getElementType() {
|
|
153
151
|
|
|
@@ -158,7 +156,7 @@ class UniformArrayNode extends BufferNode {
|
|
|
158
156
|
/**
|
|
159
157
|
* Returns the padded type based on the element type.
|
|
160
158
|
*
|
|
161
|
-
* @return {
|
|
159
|
+
* @return {string} The padded type.
|
|
162
160
|
*/
|
|
163
161
|
getPaddedType() {
|
|
164
162
|
|
|
@@ -323,7 +321,7 @@ class UniformArrayNode extends BufferNode {
|
|
|
323
321
|
|
|
324
322
|
/**
|
|
325
323
|
* Overwrites the default `element()` method to provide element access
|
|
326
|
-
* based on {@link
|
|
324
|
+
* based on {@link UniformArrayNode}.
|
|
327
325
|
*
|
|
328
326
|
* @param {IndexNode} indexNode - The index node.
|
|
329
327
|
* @return {UniformArrayElementNode}
|
|
@@ -341,24 +339,26 @@ export default UniformArrayNode;
|
|
|
341
339
|
/**
|
|
342
340
|
* TSL function for creating an uniform array node.
|
|
343
341
|
*
|
|
342
|
+
* @tsl
|
|
344
343
|
* @function
|
|
345
|
-
* @param {Array<
|
|
346
|
-
* @param {
|
|
344
|
+
* @param {Array<any>} values - Array-like data.
|
|
345
|
+
* @param {?string} [nodeType] - The data type of the array elements.
|
|
347
346
|
* @returns {UniformArrayNode}
|
|
348
347
|
*/
|
|
349
348
|
export const uniformArray = ( values, nodeType ) => nodeObject( new UniformArrayNode( values, nodeType ) );
|
|
350
349
|
|
|
351
350
|
/**
|
|
351
|
+
* @tsl
|
|
352
352
|
* @function
|
|
353
353
|
* @deprecated since r168. Use {@link uniformArray} instead.
|
|
354
354
|
*
|
|
355
|
-
* @param {Array<
|
|
356
|
-
* @param {
|
|
355
|
+
* @param {Array<any>} values - Array-like data.
|
|
356
|
+
* @param {string} nodeType - The data type of the array elements.
|
|
357
357
|
* @returns {UniformArrayNode}
|
|
358
358
|
*/
|
|
359
359
|
export const uniforms = ( values, nodeType ) => { // @deprecated, r168
|
|
360
360
|
|
|
361
|
-
console.warn( 'TSL
|
|
361
|
+
console.warn( 'THREE.TSL: uniforms() has been renamed to uniformArray().' );
|
|
362
362
|
return nodeObject( new UniformArrayNode( values, nodeType ) );
|
|
363
363
|
|
|
364
364
|
};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import ReferenceNode from './ReferenceNode.js';
|
|
2
2
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module UserDataNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* A special type of reference node that allows to link values in
|
|
8
6
|
* `userData` fields to node objects.
|
|
@@ -12,10 +10,10 @@ import { nodeObject } from '../tsl/TSLBase.js';
|
|
|
12
10
|
* const material = new THREE.SpriteNodeMaterial();
|
|
13
11
|
* material.rotationNode = userData( 'rotation', 'float' );
|
|
14
12
|
* ```
|
|
15
|
-
* Since `UserDataNode` is extended from {@link
|
|
13
|
+
* Since `UserDataNode` is extended from {@link ReferenceNode}, the node value
|
|
16
14
|
* will automatically be updated when the `rotation` user data field changes.
|
|
17
15
|
*
|
|
18
|
-
* @augments
|
|
16
|
+
* @augments ReferenceNode
|
|
19
17
|
*/
|
|
20
18
|
class UserDataNode extends ReferenceNode {
|
|
21
19
|
|
|
@@ -28,9 +26,9 @@ class UserDataNode extends ReferenceNode {
|
|
|
28
26
|
/**
|
|
29
27
|
* Constructs a new user data node.
|
|
30
28
|
*
|
|
31
|
-
* @param {
|
|
32
|
-
* @param {
|
|
33
|
-
* @param {Object
|
|
29
|
+
* @param {string} property - The property name that should be referenced by the node.
|
|
30
|
+
* @param {string} inputType - The node data type of the reference.
|
|
31
|
+
* @param {?Object} [userData=null] - A reference to the `userData` object. If not provided, the `userData` property of the 3D object that uses the node material is evaluated.
|
|
34
32
|
*/
|
|
35
33
|
constructor( property, inputType, userData = null ) {
|
|
36
34
|
|
|
@@ -40,7 +38,7 @@ class UserDataNode extends ReferenceNode {
|
|
|
40
38
|
* A reference to the `userData` object. If not provided, the `userData`
|
|
41
39
|
* property of the 3D object that uses the node material is evaluated.
|
|
42
40
|
*
|
|
43
|
-
* @type {Object
|
|
41
|
+
* @type {?Object}
|
|
44
42
|
* @default null
|
|
45
43
|
*/
|
|
46
44
|
this.userData = userData;
|
|
@@ -48,7 +46,7 @@ class UserDataNode extends ReferenceNode {
|
|
|
48
46
|
}
|
|
49
47
|
|
|
50
48
|
/**
|
|
51
|
-
* Overwritten to make sure {@link
|
|
49
|
+
* Overwritten to make sure {@link ReferenceNode#reference} points to the correct
|
|
52
50
|
* `userData` field.
|
|
53
51
|
*
|
|
54
52
|
* @param {(NodeFrame|NodeBuilder)} state - The current state to evaluate.
|
|
@@ -69,10 +67,11 @@ export default UserDataNode;
|
|
|
69
67
|
/**
|
|
70
68
|
* TSL function for creating a user data node.
|
|
71
69
|
*
|
|
70
|
+
* @tsl
|
|
72
71
|
* @function
|
|
73
|
-
* @param {
|
|
74
|
-
* @param {
|
|
75
|
-
* @param {Object
|
|
72
|
+
* @param {string} name - The property name that should be referenced by the node.
|
|
73
|
+
* @param {string} inputType - The node data type of the reference.
|
|
74
|
+
* @param {?Object} userData - A reference to the `userData` object. If not provided, the `userData` property of the 3D object that uses the node material is evaluated.
|
|
76
75
|
* @returns {UserDataNode}
|
|
77
76
|
*/
|
|
78
77
|
export const userData = ( name, inputType, userData ) => nodeObject( new UserDataNode( name, inputType, userData ) );
|
|
@@ -11,8 +11,6 @@ import { renderGroup } from '../core/UniformGroupNode.js';
|
|
|
11
11
|
|
|
12
12
|
const _objectData = new WeakMap();
|
|
13
13
|
|
|
14
|
-
/** @module VelocityNode **/
|
|
15
|
-
|
|
16
14
|
/**
|
|
17
15
|
* A node for representing motion or velocity vectors. Foundation
|
|
18
16
|
* for advanced post processing effects like motion blur or TRAA.
|
|
@@ -41,7 +39,7 @@ class VelocityNode extends TempNode {
|
|
|
41
39
|
/**
|
|
42
40
|
* The current projection matrix.
|
|
43
41
|
*
|
|
44
|
-
* @type {Matrix4
|
|
42
|
+
* @type {?Matrix4}
|
|
45
43
|
* @default null
|
|
46
44
|
*/
|
|
47
45
|
this.projectionMatrix = null;
|
|
@@ -49,7 +47,7 @@ class VelocityNode extends TempNode {
|
|
|
49
47
|
/**
|
|
50
48
|
* Overwritten since velocity nodes are updated per object.
|
|
51
49
|
*
|
|
52
|
-
* @type {
|
|
50
|
+
* @type {string}
|
|
53
51
|
* @default 'object'
|
|
54
52
|
*/
|
|
55
53
|
this.updateType = NodeUpdateType.OBJECT;
|
|
@@ -57,7 +55,7 @@ class VelocityNode extends TempNode {
|
|
|
57
55
|
/**
|
|
58
56
|
* Overwritten since velocity nodes save data after the update.
|
|
59
57
|
*
|
|
60
|
-
* @type {
|
|
58
|
+
* @type {string}
|
|
61
59
|
* @default 'object'
|
|
62
60
|
*/
|
|
63
61
|
this.updateAfterType = NodeUpdateType.OBJECT;
|
|
@@ -219,6 +217,7 @@ export default VelocityNode;
|
|
|
219
217
|
/**
|
|
220
218
|
* TSL object that represents the velocity of a render pass.
|
|
221
219
|
*
|
|
220
|
+
* @tsl
|
|
222
221
|
* @type {VelocityNode}
|
|
223
222
|
*/
|
|
224
223
|
export const velocity = /*@__PURE__*/ nodeImmutable( VelocityNode );
|