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,6 +1,8 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
|
+
import StackTrace from '../core/StackTrace.js';
|
|
2
3
|
import { select } from '../math/ConditionalNode.js';
|
|
3
4
|
import { ShaderNode, nodeProxy, getCurrentStack, setCurrentStack, nodeObject } from '../tsl/TSLBase.js';
|
|
5
|
+
import { error } from '../../utils.js';
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
* Stack is a helper for Nodes that need to produce stack-based code instead of continuous flow.
|
|
@@ -67,6 +69,15 @@ class StackNode extends Node {
|
|
|
67
69
|
*/
|
|
68
70
|
this._expressionNode = null;
|
|
69
71
|
|
|
72
|
+
/**
|
|
73
|
+
* The current node being processed.
|
|
74
|
+
*
|
|
75
|
+
* @private
|
|
76
|
+
* @type {Node}
|
|
77
|
+
* @default null
|
|
78
|
+
*/
|
|
79
|
+
this._currentNode = null;
|
|
80
|
+
|
|
70
81
|
/**
|
|
71
82
|
* This flag can be used for type testing.
|
|
72
83
|
*
|
|
@@ -78,15 +89,21 @@ class StackNode extends Node {
|
|
|
78
89
|
|
|
79
90
|
}
|
|
80
91
|
|
|
81
|
-
|
|
92
|
+
getElementType( builder ) {
|
|
82
93
|
|
|
83
|
-
return this.
|
|
94
|
+
return this.hasOutput( builder ) ? this.outputNode.getElementType( builder ) : 'void';
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
generateNodeType( builder ) {
|
|
99
|
+
|
|
100
|
+
return this.hasOutput( builder ) ? this.outputNode.getNodeType( builder ) : 'void';
|
|
84
101
|
|
|
85
102
|
}
|
|
86
103
|
|
|
87
104
|
getMemberType( builder, name ) {
|
|
88
105
|
|
|
89
|
-
return this.
|
|
106
|
+
return this.hasOutput( builder ) ? this.outputNode.getMemberType( builder, name ) : 'void';
|
|
90
107
|
|
|
91
108
|
}
|
|
92
109
|
|
|
@@ -94,16 +111,38 @@ class StackNode extends Node {
|
|
|
94
111
|
* Adds a node to this stack.
|
|
95
112
|
*
|
|
96
113
|
* @param {Node} node - The node to add.
|
|
114
|
+
* @param {number} [index=this.nodes.length] - The index where the node should be added.
|
|
97
115
|
* @return {StackNode} A reference to this stack node.
|
|
98
116
|
*/
|
|
99
|
-
|
|
117
|
+
addToStack( node, index = this.nodes.length ) {
|
|
100
118
|
|
|
101
|
-
|
|
119
|
+
if ( node.isNode !== true ) {
|
|
120
|
+
|
|
121
|
+
error( 'TSL: Invalid node added to stack.', new StackTrace() );
|
|
122
|
+
return this;
|
|
123
|
+
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
this.nodes.splice( index, 0, node );
|
|
102
127
|
|
|
103
128
|
return this;
|
|
104
129
|
|
|
105
130
|
}
|
|
106
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Adds a node to the stack before the current node.
|
|
134
|
+
*
|
|
135
|
+
* @param {Node} node - The node to add.
|
|
136
|
+
* @return {StackNode} A reference to this stack node.
|
|
137
|
+
*/
|
|
138
|
+
addToStackBefore( node ) {
|
|
139
|
+
|
|
140
|
+
const index = this._currentNode ? this.nodes.indexOf( this._currentNode ) : 0;
|
|
141
|
+
|
|
142
|
+
return this.addToStack( node, index );
|
|
143
|
+
|
|
144
|
+
}
|
|
145
|
+
|
|
107
146
|
/**
|
|
108
147
|
* Represent an `if` statement in TSL.
|
|
109
148
|
*
|
|
@@ -116,7 +155,7 @@ class StackNode extends Node {
|
|
|
116
155
|
const methodNode = new ShaderNode( method );
|
|
117
156
|
this._currentCond = select( boolNode, methodNode );
|
|
118
157
|
|
|
119
|
-
return this.
|
|
158
|
+
return this.addToStack( this._currentCond );
|
|
120
159
|
|
|
121
160
|
}
|
|
122
161
|
|
|
@@ -191,7 +230,7 @@ class StackNode extends Node {
|
|
|
191
230
|
|
|
192
231
|
} else {
|
|
193
232
|
|
|
194
|
-
|
|
233
|
+
error( 'TSL: Invalid parameter length. Case() requires at least two parameters.', new StackTrace() );
|
|
195
234
|
|
|
196
235
|
}
|
|
197
236
|
|
|
@@ -218,7 +257,7 @@ class StackNode extends Node {
|
|
|
218
257
|
|
|
219
258
|
this._currentCond = condNode;
|
|
220
259
|
|
|
221
|
-
return this.
|
|
260
|
+
return this.addToStack( this._currentCond );
|
|
222
261
|
|
|
223
262
|
} else {
|
|
224
263
|
|
|
@@ -253,11 +292,9 @@ class StackNode extends Node {
|
|
|
253
292
|
|
|
254
293
|
for ( const childNode of this.getChildren() ) {
|
|
255
294
|
|
|
256
|
-
if ( childNode.isVarNode && childNode.
|
|
257
|
-
|
|
258
|
-
const properties = builder.getNodeProperties( childNode );
|
|
295
|
+
if ( childNode.isVarNode && childNode.isIntent( builder ) ) {
|
|
259
296
|
|
|
260
|
-
if (
|
|
297
|
+
if ( childNode.isAssign( builder ) !== true ) {
|
|
261
298
|
|
|
262
299
|
continue;
|
|
263
300
|
|
|
@@ -275,26 +312,33 @@ class StackNode extends Node {
|
|
|
275
312
|
|
|
276
313
|
}
|
|
277
314
|
|
|
315
|
+
hasOutput( builder ) {
|
|
316
|
+
|
|
317
|
+
return this.outputNode && this.outputNode.isNode && this.outputNode.getNodeType( builder ) !== 'void';
|
|
318
|
+
|
|
319
|
+
}
|
|
320
|
+
|
|
278
321
|
build( builder, ...params ) {
|
|
279
322
|
|
|
280
|
-
const previousBuildStack = builder.currentStack;
|
|
281
323
|
const previousStack = getCurrentStack();
|
|
282
324
|
|
|
325
|
+
const buildStage = builder.buildStage;
|
|
326
|
+
|
|
283
327
|
setCurrentStack( this );
|
|
284
328
|
|
|
285
|
-
builder.
|
|
329
|
+
builder.setActiveStack( this );
|
|
286
330
|
|
|
287
|
-
|
|
331
|
+
//
|
|
288
332
|
|
|
289
|
-
|
|
333
|
+
const buildNode = ( node ) => {
|
|
290
334
|
|
|
291
|
-
|
|
335
|
+
this._currentNode = node;
|
|
292
336
|
|
|
293
|
-
|
|
337
|
+
if ( node.isVarNode && node.isIntent( builder ) ) {
|
|
294
338
|
|
|
295
|
-
if (
|
|
339
|
+
if ( node.isAssign( builder ) !== true ) {
|
|
296
340
|
|
|
297
|
-
|
|
341
|
+
return;
|
|
298
342
|
|
|
299
343
|
}
|
|
300
344
|
|
|
@@ -315,7 +359,7 @@ class StackNode extends Node {
|
|
|
315
359
|
|
|
316
360
|
if ( node.isVarNode && parents && parents.length === 1 && parents[ 0 ] && parents[ 0 ].isStackNode ) {
|
|
317
361
|
|
|
318
|
-
|
|
362
|
+
return; // skip var nodes that are only used in .toVarying()
|
|
319
363
|
|
|
320
364
|
}
|
|
321
365
|
|
|
@@ -323,13 +367,45 @@ class StackNode extends Node {
|
|
|
323
367
|
|
|
324
368
|
}
|
|
325
369
|
|
|
370
|
+
};
|
|
371
|
+
|
|
372
|
+
//
|
|
373
|
+
|
|
374
|
+
const nodes = [ ...this.nodes ];
|
|
375
|
+
|
|
376
|
+
for ( const node of nodes ) {
|
|
377
|
+
|
|
378
|
+
buildNode( node );
|
|
379
|
+
|
|
326
380
|
}
|
|
327
381
|
|
|
328
|
-
|
|
382
|
+
this._currentNode = null;
|
|
383
|
+
|
|
384
|
+
const newNodes = this.nodes.filter( ( node ) => nodes.indexOf( node ) === - 1 );
|
|
385
|
+
|
|
386
|
+
for ( const node of newNodes ) {
|
|
387
|
+
|
|
388
|
+
buildNode( node );
|
|
389
|
+
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
//
|
|
393
|
+
|
|
394
|
+
let result;
|
|
395
|
+
|
|
396
|
+
if ( this.hasOutput( builder ) ) {
|
|
397
|
+
|
|
398
|
+
result = this.outputNode.build( builder, ...params );
|
|
399
|
+
|
|
400
|
+
} else {
|
|
401
|
+
|
|
402
|
+
result = super.build( builder, ...params );
|
|
403
|
+
|
|
404
|
+
}
|
|
329
405
|
|
|
330
406
|
setCurrentStack( previousStack );
|
|
331
407
|
|
|
332
|
-
builder.
|
|
408
|
+
builder.removeActiveStack( this );
|
|
333
409
|
|
|
334
410
|
return result;
|
|
335
411
|
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// Pre-compiled RegExp patterns for ignored files
|
|
2
|
+
const IGNORED_FILES = [
|
|
3
|
+
/^StackTrace\.js$/,
|
|
4
|
+
/^TSLCore\.js$/,
|
|
5
|
+
/^.*Node\.js$/,
|
|
6
|
+
/^three\.webgpu.*\.js$/
|
|
7
|
+
];
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Parses the stack trace and filters out ignored files.
|
|
11
|
+
* Returns an array with function name, file, line, and column.
|
|
12
|
+
*/
|
|
13
|
+
function getFilteredStack( stack ) {
|
|
14
|
+
|
|
15
|
+
// Pattern to extract function name, file, line, and column from different browsers
|
|
16
|
+
// Chrome: "at functionName (file.js:1:2)" or "at file.js:1:2"
|
|
17
|
+
// Firefox: "functionName@file.js:1:2"
|
|
18
|
+
const regex = /(?:at\s+(.+?)\s+\()?(?:(.+?)@)?([^@\s()]+):(\d+):(\d+)/;
|
|
19
|
+
|
|
20
|
+
return stack.split( '\n' )
|
|
21
|
+
.map( line => {
|
|
22
|
+
|
|
23
|
+
const match = line.match( regex );
|
|
24
|
+
if ( ! match ) return null; // Skip if line format is invalid
|
|
25
|
+
|
|
26
|
+
// Chrome: match[1], Firefox: match[2]
|
|
27
|
+
const fn = match[ 1 ] || match[ 2 ] || '';
|
|
28
|
+
const file = match[ 3 ].split( '?' )[ 0 ]; // Clean file name (Vite/HMR)
|
|
29
|
+
const lineNum = parseInt( match[ 4 ], 10 );
|
|
30
|
+
const column = parseInt( match[ 5 ], 10 );
|
|
31
|
+
|
|
32
|
+
// Extract only the filename from full path
|
|
33
|
+
const fileName = file.split( '/' ).pop();
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
fn: fn,
|
|
37
|
+
file: fileName,
|
|
38
|
+
line: lineNum,
|
|
39
|
+
column: column
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
} )
|
|
43
|
+
.filter( frame => {
|
|
44
|
+
|
|
45
|
+
// Only keep frames that are valid and not in the ignore list
|
|
46
|
+
return frame && ! IGNORED_FILES.some( regex => regex.test( frame.file ) );
|
|
47
|
+
|
|
48
|
+
} );
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Class representing a stack trace for debugging purposes.
|
|
54
|
+
*/
|
|
55
|
+
class StackTrace {
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Creates a StackTrace instance by capturing and filtering the current stack trace.
|
|
59
|
+
*
|
|
60
|
+
* @param {Error|string|null} stackMessage - An optional stack trace to use instead of capturing a new one.
|
|
61
|
+
*/
|
|
62
|
+
constructor( stackMessage = null ) {
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* This flag can be used for type testing.
|
|
66
|
+
*
|
|
67
|
+
* @type {boolean}
|
|
68
|
+
* @readonly
|
|
69
|
+
* @default true
|
|
70
|
+
*/
|
|
71
|
+
this.isStackTrace = true;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* The stack trace.
|
|
75
|
+
*
|
|
76
|
+
* @type {Array<{fn: string, file: string, line: number, column: number}>}
|
|
77
|
+
*/
|
|
78
|
+
this.stack = getFilteredStack( stackMessage ? stackMessage : new Error().stack );
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Returns a formatted location string of the top stack frame.
|
|
84
|
+
*
|
|
85
|
+
* @returns {string} The formatted stack trace message.
|
|
86
|
+
*/
|
|
87
|
+
getLocation() {
|
|
88
|
+
|
|
89
|
+
if ( this.stack.length === 0 ) {
|
|
90
|
+
|
|
91
|
+
return '[Unknown location]';
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const mainStack = this.stack[ 0 ];
|
|
96
|
+
|
|
97
|
+
const fn = mainStack.fn;
|
|
98
|
+
const fnName = fn ? `"${ fn }()" at ` : '';
|
|
99
|
+
|
|
100
|
+
return `${fnName}"${mainStack.file}:${mainStack.line}"`; // :${mainStack.column}
|
|
101
|
+
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Returns the full error message including the stack trace.
|
|
106
|
+
*
|
|
107
|
+
* @param {string} message - The error message.
|
|
108
|
+
* @returns {string} The full error message with stack trace.
|
|
109
|
+
*/
|
|
110
|
+
getError( message ) {
|
|
111
|
+
|
|
112
|
+
if ( this.stack.length === 0 ) {
|
|
113
|
+
|
|
114
|
+
return message;
|
|
115
|
+
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Output: "Error: message\n at functionName (file.js:line:column)"
|
|
119
|
+
const stackString = this.stack.map( frame => {
|
|
120
|
+
|
|
121
|
+
const location = `${ frame.file }:${ frame.line }:${ frame.column }`;
|
|
122
|
+
|
|
123
|
+
if ( frame.fn ) {
|
|
124
|
+
|
|
125
|
+
return ` at ${ frame.fn } (${ location })`;
|
|
126
|
+
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return ` at ${ location }`;
|
|
130
|
+
|
|
131
|
+
} ).join( '\n' );
|
|
132
|
+
|
|
133
|
+
return `${ message }\n${ stackString }`;
|
|
134
|
+
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export default StackTrace;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
2
|
import StructTypeNode from './StructTypeNode.js';
|
|
3
|
-
import { nodeObject } from '../tsl/TSLCore.js';
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* StructNode allows to create custom structures with multiple members.
|
|
@@ -30,26 +29,41 @@ class StructNode extends Node {
|
|
|
30
29
|
|
|
31
30
|
}
|
|
32
31
|
|
|
33
|
-
constructor(
|
|
32
|
+
constructor( structTypeNode, values ) {
|
|
34
33
|
|
|
35
34
|
super( 'vec3' );
|
|
36
35
|
|
|
37
|
-
this.
|
|
36
|
+
this.structTypeNode = structTypeNode;
|
|
38
37
|
this.values = values;
|
|
39
38
|
|
|
40
39
|
this.isStructNode = true;
|
|
41
40
|
|
|
42
41
|
}
|
|
43
42
|
|
|
44
|
-
|
|
43
|
+
generateNodeType( builder ) {
|
|
45
44
|
|
|
46
|
-
return this.
|
|
45
|
+
return this.structTypeNode.getNodeType( builder );
|
|
47
46
|
|
|
48
47
|
}
|
|
49
48
|
|
|
50
49
|
getMemberType( builder, name ) {
|
|
51
50
|
|
|
52
|
-
return this.
|
|
51
|
+
return this.structTypeNode.getMemberType( builder, name );
|
|
52
|
+
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
_getChildren() {
|
|
56
|
+
|
|
57
|
+
// Ensure struct type is the last child for correct code generation order
|
|
58
|
+
|
|
59
|
+
const children = super._getChildren();
|
|
60
|
+
|
|
61
|
+
const structTypeProperty = children.find( child => child.childNode === this.structTypeNode );
|
|
62
|
+
|
|
63
|
+
children.splice( children.indexOf( structTypeProperty ), 1 );
|
|
64
|
+
children.push( structTypeProperty );
|
|
65
|
+
|
|
66
|
+
return children;
|
|
53
67
|
|
|
54
68
|
}
|
|
55
69
|
|
|
@@ -59,7 +73,7 @@ class StructNode extends Node {
|
|
|
59
73
|
const structType = nodeVar.type;
|
|
60
74
|
const propertyName = builder.getPropertyName( nodeVar );
|
|
61
75
|
|
|
62
|
-
builder.addLineFlowCode( `${ propertyName } = ${ builder.generateStruct( structType, this.
|
|
76
|
+
builder.addLineFlowCode( `${ propertyName } = ${ builder.generateStruct( structType, this.structTypeNode.membersLayout, this.values ) }`, this );
|
|
63
77
|
|
|
64
78
|
return nodeVar.name;
|
|
65
79
|
|
|
@@ -108,7 +122,7 @@ export const struct = ( membersLayout, name = null ) => {
|
|
|
108
122
|
|
|
109
123
|
}
|
|
110
124
|
|
|
111
|
-
return
|
|
125
|
+
return new StructNode( structLayout, values );
|
|
112
126
|
|
|
113
127
|
};
|
|
114
128
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import Node from './Node.js';
|
|
3
|
-
import {
|
|
3
|
+
import { getAlignmentFromType, getMemoryLengthFromType } from './NodeUtils.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Generates a layout for struct members.
|
|
@@ -86,29 +86,23 @@ class StructTypeNode extends Node {
|
|
|
86
86
|
*/
|
|
87
87
|
getLength() {
|
|
88
88
|
|
|
89
|
-
const GPU_CHUNK_BYTES = 8;
|
|
90
89
|
const BYTES_PER_ELEMENT = Float32Array.BYTES_PER_ELEMENT;
|
|
91
|
-
|
|
92
|
-
let offset = 0; // global buffer offset in
|
|
90
|
+
let maxAlignment = 1; // maximum alignment value in this struct
|
|
91
|
+
let offset = 0; // global buffer offset in 4 byte elements
|
|
93
92
|
|
|
94
93
|
for ( const member of this.membersLayout ) {
|
|
95
94
|
|
|
96
95
|
const type = member.type;
|
|
97
96
|
|
|
98
|
-
const itemSize = getMemoryLengthFromType( type )
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
const chunkOffset = offset % GPU_CHUNK_BYTES; // offset in the current chunk
|
|
102
|
-
const chunkPadding = chunkOffset % boundary; // required padding to match boundary
|
|
103
|
-
const chunkStart = chunkOffset + chunkPadding; // start position in the current chunk for the data
|
|
104
|
-
|
|
105
|
-
offset += chunkPadding;
|
|
97
|
+
const itemSize = getMemoryLengthFromType( type );
|
|
98
|
+
const alignment = getAlignmentFromType( type ) / BYTES_PER_ELEMENT;
|
|
99
|
+
maxAlignment = Math.max( maxAlignment, alignment );
|
|
106
100
|
|
|
107
|
-
//
|
|
108
|
-
|
|
101
|
+
const chunkOffset = offset % maxAlignment; // offset in the current chunk of maxAlignment elements
|
|
102
|
+
const overhang = chunkOffset % alignment; // distance from the last aligned offset
|
|
103
|
+
if ( overhang !== 0 ) {
|
|
109
104
|
|
|
110
|
-
|
|
111
|
-
offset += ( GPU_CHUNK_BYTES - chunkStart );
|
|
105
|
+
offset += alignment - overhang; // move to next aligned offset
|
|
112
106
|
|
|
113
107
|
}
|
|
114
108
|
|
|
@@ -116,7 +110,7 @@ class StructTypeNode extends Node {
|
|
|
116
110
|
|
|
117
111
|
}
|
|
118
112
|
|
|
119
|
-
return ( Math.ceil( offset /
|
|
113
|
+
return ( Math.ceil( offset / maxAlignment ) * maxAlignment ); // ensure length is a multiple of maxAlignment
|
|
120
114
|
|
|
121
115
|
}
|
|
122
116
|
|
|
@@ -128,7 +122,7 @@ class StructTypeNode extends Node {
|
|
|
128
122
|
|
|
129
123
|
}
|
|
130
124
|
|
|
131
|
-
|
|
125
|
+
generateNodeType( builder ) {
|
|
132
126
|
|
|
133
127
|
const structType = builder.getStructTypeFromNode( this, this.membersLayout, this.name );
|
|
134
128
|
|
|
@@ -138,6 +132,7 @@ class StructTypeNode extends Node {
|
|
|
138
132
|
|
|
139
133
|
setup( builder ) {
|
|
140
134
|
|
|
135
|
+
builder.getStructTypeFromNode( this, this.membersLayout, this.name );
|
|
141
136
|
builder.addInclude( this );
|
|
142
137
|
|
|
143
138
|
}
|
|
@@ -7,7 +7,7 @@ import { nodeObject } from '../tsl/TSLCore.js';
|
|
|
7
7
|
* @augments Node
|
|
8
8
|
* @param {Node} node - The node to be built in the sub-build.
|
|
9
9
|
* @param {string} name - The name of the sub-build.
|
|
10
|
-
* @param {string
|
|
10
|
+
* @param {?string} [nodeType=null] - The type of the node, if known.
|
|
11
11
|
*/
|
|
12
12
|
class SubBuildNode extends Node {
|
|
13
13
|
|
|
@@ -46,7 +46,7 @@ class SubBuildNode extends Node {
|
|
|
46
46
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
generateNodeType( builder ) {
|
|
50
50
|
|
|
51
51
|
if ( this.nodeType !== null ) return this.nodeType;
|
|
52
52
|
|
|
@@ -83,7 +83,7 @@ export default SubBuildNode;
|
|
|
83
83
|
* @function
|
|
84
84
|
* @param {Node} node - The node to be built in the sub-build.
|
|
85
85
|
* @param {string} name - The name of the sub-build.
|
|
86
|
-
* @param {string
|
|
86
|
+
* @param {?string} [type=null] - The type of the node, if known.
|
|
87
87
|
* @returns {Node} A node object wrapping the SubBuildNode instance.
|
|
88
88
|
*/
|
|
89
|
-
export const subBuild = ( node, name, type = null ) =>
|
|
89
|
+
export const subBuild = ( node, name, type = null ) => new SubBuildNode( nodeObject( node ), name, type );
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
|
+
import { NodeUpdateType } from './constants.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* This node can be used to group single instances of {@link UniformNode}
|
|
@@ -27,8 +28,9 @@ class UniformGroupNode extends Node {
|
|
|
27
28
|
* @param {string} name - The name of the uniform group node.
|
|
28
29
|
* @param {boolean} [shared=false] - Whether this uniform group node is shared or not.
|
|
29
30
|
* @param {number} [order=1] - Influences the internal sorting.
|
|
31
|
+
* @param {string|null} [updateType=null] - The update type of the uniform group node.
|
|
30
32
|
*/
|
|
31
|
-
constructor( name, shared = false, order = 1 ) {
|
|
33
|
+
constructor( name, shared = false, order = 1, updateType = null ) {
|
|
32
34
|
|
|
33
35
|
super( 'string' );
|
|
34
36
|
|
|
@@ -56,6 +58,14 @@ class UniformGroupNode extends Node {
|
|
|
56
58
|
*/
|
|
57
59
|
this.order = order;
|
|
58
60
|
|
|
61
|
+
/**
|
|
62
|
+
* The update type of the uniform group node.
|
|
63
|
+
*
|
|
64
|
+
* @type {string|null}
|
|
65
|
+
* @default null
|
|
66
|
+
*/
|
|
67
|
+
this.updateType = updateType;
|
|
68
|
+
|
|
59
69
|
/**
|
|
60
70
|
* This flag can be used for type testing.
|
|
61
71
|
*
|
|
@@ -67,6 +77,21 @@ class UniformGroupNode extends Node {
|
|
|
67
77
|
|
|
68
78
|
}
|
|
69
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Marks the uniform group node as needing an update.
|
|
82
|
+
* This will trigger the necessary updates in the rendering process.
|
|
83
|
+
*/
|
|
84
|
+
update() {
|
|
85
|
+
|
|
86
|
+
this.needsUpdate = true;
|
|
87
|
+
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Serializes the uniform group node to a JSON object.
|
|
92
|
+
*
|
|
93
|
+
* @param {Object} data - The object to store the serialized data.
|
|
94
|
+
*/
|
|
70
95
|
serialize( data ) {
|
|
71
96
|
|
|
72
97
|
super.serialize( data );
|
|
@@ -77,6 +102,11 @@ class UniformGroupNode extends Node {
|
|
|
77
102
|
|
|
78
103
|
}
|
|
79
104
|
|
|
105
|
+
/**
|
|
106
|
+
* Deserializes the uniform group node from a JSON object.
|
|
107
|
+
*
|
|
108
|
+
* @param {Object} data - The object containing the serialized data.
|
|
109
|
+
*/
|
|
80
110
|
deserialize( data ) {
|
|
81
111
|
|
|
82
112
|
super.deserialize( data );
|
|
@@ -99,7 +129,7 @@ export default UniformGroupNode;
|
|
|
99
129
|
* @param {string} name - The name of the uniform group node.
|
|
100
130
|
* @returns {UniformGroupNode}
|
|
101
131
|
*/
|
|
102
|
-
export const uniformGroup = ( name ) => new UniformGroupNode( name );
|
|
132
|
+
export const uniformGroup = ( name, order = 1, updateType = null ) => new UniformGroupNode( name, false, order, updateType );
|
|
103
133
|
|
|
104
134
|
/**
|
|
105
135
|
* TSL function for creating a shared uniform group node with the given name and order.
|
|
@@ -110,7 +140,7 @@ export const uniformGroup = ( name ) => new UniformGroupNode( name );
|
|
|
110
140
|
* @param {number} [order=0] - Influences the internal sorting.
|
|
111
141
|
* @returns {UniformGroupNode}
|
|
112
142
|
*/
|
|
113
|
-
export const sharedUniformGroup = ( name, order = 0 ) => new UniformGroupNode( name, true, order );
|
|
143
|
+
export const sharedUniformGroup = ( name, order = 0, updateType = null ) => new UniformGroupNode( name, true, order, updateType );
|
|
114
144
|
|
|
115
145
|
/**
|
|
116
146
|
* TSL object that represents a shared uniform group node which is updated once per frame.
|
|
@@ -118,7 +148,7 @@ export const sharedUniformGroup = ( name, order = 0 ) => new UniformGroupNode( n
|
|
|
118
148
|
* @tsl
|
|
119
149
|
* @type {UniformGroupNode}
|
|
120
150
|
*/
|
|
121
|
-
export const frameGroup = /*@__PURE__*/ sharedUniformGroup( 'frame' );
|
|
151
|
+
export const frameGroup = /*@__PURE__*/ sharedUniformGroup( 'frame', 0, NodeUpdateType.FRAME );
|
|
122
152
|
|
|
123
153
|
/**
|
|
124
154
|
* TSL object that represents a shared uniform group node which is updated once per render.
|
|
@@ -126,7 +156,7 @@ export const frameGroup = /*@__PURE__*/ sharedUniformGroup( 'frame' );
|
|
|
126
156
|
* @tsl
|
|
127
157
|
* @type {UniformGroupNode}
|
|
128
158
|
*/
|
|
129
|
-
export const renderGroup = /*@__PURE__*/ sharedUniformGroup( 'render' );
|
|
159
|
+
export const renderGroup = /*@__PURE__*/ sharedUniformGroup( 'render', 0, NodeUpdateType.RENDER );
|
|
130
160
|
|
|
131
161
|
/**
|
|
132
162
|
* TSL object that represents a uniform group node which is updated once per object.
|
|
@@ -134,4 +164,4 @@ export const renderGroup = /*@__PURE__*/ sharedUniformGroup( 'render' );
|
|
|
134
164
|
* @tsl
|
|
135
165
|
* @type {UniformGroupNode}
|
|
136
166
|
*/
|
|
137
|
-
export const objectGroup = /*@__PURE__*/ uniformGroup( 'object' );
|
|
167
|
+
export const objectGroup = /*@__PURE__*/ uniformGroup( 'object', 1, NodeUpdateType.OBJECT );
|