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
|
@@ -111,7 +111,7 @@ class GLSLNodeFunction extends NodeFunction {
|
|
|
111
111
|
/**
|
|
112
112
|
* Constructs a new GLSL node function.
|
|
113
113
|
*
|
|
114
|
-
* @param {
|
|
114
|
+
* @param {string} source - The GLSL source.
|
|
115
115
|
*/
|
|
116
116
|
constructor( source ) {
|
|
117
117
|
|
|
@@ -128,8 +128,8 @@ class GLSLNodeFunction extends NodeFunction {
|
|
|
128
128
|
/**
|
|
129
129
|
* This method returns the GLSL code of the node function.
|
|
130
130
|
*
|
|
131
|
-
* @param {
|
|
132
|
-
* @return {
|
|
131
|
+
* @param {string} [name=this.name] - The function's name.
|
|
132
|
+
* @return {string} The shader code.
|
|
133
133
|
*/
|
|
134
134
|
getCode( name = this.name ) {
|
|
135
135
|
|
|
@@ -11,7 +11,7 @@ class GLSLNodeParser extends NodeParser {
|
|
|
11
11
|
/**
|
|
12
12
|
* The method parses the given GLSL code an returns a node function.
|
|
13
13
|
*
|
|
14
|
-
* @param {
|
|
14
|
+
* @param {string} source - The GLSL code.
|
|
15
15
|
* @return {GLSLNodeFunction} A node function.
|
|
16
16
|
*/
|
|
17
17
|
parseFunction( source ) {
|
|
@@ -5,12 +5,9 @@ import { uniform } from '../core/UniformNode.js';
|
|
|
5
5
|
import { NodeUpdateType } from '../core/constants.js';
|
|
6
6
|
import { nodeProxy, vec3 } from '../tsl/TSLBase.js';
|
|
7
7
|
|
|
8
|
-
import { WebGLCoordinateSystem } from '../../constants.js';
|
|
9
8
|
import { Texture } from '../../textures/Texture.js';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
let _generator = null;
|
|
9
|
+
import PMREMGenerator from '../../renderers/common/extras/PMREMGenerator.js';
|
|
10
|
+
import { materialEnvRotation } from '../accessors/MaterialProperties.js';
|
|
14
11
|
|
|
15
12
|
const _cache = new WeakMap();
|
|
16
13
|
|
|
@@ -18,8 +15,8 @@ const _cache = new WeakMap();
|
|
|
18
15
|
* Generates the cubeUV size based on the given image height.
|
|
19
16
|
*
|
|
20
17
|
* @private
|
|
21
|
-
* @param {
|
|
22
|
-
* @return {{texelWidth:
|
|
18
|
+
* @param {number} imageHeight - The image height.
|
|
19
|
+
* @return {{texelWidth: number,texelHeight: number, maxMip: number}} The result object.
|
|
23
20
|
*/
|
|
24
21
|
function _generateCubeUVSize( imageHeight ) {
|
|
25
22
|
|
|
@@ -34,15 +31,19 @@ function _generateCubeUVSize( imageHeight ) {
|
|
|
34
31
|
}
|
|
35
32
|
|
|
36
33
|
/**
|
|
37
|
-
* Generates a PMREM from the given texture
|
|
34
|
+
* Generates a PMREM from the given texture.
|
|
38
35
|
*
|
|
39
36
|
* @private
|
|
40
37
|
* @param {Texture} texture - The texture to create the PMREM for.
|
|
41
|
-
* @
|
|
38
|
+
* @param {Renderer} renderer - The renderer.
|
|
39
|
+
* @param {PMREMGenerator} generator - The PMREM generator.
|
|
40
|
+
* @return {?Texture} The PMREM.
|
|
42
41
|
*/
|
|
43
|
-
function _getPMREMFromTexture( texture ) {
|
|
42
|
+
function _getPMREMFromTexture( texture, renderer, generator ) {
|
|
44
43
|
|
|
45
|
-
|
|
44
|
+
const cache = _getCache( renderer );
|
|
45
|
+
|
|
46
|
+
let cacheTexture = cache.get( texture );
|
|
46
47
|
|
|
47
48
|
const pmremVersion = cacheTexture !== undefined ? cacheTexture.pmremVersion : - 1;
|
|
48
49
|
|
|
@@ -54,7 +55,7 @@ function _getPMREMFromTexture( texture ) {
|
|
|
54
55
|
|
|
55
56
|
if ( isCubeMapReady( image ) ) {
|
|
56
57
|
|
|
57
|
-
cacheTexture =
|
|
58
|
+
cacheTexture = generator.fromCubemap( texture, cacheTexture );
|
|
58
59
|
|
|
59
60
|
} else {
|
|
60
61
|
|
|
@@ -67,7 +68,7 @@ function _getPMREMFromTexture( texture ) {
|
|
|
67
68
|
|
|
68
69
|
if ( isEquirectangularMapReady( image ) ) {
|
|
69
70
|
|
|
70
|
-
cacheTexture =
|
|
71
|
+
cacheTexture = generator.fromEquirectangular( texture, cacheTexture );
|
|
71
72
|
|
|
72
73
|
} else {
|
|
73
74
|
|
|
@@ -79,7 +80,7 @@ function _getPMREMFromTexture( texture ) {
|
|
|
79
80
|
|
|
80
81
|
cacheTexture.pmremVersion = texture.pmremVersion;
|
|
81
82
|
|
|
82
|
-
|
|
83
|
+
cache.set( texture, cacheTexture );
|
|
83
84
|
|
|
84
85
|
}
|
|
85
86
|
|
|
@@ -87,6 +88,30 @@ function _getPMREMFromTexture( texture ) {
|
|
|
87
88
|
|
|
88
89
|
}
|
|
89
90
|
|
|
91
|
+
/**
|
|
92
|
+
* Returns a cache that stores generated PMREMs for the respective textures.
|
|
93
|
+
* A cache must be maintained per renderer since PMREMs are render target textures
|
|
94
|
+
* which can't be shared across render contexts.
|
|
95
|
+
*
|
|
96
|
+
* @private
|
|
97
|
+
* @param {Renderer} renderer - The renderer.
|
|
98
|
+
* @return {WeakMap<Texture, Texture>} The PMREM cache.
|
|
99
|
+
*/
|
|
100
|
+
function _getCache( renderer ) {
|
|
101
|
+
|
|
102
|
+
let rendererCache = _cache.get( renderer );
|
|
103
|
+
|
|
104
|
+
if ( rendererCache === undefined ) {
|
|
105
|
+
|
|
106
|
+
rendererCache = new WeakMap();
|
|
107
|
+
_cache.set( renderer, rendererCache );
|
|
108
|
+
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return rendererCache;
|
|
112
|
+
|
|
113
|
+
}
|
|
114
|
+
|
|
90
115
|
/**
|
|
91
116
|
* This node represents a PMREM which is a special type of preprocessed
|
|
92
117
|
* environment map intended for PBR materials.
|
|
@@ -152,7 +177,7 @@ class PMREMNode extends TempNode {
|
|
|
152
177
|
* Reference to a PMREM generator.
|
|
153
178
|
*
|
|
154
179
|
* @private
|
|
155
|
-
* @type {PMREMGenerator}
|
|
180
|
+
* @type {?PMREMGenerator}
|
|
156
181
|
* @default null
|
|
157
182
|
*/
|
|
158
183
|
this._generator = null;
|
|
@@ -195,7 +220,7 @@ class PMREMNode extends TempNode {
|
|
|
195
220
|
/**
|
|
196
221
|
* The `updateBeforeType` is set to `NodeUpdateType.RENDER`.
|
|
197
222
|
*
|
|
198
|
-
* @type {
|
|
223
|
+
* @type {string}
|
|
199
224
|
* @default 'render'
|
|
200
225
|
*/
|
|
201
226
|
this.updateBeforeType = NodeUpdateType.RENDER;
|
|
@@ -236,7 +261,7 @@ class PMREMNode extends TempNode {
|
|
|
236
261
|
|
|
237
262
|
}
|
|
238
263
|
|
|
239
|
-
updateBefore() {
|
|
264
|
+
updateBefore( frame ) {
|
|
240
265
|
|
|
241
266
|
let pmrem = this._pmrem;
|
|
242
267
|
|
|
@@ -251,7 +276,7 @@ class PMREMNode extends TempNode {
|
|
|
251
276
|
|
|
252
277
|
} else {
|
|
253
278
|
|
|
254
|
-
pmrem = _getPMREMFromTexture( texture );
|
|
279
|
+
pmrem = _getPMREMFromTexture( texture, frame.renderer, this._generator );
|
|
255
280
|
|
|
256
281
|
}
|
|
257
282
|
|
|
@@ -269,14 +294,12 @@ class PMREMNode extends TempNode {
|
|
|
269
294
|
|
|
270
295
|
setup( builder ) {
|
|
271
296
|
|
|
272
|
-
if ( _generator === null ) {
|
|
297
|
+
if ( this._generator === null ) {
|
|
273
298
|
|
|
274
|
-
_generator = builder.
|
|
299
|
+
this._generator = new PMREMGenerator( builder.renderer );
|
|
275
300
|
|
|
276
301
|
}
|
|
277
302
|
|
|
278
|
-
//
|
|
279
|
-
|
|
280
303
|
this.updateBefore( builder );
|
|
281
304
|
|
|
282
305
|
//
|
|
@@ -291,15 +314,7 @@ class PMREMNode extends TempNode {
|
|
|
291
314
|
|
|
292
315
|
//
|
|
293
316
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
if ( builder.renderer.coordinateSystem === WebGLCoordinateSystem && texture.isPMREMTexture !== true && texture.isRenderTargetTexture === true ) {
|
|
297
|
-
|
|
298
|
-
uvNode = vec3( uvNode.x.negate(), uvNode.yz );
|
|
299
|
-
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
uvNode = vec3( uvNode.x, uvNode.y.negate(), uvNode.z );
|
|
317
|
+
uvNode = materialEnvRotation.mul( vec3( uvNode.x, uvNode.y.negate(), uvNode.z ) );
|
|
303
318
|
|
|
304
319
|
//
|
|
305
320
|
|
|
@@ -317,6 +332,14 @@ class PMREMNode extends TempNode {
|
|
|
317
332
|
|
|
318
333
|
}
|
|
319
334
|
|
|
335
|
+
dispose() {
|
|
336
|
+
|
|
337
|
+
super.dispose();
|
|
338
|
+
|
|
339
|
+
if ( this._generator !== null ) this._generator.dispose();
|
|
340
|
+
|
|
341
|
+
}
|
|
342
|
+
|
|
320
343
|
}
|
|
321
344
|
|
|
322
345
|
export default PMREMNode;
|
|
@@ -325,8 +348,8 @@ export default PMREMNode;
|
|
|
325
348
|
* Returns `true` if the given cube map image has been fully loaded.
|
|
326
349
|
*
|
|
327
350
|
* @private
|
|
328
|
-
* @param {Array<(Image|Object)>} image - The cube map image.
|
|
329
|
-
* @return {
|
|
351
|
+
* @param {?Array<(Image|Object)>} [image] - The cube map image.
|
|
352
|
+
* @return {boolean} Whether the given cube map is ready or not.
|
|
330
353
|
*/
|
|
331
354
|
function isCubeMapReady( image ) {
|
|
332
355
|
|
|
@@ -351,7 +374,7 @@ function isCubeMapReady( image ) {
|
|
|
351
374
|
*
|
|
352
375
|
* @private
|
|
353
376
|
* @param {(Image|Object)} image - The equirectangular image.
|
|
354
|
-
* @return {
|
|
377
|
+
* @return {boolean} Whether the given cube map is ready or not.
|
|
355
378
|
*/
|
|
356
379
|
function isEquirectangularMapReady( image ) {
|
|
357
380
|
|
|
@@ -364,10 +387,11 @@ function isEquirectangularMapReady( image ) {
|
|
|
364
387
|
/**
|
|
365
388
|
* TSL function for creating a PMREM node.
|
|
366
389
|
*
|
|
390
|
+
* @tsl
|
|
367
391
|
* @function
|
|
368
392
|
* @param {Texture} value - The input texture.
|
|
369
|
-
* @param {Node<vec2>} [uvNode=null] - The uv node.
|
|
370
|
-
* @param {Node<float>} [levelNode=null] - The level node.
|
|
393
|
+
* @param {?Node<vec2>} [uvNode=null] - The uv node.
|
|
394
|
+
* @param {?Node<float>} [levelNode=null] - The level node.
|
|
371
395
|
* @returns {PMREMNode}
|
|
372
396
|
*/
|
|
373
|
-
export const pmremTexture = /*@__PURE__*/ nodeProxy( PMREMNode );
|
|
397
|
+
export const pmremTexture = /*@__PURE__*/ nodeProxy( PMREMNode ).setParameterLength( 1, 3 );
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fn, int, float, vec2, vec3, vec4, If } from '../tsl/TSLBase.js';
|
|
2
|
-
import { cos, sin, abs, max, exp2, log2, clamp, fract, mix, floor, normalize, cross
|
|
2
|
+
import { cos, sin, abs, max, exp2, log2, clamp, fract, mix, floor, normalize, cross } from '../math/MathNode.js';
|
|
3
3
|
import { mul } from '../math/OperatorNode.js';
|
|
4
4
|
import { select } from '../math/ConditionalNode.js';
|
|
5
5
|
import { Loop, Break } from '../utils/LoopNode.js';
|
|
@@ -258,7 +258,7 @@ export const blur = /*@__PURE__*/ Fn( ( { n, latitudinal, poleAxis, outputDirect
|
|
|
258
258
|
|
|
259
259
|
const axis = vec3( select( latitudinal, poleAxis, cross( poleAxis, outputDirection ) ) ).toVar();
|
|
260
260
|
|
|
261
|
-
If(
|
|
261
|
+
If( axis.equal( vec3( 0.0 ) ), () => {
|
|
262
262
|
|
|
263
263
|
axis.assign( vec3( outputDirection.z, 0.0, outputDirection.x.negate() ) );
|
|
264
264
|
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { uv } from '../accessors/UV.js';
|
|
2
2
|
import { Fn } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module Procedural **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Creates a 2x2 checkerboard pattern that can be used as procedural texture data.
|
|
8
6
|
*
|
|
9
|
-
* @
|
|
7
|
+
* @tsl
|
|
8
|
+
* @function
|
|
10
9
|
* @param {Node<vec2>} coord - The uv coordinates.
|
|
11
10
|
* @return {Node<float>} The result data.
|
|
12
11
|
*/
|
|
@@ -2,12 +2,11 @@ import { Fn, float } from '../tsl/TSLBase.js';
|
|
|
2
2
|
import { lengthSq, smoothstep } from '../math/MathNode.js';
|
|
3
3
|
import { uv } from '../accessors/UV.js';
|
|
4
4
|
|
|
5
|
-
/** @module Shapes **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* Generates a circle based on the uv coordinates.
|
|
9
7
|
*
|
|
10
|
-
* @
|
|
8
|
+
* @tsl
|
|
9
|
+
* @function
|
|
11
10
|
* @param {Node<vec2>} coord - The uv to generate the circle.
|
|
12
11
|
* @return {Node<float>} The circle shape.
|
|
13
12
|
*/
|
package/src/nodes/tsl/TSLBase.js
CHANGED
|
@@ -23,9 +23,10 @@ export * from '../utils/RemapNode.js'; // .remap(), .remapClamp()
|
|
|
23
23
|
export * from '../code/ExpressionNode.js'; // expression()
|
|
24
24
|
export * from '../utils/Discard.js'; // Discard(), Return()
|
|
25
25
|
export * from '../display/RenderOutputNode.js'; // .renderOutput()
|
|
26
|
+
export * from '../utils/DebugNode.js'; // debug()
|
|
26
27
|
|
|
27
28
|
export function addNodeElement( name/*, nodeElement*/ ) {
|
|
28
29
|
|
|
29
|
-
console.warn( 'THREE.
|
|
30
|
+
console.warn( 'THREE.TSL: AddNodeElement has been removed in favor of tree-shaking. Trying add', name );
|
|
30
31
|
|
|
31
32
|
}
|
package/src/nodes/tsl/TSLCore.js
CHANGED
|
@@ -9,8 +9,6 @@ import ConstNode from '../core/ConstNode.js';
|
|
|
9
9
|
import MemberNode from '../utils/MemberNode.js';
|
|
10
10
|
import { getValueFromType, getValueType } from '../core/NodeUtils.js';
|
|
11
11
|
|
|
12
|
-
/** @module TSLCore **/
|
|
13
|
-
|
|
14
12
|
let currentStack = null;
|
|
15
13
|
|
|
16
14
|
const NodeElements = new Map();
|
|
@@ -19,12 +17,12 @@ export function addMethodChaining( name, nodeElement ) {
|
|
|
19
17
|
|
|
20
18
|
if ( NodeElements.has( name ) ) {
|
|
21
19
|
|
|
22
|
-
console.warn( `Redefinition of method chaining ${ name }
|
|
20
|
+
console.warn( `THREE.TSL: Redefinition of method chaining '${ name }'.` );
|
|
23
21
|
return;
|
|
24
22
|
|
|
25
23
|
}
|
|
26
24
|
|
|
27
|
-
if ( typeof nodeElement !== 'function' ) throw new Error( `Node element ${ name } is not a function` );
|
|
25
|
+
if ( typeof nodeElement !== 'function' ) throw new Error( `THREE.TSL: Node element ${ name } is not a function` );
|
|
28
26
|
|
|
29
27
|
NodeElements.set( name, nodeElement );
|
|
30
28
|
|
|
@@ -215,11 +213,38 @@ const ShaderNodeProxy = function ( NodeClass, scope = null, factor = null, setti
|
|
|
215
213
|
|
|
216
214
|
const assignNode = ( node ) => nodeObject( settings !== null ? Object.assign( node, settings ) : node );
|
|
217
215
|
|
|
216
|
+
let fn, name = scope, minParams, maxParams;
|
|
217
|
+
|
|
218
|
+
function verifyParamsLimit( params ) {
|
|
219
|
+
|
|
220
|
+
let tslName;
|
|
221
|
+
|
|
222
|
+
if ( name ) tslName = /[a-z]/i.test( name ) ? name + '()' : name;
|
|
223
|
+
else tslName = NodeClass.type;
|
|
224
|
+
|
|
225
|
+
if ( minParams !== undefined && params.length < minParams ) {
|
|
226
|
+
|
|
227
|
+
console.error( `THREE.TSL: "${ tslName }" parameter length is less than minimum required.` );
|
|
228
|
+
|
|
229
|
+
return params.concat( new Array( minParams - params.length ).fill( 0 ) );
|
|
230
|
+
|
|
231
|
+
} else if ( maxParams !== undefined && params.length > maxParams ) {
|
|
232
|
+
|
|
233
|
+
console.error( `THREE.TSL: "${ tslName }" parameter length exceeds limit.` );
|
|
234
|
+
|
|
235
|
+
return params.slice( 0, maxParams );
|
|
236
|
+
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
return params;
|
|
240
|
+
|
|
241
|
+
}
|
|
242
|
+
|
|
218
243
|
if ( scope === null ) {
|
|
219
244
|
|
|
220
|
-
|
|
245
|
+
fn = ( ...params ) => {
|
|
221
246
|
|
|
222
|
-
return assignNode( new NodeClass( ...nodeArray( params ) ) );
|
|
247
|
+
return assignNode( new NodeClass( ...nodeArray( verifyParamsLimit( params ) ) ) );
|
|
223
248
|
|
|
224
249
|
};
|
|
225
250
|
|
|
@@ -227,22 +252,41 @@ const ShaderNodeProxy = function ( NodeClass, scope = null, factor = null, setti
|
|
|
227
252
|
|
|
228
253
|
factor = nodeObject( factor );
|
|
229
254
|
|
|
230
|
-
|
|
255
|
+
fn = ( ...params ) => {
|
|
231
256
|
|
|
232
|
-
return assignNode( new NodeClass( scope, ...nodeArray( params ), factor ) );
|
|
257
|
+
return assignNode( new NodeClass( scope, ...nodeArray( verifyParamsLimit( params ) ), factor ) );
|
|
233
258
|
|
|
234
259
|
};
|
|
235
260
|
|
|
236
261
|
} else {
|
|
237
262
|
|
|
238
|
-
|
|
263
|
+
fn = ( ...params ) => {
|
|
239
264
|
|
|
240
|
-
return assignNode( new NodeClass( scope, ...nodeArray( params ) ) );
|
|
265
|
+
return assignNode( new NodeClass( scope, ...nodeArray( verifyParamsLimit( params ) ) ) );
|
|
241
266
|
|
|
242
267
|
};
|
|
243
268
|
|
|
244
269
|
}
|
|
245
270
|
|
|
271
|
+
fn.setParameterLength = ( ...params ) => {
|
|
272
|
+
|
|
273
|
+
if ( params.length === 1 ) minParams = maxParams = params[ 0 ];
|
|
274
|
+
else if ( params.length === 2 ) [ minParams, maxParams ] = params;
|
|
275
|
+
|
|
276
|
+
return fn;
|
|
277
|
+
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
fn.setName = ( value ) => {
|
|
281
|
+
|
|
282
|
+
name = value;
|
|
283
|
+
|
|
284
|
+
return fn;
|
|
285
|
+
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
return fn;
|
|
289
|
+
|
|
246
290
|
};
|
|
247
291
|
|
|
248
292
|
const ShaderNodeImmutable = function ( NodeClass, ...params ) {
|
|
@@ -307,11 +351,7 @@ class ShaderCallNodeInternal extends Node {
|
|
|
307
351
|
|
|
308
352
|
}
|
|
309
353
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
builder.currentFunctionNode.includes.push( functionNode );
|
|
313
|
-
|
|
314
|
-
}
|
|
354
|
+
builder.addInclude( functionNode );
|
|
315
355
|
|
|
316
356
|
result = nodeObject( functionNode.call( inputNodes ) );
|
|
317
357
|
|
|
@@ -520,7 +560,35 @@ export const nodeArray = ( val, altType = null ) => new ShaderNodeArray( val, al
|
|
|
520
560
|
export const nodeProxy = ( ...params ) => new ShaderNodeProxy( ...params );
|
|
521
561
|
export const nodeImmutable = ( ...params ) => new ShaderNodeImmutable( ...params );
|
|
522
562
|
|
|
523
|
-
|
|
563
|
+
let fnId = 0;
|
|
564
|
+
|
|
565
|
+
export const Fn = ( jsFunc, layout = null ) => {
|
|
566
|
+
|
|
567
|
+
let nodeType = null;
|
|
568
|
+
|
|
569
|
+
if ( layout !== null ) {
|
|
570
|
+
|
|
571
|
+
if ( typeof layout === 'object' ) {
|
|
572
|
+
|
|
573
|
+
nodeType = layout.return;
|
|
574
|
+
|
|
575
|
+
} else {
|
|
576
|
+
|
|
577
|
+
if ( typeof layout === 'string' ) {
|
|
578
|
+
|
|
579
|
+
nodeType = layout;
|
|
580
|
+
|
|
581
|
+
} else {
|
|
582
|
+
|
|
583
|
+
console.error( 'THREE.TSL: Invalid layout type.' );
|
|
584
|
+
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
layout = null;
|
|
588
|
+
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
}
|
|
524
592
|
|
|
525
593
|
const shaderNode = new ShaderNode( jsFunc, nodeType );
|
|
526
594
|
|
|
@@ -562,20 +630,50 @@ export const Fn = ( jsFunc, nodeType ) => {
|
|
|
562
630
|
|
|
563
631
|
};
|
|
564
632
|
|
|
633
|
+
if ( layout !== null ) {
|
|
634
|
+
|
|
635
|
+
if ( typeof layout.inputs !== 'object' ) {
|
|
636
|
+
|
|
637
|
+
const fullLayout = {
|
|
638
|
+
name: 'fn' + fnId ++,
|
|
639
|
+
type: nodeType,
|
|
640
|
+
inputs: []
|
|
641
|
+
};
|
|
642
|
+
|
|
643
|
+
for ( const name in layout ) {
|
|
644
|
+
|
|
645
|
+
if ( name === 'return' ) continue;
|
|
646
|
+
|
|
647
|
+
fullLayout.inputs.push( {
|
|
648
|
+
name: name,
|
|
649
|
+
type: layout[ name ]
|
|
650
|
+
} );
|
|
651
|
+
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
layout = fullLayout;
|
|
655
|
+
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
fn.setLayout( layout );
|
|
659
|
+
|
|
660
|
+
}
|
|
661
|
+
|
|
565
662
|
return fn;
|
|
566
663
|
|
|
567
664
|
};
|
|
568
665
|
|
|
569
666
|
/**
|
|
667
|
+
* @tsl
|
|
570
668
|
* @function
|
|
571
669
|
* @deprecated since r168. Use {@link Fn} instead.
|
|
572
670
|
*
|
|
573
|
-
* @param
|
|
671
|
+
* @param {...any} params
|
|
574
672
|
* @returns {Function}
|
|
575
673
|
*/
|
|
576
674
|
export const tslFn = ( ...params ) => { // @deprecated, r168
|
|
577
675
|
|
|
578
|
-
console.warn( 'TSL
|
|
676
|
+
console.warn( 'THREE.TSL: tslFn() has been renamed to Fn().' );
|
|
579
677
|
return Fn( ...params );
|
|
580
678
|
|
|
581
679
|
};
|
|
@@ -672,7 +770,7 @@ addMethodChaining( 'toMat4', mat4 );
|
|
|
672
770
|
|
|
673
771
|
// basic nodes
|
|
674
772
|
|
|
675
|
-
export const element = /*@__PURE__*/ nodeProxy( ArrayElementNode );
|
|
773
|
+
export const element = /*@__PURE__*/ nodeProxy( ArrayElementNode ).setParameterLength( 2 );
|
|
676
774
|
export const convert = ( node, types ) => nodeObject( new ConvertNode( nodeObject( node ), types ) );
|
|
677
775
|
export const split = ( node, channels ) => nodeObject( new SplitNode( nodeObject( node ), channels ) );
|
|
678
776
|
|
|
@@ -41,7 +41,7 @@ class ArrayElementNode extends Node { // @TODO: If extending from TempNode it br
|
|
|
41
41
|
/**
|
|
42
42
|
* This flag can be used for type testing.
|
|
43
43
|
*
|
|
44
|
-
* @type {
|
|
44
|
+
* @type {boolean}
|
|
45
45
|
* @readonly
|
|
46
46
|
* @default true
|
|
47
47
|
*/
|
|
@@ -53,7 +53,7 @@ class ArrayElementNode extends Node { // @TODO: If extending from TempNode it br
|
|
|
53
53
|
* This method is overwritten since the node type is inferred from the array-like node.
|
|
54
54
|
*
|
|
55
55
|
* @param {NodeBuilder} builder - The current node builder.
|
|
56
|
-
* @return {
|
|
56
|
+
* @return {string} The node type.
|
|
57
57
|
*/
|
|
58
58
|
getNodeType( builder ) {
|
|
59
59
|
|
|
@@ -63,8 +63,10 @@ class ArrayElementNode extends Node { // @TODO: If extending from TempNode it br
|
|
|
63
63
|
|
|
64
64
|
generate( builder ) {
|
|
65
65
|
|
|
66
|
+
const indexType = this.indexNode.getNodeType( builder );
|
|
67
|
+
|
|
66
68
|
const nodeSnippet = this.node.build( builder );
|
|
67
|
-
const indexSnippet = this.indexNode.build( builder, 'uint' );
|
|
69
|
+
const indexSnippet = this.indexNode.build( builder, ! builder.isVector( indexType ) && builder.isInteger( indexType ) ? indexType : 'uint' );
|
|
68
70
|
|
|
69
71
|
return `${ nodeSnippet }[ ${ indexSnippet } ]`;
|
|
70
72
|
|
|
@@ -19,7 +19,7 @@ class ConvertNode extends Node {
|
|
|
19
19
|
* Constructs a new convert node.
|
|
20
20
|
*
|
|
21
21
|
* @param {Node} node - The node which type should be converted.
|
|
22
|
-
* @param {
|
|
22
|
+
* @param {string} convertTo - The target node type. Multiple types can be defined by separating them with a `|` sign.
|
|
23
23
|
*/
|
|
24
24
|
constructor( node, convertTo ) {
|
|
25
25
|
|
|
@@ -35,7 +35,7 @@ class ConvertNode extends Node {
|
|
|
35
35
|
/**
|
|
36
36
|
* The target node type. Multiple types can be defined by separating them with a `|` sign.
|
|
37
37
|
*
|
|
38
|
-
* @type {
|
|
38
|
+
* @type {string}
|
|
39
39
|
*/
|
|
40
40
|
this.convertTo = convertTo;
|
|
41
41
|
|
|
@@ -46,7 +46,7 @@ class ConvertNode extends Node {
|
|
|
46
46
|
* matching type from the {@link ConvertNode#convertTo} property.
|
|
47
47
|
*
|
|
48
48
|
* @param {NodeBuilder} builder - The current node builder.
|
|
49
|
-
* @return {
|
|
49
|
+
* @return {string} The node type.
|
|
50
50
|
*/
|
|
51
51
|
getNodeType( builder ) {
|
|
52
52
|
|
|
@@ -6,8 +6,6 @@ import { cubeTexture } from '../accessors/CubeTextureNode.js';
|
|
|
6
6
|
import CubeRenderTarget from '../../renderers/common/CubeRenderTarget.js';
|
|
7
7
|
import { CubeReflectionMapping, CubeRefractionMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping } from '../../constants.js';
|
|
8
8
|
|
|
9
|
-
/** @module CubeMapNode **/
|
|
10
|
-
|
|
11
9
|
const _cache = new WeakMap();
|
|
12
10
|
|
|
13
11
|
/**
|
|
@@ -44,7 +42,7 @@ class CubeMapNode extends TempNode {
|
|
|
44
42
|
* A reference to the internal cube texture.
|
|
45
43
|
*
|
|
46
44
|
* @private
|
|
47
|
-
* @type {CubeTexture}
|
|
45
|
+
* @type {?CubeTexture}
|
|
48
46
|
* @default null
|
|
49
47
|
*/
|
|
50
48
|
this._cubeTexture = null;
|
|
@@ -55,7 +53,7 @@ class CubeMapNode extends TempNode {
|
|
|
55
53
|
* @private
|
|
56
54
|
* @type {CubeTextureNode}
|
|
57
55
|
*/
|
|
58
|
-
this._cubeTextureNode = cubeTexture();
|
|
56
|
+
this._cubeTextureNode = cubeTexture( null );
|
|
59
57
|
|
|
60
58
|
const defaultTexture = new CubeTexture();
|
|
61
59
|
defaultTexture.isRenderTargetTexture = true;
|
|
@@ -74,7 +72,7 @@ class CubeMapNode extends TempNode {
|
|
|
74
72
|
* The `updateBeforeType` is set to `NodeUpdateType.RENDER` since the node updates
|
|
75
73
|
* the texture once per render in its {@link CubeMapNode#updateBefore} method.
|
|
76
74
|
*
|
|
77
|
-
* @type {
|
|
75
|
+
* @type {string}
|
|
78
76
|
* @default 'render'
|
|
79
77
|
*/
|
|
80
78
|
this.updateBeforeType = NodeUpdateType.RENDER;
|
|
@@ -170,7 +168,7 @@ export default CubeMapNode;
|
|
|
170
168
|
*
|
|
171
169
|
* @private
|
|
172
170
|
* @param {Image} image - The equirectangular image to check.
|
|
173
|
-
* @return {
|
|
171
|
+
* @return {boolean} Whether the image is ready or not.
|
|
174
172
|
*/
|
|
175
173
|
function isEquirectangularMapReady( image ) {
|
|
176
174
|
|
|
@@ -212,7 +210,7 @@ function onTextureDispose( event ) {
|
|
|
212
210
|
*
|
|
213
211
|
* @private
|
|
214
212
|
* @param {Texture} texture - The cube texture.
|
|
215
|
-
* @param {
|
|
213
|
+
* @param {number} mapping - The original texture mapping.
|
|
216
214
|
*/
|
|
217
215
|
function mapTextureMapping( texture, mapping ) {
|
|
218
216
|
|
|
@@ -231,8 +229,9 @@ function mapTextureMapping( texture, mapping ) {
|
|
|
231
229
|
/**
|
|
232
230
|
* TSL function for creating a cube map node.
|
|
233
231
|
*
|
|
232
|
+
* @tsl
|
|
234
233
|
* @function
|
|
235
234
|
* @param {Node} envNode - The node representing the environment map.
|
|
236
235
|
* @returns {CubeMapNode}
|
|
237
236
|
*/
|
|
238
|
-
export const cubeMapNode = /*@__PURE__*/ nodeProxy( CubeMapNode );
|
|
237
|
+
export const cubeMapNode = /*@__PURE__*/ nodeProxy( CubeMapNode ).setParameterLength( 1 );
|