super-three 0.173.5 → 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 +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
|
@@ -2,8 +2,6 @@ import TempNode from '../core/TempNode.js';
|
|
|
2
2
|
import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
|
|
3
3
|
import { vectorComponents } from '../core/constants.js';
|
|
4
4
|
|
|
5
|
-
/** @module AssignNode **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* These node represents an assign operation. Meaning a node is assigned
|
|
9
7
|
* to another node.
|
|
@@ -48,7 +46,7 @@ class AssignNode extends TempNode {
|
|
|
48
46
|
* Whether this node is used more than once in context of other nodes. This method
|
|
49
47
|
* is overwritten since it always returns `false` (assigns are unique).
|
|
50
48
|
*
|
|
51
|
-
* @return {
|
|
49
|
+
* @return {boolean} A flag that indicates if there is more than one dependency to other nodes. Always `false`.
|
|
52
50
|
*/
|
|
53
51
|
hasDependencies() {
|
|
54
52
|
|
|
@@ -67,7 +65,7 @@ class AssignNode extends TempNode {
|
|
|
67
65
|
* target and source data type does not match.
|
|
68
66
|
*
|
|
69
67
|
* @param {NodeBuilder} builder - The current node builder.
|
|
70
|
-
* @return {
|
|
68
|
+
* @return {boolean} Whether a split is required when assigning source to target.
|
|
71
69
|
*/
|
|
72
70
|
needsSplitAssign( builder ) {
|
|
73
71
|
|
|
@@ -167,11 +165,12 @@ export default AssignNode;
|
|
|
167
165
|
/**
|
|
168
166
|
* TSL function for creating an assign node.
|
|
169
167
|
*
|
|
168
|
+
* @tsl
|
|
170
169
|
* @function
|
|
171
170
|
* @param {Node} targetNode - The target node.
|
|
172
171
|
* @param {Node} sourceNode - The source type.
|
|
173
172
|
* @returns {AssignNode}
|
|
174
173
|
*/
|
|
175
|
-
export const assign = /*@__PURE__*/ nodeProxy( AssignNode );
|
|
174
|
+
export const assign = /*@__PURE__*/ nodeProxy( AssignNode ).setParameterLength( 2 );
|
|
176
175
|
|
|
177
176
|
addMethodChaining( 'assign', assign );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
2
|
import { nodeObject, varying } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module AttributeNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Base class for representing shader attributes as nodes.
|
|
8
6
|
*
|
|
@@ -19,8 +17,8 @@ class AttributeNode extends Node {
|
|
|
19
17
|
/**
|
|
20
18
|
* Constructs a new attribute node.
|
|
21
19
|
*
|
|
22
|
-
* @param {
|
|
23
|
-
* @param {
|
|
20
|
+
* @param {string} attributeName - The name of the attribute.
|
|
21
|
+
* @param {?string} nodeType - The node type.
|
|
24
22
|
*/
|
|
25
23
|
constructor( attributeName, nodeType = null ) {
|
|
26
24
|
|
|
@@ -29,7 +27,7 @@ class AttributeNode extends Node {
|
|
|
29
27
|
/**
|
|
30
28
|
* `AttributeNode` sets this property to `true` by default.
|
|
31
29
|
*
|
|
32
|
-
* @type {
|
|
30
|
+
* @type {boolean}
|
|
33
31
|
* @default true
|
|
34
32
|
*/
|
|
35
33
|
this.global = true;
|
|
@@ -75,7 +73,7 @@ class AttributeNode extends Node {
|
|
|
75
73
|
* overwritten in derived classes if the final name must be computed
|
|
76
74
|
* analytically.
|
|
77
75
|
*
|
|
78
|
-
* @param {
|
|
76
|
+
* @param {string} attributeName - The name of the attribute.
|
|
79
77
|
* @return {AttributeNode} A reference to this node.
|
|
80
78
|
*/
|
|
81
79
|
setAttributeName( attributeName ) {
|
|
@@ -92,7 +90,7 @@ class AttributeNode extends Node {
|
|
|
92
90
|
* analytically.
|
|
93
91
|
*
|
|
94
92
|
* @param {NodeBuilder} builder - The current node builder.
|
|
95
|
-
* @return {
|
|
93
|
+
* @return {string} The attribute name.
|
|
96
94
|
*/
|
|
97
95
|
getAttributeName( /*builder*/ ) {
|
|
98
96
|
|
|
@@ -160,9 +158,10 @@ export default AttributeNode;
|
|
|
160
158
|
/**
|
|
161
159
|
* TSL function for creating an attribute node.
|
|
162
160
|
*
|
|
161
|
+
* @tsl
|
|
163
162
|
* @function
|
|
164
|
-
* @param {
|
|
165
|
-
* @param {
|
|
163
|
+
* @param {string} name - The name of the attribute.
|
|
164
|
+
* @param {string} [nodeType] - The node type.
|
|
166
165
|
* @returns {AttributeNode}
|
|
167
166
|
*/
|
|
168
167
|
export const attribute = ( name, nodeType ) => nodeObject( new AttributeNode( name, nodeType ) );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
2
|
import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
-
/** @module BypassNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* The class generates the code of a given node but returns another node in the output.
|
|
8
6
|
* This can be used to call a method or node that does not return a value, i.e.
|
|
@@ -35,7 +33,7 @@ class BypassNode extends Node {
|
|
|
35
33
|
/**
|
|
36
34
|
* This flag can be used for type testing.
|
|
37
35
|
*
|
|
38
|
-
* @type {
|
|
36
|
+
* @type {boolean}
|
|
39
37
|
* @readonly
|
|
40
38
|
* @default true
|
|
41
39
|
*/
|
|
@@ -84,11 +82,12 @@ export default BypassNode;
|
|
|
84
82
|
/**
|
|
85
83
|
* TSL function for creating a bypass node.
|
|
86
84
|
*
|
|
85
|
+
* @tsl
|
|
87
86
|
* @function
|
|
88
87
|
* @param {Node} outputNode - The output node.
|
|
89
88
|
* @param {Node} callNode - The call node.
|
|
90
89
|
* @returns {BypassNode}
|
|
91
90
|
*/
|
|
92
|
-
export const bypass = /*@__PURE__*/ nodeProxy( BypassNode );
|
|
91
|
+
export const bypass = /*@__PURE__*/ nodeProxy( BypassNode ).setParameterLength( 2 );
|
|
93
92
|
|
|
94
93
|
addMethodChaining( 'bypass', bypass );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
2
|
import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
-
/** @module CacheNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* This node can be used as a cache management component for another node.
|
|
8
6
|
* Caching is in general used by default in {@link NodeBuilder} but this node
|
|
@@ -22,7 +20,7 @@ class CacheNode extends Node {
|
|
|
22
20
|
* Constructs a new cache node.
|
|
23
21
|
*
|
|
24
22
|
* @param {Node} node - The node that should be cached.
|
|
25
|
-
* @param {
|
|
23
|
+
* @param {boolean} [parent=true] - Whether this node refers to a shared parent cache or not.
|
|
26
24
|
*/
|
|
27
25
|
constructor( node, parent = true ) {
|
|
28
26
|
|
|
@@ -38,7 +36,7 @@ class CacheNode extends Node {
|
|
|
38
36
|
/**
|
|
39
37
|
* Whether this node refers to a shared parent cache or not.
|
|
40
38
|
*
|
|
41
|
-
* @type {
|
|
39
|
+
* @type {boolean}
|
|
42
40
|
* @default true
|
|
43
41
|
*/
|
|
44
42
|
this.parent = parent;
|
|
@@ -46,7 +44,7 @@ class CacheNode extends Node {
|
|
|
46
44
|
/**
|
|
47
45
|
* This flag can be used for type testing.
|
|
48
46
|
*
|
|
49
|
-
* @type {
|
|
47
|
+
* @type {boolean}
|
|
50
48
|
* @readonly
|
|
51
49
|
* @default true
|
|
52
50
|
*/
|
|
@@ -91,9 +89,10 @@ export default CacheNode;
|
|
|
91
89
|
/**
|
|
92
90
|
* TSL function for creating a cache node.
|
|
93
91
|
*
|
|
92
|
+
* @tsl
|
|
94
93
|
* @function
|
|
95
94
|
* @param {Node} node - The node that should be cached.
|
|
96
|
-
* @param {
|
|
95
|
+
* @param {boolean} [parent] - Whether this node refers to a shared parent cache or not.
|
|
97
96
|
* @returns {CacheNode}
|
|
98
97
|
*/
|
|
99
98
|
export const cache = ( node, parent ) => nodeObject( new CacheNode( nodeObject( node ), parent ) );
|
|
@@ -18,8 +18,8 @@ class ConstNode extends InputNode {
|
|
|
18
18
|
/**
|
|
19
19
|
* Constructs a new input node.
|
|
20
20
|
*
|
|
21
|
-
* @param {
|
|
22
|
-
* @param {
|
|
21
|
+
* @param {any} value - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color).
|
|
22
|
+
* @param {?string} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
|
|
23
23
|
*/
|
|
24
24
|
constructor( value, nodeType = null ) {
|
|
25
25
|
|
|
@@ -28,7 +28,7 @@ class ConstNode extends InputNode {
|
|
|
28
28
|
/**
|
|
29
29
|
* This flag can be used for type testing.
|
|
30
30
|
*
|
|
31
|
-
* @type {
|
|
31
|
+
* @type {boolean}
|
|
32
32
|
* @readonly
|
|
33
33
|
* @default true
|
|
34
34
|
*/
|
|
@@ -40,7 +40,7 @@ class ConstNode extends InputNode {
|
|
|
40
40
|
* Generates the shader string of the value with the current node builder.
|
|
41
41
|
*
|
|
42
42
|
* @param {NodeBuilder} builder - The current node builder.
|
|
43
|
-
* @return {
|
|
43
|
+
* @return {string} The generated value as a shader string.
|
|
44
44
|
*/
|
|
45
45
|
generateConst( builder ) {
|
|
46
46
|
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
2
|
import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
-
/** @module ContextNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* This node can be used as a context management component for another node.
|
|
8
6
|
* {@link NodeBuilder} performs its node building process in a specific context and
|
|
@@ -34,7 +32,7 @@ class ContextNode extends Node {
|
|
|
34
32
|
/**
|
|
35
33
|
* This flag can be used for type testing.
|
|
36
34
|
*
|
|
37
|
-
* @type {
|
|
35
|
+
* @type {boolean}
|
|
38
36
|
* @readonly
|
|
39
37
|
* @default true
|
|
40
38
|
*/
|
|
@@ -58,9 +56,9 @@ class ContextNode extends Node {
|
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
/**
|
|
61
|
-
* This method is overwritten to ensure it returns the reference to {@link
|
|
59
|
+
* This method is overwritten to ensure it returns the reference to {@link ContextNode#node}.
|
|
62
60
|
*
|
|
63
|
-
* @return {Node} A reference to {@link
|
|
61
|
+
* @return {Node} A reference to {@link ContextNode#node}.
|
|
64
62
|
*/
|
|
65
63
|
getScope() {
|
|
66
64
|
|
|
@@ -69,10 +67,10 @@ class ContextNode extends Node {
|
|
|
69
67
|
}
|
|
70
68
|
|
|
71
69
|
/**
|
|
72
|
-
* This method is overwritten to ensure it returns the type of {@link
|
|
70
|
+
* This method is overwritten to ensure it returns the type of {@link ContextNode#node}.
|
|
73
71
|
*
|
|
74
72
|
* @param {NodeBuilder} builder - The current node builder.
|
|
75
|
-
* @return {
|
|
73
|
+
* @return {string} The node type.
|
|
76
74
|
*/
|
|
77
75
|
getNodeType( builder ) {
|
|
78
76
|
|
|
@@ -121,19 +119,21 @@ export default ContextNode;
|
|
|
121
119
|
/**
|
|
122
120
|
* TSL function for creating a context node.
|
|
123
121
|
*
|
|
122
|
+
* @tsl
|
|
124
123
|
* @function
|
|
125
124
|
* @param {Node} node - The node whose context should be modified.
|
|
126
125
|
* @param {Object} [value={}] - The modified context data.
|
|
127
126
|
* @returns {ContextNode}
|
|
128
127
|
*/
|
|
129
|
-
export const context = /*@__PURE__*/ nodeProxy( ContextNode );
|
|
128
|
+
export const context = /*@__PURE__*/ nodeProxy( ContextNode ).setParameterLength( 1, 2 );
|
|
130
129
|
|
|
131
130
|
/**
|
|
132
131
|
* TSL function for defining a label context value for a given node.
|
|
133
132
|
*
|
|
133
|
+
* @tsl
|
|
134
134
|
* @function
|
|
135
135
|
* @param {Node} node - The node whose context should be modified.
|
|
136
|
-
* @param {
|
|
136
|
+
* @param {string} name - The name/label to set.
|
|
137
137
|
* @returns {ContextNode}
|
|
138
138
|
*/
|
|
139
139
|
export const label = ( node, name ) => context( node, { label: name } );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
2
|
import { nodeImmutable, varying } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module IndexNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* This class represents shader indices of different types. The following predefined node
|
|
8
6
|
* objects cover frequent use cases:
|
|
@@ -36,14 +34,14 @@ class IndexNode extends Node {
|
|
|
36
34
|
/**
|
|
37
35
|
* The scope of the index node.
|
|
38
36
|
*
|
|
39
|
-
* @type {
|
|
37
|
+
* @type {string}
|
|
40
38
|
*/
|
|
41
39
|
this.scope = scope;
|
|
42
40
|
|
|
43
41
|
/**
|
|
44
42
|
* This flag can be used for type testing.
|
|
45
43
|
*
|
|
46
|
-
* @type {
|
|
44
|
+
* @type {boolean}
|
|
47
45
|
* @readonly
|
|
48
46
|
* @default true
|
|
49
47
|
*/
|
|
@@ -120,6 +118,7 @@ export default IndexNode;
|
|
|
120
118
|
/**
|
|
121
119
|
* TSL object that represents the index of a vertex within a mesh.
|
|
122
120
|
*
|
|
121
|
+
* @tsl
|
|
123
122
|
* @type {IndexNode}
|
|
124
123
|
*/
|
|
125
124
|
export const vertexIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.VERTEX );
|
|
@@ -127,6 +126,7 @@ export const vertexIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.VER
|
|
|
127
126
|
/**
|
|
128
127
|
* TSL object that represents the index of either a mesh instance or an invocation of a compute shader.
|
|
129
128
|
*
|
|
129
|
+
* @tsl
|
|
130
130
|
* @type {IndexNode}
|
|
131
131
|
*/
|
|
132
132
|
export const instanceIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.INSTANCE );
|
|
@@ -134,6 +134,7 @@ export const instanceIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.I
|
|
|
134
134
|
/**
|
|
135
135
|
* TSL object that represents the index of the subgroup the current compute invocation belongs to.
|
|
136
136
|
*
|
|
137
|
+
* @tsl
|
|
137
138
|
* @type {IndexNode}
|
|
138
139
|
*/
|
|
139
140
|
export const subgroupIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.SUBGROUP );
|
|
@@ -141,6 +142,7 @@ export const subgroupIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.S
|
|
|
141
142
|
/**
|
|
142
143
|
* TSL object that represents the index of a compute invocation within the scope of a subgroup.
|
|
143
144
|
*
|
|
145
|
+
* @tsl
|
|
144
146
|
* @type {IndexNode}
|
|
145
147
|
*/
|
|
146
148
|
export const invocationSubgroupIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.INVOCATION_SUBGROUP );
|
|
@@ -148,6 +150,7 @@ export const invocationSubgroupIndex = /*@__PURE__*/ nodeImmutable( IndexNode, I
|
|
|
148
150
|
/**
|
|
149
151
|
* TSL object that represents the index of a compute invocation within the scope of a workgroup load.
|
|
150
152
|
*
|
|
153
|
+
* @tsl
|
|
151
154
|
* @type {IndexNode}
|
|
152
155
|
*/
|
|
153
156
|
export const invocationLocalIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.INVOCATION_LOCAL );
|
|
@@ -155,6 +158,7 @@ export const invocationLocalIndex = /*@__PURE__*/ nodeImmutable( IndexNode, Inde
|
|
|
155
158
|
/**
|
|
156
159
|
* TSL object that represents the index of a draw call.
|
|
157
160
|
*
|
|
161
|
+
* @tsl
|
|
158
162
|
* @type {IndexNode}
|
|
159
163
|
*/
|
|
160
164
|
export const drawIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.DRAW );
|
|
@@ -17,8 +17,8 @@ class InputNode extends Node {
|
|
|
17
17
|
/**
|
|
18
18
|
* Constructs a new input node.
|
|
19
19
|
*
|
|
20
|
-
* @param {
|
|
21
|
-
* @param {
|
|
20
|
+
* @param {any} value - The value of this node. This can be any JS primitive, functions, array buffers or even three.js objects (vector, matrices, colors).
|
|
21
|
+
* @param {?string} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
|
|
22
22
|
*/
|
|
23
23
|
constructor( value, nodeType = null ) {
|
|
24
24
|
|
|
@@ -27,23 +27,23 @@ class InputNode extends Node {
|
|
|
27
27
|
/**
|
|
28
28
|
* This flag can be used for type testing.
|
|
29
29
|
*
|
|
30
|
-
* @type {
|
|
30
|
+
* @type {boolean}
|
|
31
31
|
* @readonly
|
|
32
32
|
* @default true
|
|
33
33
|
*/
|
|
34
34
|
this.isInputNode = true;
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
|
-
* The value of this node. This can be
|
|
37
|
+
* The value of this node. This can be any JS primitive, functions, array buffers or even three.js objects (vector, matrices, colors).
|
|
38
38
|
*
|
|
39
|
-
* @type {
|
|
39
|
+
* @type {any}
|
|
40
40
|
*/
|
|
41
41
|
this.value = value;
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* The precision of the value in the shader.
|
|
45
45
|
*
|
|
46
|
-
* @type {('low'|'medium'|'high')
|
|
46
|
+
* @type {?('low'|'medium'|'high')}
|
|
47
47
|
* @default null
|
|
48
48
|
*/
|
|
49
49
|
this.precision = null;
|
|
@@ -70,7 +70,7 @@ class InputNode extends Node {
|
|
|
70
70
|
* normal RGBA texture is `texture` whereas its node type is `vec4`.
|
|
71
71
|
*
|
|
72
72
|
* @param {NodeBuilder} builder - The current node builder.
|
|
73
|
-
* @return {
|
|
73
|
+
* @return {string} The input type.
|
|
74
74
|
*/
|
|
75
75
|
getInputType( builder ) {
|
|
76
76
|
|
|
@@ -11,54 +11,56 @@ class LightingModel {
|
|
|
11
11
|
* which are later used in the evaluation process.
|
|
12
12
|
*
|
|
13
13
|
* @abstract
|
|
14
|
-
* @param {ContextNode} input - The current node context.
|
|
15
|
-
* @param {StackNode} stack - The current stack.
|
|
16
14
|
* @param {NodeBuilder} builder - The current node builder.
|
|
17
15
|
*/
|
|
18
|
-
start(
|
|
16
|
+
start( builder ) {
|
|
17
|
+
|
|
18
|
+
// lights ( direct )
|
|
19
|
+
|
|
20
|
+
builder.lightsNode.setupLights( builder, builder.lightsNode.getLightNodes( builder ) );
|
|
21
|
+
|
|
22
|
+
// indirect
|
|
23
|
+
|
|
24
|
+
this.indirect( builder );
|
|
25
|
+
|
|
26
|
+
}
|
|
19
27
|
|
|
20
28
|
/**
|
|
21
29
|
* This method is intended for executing final tasks like final updates
|
|
22
30
|
* to the outgoing light.
|
|
23
31
|
*
|
|
24
32
|
* @abstract
|
|
25
|
-
* @param {ContextNode} input - The current node context.
|
|
26
|
-
* @param {StackNode} stack - The current stack.
|
|
27
33
|
* @param {NodeBuilder} builder - The current node builder.
|
|
28
34
|
*/
|
|
29
|
-
finish( /*
|
|
35
|
+
finish( /*builder*/ ) { }
|
|
30
36
|
|
|
31
37
|
/**
|
|
32
38
|
* This method is intended for implementing the direct light term and
|
|
33
39
|
* executed during the build process of directional, point and spot light nodes.
|
|
34
40
|
*
|
|
35
41
|
* @abstract
|
|
36
|
-
* @param {Object}
|
|
37
|
-
* @param {StackNode} stack - The current stack.
|
|
42
|
+
* @param {Object} lightData - The light data.
|
|
38
43
|
* @param {NodeBuilder} builder - The current node builder.
|
|
39
44
|
*/
|
|
40
|
-
direct( /*
|
|
45
|
+
direct( /*lightData, builder*/ ) { }
|
|
41
46
|
|
|
42
47
|
/**
|
|
43
48
|
* This method is intended for implementing the direct light term for
|
|
44
49
|
* rect area light nodes.
|
|
45
50
|
*
|
|
46
51
|
* @abstract
|
|
47
|
-
* @param {Object}
|
|
48
|
-
* @param {StackNode} stack - The current stack.
|
|
52
|
+
* @param {Object} lightData - The light data.
|
|
49
53
|
* @param {NodeBuilder} builder - The current node builder.
|
|
50
54
|
*/
|
|
51
|
-
directRectArea( /*
|
|
55
|
+
directRectArea( /*lightData, builder*/ ) {}
|
|
52
56
|
|
|
53
57
|
/**
|
|
54
58
|
* This method is intended for implementing the indirect light term.
|
|
55
59
|
*
|
|
56
60
|
* @abstract
|
|
57
|
-
* @param {ContextNode} input - The current node context.
|
|
58
|
-
* @param {StackNode} stack - The current stack.
|
|
59
61
|
* @param {NodeBuilder} builder - The current node builder.
|
|
60
62
|
*/
|
|
61
|
-
indirect( /*
|
|
63
|
+
indirect( /*builder*/ ) { }
|
|
62
64
|
|
|
63
65
|
/**
|
|
64
66
|
* This method is intended for implementing the ambient occlusion term.
|
|
@@ -66,8 +68,6 @@ class LightingModel {
|
|
|
66
68
|
* model in its indirect term.
|
|
67
69
|
*
|
|
68
70
|
* @abstract
|
|
69
|
-
* @param {ContextNode} input - The current node context.
|
|
70
|
-
* @param {StackNode} stack - The current stack.
|
|
71
71
|
* @param {NodeBuilder} builder - The current node builder.
|
|
72
72
|
*/
|
|
73
73
|
ambientOcclusion( /*input, stack, builder*/ ) { }
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import OutputStructNode from './OutputStructNode.js';
|
|
2
2
|
import { nodeProxy, vec4 } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module MRTNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Returns the MRT texture index for the given name.
|
|
8
6
|
*
|
|
9
7
|
* @param {Array<Texture>} textures - The textures of a MRT-configured render target.
|
|
10
|
-
* @param {
|
|
11
|
-
* @return {
|
|
8
|
+
* @param {string} name - The name of the MRT texture which index is requested.
|
|
9
|
+
* @return {number} The texture index.
|
|
12
10
|
*/
|
|
13
11
|
export function getTextureIndex( textures, name ) {
|
|
14
12
|
|
|
@@ -50,7 +48,7 @@ class MRTNode extends OutputStructNode {
|
|
|
50
48
|
/**
|
|
51
49
|
* Constructs a new output struct node.
|
|
52
50
|
*
|
|
53
|
-
* @param {Object<
|
|
51
|
+
* @param {Object<string, Node>} outputNodes - The MRT outputs.
|
|
54
52
|
*/
|
|
55
53
|
constructor( outputNodes ) {
|
|
56
54
|
|
|
@@ -61,14 +59,14 @@ class MRTNode extends OutputStructNode {
|
|
|
61
59
|
* is the name of the output, the value the node which produces
|
|
62
60
|
* the output result.
|
|
63
61
|
*
|
|
64
|
-
* @type {Object<
|
|
62
|
+
* @type {Object<string, Node>}
|
|
65
63
|
*/
|
|
66
64
|
this.outputNodes = outputNodes;
|
|
67
65
|
|
|
68
66
|
/**
|
|
69
67
|
* This flag can be used for type testing.
|
|
70
68
|
*
|
|
71
|
-
* @type {
|
|
69
|
+
* @type {boolean}
|
|
72
70
|
* @readonly
|
|
73
71
|
* @default true
|
|
74
72
|
*/
|
|
@@ -79,7 +77,7 @@ class MRTNode extends OutputStructNode {
|
|
|
79
77
|
/**
|
|
80
78
|
* Returns `true` if the MRT node has an output with the given name.
|
|
81
79
|
*
|
|
82
|
-
* @param {
|
|
80
|
+
* @param {string} name - The name of the output.
|
|
83
81
|
* @return {NodeBuilder} Whether the MRT node has an output for the given name or not.
|
|
84
82
|
*/
|
|
85
83
|
has( name ) {
|
|
@@ -91,7 +89,7 @@ class MRTNode extends OutputStructNode {
|
|
|
91
89
|
/**
|
|
92
90
|
* Returns the output node for the given name.
|
|
93
91
|
*
|
|
94
|
-
* @param {
|
|
92
|
+
* @param {string} name - The name of the output.
|
|
95
93
|
* @return {Node} The output node.
|
|
96
94
|
*/
|
|
97
95
|
get( name ) {
|
|
@@ -144,8 +142,9 @@ export default MRTNode;
|
|
|
144
142
|
/**
|
|
145
143
|
* TSL function for creating a MRT node.
|
|
146
144
|
*
|
|
145
|
+
* @tsl
|
|
147
146
|
* @function
|
|
148
|
-
* @param {Object<
|
|
147
|
+
* @param {Object<string, Node>} outputNodes - The MRT outputs.
|
|
149
148
|
* @returns {MRTNode}
|
|
150
149
|
*/
|
|
151
150
|
export const mrt = /*@__PURE__*/ nodeProxy( MRTNode );
|