super-three 0.179.0 → 0.184.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/LICENSE +1 -1
- package/README.md +3 -4
- package/build/three.cjs +14522 -12207
- package/build/three.core.js +12005 -10954
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +2270 -1005
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +63 -18
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +16573 -7890
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +16533 -7888
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +12 -4
- package/examples/jsm/animation/CCDIKSolver.js +8 -4
- package/examples/jsm/controls/ArcballControls.js +15 -12
- package/examples/jsm/controls/DragControls.js +9 -59
- package/examples/jsm/controls/FirstPersonControls.js +61 -57
- package/examples/jsm/controls/FlyControls.js +5 -1
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +113 -10
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +9 -9
- package/examples/jsm/controls/TransformControls.js +35 -3
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMShadowNode.js +6 -2
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -2
- package/examples/jsm/exporters/GLTFExporter.js +185 -34
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +31 -5
- package/examples/jsm/geometries/DecalGeometry.js +3 -3
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +21 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +110 -13
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +542 -0
- package/examples/jsm/inspector/RendererInspector.js +425 -0
- package/examples/jsm/inspector/extensions/extensions.json +6 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Console.js +238 -0
- package/examples/jsm/inspector/tabs/Memory.js +128 -0
- package/examples/jsm/inspector/tabs/Parameters.js +380 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Settings.js +264 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
- package/examples/jsm/inspector/tabs/Viewer.js +268 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +2072 -0
- package/examples/jsm/inspector/ui/Style.js +1667 -0
- package/examples/jsm/inspector/ui/Tab.js +265 -0
- package/examples/jsm/inspector/ui/Values.js +476 -0
- package/examples/jsm/inspector/ui/utils.js +69 -0
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/interactive/HTMLMesh.js +6 -10
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +651 -0
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineMaterial.js +7 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3DMLoader.js +5 -4
- package/examples/jsm/loaders/3MFLoader.js +3 -3
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +27 -4029
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +692 -53
- package/examples/jsm/loaders/FBXLoader.js +237 -39
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +159 -185
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +485 -0
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +162 -53
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +41 -50
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +9 -41
- package/examples/jsm/loaders/MaterialXLoader.js +22 -5
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PCDLoader.js +4 -2
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +4 -4
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/TTFLoader.js +4 -4
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +287 -162
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +79 -2
- package/examples/jsm/loaders/VTKLoader.js +42 -25
- package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +450 -363
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -2
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +73 -25
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +91 -7
- package/examples/jsm/objects/SkyMesh.js +151 -17
- package/examples/jsm/objects/Water.js +7 -6
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/WaterMesh.js +11 -13
- package/examples/jsm/physics/AmmoPhysics.js +12 -7
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +9 -5
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +56 -24
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +8 -7
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +175 -61
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +21 -8
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +8 -4
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +7 -6
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +3 -5
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +85 -25
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +52 -10
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +51 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +36 -24
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/AnamorphicNode.js +40 -5
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +23 -9
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +5 -37
- package/examples/jsm/tsl/display/DenoiseNode.js +3 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/FXAANode.js +2 -2
- package/examples/jsm/tsl/display/GTAONode.js +59 -9
- package/examples/jsm/tsl/display/GaussianBlurNode.js +68 -35
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +81 -20
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +638 -0
- package/examples/jsm/tsl/display/SSRNode.js +186 -69
- package/examples/jsm/tsl/display/SSSNode.js +490 -0
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +381 -75
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/hashBlur.js +16 -18
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +53 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +3 -4
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +13 -6
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +4 -7
- package/package.json +27 -38
- package/src/Three.Core.js +7 -3
- package/src/Three.TSL.js +61 -16
- package/src/Three.WebGPU.Nodes.js +7 -0
- package/src/Three.WebGPU.js +11 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +12 -2
- package/src/animation/AnimationClip.js +21 -5
- package/src/animation/AnimationMixer.js +9 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +54 -14
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +11 -10
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +100 -7
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +24 -12
- package/src/core/Clock.js +7 -0
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +55 -6
- package/src/core/Raycaster.js +4 -3
- package/src/core/RenderTarget.js +14 -5
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +259 -57
- package/src/extras/TextureUtils.js +6 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +10 -8
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +9 -3
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +4 -1
- package/src/helpers/DirectionalLightHelper.js +4 -1
- package/src/helpers/HemisphereLightHelper.js +3 -0
- package/src/helpers/PointLightHelper.js +1 -25
- package/src/helpers/SpotLightHelper.js +3 -0
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +13 -2
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +30 -2
- package/src/loaders/DataTextureLoader.js +6 -4
- package/src/loaders/FileLoader.js +4 -4
- package/src/loaders/ImageBitmapLoader.js +17 -13
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/Loader.js +9 -3
- package/src/loaders/LoadingManager.js +25 -3
- package/src/loaders/MaterialLoader.js +6 -4
- package/src/loaders/ObjectLoader.js +57 -17
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +5 -4
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +1 -0
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +11 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +11 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +2 -1
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +22 -3
- package/src/materials/nodes/Line2NodeMaterial.js +36 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
- package/src/materials/nodes/NodeMaterial.js +95 -35
- package/src/materials/nodes/PointsNodeMaterial.js +81 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +194 -88
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +23 -21
- package/src/math/Matrix2.js +14 -10
- package/src/math/Matrix3.js +15 -11
- package/src/math/Matrix4.js +94 -81
- package/src/math/Plane.js +5 -4
- package/src/math/Quaternion.js +60 -84
- package/src/math/Sphere.js +1 -1
- package/src/math/Spherical.js +1 -1
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +11 -7
- package/src/math/Vector3.js +15 -13
- package/src/math/Vector4.js +13 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/nodes/Nodes.js +86 -65
- package/src/nodes/TSL.js +11 -8
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/BatchNode.js +10 -10
- package/src/nodes/accessors/Bitangent.js +5 -5
- package/src/nodes/accessors/BufferAttributeNode.js +107 -15
- package/src/nodes/accessors/BufferNode.js +30 -3
- package/src/nodes/accessors/Camera.js +260 -13
- package/src/nodes/accessors/ClippingNode.js +10 -9
- package/src/nodes/accessors/CubeTextureNode.js +32 -6
- package/src/nodes/accessors/InstanceNode.js +164 -39
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/MaterialNode.js +9 -1
- package/src/nodes/accessors/MaterialProperties.js +2 -5
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +16 -15
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +51 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +7 -7
- package/src/nodes/accessors/ReferenceNode.js +11 -10
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/SkinningNode.js +27 -26
- package/src/nodes/accessors/StorageBufferNode.js +14 -24
- package/src/nodes/accessors/StorageTextureNode.js +62 -9
- package/src/nodes/accessors/Tangent.js +4 -14
- package/src/nodes/accessors/Texture3DNode.js +41 -31
- package/src/nodes/accessors/TextureNode.js +193 -63
- package/src/nodes/accessors/UniformArrayNode.js +6 -4
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionCallNode.js +25 -5
- package/src/nodes/code/FunctionNode.js +25 -3
- package/src/nodes/core/ArrayNode.js +22 -2
- package/src/nodes/core/AssignNode.js +6 -5
- package/src/nodes/core/AttributeNode.js +5 -4
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +133 -15
- package/src/nodes/core/IndexNode.js +4 -3
- package/src/nodes/core/InputNode.js +3 -2
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +41 -8
- package/src/nodes/core/MRTNode.js +48 -2
- package/src/nodes/core/Node.js +264 -46
- package/src/nodes/core/NodeBuilder.js +453 -87
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +31 -23
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +25 -97
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +34 -3
- package/src/nodes/core/PropertyNode.js +26 -3
- package/src/nodes/core/StackNode.js +99 -23
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +22 -8
- package/src/nodes/core/StructTypeNode.js +13 -18
- package/src/nodes/core/SubBuildNode.js +4 -4
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +37 -13
- package/src/nodes/core/VarNode.js +96 -34
- package/src/nodes/core/VaryingNode.js +2 -18
- package/src/nodes/display/BlendModes.js +0 -63
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +18 -1
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +4 -8
- package/src/nodes/display/NormalMapNode.js +41 -5
- package/src/nodes/display/PassNode.js +175 -25
- package/src/nodes/display/RenderOutputNode.js +35 -9
- package/src/nodes/display/ScreenNode.js +47 -15
- package/src/nodes/display/ToneMappingNode.js +32 -5
- package/src/nodes/display/ToonOutlinePassNode.js +10 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +14 -6
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +72 -14
- package/src/nodes/fog/Fog.js +18 -34
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhysicalLightingModel.js +128 -46
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/geometry/RangeNode.js +44 -6
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +4 -4
- package/src/nodes/gpgpu/ComputeNode.js +76 -38
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -4
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +34 -9
- package/src/nodes/lighting/LightsNode.js +10 -32
- package/src/nodes/lighting/PointShadowNode.js +167 -148
- package/src/nodes/lighting/ShadowFilterNode.js +55 -65
- package/src/nodes/lighting/ShadowNode.js +189 -44
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +25 -8
- package/src/nodes/math/MathNode.js +98 -57
- package/src/nodes/math/OperatorNode.js +8 -5
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/pmrem/PMREMNode.js +1 -1
- package/src/nodes/pmrem/PMREMUtils.js +111 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -3
- package/src/nodes/tsl/TSLCore.js +488 -166
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +14 -13
- package/src/nodes/utils/EventNode.js +67 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +7 -4
- package/src/nodes/utils/LoopNode.js +20 -24
- package/src/nodes/utils/MemberNode.js +60 -8
- package/src/nodes/utils/Packing.js +13 -1
- package/src/nodes/utils/PostProcessingUtils.js +60 -1
- package/src/nodes/utils/RTTNode.js +14 -4
- package/src/nodes/utils/ReflectorNode.js +61 -11
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +12 -2
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +12 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +46 -18
- package/src/objects/InstancedMesh.js +30 -3
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +3 -2
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Skeleton.js +12 -2
- package/src/objects/SkinnedMesh.js +29 -10
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +372 -179
- package/src/renderers/common/Animation.js +16 -4
- package/src/renderers/common/Attributes.js +16 -2
- package/src/renderers/common/Backend.js +137 -35
- package/src/renderers/common/Background.js +28 -14
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +83 -12
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +40 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +51 -7
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +55 -3
- package/src/renderers/common/Info.js +337 -6
- package/src/renderers/common/InspectorBase.js +151 -0
- package/src/renderers/common/Lighting.js +5 -21
- package/src/renderers/common/Pipelines.js +41 -8
- package/src/renderers/common/PostProcessing.js +9 -226
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +7 -3
- package/src/renderers/common/RenderContext.js +18 -2
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +32 -6
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +22 -6
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +927 -335
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +9 -1
- package/src/renderers/common/Sampler.js +52 -14
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/StorageTexture.js +9 -1
- package/src/renderers/common/Textures.js +208 -47
- package/src/renderers/common/TimestampQueryPool.js +70 -6
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +64 -2
- package/src/renderers/common/XRManager.js +79 -51
- package/src/renderers/common/extras/PMREMGenerator.js +176 -79
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +260 -95
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
- package/src/renderers/shaders/DFGLUTData.js +49 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +152 -59
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +221 -190
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +5 -3
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +4 -1
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -6
- package/src/renderers/shaders/UniformsLib.js +8 -5
- package/src/renderers/shaders/UniformsUtils.js +52 -9
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +15 -15
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +11 -5
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -13
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +270 -0
- package/src/renderers/webgl/WebGLProgram.js +63 -122
- package/src/renderers/webgl/WebGLPrograms.js +65 -52
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShadowMap.js +191 -26
- package/src/renderers/webgl/WebGLState.js +79 -40
- package/src/renderers/webgl/WebGLTextures.js +234 -68
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +24 -3
- package/src/renderers/webgl/WebGLUtils.js +8 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +438 -235
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +339 -84
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +229 -11
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +237 -72
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +56 -27
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +8 -3
- package/src/renderers/webgpu/WebGPUBackend.js +403 -253
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +5 -3
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +491 -123
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +108 -34
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +360 -201
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +111 -54
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +155 -205
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +407 -149
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +36 -13
- package/src/renderers/webgpu/utils/WebGPUUtils.js +55 -13
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +45 -29
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/ExternalTexture.js +15 -4
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +5 -4
- package/src/textures/Texture.js +19 -7
- package/src/textures/VideoTexture.js +2 -3
- package/src/utils.js +344 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/src/nodes/accessors/SceneNode.js +0 -144
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
- package/src/nodes/utils/RemapNode.js +0 -125
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import CodeNode from './CodeNode.js';
|
|
2
|
-
import { nodeObject } from '../tsl/TSLBase.js';
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* This class represents a native shader function. It can be used to implement
|
|
@@ -48,12 +47,35 @@ class FunctionNode extends CodeNode {
|
|
|
48
47
|
|
|
49
48
|
}
|
|
50
49
|
|
|
51
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Returns the type of this function node.
|
|
52
|
+
*
|
|
53
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
54
|
+
* @return {string} The type.
|
|
55
|
+
*/
|
|
56
|
+
generateNodeType( builder ) {
|
|
52
57
|
|
|
53
58
|
return this.getNodeFunction( builder ).type;
|
|
54
59
|
|
|
55
60
|
}
|
|
56
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Returns the type of a member of this function node.
|
|
64
|
+
*
|
|
65
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
66
|
+
* @param {string} name - The name of the member.
|
|
67
|
+
* @return {string} The type of the member.
|
|
68
|
+
*/
|
|
69
|
+
getMemberType( builder, name ) {
|
|
70
|
+
|
|
71
|
+
const type = this.getNodeType( builder );
|
|
72
|
+
|
|
73
|
+
const structType = builder.getStructTypeNode( type );
|
|
74
|
+
|
|
75
|
+
return structType.getMemberType( builder, name );
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
|
|
57
79
|
/**
|
|
58
80
|
* Returns the inputs of this function node.
|
|
59
81
|
*
|
|
@@ -147,7 +169,7 @@ const nativeFn = ( code, includes = [], language = '' ) => {
|
|
|
147
169
|
|
|
148
170
|
}
|
|
149
171
|
|
|
150
|
-
const functionNode =
|
|
172
|
+
const functionNode = new FunctionNode( code, includes, language );
|
|
151
173
|
|
|
152
174
|
const fn = ( ...params ) => functionNode.call( ...params );
|
|
153
175
|
fn.functionNode = functionNode;
|
|
@@ -11,6 +11,7 @@ import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
|
|
|
11
11
|
* ] );
|
|
12
12
|
*
|
|
13
13
|
* const redColor = tintColors.element( 0 );
|
|
14
|
+
* ```
|
|
14
15
|
*
|
|
15
16
|
* @augments TempNode
|
|
16
17
|
*/
|
|
@@ -76,11 +77,11 @@ class ArrayNode extends TempNode {
|
|
|
76
77
|
* @param {NodeBuilder} builder - The current node builder.
|
|
77
78
|
* @return {string} The type of the node.
|
|
78
79
|
*/
|
|
79
|
-
|
|
80
|
+
generateNodeType( builder ) {
|
|
80
81
|
|
|
81
82
|
if ( this.nodeType === null ) {
|
|
82
83
|
|
|
83
|
-
|
|
84
|
+
return this.values[ 0 ].getNodeType( builder );
|
|
84
85
|
|
|
85
86
|
}
|
|
86
87
|
|
|
@@ -100,6 +101,25 @@ class ArrayNode extends TempNode {
|
|
|
100
101
|
|
|
101
102
|
}
|
|
102
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Returns the type of a member variable.
|
|
106
|
+
*
|
|
107
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
108
|
+
* @param {string} name - The name of the member variable.
|
|
109
|
+
* @return {string} The type of the member variable.
|
|
110
|
+
*/
|
|
111
|
+
getMemberType( builder, name ) {
|
|
112
|
+
|
|
113
|
+
if ( this.nodeType === null ) {
|
|
114
|
+
|
|
115
|
+
return this.values[ 0 ].getMemberType( builder, name );
|
|
116
|
+
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return super.getMemberType( builder, name );
|
|
120
|
+
|
|
121
|
+
}
|
|
122
|
+
|
|
103
123
|
/**
|
|
104
124
|
* This method builds the output node and returns the resulting array as a shader string.
|
|
105
125
|
*
|
|
@@ -63,7 +63,7 @@ class AssignNode extends TempNode {
|
|
|
63
63
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
generateNodeType( builder, output ) {
|
|
67
67
|
|
|
68
68
|
return output !== 'void' ? this.targetNode.getNodeType( builder ) : 'void';
|
|
69
69
|
|
|
@@ -97,8 +97,10 @@ class AssignNode extends TempNode {
|
|
|
97
97
|
|
|
98
98
|
const { targetNode, sourceNode } = this;
|
|
99
99
|
|
|
100
|
-
const
|
|
101
|
-
|
|
100
|
+
const scope = targetNode.getScope();
|
|
101
|
+
|
|
102
|
+
const scopeData = builder.getDataFromNode( scope );
|
|
103
|
+
scopeData.assign = true;
|
|
102
104
|
|
|
103
105
|
const properties = builder.getNodeProperties( this );
|
|
104
106
|
properties.sourceNode = sourceNode;
|
|
@@ -112,11 +114,10 @@ class AssignNode extends TempNode {
|
|
|
112
114
|
|
|
113
115
|
const needsSplitAssign = this.needsSplitAssign( builder );
|
|
114
116
|
|
|
117
|
+
const target = targetNode.build( builder );
|
|
115
118
|
const targetType = targetNode.getNodeType( builder );
|
|
116
119
|
|
|
117
|
-
const target = targetNode.build( builder );
|
|
118
120
|
const source = sourceNode.build( builder, targetType );
|
|
119
|
-
|
|
120
121
|
const sourceType = sourceNode.getNodeType( builder );
|
|
121
122
|
|
|
122
123
|
const nodeData = builder.getDataFromNode( this );
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
|
-
import {
|
|
2
|
+
import { varying } from '../tsl/TSLBase.js';
|
|
3
|
+
import { warn } from '../../utils.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Base class for representing shader attributes as nodes.
|
|
@@ -42,7 +43,7 @@ class AttributeNode extends Node {
|
|
|
42
43
|
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
|
|
46
|
+
generateNodeType( builder ) {
|
|
46
47
|
|
|
47
48
|
let nodeType = this.nodeType;
|
|
48
49
|
|
|
@@ -125,7 +126,7 @@ class AttributeNode extends Node {
|
|
|
125
126
|
|
|
126
127
|
} else {
|
|
127
128
|
|
|
128
|
-
|
|
129
|
+
warn( `AttributeNode: Vertex attribute "${ attributeName }" not found on geometry.` );
|
|
129
130
|
|
|
130
131
|
return builder.generateConst( nodeType );
|
|
131
132
|
|
|
@@ -164,4 +165,4 @@ export default AttributeNode;
|
|
|
164
165
|
* @param {?string} [nodeType=null] - The node type.
|
|
165
166
|
* @returns {AttributeNode}
|
|
166
167
|
*/
|
|
167
|
-
export const attribute = ( name, nodeType = null ) =>
|
|
168
|
+
export const attribute = ( name, nodeType = null ) => new AttributeNode( name, nodeType );
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
|
-
import { addMethodChaining
|
|
2
|
+
import { addMethodChaining } from '../tsl/TSLCore.js';
|
|
3
|
+
import { warn } from '../../utils.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* This node can be used as a context management component for another node.
|
|
@@ -8,6 +9,12 @@ import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
|
|
|
8
9
|
*
|
|
9
10
|
* ```js
|
|
10
11
|
*node.context( { getUV: () => customCoord } );
|
|
12
|
+
*\// or
|
|
13
|
+
*material.contextNode = context( { getUV: () => customCoord } );
|
|
14
|
+
*\// or
|
|
15
|
+
*renderer.contextNode = context( { getUV: () => customCoord } );
|
|
16
|
+
*\// or
|
|
17
|
+
*scenePass.contextNode = context( { getUV: () => customCoord } );
|
|
11
18
|
*```
|
|
12
19
|
* @augments Node
|
|
13
20
|
*/
|
|
@@ -25,7 +32,7 @@ class ContextNode extends Node {
|
|
|
25
32
|
* @param {Node} node - The node whose context should be modified.
|
|
26
33
|
* @param {Object} [value={}] - The modified context data.
|
|
27
34
|
*/
|
|
28
|
-
constructor( node, value = {} ) {
|
|
35
|
+
constructor( node = null, value = {} ) {
|
|
29
36
|
|
|
30
37
|
super();
|
|
31
38
|
|
|
@@ -72,17 +79,51 @@ class ContextNode extends Node {
|
|
|
72
79
|
* @param {NodeBuilder} builder - The current node builder.
|
|
73
80
|
* @return {string} The node type.
|
|
74
81
|
*/
|
|
75
|
-
|
|
82
|
+
generateNodeType( builder ) {
|
|
76
83
|
|
|
77
84
|
return this.node.getNodeType( builder );
|
|
78
85
|
|
|
79
86
|
}
|
|
80
87
|
|
|
81
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Gathers the context data from all parent context nodes.
|
|
90
|
+
*
|
|
91
|
+
* @return {Object} The gathered context data.
|
|
92
|
+
*/
|
|
93
|
+
getFlowContextData() {
|
|
94
|
+
|
|
95
|
+
const children = [];
|
|
96
|
+
|
|
97
|
+
this.traverse( ( node ) => {
|
|
98
|
+
|
|
99
|
+
if ( node.isContextNode === true ) {
|
|
100
|
+
|
|
101
|
+
children.push( node.value );
|
|
102
|
+
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
} );
|
|
106
|
+
|
|
107
|
+
return Object.assign( {}, ...children );
|
|
108
|
+
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* This method is overwritten to ensure it returns the member type of {@link ContextNode#node}.
|
|
113
|
+
*
|
|
114
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
115
|
+
* @param {string} name - The member name.
|
|
116
|
+
* @returns {string} The member type.
|
|
117
|
+
*/
|
|
118
|
+
getMemberType( builder, name ) {
|
|
82
119
|
|
|
83
|
-
|
|
120
|
+
return this.node.getMemberType( builder, name );
|
|
84
121
|
|
|
85
|
-
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
analyze( builder ) {
|
|
125
|
+
|
|
126
|
+
const previousContext = builder.addContext( this.value );
|
|
86
127
|
|
|
87
128
|
this.node.build( builder );
|
|
88
129
|
|
|
@@ -92,9 +133,7 @@ class ContextNode extends Node {
|
|
|
92
133
|
|
|
93
134
|
setup( builder ) {
|
|
94
135
|
|
|
95
|
-
const previousContext = builder.
|
|
96
|
-
|
|
97
|
-
builder.setContext( { ...builder.context, ...this.value } );
|
|
136
|
+
const previousContext = builder.addContext( this.value );
|
|
98
137
|
|
|
99
138
|
this.node.build( builder );
|
|
100
139
|
|
|
@@ -104,9 +143,7 @@ class ContextNode extends Node {
|
|
|
104
143
|
|
|
105
144
|
generate( builder, output ) {
|
|
106
145
|
|
|
107
|
-
const previousContext = builder.
|
|
108
|
-
|
|
109
|
-
builder.setContext( { ...builder.context, ...this.value } );
|
|
146
|
+
const previousContext = builder.addContext( this.value );
|
|
110
147
|
|
|
111
148
|
const snippet = this.node.build( builder, output );
|
|
112
149
|
|
|
@@ -125,11 +162,34 @@ export default ContextNode;
|
|
|
125
162
|
*
|
|
126
163
|
* @tsl
|
|
127
164
|
* @function
|
|
128
|
-
* @param {Node}
|
|
165
|
+
* @param {Node|Object} [nodeOrValue={}] - The node whose context should be modified or the modified context data.
|
|
129
166
|
* @param {Object} [value={}] - The modified context data.
|
|
130
167
|
* @returns {ContextNode}
|
|
131
168
|
*/
|
|
132
|
-
export const context =
|
|
169
|
+
export const context = ( nodeOrValue = null, value = {} ) => {
|
|
170
|
+
|
|
171
|
+
let node = nodeOrValue;
|
|
172
|
+
|
|
173
|
+
if ( node === null || node.isNode !== true ) {
|
|
174
|
+
|
|
175
|
+
value = node || value;
|
|
176
|
+
node = null;
|
|
177
|
+
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return new ContextNode( node, value );
|
|
181
|
+
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* TSL function for defining a uniformFlow context value for a given node.
|
|
186
|
+
*
|
|
187
|
+
* @tsl
|
|
188
|
+
* @function
|
|
189
|
+
* @param {Node} node - The node whose dependencies should all execute within a uniform control-flow path.
|
|
190
|
+
* @returns {ContextNode}
|
|
191
|
+
*/
|
|
192
|
+
export const uniformFlow = ( node ) => context( node, { uniformFlow: true } );
|
|
133
193
|
|
|
134
194
|
/**
|
|
135
195
|
* TSL function for defining a name for the context value for a given node.
|
|
@@ -142,6 +202,61 @@ export const context = /*@__PURE__*/ nodeProxy( ContextNode ).setParameterLength
|
|
|
142
202
|
*/
|
|
143
203
|
export const setName = ( node, name ) => context( node, { nodeName: name } );
|
|
144
204
|
|
|
205
|
+
/**
|
|
206
|
+
* TSL function for defining a built-in shadow context for a given node.
|
|
207
|
+
*
|
|
208
|
+
* @tsl
|
|
209
|
+
* @function
|
|
210
|
+
* @param {ShadowNode} shadowNode - The shadow node representing the light's shadow.
|
|
211
|
+
* @param {Light} light - The light associated with the shadow.
|
|
212
|
+
* @param {Node} [node=null] - The node whose context should be modified.
|
|
213
|
+
* @returns {ContextNode}
|
|
214
|
+
*/
|
|
215
|
+
export function builtinShadowContext( shadowNode, light, node = null ) {
|
|
216
|
+
|
|
217
|
+
return context( node, {
|
|
218
|
+
|
|
219
|
+
getShadow: ( { light: shadowLight, shadowColorNode } ) => {
|
|
220
|
+
|
|
221
|
+
if ( light === shadowLight ) {
|
|
222
|
+
|
|
223
|
+
return shadowColorNode.mul( shadowNode );
|
|
224
|
+
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
return shadowColorNode;
|
|
228
|
+
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
} );
|
|
232
|
+
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* TSL function for defining a built-in ambient occlusion context for a given node.
|
|
237
|
+
*
|
|
238
|
+
* @tsl
|
|
239
|
+
* @function
|
|
240
|
+
* @param {Node} aoNode - The ambient occlusion value node to apply.
|
|
241
|
+
* @param {Node} [node=null] - The node whose context should be modified.
|
|
242
|
+
* @returns {ContextNode}
|
|
243
|
+
*/
|
|
244
|
+
export function builtinAOContext( aoNode, node = null ) {
|
|
245
|
+
|
|
246
|
+
return context( node, {
|
|
247
|
+
|
|
248
|
+
getAO: ( inputNode, { material } ) => {
|
|
249
|
+
|
|
250
|
+
if ( material.transparent === true ) return inputNode;
|
|
251
|
+
|
|
252
|
+
return inputNode !== null ? inputNode.mul( aoNode ) : aoNode;
|
|
253
|
+
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
} );
|
|
257
|
+
|
|
258
|
+
}
|
|
259
|
+
|
|
145
260
|
/**
|
|
146
261
|
* TSL function for defining a label context value for a given node.
|
|
147
262
|
*
|
|
@@ -154,7 +269,7 @@ export const setName = ( node, name ) => context( node, { nodeName: name } );
|
|
|
154
269
|
*/
|
|
155
270
|
export function label( node, name ) {
|
|
156
271
|
|
|
157
|
-
|
|
272
|
+
warn( 'TSL: "label()" has been deprecated. Use "setName()" instead.' ); // @deprecated r179
|
|
158
273
|
|
|
159
274
|
return setName( node, name );
|
|
160
275
|
|
|
@@ -162,4 +277,7 @@ export function label( node, name ) {
|
|
|
162
277
|
|
|
163
278
|
addMethodChaining( 'context', context );
|
|
164
279
|
addMethodChaining( 'label', label );
|
|
280
|
+
addMethodChaining( 'uniformFlow', uniformFlow );
|
|
165
281
|
addMethodChaining( 'setName', setName );
|
|
282
|
+
addMethodChaining( 'builtinShadowContext', ( node, shadowNode, light ) => builtinShadowContext( shadowNode, light, node ) );
|
|
283
|
+
addMethodChaining( 'builtinAOContext', ( node, aoValue ) => builtinAOContext( aoValue, node ) );
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
|
-
import { nodeImmutable
|
|
2
|
+
import { nodeImmutable } from '../tsl/TSLCore.js';
|
|
3
|
+
import { varying } from './VaryingNode.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* This class represents shader indices of different types. The following predefined node
|
|
@@ -10,7 +11,7 @@ import { nodeImmutable, varying } from '../tsl/TSLBase.js';
|
|
|
10
11
|
* - `drawIndex`: The index of a draw call.
|
|
11
12
|
* - `invocationLocalIndex`: The index of a compute invocation within the scope of a workgroup load.
|
|
12
13
|
* - `invocationSubgroupIndex`: The index of a compute invocation within the scope of a subgroup.
|
|
13
|
-
* - `subgroupIndex`: The index of
|
|
14
|
+
* - `subgroupIndex`: The index of a compute invocation's subgroup within its workgroup.
|
|
14
15
|
*
|
|
15
16
|
* @augments Node
|
|
16
17
|
*/
|
|
@@ -25,7 +26,7 @@ class IndexNode extends Node {
|
|
|
25
26
|
/**
|
|
26
27
|
* Constructs a new index node.
|
|
27
28
|
*
|
|
28
|
-
* @param {('vertex'|'instance'|'subgroup'|'invocationLocal'|'invocationSubgroup'|'draw')} scope - The scope of the index node.
|
|
29
|
+
* @param {('vertex'|'instance'|'subgroup'|'invocationLocal'|'invocationGlobal'|'invocationSubgroup'|'draw')} scope - The scope of the index node.
|
|
29
30
|
*/
|
|
30
31
|
constructor( scope ) {
|
|
31
32
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
2
|
import { getValueType, getValueFromType, arrayBufferToBase64 } from './NodeUtils.js';
|
|
3
|
+
import { warn } from '../../utils.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Base class for representing data input nodes.
|
|
@@ -50,7 +51,7 @@ class InputNode extends Node {
|
|
|
50
51
|
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
|
|
54
|
+
generateNodeType( /*builder*/ ) {
|
|
54
55
|
|
|
55
56
|
if ( this.nodeType === null ) {
|
|
56
57
|
|
|
@@ -126,7 +127,7 @@ class InputNode extends Node {
|
|
|
126
127
|
|
|
127
128
|
generate( /*builder, output*/ ) {
|
|
128
129
|
|
|
129
|
-
|
|
130
|
+
warn( 'Abstract function.' );
|
|
130
131
|
|
|
131
132
|
}
|
|
132
133
|
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import Node from './Node.js';
|
|
2
|
+
import InspectorBase from '../../renderers/common/InspectorBase.js';
|
|
3
|
+
import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
|
|
4
|
+
import { NodeUpdateType } from './constants.js';
|
|
5
|
+
import { warnOnce } from '../../utils.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* InspectorNode is a wrapper node that allows inspection of node values during rendering.
|
|
9
|
+
* It can be used to debug or analyze node outputs in the rendering pipeline.
|
|
10
|
+
*
|
|
11
|
+
* @augments Node
|
|
12
|
+
*/
|
|
13
|
+
class InspectorNode extends Node {
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Returns the type of the node.
|
|
17
|
+
*
|
|
18
|
+
* @returns {string}
|
|
19
|
+
*/
|
|
20
|
+
static get type() {
|
|
21
|
+
|
|
22
|
+
return 'InspectorNode';
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Creates an InspectorNode.
|
|
28
|
+
*
|
|
29
|
+
* @param {Node} node - The node to inspect.
|
|
30
|
+
* @param {string} [name=''] - Optional name for the inspector node.
|
|
31
|
+
* @param {Function|null} [callback=null] - Optional callback to modify the node during setup.
|
|
32
|
+
*/
|
|
33
|
+
constructor( node, name = '', callback = null ) {
|
|
34
|
+
|
|
35
|
+
super();
|
|
36
|
+
|
|
37
|
+
this.node = node;
|
|
38
|
+
this.name = name;
|
|
39
|
+
this.callback = callback;
|
|
40
|
+
|
|
41
|
+
this.updateType = NodeUpdateType.FRAME;
|
|
42
|
+
|
|
43
|
+
this.isInspectorNode = true;
|
|
44
|
+
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Returns the name of the inspector node.
|
|
49
|
+
*
|
|
50
|
+
* @returns {string}
|
|
51
|
+
*/
|
|
52
|
+
getName() {
|
|
53
|
+
|
|
54
|
+
return this.name || this.node.name;
|
|
55
|
+
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Updates the inspector node, allowing inspection of the wrapped node.
|
|
60
|
+
*
|
|
61
|
+
* @param {NodeFrame} frame - A reference to the current node frame.
|
|
62
|
+
*/
|
|
63
|
+
update( frame ) {
|
|
64
|
+
|
|
65
|
+
frame.renderer.inspector.inspect( this );
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Returns the type of the wrapped node.
|
|
71
|
+
*
|
|
72
|
+
* @param {NodeBuilder} builder - The node builder.
|
|
73
|
+
* @returns {string}
|
|
74
|
+
*/
|
|
75
|
+
generateNodeType( builder ) {
|
|
76
|
+
|
|
77
|
+
return this.node.getNodeType( builder );
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Sets up the inspector node.
|
|
83
|
+
*
|
|
84
|
+
* @param {NodeBuilder} builder - The node builder.
|
|
85
|
+
* @returns {Node} The setup node.
|
|
86
|
+
*/
|
|
87
|
+
setup( builder ) {
|
|
88
|
+
|
|
89
|
+
let node = this.node;
|
|
90
|
+
|
|
91
|
+
if ( builder.context.inspector === true && this.callback !== null ) {
|
|
92
|
+
|
|
93
|
+
node = this.callback( node );
|
|
94
|
+
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if ( builder.renderer.backend.isWebGPUBackend !== true && builder.renderer.inspector.constructor !== InspectorBase ) {
|
|
98
|
+
|
|
99
|
+
warnOnce( 'TSL: ".toInspector()" is only available with WebGPU.' );
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return node;
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export default InspectorNode;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Creates an inspector node to wrap around a given node for inspection purposes.
|
|
113
|
+
*
|
|
114
|
+
* @tsl
|
|
115
|
+
* @param {Node} node - The node to inspect.
|
|
116
|
+
* @param {string} [name=''] - Optional name for the inspector node.
|
|
117
|
+
* @param {Function|null} [callback=null] - Optional callback to modify the node during setup.
|
|
118
|
+
* @returns {Node} The inspector node.
|
|
119
|
+
*/
|
|
120
|
+
export function inspector( node, name = '', callback = null ) {
|
|
121
|
+
|
|
122
|
+
node = nodeObject( node );
|
|
123
|
+
|
|
124
|
+
return node.before( new InspectorNode( node, name, callback ) );
|
|
125
|
+
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
addMethodChaining( 'toInspector', inspector );
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
2
|
import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
|
|
3
|
+
import { warn } from '../../utils.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* This node can be used as a cache management component for another node.
|
|
@@ -8,11 +9,11 @@ import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
|
|
|
8
9
|
*
|
|
9
10
|
* @augments Node
|
|
10
11
|
*/
|
|
11
|
-
class
|
|
12
|
+
class IsolateNode extends Node {
|
|
12
13
|
|
|
13
14
|
static get type() {
|
|
14
15
|
|
|
15
|
-
return '
|
|
16
|
+
return 'IsolateNode';
|
|
16
17
|
|
|
17
18
|
}
|
|
18
19
|
|
|
@@ -48,11 +49,11 @@ class CacheNode extends Node {
|
|
|
48
49
|
* @readonly
|
|
49
50
|
* @default true
|
|
50
51
|
*/
|
|
51
|
-
this.
|
|
52
|
+
this.isIsolateNode = true;
|
|
52
53
|
|
|
53
54
|
}
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
generateNodeType( builder ) {
|
|
56
57
|
|
|
57
58
|
const previousCache = builder.getCache();
|
|
58
59
|
const cache = builder.getCacheFromNode( this, this.parent );
|
|
@@ -82,19 +83,51 @@ class CacheNode extends Node {
|
|
|
82
83
|
|
|
83
84
|
}
|
|
84
85
|
|
|
86
|
+
setParent( parent ) {
|
|
87
|
+
|
|
88
|
+
this.parent = parent;
|
|
89
|
+
|
|
90
|
+
return this;
|
|
91
|
+
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
getParent() {
|
|
95
|
+
|
|
96
|
+
return this.parent;
|
|
97
|
+
|
|
98
|
+
}
|
|
99
|
+
|
|
85
100
|
}
|
|
86
101
|
|
|
87
|
-
export default
|
|
102
|
+
export default IsolateNode;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* TSL function for creating a cache node.
|
|
106
|
+
*
|
|
107
|
+
* @tsl
|
|
108
|
+
* @function
|
|
109
|
+
* @param {Node} node - The node that should be cached.
|
|
110
|
+
* @returns {IsolateNode}
|
|
111
|
+
*/
|
|
112
|
+
export const isolate = ( node ) => new IsolateNode( nodeObject( node ) );
|
|
88
113
|
|
|
89
114
|
/**
|
|
90
115
|
* TSL function for creating a cache node.
|
|
91
116
|
*
|
|
92
117
|
* @tsl
|
|
93
118
|
* @function
|
|
119
|
+
* @deprecated
|
|
94
120
|
* @param {Node} node - The node that should be cached.
|
|
95
|
-
* @param {boolean} [parent] - Whether this node refers to a shared parent cache or not.
|
|
96
|
-
* @returns {
|
|
121
|
+
* @param {boolean} [parent=true] - Whether this node refers to a shared parent cache or not.
|
|
122
|
+
* @returns {IsolateNode}
|
|
97
123
|
*/
|
|
98
|
-
export
|
|
124
|
+
export function cache( node, parent = true ) {
|
|
125
|
+
|
|
126
|
+
warn( 'TSL: "cache()" has been deprecated. Use "isolate()" instead.' ); // @deprecated r181
|
|
127
|
+
|
|
128
|
+
return isolate( node ).setParent( parent );
|
|
129
|
+
|
|
130
|
+
}
|
|
99
131
|
|
|
100
132
|
addMethodChaining( 'cache', cache );
|
|
133
|
+
addMethodChaining( 'isolate', isolate );
|