super-three 0.173.4 → 0.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +22198 -1564
- package/build/three.core.js +21287 -1346
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +882 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19358 -17482
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19342 -17482
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +187 -11
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
3
|
-
import { float, nodeProxy, Fn, ivec2, int } from '../tsl/TSLBase.js';
|
|
3
|
+
import { float, nodeProxy, Fn, ivec2, int, If } from '../tsl/TSLBase.js';
|
|
4
4
|
import { uniform } from '../core/UniformNode.js';
|
|
5
5
|
import { reference } from './ReferenceNode.js';
|
|
6
6
|
import { positionLocal } from './Position.js';
|
|
@@ -14,8 +14,6 @@ import { Vector2 } from '../../math/Vector2.js';
|
|
|
14
14
|
import { Vector4 } from '../../math/Vector4.js';
|
|
15
15
|
import { FloatType } from '../../constants.js';
|
|
16
16
|
|
|
17
|
-
/** @module MorphNode **/
|
|
18
|
-
|
|
19
17
|
const _morphTextures = /*@__PURE__*/ new WeakMap();
|
|
20
18
|
const _morphVec4 = /*@__PURE__*/ new Vector4();
|
|
21
19
|
|
|
@@ -26,7 +24,7 @@ const getMorph = /*@__PURE__*/ Fn( ( { bufferMap, influence, stride, width, dept
|
|
|
26
24
|
const y = texelIndex.div( width );
|
|
27
25
|
const x = texelIndex.sub( y.mul( width ) );
|
|
28
26
|
|
|
29
|
-
const bufferAttrib = textureLoad( bufferMap, ivec2( x, y ) ).depth( depth );
|
|
27
|
+
const bufferAttrib = textureLoad( bufferMap, ivec2( x, y ) ).depth( depth ).xyz;
|
|
30
28
|
|
|
31
29
|
return bufferAttrib.mul( influence );
|
|
32
30
|
|
|
@@ -198,7 +196,7 @@ class MorphNode extends Node {
|
|
|
198
196
|
/**
|
|
199
197
|
* The update type overwritten since morph nodes are updated per object.
|
|
200
198
|
*
|
|
201
|
-
* @type {
|
|
199
|
+
* @type {string}
|
|
202
200
|
*/
|
|
203
201
|
this.updateType = NodeUpdateType.OBJECT;
|
|
204
202
|
|
|
@@ -242,31 +240,35 @@ class MorphNode extends Node {
|
|
|
242
240
|
|
|
243
241
|
}
|
|
244
242
|
|
|
245
|
-
|
|
243
|
+
If( influence.notEqual( 0 ), () => {
|
|
246
244
|
|
|
247
|
-
|
|
248
|
-
bufferMap,
|
|
249
|
-
influence,
|
|
250
|
-
stride,
|
|
251
|
-
width,
|
|
252
|
-
depth: i,
|
|
253
|
-
offset: int( 0 )
|
|
254
|
-
} ) );
|
|
245
|
+
if ( hasMorphPosition === true ) {
|
|
255
246
|
|
|
256
|
-
|
|
247
|
+
positionLocal.addAssign( getMorph( {
|
|
248
|
+
bufferMap,
|
|
249
|
+
influence,
|
|
250
|
+
stride,
|
|
251
|
+
width,
|
|
252
|
+
depth: i,
|
|
253
|
+
offset: int( 0 )
|
|
254
|
+
} ) );
|
|
257
255
|
|
|
258
|
-
|
|
256
|
+
}
|
|
259
257
|
|
|
260
|
-
|
|
261
|
-
bufferMap,
|
|
262
|
-
influence,
|
|
263
|
-
stride,
|
|
264
|
-
width,
|
|
265
|
-
depth: i,
|
|
266
|
-
offset: int( 1 )
|
|
267
|
-
} ) );
|
|
258
|
+
if ( hasMorphNormals === true ) {
|
|
268
259
|
|
|
269
|
-
|
|
260
|
+
normalLocal.addAssign( getMorph( {
|
|
261
|
+
bufferMap,
|
|
262
|
+
influence,
|
|
263
|
+
stride,
|
|
264
|
+
width,
|
|
265
|
+
depth: i,
|
|
266
|
+
offset: int( 1 )
|
|
267
|
+
} ) );
|
|
268
|
+
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
} );
|
|
270
272
|
|
|
271
273
|
} );
|
|
272
274
|
|
|
@@ -300,8 +302,9 @@ export default MorphNode;
|
|
|
300
302
|
/**
|
|
301
303
|
* TSL function for creating a morph node.
|
|
302
304
|
*
|
|
305
|
+
* @tsl
|
|
303
306
|
* @function
|
|
304
307
|
* @param {Mesh} mesh - The mesh holding the morph targets.
|
|
305
308
|
* @returns {MorphNode}
|
|
306
309
|
*/
|
|
307
|
-
export const morphReference = /*@__PURE__*/ nodeProxy( MorphNode );
|
|
310
|
+
export const morphReference = /*@__PURE__*/ nodeProxy( MorphNode ).setParameterLength( 1 );
|
|
@@ -5,11 +5,10 @@ import { mat3, vec3, Fn, varying } from '../tsl/TSLBase.js';
|
|
|
5
5
|
import { positionView } from './Position.js';
|
|
6
6
|
import { faceDirection } from '../display/FrontFacingNode.js';
|
|
7
7
|
|
|
8
|
-
/** @module Normal **/
|
|
9
|
-
|
|
10
8
|
/**
|
|
11
9
|
* TSL object that represents the normal attribute of the current rendered object.
|
|
12
10
|
*
|
|
11
|
+
* @tsl
|
|
13
12
|
* @type {Node<vec3>}
|
|
14
13
|
*/
|
|
15
14
|
export const normalGeometry = /*@__PURE__*/ attribute( 'normal', 'vec3' );
|
|
@@ -17,13 +16,14 @@ export const normalGeometry = /*@__PURE__*/ attribute( 'normal', 'vec3' );
|
|
|
17
16
|
/**
|
|
18
17
|
* TSL object that represents the vertex normal in local space of the current rendered object.
|
|
19
18
|
*
|
|
19
|
+
* @tsl
|
|
20
20
|
* @type {Node<vec3>}
|
|
21
21
|
*/
|
|
22
22
|
export const normalLocal = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
23
23
|
|
|
24
24
|
if ( builder.geometry.hasAttribute( 'normal' ) === false ) {
|
|
25
25
|
|
|
26
|
-
console.warn( 'TSL
|
|
26
|
+
console.warn( 'THREE.TSL: Vertex attribute "normal" not found on geometry.' );
|
|
27
27
|
|
|
28
28
|
return vec3( 0, 1, 0 );
|
|
29
29
|
|
|
@@ -36,6 +36,7 @@ export const normalLocal = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
|
36
36
|
/**
|
|
37
37
|
* TSL object that represents the flat vertex normal in view space of the current rendered object.
|
|
38
38
|
*
|
|
39
|
+
* @tsl
|
|
39
40
|
* @type {Node<vec3>}
|
|
40
41
|
*/
|
|
41
42
|
export const normalFlat = /*@__PURE__*/ positionView.dFdx().cross( positionView.dFdy() ).normalize().toVar( 'normalFlat' );
|
|
@@ -43,6 +44,7 @@ export const normalFlat = /*@__PURE__*/ positionView.dFdx().cross( positionView.
|
|
|
43
44
|
/**
|
|
44
45
|
* TSL object that represents the vertex normal in view space of the current rendered object.
|
|
45
46
|
*
|
|
47
|
+
* @tsl
|
|
46
48
|
* @type {Node<vec3>}
|
|
47
49
|
*/
|
|
48
50
|
export const normalView = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
@@ -66,6 +68,7 @@ export const normalView = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
|
66
68
|
/**
|
|
67
69
|
* TSL object that represents the vertex normal in world space of the current rendered object.
|
|
68
70
|
*
|
|
71
|
+
* @tsl
|
|
69
72
|
* @type {Node<vec3>}
|
|
70
73
|
*/
|
|
71
74
|
export const normalWorld = /*@__PURE__*/ varying( normalView.transformDirection( cameraViewMatrix ), 'v_normalWorld' ).normalize().toVar( 'normalWorld' );
|
|
@@ -73,6 +76,7 @@ export const normalWorld = /*@__PURE__*/ varying( normalView.transformDirection(
|
|
|
73
76
|
/**
|
|
74
77
|
* TSL object that represents the transformed vertex normal in view space of the current rendered object.
|
|
75
78
|
*
|
|
79
|
+
* @tsl
|
|
76
80
|
* @type {Node<vec3>}
|
|
77
81
|
*/
|
|
78
82
|
export const transformedNormalView = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
@@ -86,6 +90,7 @@ export const transformedNormalView = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
|
86
90
|
/**
|
|
87
91
|
* TSL object that represents the transformed vertex normal in world space of the current rendered object.
|
|
88
92
|
*
|
|
93
|
+
* @tsl
|
|
89
94
|
* @type {Node<vec3>}
|
|
90
95
|
*/
|
|
91
96
|
export const transformedNormalWorld = /*@__PURE__*/ transformedNormalView.transformDirection( cameraViewMatrix ).toVar( 'transformedNormalWorld' );
|
|
@@ -93,6 +98,7 @@ export const transformedNormalWorld = /*@__PURE__*/ transformedNormalView.transf
|
|
|
93
98
|
/**
|
|
94
99
|
* TSL object that represents the transformed clearcoat vertex normal in view space of the current rendered object.
|
|
95
100
|
*
|
|
101
|
+
* @tsl
|
|
96
102
|
* @type {Node<vec3>}
|
|
97
103
|
*/
|
|
98
104
|
export const transformedClearcoatNormalView = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
@@ -106,6 +112,7 @@ export const transformedClearcoatNormalView = /*@__PURE__*/ ( Fn( ( builder ) =>
|
|
|
106
112
|
/**
|
|
107
113
|
* Transforms the normal with the given matrix.
|
|
108
114
|
*
|
|
115
|
+
* @tsl
|
|
109
116
|
* @function
|
|
110
117
|
* @param {Node<vec3>} normal - The normal.
|
|
111
118
|
* @param {Node<mat3>} [matrix=modelWorldMatrix] - The matrix.
|
|
@@ -124,6 +131,7 @@ export const transformNormal = /*@__PURE__*/ Fn( ( [ normal, matrix = modelWorld
|
|
|
124
131
|
/**
|
|
125
132
|
* Transforms the given normal from local to view space.
|
|
126
133
|
*
|
|
134
|
+
* @tsl
|
|
127
135
|
* @function
|
|
128
136
|
* @param {Node<vec3>} normal - The normal.
|
|
129
137
|
* @param {NodeBuilder} builder - The current node builder.
|
|
@@ -3,8 +3,9 @@ import { NodeUpdateType } from '../core/constants.js';
|
|
|
3
3
|
import UniformNode from '../core/UniformNode.js';
|
|
4
4
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
5
5
|
import { Vector3 } from '../../math/Vector3.js';
|
|
6
|
+
import { Sphere } from '../../math/Sphere.js';
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
const _sphere = /*@__PURE__*/ new Sphere();
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* This node can be used to access transformation related metrics of 3D objects.
|
|
@@ -31,7 +32,7 @@ class Object3DNode extends Node {
|
|
|
31
32
|
* Constructs a new object 3D node.
|
|
32
33
|
*
|
|
33
34
|
* @param {('position'|'viewPosition'|'direction'|'scale'|'worldMatrix')} scope - The node represents a different type of transformation depending on the scope.
|
|
34
|
-
* @param {Object3D
|
|
35
|
+
* @param {?Object3D} [object3d=null] - The 3D object.
|
|
35
36
|
*/
|
|
36
37
|
constructor( scope, object3d = null ) {
|
|
37
38
|
|
|
@@ -47,7 +48,7 @@ class Object3DNode extends Node {
|
|
|
47
48
|
/**
|
|
48
49
|
* The 3D object.
|
|
49
50
|
*
|
|
50
|
-
* @type {Object3D
|
|
51
|
+
* @type {?Object3D}
|
|
51
52
|
* @default null
|
|
52
53
|
*/
|
|
53
54
|
this.object3d = object3d;
|
|
@@ -55,7 +56,7 @@ class Object3DNode extends Node {
|
|
|
55
56
|
/**
|
|
56
57
|
* Overwritten since this type of node is updated per object.
|
|
57
58
|
*
|
|
58
|
-
* @type {
|
|
59
|
+
* @type {string}
|
|
59
60
|
* @default 'object'
|
|
60
61
|
*/
|
|
61
62
|
this.updateType = NodeUpdateType.OBJECT;
|
|
@@ -73,7 +74,7 @@ class Object3DNode extends Node {
|
|
|
73
74
|
/**
|
|
74
75
|
* Overwritten since the node type is inferred from the scope.
|
|
75
76
|
*
|
|
76
|
-
* @return {
|
|
77
|
+
* @return {string} The node type.
|
|
77
78
|
*/
|
|
78
79
|
getNodeType() {
|
|
79
80
|
|
|
@@ -87,6 +88,10 @@ class Object3DNode extends Node {
|
|
|
87
88
|
|
|
88
89
|
return 'vec3';
|
|
89
90
|
|
|
91
|
+
} else if ( scope === Object3DNode.RADIUS ) {
|
|
92
|
+
|
|
93
|
+
return 'float';
|
|
94
|
+
|
|
90
95
|
}
|
|
91
96
|
|
|
92
97
|
}
|
|
@@ -133,6 +138,16 @@ class Object3DNode extends Node {
|
|
|
133
138
|
|
|
134
139
|
uniformNode.value.applyMatrix4( camera.matrixWorldInverse );
|
|
135
140
|
|
|
141
|
+
} else if ( scope === Object3DNode.RADIUS ) {
|
|
142
|
+
|
|
143
|
+
const geometry = frame.object.geometry;
|
|
144
|
+
|
|
145
|
+
if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();
|
|
146
|
+
|
|
147
|
+
_sphere.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );
|
|
148
|
+
|
|
149
|
+
uniformNode.value = _sphere.radius;
|
|
150
|
+
|
|
136
151
|
}
|
|
137
152
|
|
|
138
153
|
}
|
|
@@ -142,7 +157,7 @@ class Object3DNode extends Node {
|
|
|
142
157
|
* node also depends on the selected scope.
|
|
143
158
|
*
|
|
144
159
|
* @param {NodeBuilder} builder - The current node builder.
|
|
145
|
-
* @return {
|
|
160
|
+
* @return {string} The generated code snippet.
|
|
146
161
|
*/
|
|
147
162
|
generate( builder ) {
|
|
148
163
|
|
|
@@ -156,6 +171,10 @@ class Object3DNode extends Node {
|
|
|
156
171
|
|
|
157
172
|
this._uniformNode.nodeType = 'vec3';
|
|
158
173
|
|
|
174
|
+
} else if ( scope === Object3DNode.RADIUS ) {
|
|
175
|
+
|
|
176
|
+
this._uniformNode.nodeType = 'float';
|
|
177
|
+
|
|
159
178
|
}
|
|
160
179
|
|
|
161
180
|
return this._uniformNode.build( builder );
|
|
@@ -185,50 +204,66 @@ Object3DNode.POSITION = 'position';
|
|
|
185
204
|
Object3DNode.SCALE = 'scale';
|
|
186
205
|
Object3DNode.VIEW_POSITION = 'viewPosition';
|
|
187
206
|
Object3DNode.DIRECTION = 'direction';
|
|
207
|
+
Object3DNode.RADIUS = 'radius';
|
|
188
208
|
|
|
189
209
|
export default Object3DNode;
|
|
190
210
|
|
|
191
211
|
/**
|
|
192
212
|
* TSL function for creating an object 3D node that represents the object's direction in world space.
|
|
193
213
|
*
|
|
214
|
+
* @tsl
|
|
194
215
|
* @function
|
|
195
|
-
* @param {Object3D
|
|
216
|
+
* @param {?Object3D} [object3d] - The 3D object.
|
|
196
217
|
* @returns {Object3DNode<vec3>}
|
|
197
218
|
*/
|
|
198
|
-
export const objectDirection = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.DIRECTION );
|
|
219
|
+
export const objectDirection = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.DIRECTION ).setParameterLength( 1 );
|
|
199
220
|
|
|
200
221
|
/**
|
|
201
222
|
* TSL function for creating an object 3D node that represents the object's world matrix.
|
|
202
223
|
*
|
|
224
|
+
* @tsl
|
|
203
225
|
* @function
|
|
204
|
-
* @param {Object3D
|
|
226
|
+
* @param {?Object3D} [object3d] - The 3D object.
|
|
205
227
|
* @returns {Object3DNode<mat4>}
|
|
206
228
|
*/
|
|
207
|
-
export const objectWorldMatrix = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.WORLD_MATRIX );
|
|
229
|
+
export const objectWorldMatrix = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.WORLD_MATRIX ).setParameterLength( 1 );
|
|
208
230
|
|
|
209
231
|
/**
|
|
210
232
|
* TSL function for creating an object 3D node that represents the object's position in world space.
|
|
211
233
|
*
|
|
234
|
+
* @tsl
|
|
212
235
|
* @function
|
|
213
|
-
* @param {Object3D
|
|
236
|
+
* @param {?Object3D} [object3d] - The 3D object.
|
|
214
237
|
* @returns {Object3DNode<vec3>}
|
|
215
238
|
*/
|
|
216
|
-
export const objectPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.POSITION );
|
|
239
|
+
export const objectPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.POSITION ).setParameterLength( 1 );
|
|
217
240
|
|
|
218
241
|
/**
|
|
219
242
|
* TSL function for creating an object 3D node that represents the object's scale in world space.
|
|
220
243
|
*
|
|
244
|
+
* @tsl
|
|
221
245
|
* @function
|
|
222
|
-
* @param {Object3D
|
|
246
|
+
* @param {?Object3D} [object3d] - The 3D object.
|
|
223
247
|
* @returns {Object3DNode<vec3>}
|
|
224
248
|
*/
|
|
225
|
-
export const objectScale = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.SCALE );
|
|
249
|
+
export const objectScale = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.SCALE ).setParameterLength( 1 );
|
|
226
250
|
|
|
227
251
|
/**
|
|
228
252
|
* TSL function for creating an object 3D node that represents the object's position in view/camera space.
|
|
229
253
|
*
|
|
254
|
+
* @tsl
|
|
255
|
+
* @function
|
|
256
|
+
* @param {?Object3D} [object3d] - The 3D object.
|
|
257
|
+
* @returns {Object3DNode<vec3>}
|
|
258
|
+
*/
|
|
259
|
+
export const objectViewPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.VIEW_POSITION ).setParameterLength( 1 );
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* TSL function for creating an object 3D node that represents the object's radius.
|
|
263
|
+
*
|
|
264
|
+
* @tsl
|
|
230
265
|
* @function
|
|
231
|
-
* @param {Object3D
|
|
266
|
+
* @param {?Object3D} [object3d] - The 3D object.
|
|
232
267
|
* @returns {Object3DNode<vec3>}
|
|
233
268
|
*/
|
|
234
|
-
export const
|
|
269
|
+
export const objectRadius = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.RADIUS ).setParameterLength( 1 );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeImmutable } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module PointUVNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* A node for representing the uv coordinates of points.
|
|
8
6
|
*
|
|
@@ -30,7 +28,7 @@ class PointUVNode extends Node {
|
|
|
30
28
|
/**
|
|
31
29
|
* This flag can be used for type testing.
|
|
32
30
|
*
|
|
33
|
-
* @type {
|
|
31
|
+
* @type {boolean}
|
|
34
32
|
* @readonly
|
|
35
33
|
* @default true
|
|
36
34
|
*/
|
|
@@ -51,6 +49,7 @@ export default PointUVNode;
|
|
|
51
49
|
/**
|
|
52
50
|
* TSL object that represents the uv coordinates of points.
|
|
53
51
|
*
|
|
52
|
+
* @tsl
|
|
54
53
|
* @type {PointUVNode}
|
|
55
54
|
*/
|
|
56
55
|
export const pointUV = /*@__PURE__*/ nodeImmutable( PointUVNode );
|
|
@@ -2,11 +2,10 @@ import { attribute } from '../core/AttributeNode.js';
|
|
|
2
2
|
import { Fn } from '../tsl/TSLCore.js';
|
|
3
3
|
import { modelWorldMatrix } from './ModelNode.js';
|
|
4
4
|
|
|
5
|
-
/** @module Position **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* TSL object that represents the position attribute of the current rendered object.
|
|
9
7
|
*
|
|
8
|
+
* @tsl
|
|
10
9
|
* @type {AttributeNode<vec3>}
|
|
11
10
|
*/
|
|
12
11
|
export const positionGeometry = /*@__PURE__*/ attribute( 'position', 'vec3' );
|
|
@@ -14,14 +13,16 @@ export const positionGeometry = /*@__PURE__*/ attribute( 'position', 'vec3' );
|
|
|
14
13
|
/**
|
|
15
14
|
* TSL object that represents the vertex position in local space of the current rendered object.
|
|
16
15
|
*
|
|
16
|
+
* @tsl
|
|
17
17
|
* @type {AttributeNode<vec3>}
|
|
18
18
|
*/
|
|
19
19
|
export const positionLocal = /*@__PURE__*/ positionGeometry.toVarying( 'positionLocal' );
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* TSL object that represents the previous vertex position in local space of the current rendered object.
|
|
23
|
-
* Used in context of {@link
|
|
23
|
+
* Used in context of {@link VelocityNode} for rendering motion vectors.
|
|
24
24
|
*
|
|
25
|
+
* @tsl
|
|
25
26
|
* @type {AttributeNode<vec3>}
|
|
26
27
|
*/
|
|
27
28
|
export const positionPrevious = /*@__PURE__*/ positionGeometry.toVarying( 'positionPrevious' );
|
|
@@ -29,6 +30,7 @@ export const positionPrevious = /*@__PURE__*/ positionGeometry.toVarying( 'posit
|
|
|
29
30
|
/**
|
|
30
31
|
* TSL object that represents the vertex position in world space of the current rendered object.
|
|
31
32
|
*
|
|
33
|
+
* @tsl
|
|
32
34
|
* @type {VaryingNode<vec3>}
|
|
33
35
|
*/
|
|
34
36
|
export const positionWorld = /*@__PURE__*/ modelWorldMatrix.mul( positionLocal ).xyz.toVarying( 'v_positionWorld' ).context( { needsPositionReassign: true } );
|
|
@@ -36,6 +38,7 @@ export const positionWorld = /*@__PURE__*/ modelWorldMatrix.mul( positionLocal )
|
|
|
36
38
|
/**
|
|
37
39
|
* TSL object that represents the position world direction of the current rendered object.
|
|
38
40
|
*
|
|
41
|
+
* @tsl
|
|
39
42
|
* @type {Node<vec3>}
|
|
40
43
|
*/
|
|
41
44
|
export const positionWorldDirection = /*@__PURE__*/ positionLocal.transformDirection( modelWorldMatrix ).toVarying( 'v_positionWorldDirection' ).normalize().toVar( 'positionWorldDirection' ).context( { needsPositionReassign: true } );
|
|
@@ -43,6 +46,7 @@ export const positionWorldDirection = /*@__PURE__*/ positionLocal.transformDirec
|
|
|
43
46
|
/**
|
|
44
47
|
* TSL object that represents the vertex position in view space of the current rendered object.
|
|
45
48
|
*
|
|
49
|
+
* @tsl
|
|
46
50
|
* @type {VaryingNode<vec3>}
|
|
47
51
|
*/
|
|
48
52
|
export const positionView = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
@@ -54,6 +58,7 @@ export const positionView = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
|
54
58
|
/**
|
|
55
59
|
* TSL object that represents the position view direction of the current rendered object.
|
|
56
60
|
*
|
|
61
|
+
* @tsl
|
|
57
62
|
* @type {VaryingNode<vec3>}
|
|
58
63
|
*/
|
|
59
64
|
export const positionViewDirection = /*@__PURE__*/ positionView.negate().toVarying( 'v_positionViewDirection' ).normalize().toVar( 'positionViewDirection' );
|
|
@@ -6,8 +6,6 @@ import ArrayElementNode from '../utils/ArrayElementNode.js';
|
|
|
6
6
|
|
|
7
7
|
// TODO: Avoid duplicated code and ues only ReferenceBaseNode or ReferenceNode
|
|
8
8
|
|
|
9
|
-
/** @module ReferenceBaseNode **/
|
|
10
|
-
|
|
11
9
|
/**
|
|
12
10
|
* This class is only relevant if the referenced property is array-like.
|
|
13
11
|
* In this case, `ReferenceElementNode` allows to refer to a specific
|
|
@@ -26,7 +24,7 @@ class ReferenceElementNode extends ArrayElementNode {
|
|
|
26
24
|
/**
|
|
27
25
|
* Constructs a new reference element node.
|
|
28
26
|
*
|
|
29
|
-
* @param {ReferenceBaseNode
|
|
27
|
+
* @param {ReferenceBaseNode} referenceNode - The reference node.
|
|
30
28
|
* @param {Node} indexNode - The index node that defines the element access.
|
|
31
29
|
*/
|
|
32
30
|
constructor( referenceNode, indexNode ) {
|
|
@@ -34,10 +32,10 @@ class ReferenceElementNode extends ArrayElementNode {
|
|
|
34
32
|
super( referenceNode, indexNode );
|
|
35
33
|
|
|
36
34
|
/**
|
|
37
|
-
* Similar to {@link
|
|
35
|
+
* Similar to {@link ReferenceBaseNode#reference}, an additional
|
|
38
36
|
* property references to the current node.
|
|
39
37
|
*
|
|
40
|
-
* @type {ReferenceBaseNode
|
|
38
|
+
* @type {?ReferenceBaseNode}
|
|
41
39
|
* @default null
|
|
42
40
|
*/
|
|
43
41
|
this.referenceNode = referenceNode;
|
|
@@ -45,7 +43,7 @@ class ReferenceElementNode extends ArrayElementNode {
|
|
|
45
43
|
/**
|
|
46
44
|
* This flag can be used for type testing.
|
|
47
45
|
*
|
|
48
|
-
* @type {
|
|
46
|
+
* @type {boolean}
|
|
49
47
|
* @readonly
|
|
50
48
|
* @default true
|
|
51
49
|
*/
|
|
@@ -57,7 +55,7 @@ class ReferenceElementNode extends ArrayElementNode {
|
|
|
57
55
|
* This method is overwritten since the node type is inferred from
|
|
58
56
|
* the uniform type of the reference node.
|
|
59
57
|
*
|
|
60
|
-
* @return {
|
|
58
|
+
* @return {string} The node type.
|
|
61
59
|
*/
|
|
62
60
|
getNodeType() {
|
|
63
61
|
|
|
@@ -96,10 +94,10 @@ class ReferenceBaseNode extends Node {
|
|
|
96
94
|
/**
|
|
97
95
|
* Constructs a new reference base node.
|
|
98
96
|
*
|
|
99
|
-
* @param {
|
|
100
|
-
* @param {
|
|
101
|
-
* @param {Object
|
|
102
|
-
* @param {
|
|
97
|
+
* @param {string} property - The name of the property the node refers to.
|
|
98
|
+
* @param {string} uniformType - The uniform type that should be used to represent the property value.
|
|
99
|
+
* @param {?Object} [object=null] - The object the property belongs to.
|
|
100
|
+
* @param {?number} [count=null] - When the linked property is an array-like, this parameter defines its length.
|
|
103
101
|
*/
|
|
104
102
|
constructor( property, uniformType, object = null, count = null ) {
|
|
105
103
|
|
|
@@ -108,21 +106,21 @@ class ReferenceBaseNode extends Node {
|
|
|
108
106
|
/**
|
|
109
107
|
* The name of the property the node refers to.
|
|
110
108
|
*
|
|
111
|
-
* @type {
|
|
109
|
+
* @type {string}
|
|
112
110
|
*/
|
|
113
111
|
this.property = property;
|
|
114
112
|
|
|
115
113
|
/**
|
|
116
114
|
* The uniform type that should be used to represent the property value.
|
|
117
115
|
*
|
|
118
|
-
* @type {
|
|
116
|
+
* @type {string}
|
|
119
117
|
*/
|
|
120
118
|
this.uniformType = uniformType;
|
|
121
119
|
|
|
122
120
|
/**
|
|
123
121
|
* The object the property belongs to.
|
|
124
122
|
*
|
|
125
|
-
* @type {Object
|
|
123
|
+
* @type {?Object}
|
|
126
124
|
* @default null
|
|
127
125
|
*/
|
|
128
126
|
this.object = object;
|
|
@@ -130,7 +128,7 @@ class ReferenceBaseNode extends Node {
|
|
|
130
128
|
/**
|
|
131
129
|
* When the linked property is an array, this parameter defines its length.
|
|
132
130
|
*
|
|
133
|
-
* @type {
|
|
131
|
+
* @type {?number}
|
|
134
132
|
* @default null
|
|
135
133
|
*/
|
|
136
134
|
this.count = count;
|
|
@@ -139,15 +137,15 @@ class ReferenceBaseNode extends Node {
|
|
|
139
137
|
* The property name might have dots so nested properties can be referred.
|
|
140
138
|
* The hierarchy of the names is stored inside this array.
|
|
141
139
|
*
|
|
142
|
-
* @type {Array<
|
|
140
|
+
* @type {Array<string>}
|
|
143
141
|
*/
|
|
144
142
|
this.properties = property.split( '.' );
|
|
145
143
|
|
|
146
144
|
/**
|
|
147
|
-
* Points to the current referred object. This property exists next to {@link
|
|
145
|
+
* Points to the current referred object. This property exists next to {@link ReferenceNode#object}
|
|
148
146
|
* since the final reference might be updated from calling code.
|
|
149
147
|
*
|
|
150
|
-
* @type {Object
|
|
148
|
+
* @type {?Object}
|
|
151
149
|
* @default null
|
|
152
150
|
*/
|
|
153
151
|
this.reference = object;
|
|
@@ -171,7 +169,7 @@ class ReferenceBaseNode extends Node {
|
|
|
171
169
|
/**
|
|
172
170
|
* Overwritten since reference nodes are updated per object.
|
|
173
171
|
*
|
|
174
|
-
* @type {
|
|
172
|
+
* @type {string}
|
|
175
173
|
* @default 'object'
|
|
176
174
|
*/
|
|
177
175
|
this.updateType = NodeUpdateType.OBJECT;
|
|
@@ -209,7 +207,7 @@ class ReferenceBaseNode extends Node {
|
|
|
209
207
|
* Sets the node type which automatically defines the internal
|
|
210
208
|
* uniform type.
|
|
211
209
|
*
|
|
212
|
-
* @param {
|
|
210
|
+
* @param {string} uniformType - The type to set.
|
|
213
211
|
*/
|
|
214
212
|
setNodeType( uniformType ) {
|
|
215
213
|
|
|
@@ -230,7 +228,7 @@ class ReferenceBaseNode extends Node {
|
|
|
230
228
|
* the type of the reference node.
|
|
231
229
|
*
|
|
232
230
|
* @param {NodeBuilder} builder - The current node builder.
|
|
233
|
-
* @return {
|
|
231
|
+
* @return {string} The node type.
|
|
234
232
|
*/
|
|
235
233
|
getNodeType( builder ) {
|
|
236
234
|
|
|
@@ -249,7 +247,7 @@ class ReferenceBaseNode extends Node {
|
|
|
249
247
|
* Returns the property value from the given referred object.
|
|
250
248
|
*
|
|
251
249
|
* @param {Object} [object=this.reference] - The object to retrieve the property value from.
|
|
252
|
-
* @return {
|
|
250
|
+
* @return {any} The value.
|
|
253
251
|
*/
|
|
254
252
|
getValueFromReference( object = this.reference ) {
|
|
255
253
|
|
|
@@ -269,7 +267,7 @@ class ReferenceBaseNode extends Node {
|
|
|
269
267
|
|
|
270
268
|
/**
|
|
271
269
|
* Allows to update the reference based on the given state. The state is only
|
|
272
|
-
* evaluated {@link
|
|
270
|
+
* evaluated {@link ReferenceBaseNode#object} is not set.
|
|
273
271
|
*
|
|
274
272
|
* @param {(NodeFrame|NodeBuilder)} state - The current state.
|
|
275
273
|
* @return {Object} The updated reference.
|
|
@@ -335,9 +333,10 @@ export default ReferenceBaseNode;
|
|
|
335
333
|
/**
|
|
336
334
|
* TSL function for creating a reference base node.
|
|
337
335
|
*
|
|
336
|
+
* @tsl
|
|
338
337
|
* @function
|
|
339
|
-
* @param {
|
|
340
|
-
* @param {
|
|
338
|
+
* @param {string} name - The name of the property the node refers to.
|
|
339
|
+
* @param {string} type - The uniform type that should be used to represent the property value.
|
|
341
340
|
* @param {Object} object - The object the property belongs to.
|
|
342
341
|
* @returns {ReferenceBaseNode}
|
|
343
342
|
*/
|
|
@@ -347,11 +346,12 @@ export const reference = ( name, type, object ) => nodeObject( new ReferenceBase
|
|
|
347
346
|
* TSL function for creating a reference base node. Use this function if you want need a reference
|
|
348
347
|
* to an array-like property that should be represented as a uniform buffer.
|
|
349
348
|
*
|
|
349
|
+
* @tsl
|
|
350
350
|
* @function
|
|
351
|
-
* @param {
|
|
352
|
-
* @param {
|
|
353
|
-
* @param {
|
|
354
|
-
* @param {Object} object - An array-like object the property belongs to.
|
|
351
|
+
* @param {string} name - The name of the property the node refers to.
|
|
352
|
+
* @param {string} type - The uniform type that should be used to represent the property value.
|
|
353
|
+
* @param {number} count - The number of value inside the array-like object.
|
|
354
|
+
* @param {Object} [object] - An array-like object the property belongs to.
|
|
355
355
|
* @returns {ReferenceBaseNode}
|
|
356
356
|
*/
|
|
357
357
|
export const referenceBuffer = ( name, type, count, object ) => nodeObject( new ReferenceBaseNode( name, type, object, count ) );
|