@plastic-software/three 0.175.14 → 0.179.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/README.md +4 -4
- package/build/three.cjs +8402 -6787
- package/build/three.core.js +8007 -6688
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +397 -102
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +84 -27
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +6831 -2838
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +6648 -2838
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -3
- package/examples/jsm/animation/AnimationClipCreator.js +1 -0
- package/examples/jsm/animation/CCDIKSolver.js +6 -3
- package/examples/jsm/capabilities/WebGL.js +1 -27
- package/examples/jsm/capabilities/WebGPU.js +2 -1
- package/examples/jsm/controls/ArcballControls.js +15 -4
- package/examples/jsm/controls/DragControls.js +1 -0
- package/examples/jsm/controls/FirstPersonControls.js +1 -0
- package/examples/jsm/controls/FlyControls.js +1 -0
- package/examples/jsm/controls/MapControls.js +1 -0
- package/examples/jsm/controls/OrbitControls.js +1 -0
- package/examples/jsm/controls/PointerLockControls.js +5 -3
- package/examples/jsm/controls/TrackballControls.js +1 -0
- package/examples/jsm/controls/TransformControls.js +62 -14
- package/examples/jsm/csm/CSM.js +2 -0
- package/examples/jsm/csm/CSMFrustum.js +2 -0
- package/examples/jsm/csm/CSMHelper.js +1 -0
- package/examples/jsm/csm/CSMShader.js +4 -1
- package/examples/jsm/csm/CSMShadowNode.js +22 -8
- package/examples/jsm/curves/CurveExtras.js +14 -0
- package/examples/jsm/curves/NURBSCurve.js +1 -0
- package/examples/jsm/curves/NURBSSurface.js +2 -0
- package/examples/jsm/curves/NURBSUtils.js +4 -1
- package/examples/jsm/curves/NURBSVolume.js +2 -0
- package/examples/jsm/effects/AnaglyphEffect.js +2 -0
- package/examples/jsm/effects/AsciiEffect.js +2 -0
- package/examples/jsm/effects/OutlineEffect.js +2 -0
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -0
- package/examples/jsm/effects/StereoEffect.js +2 -0
- package/examples/jsm/environments/DebugEnvironment.js +1 -0
- package/examples/jsm/environments/RoomEnvironment.js +57 -38
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -0
- package/examples/jsm/exporters/GLTFExporter.js +7 -4
- package/examples/jsm/exporters/KTX2Exporter.js +2 -0
- package/examples/jsm/exporters/OBJExporter.js +3 -1
- package/examples/jsm/exporters/PLYExporter.js +4 -2
- package/examples/jsm/exporters/STLExporter.js +2 -0
- package/examples/jsm/exporters/USDZExporter.js +679 -300
- package/examples/jsm/geometries/BoxLineGeometry.js +1 -0
- package/examples/jsm/geometries/ConvexGeometry.js +1 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -0
- package/examples/jsm/geometries/ParametricFunctions.js +4 -1
- package/examples/jsm/geometries/ParametricGeometry.js +1 -0
- package/examples/jsm/geometries/RoundedBoxGeometry.js +48 -8
- package/examples/jsm/geometries/TeapotGeometry.js +1 -0
- package/examples/jsm/geometries/TextGeometry.js +1 -0
- package/examples/jsm/helpers/LightProbeHelper.js +1 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -0
- package/examples/jsm/helpers/OctreeHelper.js +1 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +1 -0
- package/examples/jsm/helpers/RapierHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +5 -4
- package/examples/jsm/helpers/VertexNormalsHelper.js +1 -0
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -0
- package/examples/jsm/helpers/ViewHelper.js +1 -0
- package/examples/jsm/interactive/HTMLMesh.js +11 -2
- package/examples/jsm/interactive/InteractiveGroup.js +1 -0
- package/examples/jsm/interactive/SelectionBox.js +2 -0
- package/examples/jsm/interactive/SelectionHelper.js +2 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lighting/TiledLighting.js +1 -0
- package/examples/jsm/lights/LightProbeGenerator.js +15 -3
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
- package/examples/jsm/lines/Line2.js +1 -0
- package/examples/jsm/lines/LineGeometry.js +1 -0
- package/examples/jsm/lines/LineMaterial.js +4 -4
- package/examples/jsm/lines/LineSegments2.js +1 -0
- package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
- package/examples/jsm/lines/Wireframe.js +1 -0
- package/examples/jsm/lines/WireframeGeometry2.js +1 -0
- package/examples/jsm/lines/webgpu/Line2.js +1 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +1 -0
- package/examples/jsm/loaders/AMFLoader.js +1 -0
- package/examples/jsm/loaders/BVHLoader.js +1 -0
- package/examples/jsm/loaders/ColladaLoader.js +6 -5
- package/examples/jsm/loaders/DDSLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -1
- package/examples/jsm/loaders/EXRLoader.js +211 -22
- package/examples/jsm/loaders/FBXLoader.js +25 -23
- package/examples/jsm/loaders/FontLoader.js +1 -0
- package/examples/jsm/loaders/GCodeLoader.js +1 -0
- package/examples/jsm/loaders/GLTFLoader.js +10 -82
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
- package/examples/jsm/loaders/IESLoader.js +1 -0
- package/examples/jsm/loaders/KMZLoader.js +1 -0
- package/examples/jsm/loaders/KTX2Loader.js +67 -26
- package/examples/jsm/loaders/KTXLoader.js +1 -0
- package/examples/jsm/loaders/LDrawLoader.js +55 -3
- package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
- package/examples/jsm/loaders/LUTImageLoader.js +1 -0
- package/examples/jsm/loaders/LWOLoader.js +1 -13
- package/examples/jsm/loaders/LottieLoader.js +15 -0
- package/examples/jsm/loaders/MD2Loader.js +1 -0
- package/examples/jsm/loaders/MDDLoader.js +1 -0
- package/examples/jsm/loaders/MTLLoader.js +4 -3
- package/examples/jsm/loaders/MaterialXLoader.js +213 -30
- package/examples/jsm/loaders/NRRDLoader.js +1 -0
- package/examples/jsm/loaders/OBJLoader.js +1 -0
- package/examples/jsm/loaders/PCDLoader.js +122 -19
- package/examples/jsm/loaders/PDBLoader.js +1 -0
- package/examples/jsm/loaders/PLYLoader.js +1 -0
- package/examples/jsm/loaders/PVRLoader.js +1 -0
- package/examples/jsm/loaders/RGBELoader.js +1 -0
- package/examples/jsm/loaders/RGBMLoader.js +1 -0
- package/examples/jsm/loaders/STLLoader.js +1 -0
- package/examples/jsm/loaders/SVGLoader.js +1 -0
- package/examples/jsm/loaders/TDSLoader.js +1 -0
- package/examples/jsm/loaders/TGALoader.js +1 -0
- package/examples/jsm/loaders/TIFFLoader.js +1 -0
- package/examples/jsm/loaders/TTFLoader.js +14 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -891
- package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +3 -2
- package/examples/jsm/loaders/VTKLoader.js +1 -0
- package/examples/jsm/loaders/XYZLoader.js +1 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
- package/examples/jsm/math/Capsule.js +2 -0
- package/examples/jsm/math/ColorConverter.js +1 -0
- package/examples/jsm/math/ConvexHull.js +2 -0
- package/examples/jsm/math/ImprovedNoise.js +19 -14
- package/examples/jsm/math/Lut.js +2 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
- package/examples/jsm/math/OBB.js +2 -0
- package/examples/jsm/math/Octree.js +20 -1
- package/examples/jsm/math/SimplexNoise.js +2 -0
- package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/Gyroscope.js +1 -0
- package/examples/jsm/misc/MD2Character.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
- package/examples/jsm/misc/MorphAnimMesh.js +1 -0
- package/examples/jsm/misc/MorphBlendMesh.js +1 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +5 -0
- package/examples/jsm/misc/TubePainter.js +1 -0
- package/examples/jsm/misc/Volume.js +2 -0
- package/examples/jsm/misc/VolumeSlice.js +1 -0
- package/examples/jsm/modifiers/CurveModifier.js +3 -0
- package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
- package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
- package/examples/jsm/modifiers/TessellateModifier.js +2 -0
- package/examples/jsm/objects/GroundedSkybox.js +1 -0
- package/examples/jsm/objects/Lensflare.js +3 -0
- package/examples/jsm/objects/LensflareMesh.js +4 -3
- package/examples/jsm/objects/MarchingCubes.js +2 -0
- package/examples/jsm/objects/Reflector.js +1 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Refractor.js +1 -0
- package/examples/jsm/objects/ShadowMesh.js +1 -0
- package/examples/jsm/objects/Sky.js +2 -1
- package/examples/jsm/objects/SkyMesh.js +22 -19
- package/examples/jsm/objects/Water.js +1 -0
- package/examples/jsm/objects/Water2.js +1 -0
- package/examples/jsm/objects/Water2Mesh.js +3 -1
- package/examples/jsm/objects/WaterMesh.js +2 -1
- package/examples/jsm/physics/AmmoPhysics.js +1 -0
- package/examples/jsm/physics/JoltPhysics.js +1 -0
- package/examples/jsm/physics/RapierPhysics.js +149 -13
- package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
- package/examples/jsm/postprocessing/BloomPass.js +2 -1
- package/examples/jsm/postprocessing/BokehPass.js +2 -1
- package/examples/jsm/postprocessing/ClearPass.js +1 -0
- package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
- package/examples/jsm/postprocessing/EffectComposer.js +4 -2
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +1 -0
- package/examples/jsm/postprocessing/GTAOPass.js +14 -12
- package/examples/jsm/postprocessing/GlitchPass.js +2 -1
- package/examples/jsm/postprocessing/HalftonePass.js +2 -1
- package/examples/jsm/postprocessing/LUTPass.js +1 -0
- package/examples/jsm/postprocessing/MaskPass.js +1 -0
- package/examples/jsm/postprocessing/OutlinePass.js +22 -19
- package/examples/jsm/postprocessing/OutputPass.js +1 -0
- package/examples/jsm/postprocessing/Pass.js +3 -1
- package/examples/jsm/postprocessing/RenderPass.js +1 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
- package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
- package/examples/jsm/postprocessing/SAOPass.js +3 -2
- package/examples/jsm/postprocessing/SMAAPass.js +3 -2
- package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
- package/examples/jsm/postprocessing/SSAOPass.js +12 -10
- package/examples/jsm/postprocessing/SSRPass.js +4 -3
- package/examples/jsm/postprocessing/SavePass.js +2 -1
- package/examples/jsm/postprocessing/ShaderPass.js +1 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
- package/examples/jsm/postprocessing/TexturePass.js +1 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
- package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
- package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
- package/examples/jsm/renderers/Projector.js +2 -0
- package/examples/jsm/renderers/SVGRenderer.js +3 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
- package/examples/jsm/shaders/AfterimageShader.js +4 -1
- package/examples/jsm/shaders/BasicShader.js +4 -1
- package/examples/jsm/shaders/BleachBypassShader.js +4 -1
- package/examples/jsm/shaders/BlendShader.js +4 -1
- package/examples/jsm/shaders/BokehShader.js +4 -1
- package/examples/jsm/shaders/BokehShader2.js +4 -1
- package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
- package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
- package/examples/jsm/shaders/ColorifyShader.js +4 -1
- package/examples/jsm/shaders/ConvolutionShader.js +4 -1
- package/examples/jsm/shaders/CopyShader.js +4 -1
- package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
- package/examples/jsm/shaders/DigitalGlitch.js +4 -1
- package/examples/jsm/shaders/DotScreenShader.js +4 -1
- package/examples/jsm/shaders/ExposureShader.js +4 -1
- package/examples/jsm/shaders/FXAAShader.js +4 -1
- package/examples/jsm/shaders/FilmShader.js +4 -1
- package/examples/jsm/shaders/FocusShader.js +4 -1
- package/examples/jsm/shaders/FreiChenShader.js +4 -1
- package/examples/jsm/shaders/GTAOShader.js +4 -1
- package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
- package/examples/jsm/shaders/GodRaysShader.js +4 -1
- package/examples/jsm/shaders/HalftoneShader.js +4 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/HueSaturationShader.js +4 -1
- package/examples/jsm/shaders/KaleidoShader.js +4 -1
- package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
- package/examples/jsm/shaders/LuminosityShader.js +4 -1
- package/examples/jsm/shaders/MirrorShader.js +4 -1
- package/examples/jsm/shaders/NormalMapShader.js +4 -1
- package/examples/jsm/shaders/OutputShader.js +4 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
- package/examples/jsm/shaders/RGBShiftShader.js +4 -1
- package/examples/jsm/shaders/SAOShader.js +4 -1
- package/examples/jsm/shaders/SMAAShader.js +1 -0
- package/examples/jsm/shaders/SSAOShader.js +4 -1
- package/examples/jsm/shaders/SSRShader.js +1 -0
- package/examples/jsm/shaders/SepiaShader.js +4 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
- package/examples/jsm/shaders/TechnicolorShader.js +4 -1
- package/examples/jsm/shaders/ToonShader.js +2 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +15 -3
- package/examples/jsm/shaders/VelocityShader.js +4 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/VignetteShader.js +4 -1
- package/examples/jsm/shaders/VolumeShader.js +5 -2
- package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
- package/examples/jsm/textures/FlakesTexture.js +2 -0
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +227 -88
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +234 -85
- package/examples/jsm/transpiler/Transpiler.js +19 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +788 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
- package/examples/jsm/tsl/display/BloomNode.js +9 -7
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
- package/examples/jsm/tsl/display/FXAANode.js +3 -2
- package/examples/jsm/tsl/display/FilmNode.js +1 -0
- package/examples/jsm/tsl/display/GTAONode.js +1 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +9 -36
- package/examples/jsm/tsl/display/LensflareNode.js +1 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
- package/examples/jsm/tsl/display/OutlineNode.js +1 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
- package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
- package/examples/jsm/tsl/display/SMAANode.js +9 -8
- package/examples/jsm/tsl/display/SSAAPassNode.js +5 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
- package/examples/jsm/tsl/display/{TRAAPassNode.js → TRAANode.js} +184 -174
- package/examples/jsm/tsl/display/TransitionNode.js +1 -0
- package/examples/jsm/tsl/display/hashBlur.js +28 -6
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +5 -4
- package/examples/jsm/tsl/math/Bayer.js +4 -1
- package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/examples/jsm/tsl/utils/Raymarching.js +6 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +4 -1
- package/examples/jsm/utils/LDrawUtils.js +2 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -0
- package/examples/jsm/utils/SceneUtils.js +4 -1
- package/examples/jsm/utils/ShadowMapViewer.js +2 -0
- package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
- package/examples/jsm/utils/SkeletonUtils.js +4 -1
- package/examples/jsm/utils/SortUtils.js +4 -1
- package/examples/jsm/utils/UVsDebug.js +4 -1
- package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
- package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
- package/examples/jsm/utils/WorkerPool.js +2 -0
- package/examples/jsm/webxr/ARButton.js +1 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
- package/examples/jsm/webxr/Text2D.js +4 -1
- package/examples/jsm/webxr/VRButton.js +1 -0
- package/examples/jsm/webxr/XRButton.js +1 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
- package/examples/jsm/webxr/XREstimatedLight.js +1 -0
- package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
- package/examples/jsm/webxr/XRPlanes.js +1 -0
- package/package.json +6 -4
- package/src/Three.Core.js +2 -1
- package/src/Three.TSL.js +83 -26
- package/src/Three.WebGPU.Nodes.js +1 -0
- package/src/Three.WebGPU.js +3 -0
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/AudioListener.js +13 -10
- package/src/cameras/ArrayCamera.js +9 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/constants.js +47 -20
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +2 -5
- package/src/core/Clock.js +2 -8
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/Object3D.js +23 -22
- package/src/core/RenderTarget.js +65 -21
- package/src/core/RenderTarget3D.js +1 -0
- package/{examples/jsm/misc → src/core}/Timer.js +4 -40
- package/src/extras/PMREMGenerator.js +11 -0
- package/src/extras/TextureUtils.js +1 -5
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +22 -22
- package/src/geometries/CapsuleGeometry.js +167 -17
- package/src/geometries/ExtrudeGeometry.js +39 -29
- package/src/helpers/ArrowHelper.js +2 -2
- package/src/helpers/CameraHelper.js +41 -11
- package/src/helpers/SkeletonHelper.js +36 -7
- package/src/lights/LightShadow.js +34 -7
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/SpotLightShadow.js +9 -1
- package/src/lights/webgpu/ProjectorLight.js +46 -0
- package/src/loaders/BufferGeometryLoader.js +1 -10
- package/src/loaders/FileLoader.js +27 -4
- package/src/loaders/ImageBitmapLoader.js +48 -9
- package/src/loaders/ImageLoader.js +55 -8
- package/src/loaders/Loader.js +14 -0
- package/src/loaders/LoadingManager.js +23 -0
- package/src/loaders/ObjectLoader.js +44 -16
- package/src/loaders/nodes/NodeObjectLoader.js +2 -2
- package/src/materials/Material.js +1 -7
- package/src/materials/MeshBasicMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +0 -8
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +106 -20
- package/src/materials/nodes/PointsNodeMaterial.js +5 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +107 -4
- package/src/math/Box3.js +28 -0
- package/src/math/Color.js +7 -7
- package/src/math/ColorManagement.js +22 -3
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +258 -0
- package/src/math/Line3.js +129 -2
- package/src/math/Matrix4.js +48 -27
- package/src/math/Quaternion.js +1 -1
- package/src/math/Ray.js +2 -0
- package/src/math/Sphere.js +28 -0
- package/src/math/Spherical.js +2 -2
- package/src/nodes/Nodes.js +3 -3
- package/src/nodes/TSL.js +6 -3
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +54 -26
- package/src/nodes/accessors/Camera.js +40 -13
- package/src/nodes/accessors/CubeTextureNode.js +50 -2
- package/src/nodes/accessors/InstanceNode.js +5 -4
- package/src/nodes/accessors/Lights.js +2 -2
- package/src/nodes/accessors/MaterialNode.js +4 -0
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +110 -24
- package/src/nodes/accessors/Object3DNode.js +7 -8
- package/src/nodes/accessors/Position.js +14 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +19 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +25 -0
- package/src/nodes/accessors/StorageTextureNode.js +15 -4
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +71 -8
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/accessors/VelocityNode.js +1 -0
- package/src/nodes/accessors/VertexColorNode.js +4 -4
- package/src/nodes/code/CodeNode.js +8 -11
- package/src/nodes/core/ArrayNode.js +12 -0
- package/src/nodes/core/AssignNode.js +30 -5
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/ContextNode.js +27 -4
- package/src/nodes/core/Node.js +83 -22
- package/src/nodes/core/NodeBuilder.js +273 -49
- package/src/nodes/core/NodeUtils.js +46 -1
- package/src/nodes/core/NodeVarying.js +19 -1
- package/src/nodes/core/PropertyNode.js +8 -12
- package/src/nodes/core/StackNode.js +171 -26
- package/src/nodes/core/StructTypeNode.js +26 -4
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +63 -5
- package/src/nodes/core/VarNode.js +102 -4
- package/src/nodes/core/VaryingNode.js +45 -24
- package/src/nodes/display/BlendModes.js +42 -1
- package/src/nodes/display/ColorSpaceNode.js +4 -27
- package/src/nodes/display/FrontFacingNode.js +34 -2
- package/src/nodes/display/NormalMapNode.js +19 -50
- package/src/nodes/display/PassNode.js +165 -20
- package/src/nodes/display/ScreenNode.js +0 -26
- package/src/nodes/display/ViewportTextureNode.js +67 -7
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +16 -16
- package/src/nodes/functions/ShadowMaskModel.js +5 -1
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
- package/src/nodes/gpgpu/BarrierNode.js +3 -3
- package/src/nodes/gpgpu/ComputeNode.js +68 -24
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +28 -3
- package/src/nodes/lighting/AnalyticLightNode.js +7 -13
- package/src/nodes/lighting/EnvironmentNode.js +5 -5
- package/src/nodes/lighting/HemisphereLightNode.js +2 -2
- package/src/nodes/lighting/IESSpotLightNode.js +2 -1
- package/src/nodes/lighting/LightsNode.js +29 -11
- package/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/src/nodes/lighting/ShadowBaseNode.js +1 -12
- package/src/nodes/lighting/ShadowFilterNode.js +274 -0
- package/src/nodes/lighting/ShadowNode.js +174 -242
- package/src/nodes/lighting/SpotLightNode.js +44 -7
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +166 -2
- package/src/nodes/math/ConditionalNode.js +1 -20
- package/src/nodes/math/MathNode.js +146 -75
- package/src/nodes/math/OperatorNode.js +129 -119
- package/src/nodes/shapes/Shapes.js +5 -4
- package/src/nodes/tsl/TSLBase.js +1 -0
- package/src/nodes/tsl/TSLCore.js +222 -72
- package/src/nodes/utils/DebugNode.js +16 -4
- package/src/nodes/utils/Discard.js +2 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +83 -0
- package/src/nodes/utils/LoopNode.js +64 -34
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/RTTNode.js +22 -5
- package/src/nodes/utils/ReflectorNode.js +77 -7
- package/src/nodes/utils/SampleNode.js +81 -0
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +20 -6
- package/src/objects/Mesh.js +9 -0
- package/src/objects/Skeleton.js +1 -1
- package/src/objects/Sprite.js +9 -0
- package/src/renderers/WebGL3DRenderTarget.js +1 -0
- package/src/renderers/WebGLArrayRenderTarget.js +1 -0
- package/src/renderers/WebGLCubeRenderTarget.js +2 -4
- package/src/renderers/WebGLRenderer.js +45 -32
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Background.js +13 -2
- package/src/renderers/common/Bindings.js +19 -18
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/PostProcessing.js +60 -5
- package/src/renderers/common/RenderList.js +0 -4
- package/src/renderers/common/RenderObject.js +80 -4
- package/src/renderers/common/Renderer.js +133 -22
- package/src/renderers/common/SampledTexture.js +3 -71
- package/src/renderers/common/Sampler.js +79 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +19 -0
- package/src/renderers/common/Textures.js +34 -24
- package/src/renderers/common/TimestampQueryPool.js +1 -0
- package/src/renderers/common/Uniform.js +1 -1
- package/src/renderers/common/UniformsGroup.js +14 -18
- package/src/renderers/common/XRManager.js +183 -35
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +30 -23
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/common/nodes/Nodes.js +13 -3
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +20 -2
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl/WebGLMaterials.js +6 -6
- package/src/renderers/webgl/WebGLProgram.js +22 -16
- package/src/renderers/webgl/WebGLPrograms.js +8 -6
- package/src/renderers/webgl/WebGLShadowMap.js +14 -3
- package/src/renderers/webgl/WebGLState.js +4 -4
- package/src/renderers/webgl/WebGLTextures.js +163 -11
- package/src/renderers/webgl/WebGLUtils.js +1 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +261 -94
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -9
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
- package/src/renderers/webgpu/WebGPUBackend.js +505 -143
- package/src/renderers/webgpu/WebGPURenderer.js +7 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +129 -96
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +58 -31
- package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +50 -108
- package/src/renderers/webgpu/utils/WebGPUUtils.js +2 -17
- package/src/renderers/webxr/WebXRController.js +1 -1
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +70 -9
- package/src/textures/DepthTexture.js +6 -10
- package/src/textures/ExternalTexture.js +45 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +32 -0
- package/src/textures/Texture.js +118 -1
- package/src/textures/VideoTexture.js +31 -3
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
- package/src/core/RenderTargetArray.js +0 -40
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -9,6 +9,10 @@ import { NodeUpdateType } from '../core/constants.js';
|
|
|
9
9
|
|
|
10
10
|
import { IntType, NearestFilter, UnsignedIntType } from '../../constants.js';
|
|
11
11
|
|
|
12
|
+
import { Texture } from '../../textures/Texture.js';
|
|
13
|
+
|
|
14
|
+
const EmptyTexture = /*@__PURE__*/ new Texture();
|
|
15
|
+
|
|
12
16
|
/**
|
|
13
17
|
* This type of uniform node represents a 2D texture.
|
|
14
18
|
*
|
|
@@ -25,12 +29,12 @@ class TextureNode extends UniformNode {
|
|
|
25
29
|
/**
|
|
26
30
|
* Constructs a new texture node.
|
|
27
31
|
*
|
|
28
|
-
* @param {Texture} value - The texture.
|
|
32
|
+
* @param {Texture} [value=EmptyTexture] - The texture.
|
|
29
33
|
* @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
|
|
30
34
|
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
31
35
|
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
32
36
|
*/
|
|
33
|
-
constructor( value, uvNode = null, levelNode = null, biasNode = null ) {
|
|
37
|
+
constructor( value = EmptyTexture, uvNode = null, levelNode = null, biasNode = null ) {
|
|
34
38
|
|
|
35
39
|
super( value );
|
|
36
40
|
|
|
@@ -266,7 +270,7 @@ class TextureNode extends UniformNode {
|
|
|
266
270
|
setUpdateMatrix( value ) {
|
|
267
271
|
|
|
268
272
|
this.updateMatrix = value;
|
|
269
|
-
this.updateType = value ? NodeUpdateType.
|
|
273
|
+
this.updateType = value ? NodeUpdateType.OBJECT : NodeUpdateType.NONE;
|
|
270
274
|
|
|
271
275
|
return this;
|
|
272
276
|
|
|
@@ -328,7 +332,7 @@ class TextureNode extends UniformNode {
|
|
|
328
332
|
|
|
329
333
|
if ( ( uvNode === null || builder.context.forceUVContext === true ) && builder.context.getUV ) {
|
|
330
334
|
|
|
331
|
-
uvNode = builder.context.getUV( this );
|
|
335
|
+
uvNode = builder.context.getUV( this, builder );
|
|
332
336
|
|
|
333
337
|
}
|
|
334
338
|
|
|
@@ -550,6 +554,18 @@ class TextureNode extends UniformNode {
|
|
|
550
554
|
|
|
551
555
|
}
|
|
552
556
|
|
|
557
|
+
/**
|
|
558
|
+
* TSL function for creating a texture node that fetches/loads texels without interpolation.
|
|
559
|
+
*
|
|
560
|
+
* @param {Node<uvec2>} uvNode - The uv node.
|
|
561
|
+
* @returns {TextureNode} A texture node representing the texture load.
|
|
562
|
+
*/
|
|
563
|
+
load( uvNode ) {
|
|
564
|
+
|
|
565
|
+
return this.sample( uvNode ).setSampler( false );
|
|
566
|
+
|
|
567
|
+
}
|
|
568
|
+
|
|
553
569
|
/**
|
|
554
570
|
* Samples a blurred version of the texture by defining an internal bias.
|
|
555
571
|
*
|
|
@@ -564,7 +580,7 @@ class TextureNode extends UniformNode {
|
|
|
564
580
|
|
|
565
581
|
const map = textureNode.value;
|
|
566
582
|
|
|
567
|
-
if ( map && map.generateMipmaps === false || map.minFilter === NearestFilter || map.magFilter === NearestFilter ) {
|
|
583
|
+
if ( textureNode.generateMipmaps === false && ( map && map.generateMipmaps === false || map.minFilter === NearestFilter || map.magFilter === NearestFilter ) ) {
|
|
568
584
|
|
|
569
585
|
console.warn( 'THREE.TSL: texture().blur() requires mipmaps and sampling. Use .generateMipmaps=true and .minFilter/.magFilter=THREE.LinearFilter in the Texture.' );
|
|
570
586
|
|
|
@@ -720,6 +736,9 @@ class TextureNode extends UniformNode {
|
|
|
720
736
|
|
|
721
737
|
const newNode = new this.constructor( this.value, this.uvNode, this.levelNode, this.biasNode );
|
|
722
738
|
newNode.sampler = this.sampler;
|
|
739
|
+
newNode.depthNode = this.depthNode;
|
|
740
|
+
newNode.compareNode = this.compareNode;
|
|
741
|
+
newNode.gradNode = this.gradNode;
|
|
723
742
|
|
|
724
743
|
return newNode;
|
|
725
744
|
|
|
@@ -734,20 +753,64 @@ export default TextureNode;
|
|
|
734
753
|
*
|
|
735
754
|
* @tsl
|
|
736
755
|
* @function
|
|
737
|
-
* @param {Texture} value - The texture.
|
|
756
|
+
* @param {?Texture} value - The texture.
|
|
757
|
+
* @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
|
|
758
|
+
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
759
|
+
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
760
|
+
* @returns {TextureNode}
|
|
761
|
+
*/
|
|
762
|
+
const textureBase = /*@__PURE__*/ nodeProxy( TextureNode ).setParameterLength( 1, 4 ).setName( 'texture' );
|
|
763
|
+
|
|
764
|
+
/**
|
|
765
|
+
* TSL function for creating a texture node or sample a texture node already existing.
|
|
766
|
+
*
|
|
767
|
+
* @tsl
|
|
768
|
+
* @function
|
|
769
|
+
* @param {?Texture|TextureNode} [value=EmptyTexture] - The texture.
|
|
738
770
|
* @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
|
|
739
771
|
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
740
772
|
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
741
773
|
* @returns {TextureNode}
|
|
742
774
|
*/
|
|
743
|
-
export const texture =
|
|
775
|
+
export const texture = ( value = EmptyTexture, uvNode = null, levelNode = null, biasNode = null ) => {
|
|
776
|
+
|
|
777
|
+
let textureNode;
|
|
778
|
+
|
|
779
|
+
if ( value && value.isTextureNode === true ) {
|
|
780
|
+
|
|
781
|
+
textureNode = nodeObject( value.clone() );
|
|
782
|
+
textureNode.referenceNode = value.getSelf(); // Ensure the reference is set to the original node
|
|
783
|
+
|
|
784
|
+
if ( uvNode !== null ) textureNode.uvNode = nodeObject( uvNode );
|
|
785
|
+
if ( levelNode !== null ) textureNode.levelNode = nodeObject( levelNode );
|
|
786
|
+
if ( biasNode !== null ) textureNode.biasNode = nodeObject( biasNode );
|
|
787
|
+
|
|
788
|
+
} else {
|
|
789
|
+
|
|
790
|
+
textureNode = textureBase( value, uvNode, levelNode, biasNode );
|
|
791
|
+
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
return textureNode;
|
|
795
|
+
|
|
796
|
+
};
|
|
797
|
+
|
|
798
|
+
/**
|
|
799
|
+
* TSL function for creating a uniform texture node.
|
|
800
|
+
*
|
|
801
|
+
* @tsl
|
|
802
|
+
* @function
|
|
803
|
+
* @param {?Texture} value - The texture.
|
|
804
|
+
* @returns {TextureNode}
|
|
805
|
+
*/
|
|
806
|
+
export const uniformTexture = ( value = EmptyTexture ) => texture( value );
|
|
744
807
|
|
|
745
808
|
/**
|
|
746
809
|
* TSL function for creating a texture node that fetches/loads texels without interpolation.
|
|
747
810
|
*
|
|
748
811
|
* @tsl
|
|
749
812
|
* @function
|
|
750
|
-
* @param {Texture} value - The texture.
|
|
813
|
+
* @param {?Texture|TextureNode} [value=EmptyTexture] - The texture.
|
|
751
814
|
* @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
|
|
752
815
|
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
753
816
|
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
@@ -346,19 +346,3 @@ export default UniformArrayNode;
|
|
|
346
346
|
* @returns {UniformArrayNode}
|
|
347
347
|
*/
|
|
348
348
|
export const uniformArray = ( values, nodeType ) => nodeObject( new UniformArrayNode( values, nodeType ) );
|
|
349
|
-
|
|
350
|
-
/**
|
|
351
|
-
* @tsl
|
|
352
|
-
* @function
|
|
353
|
-
* @deprecated since r168. Use {@link uniformArray} instead.
|
|
354
|
-
*
|
|
355
|
-
* @param {Array<any>} values - Array-like data.
|
|
356
|
-
* @param {string} nodeType - The data type of the array elements.
|
|
357
|
-
* @returns {UniformArrayNode}
|
|
358
|
-
*/
|
|
359
|
-
export const uniforms = ( values, nodeType ) => { // @deprecated, r168
|
|
360
|
-
|
|
361
|
-
console.warn( 'THREE.TSL: uniforms() has been renamed to uniformArray().' );
|
|
362
|
-
return nodeObject( new UniformArrayNode( values, nodeType ) );
|
|
363
|
-
|
|
364
|
-
};
|
|
@@ -18,9 +18,9 @@ class VertexColorNode extends AttributeNode {
|
|
|
18
18
|
/**
|
|
19
19
|
* Constructs a new vertex color node.
|
|
20
20
|
*
|
|
21
|
-
* @param {number}
|
|
21
|
+
* @param {number} index - The attribute index.
|
|
22
22
|
*/
|
|
23
|
-
constructor( index
|
|
23
|
+
constructor( index ) {
|
|
24
24
|
|
|
25
25
|
super( null, 'vec4' );
|
|
26
26
|
|
|
@@ -104,7 +104,7 @@ export default VertexColorNode;
|
|
|
104
104
|
*
|
|
105
105
|
* @tsl
|
|
106
106
|
* @function
|
|
107
|
-
* @param {number} index - The attribute index.
|
|
107
|
+
* @param {number} [index=0] - The attribute index.
|
|
108
108
|
* @returns {VertexColorNode}
|
|
109
109
|
*/
|
|
110
|
-
export const vertexColor = ( index ) => nodeObject( new VertexColorNode( index ) );
|
|
110
|
+
export const vertexColor = ( index = 0 ) => nodeObject( new VertexColorNode( index ) );
|
|
@@ -36,6 +36,14 @@ class CodeNode extends Node {
|
|
|
36
36
|
*/
|
|
37
37
|
this.isCodeNode = true;
|
|
38
38
|
|
|
39
|
+
/**
|
|
40
|
+
* This flag is used for global cache.
|
|
41
|
+
*
|
|
42
|
+
* @type {boolean}
|
|
43
|
+
* @default true
|
|
44
|
+
*/
|
|
45
|
+
this.global = true;
|
|
46
|
+
|
|
39
47
|
/**
|
|
40
48
|
* The native code.
|
|
41
49
|
*
|
|
@@ -62,17 +70,6 @@ class CodeNode extends Node {
|
|
|
62
70
|
|
|
63
71
|
}
|
|
64
72
|
|
|
65
|
-
/**
|
|
66
|
-
* The method is overwritten so it always returns `true`.
|
|
67
|
-
*
|
|
68
|
-
* @return {boolean} Whether this node is global or not.
|
|
69
|
-
*/
|
|
70
|
-
isGlobal() {
|
|
71
|
-
|
|
72
|
-
return true;
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
73
|
/**
|
|
77
74
|
* Sets the includes of this code node.
|
|
78
75
|
*
|
|
@@ -58,6 +58,18 @@ class ArrayNode extends TempNode {
|
|
|
58
58
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Returns the number of elements in the node array.
|
|
63
|
+
*
|
|
64
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
65
|
+
* @return {number} The number of elements in the node array.
|
|
66
|
+
*/
|
|
67
|
+
getArrayCount( /*builder*/ ) {
|
|
68
|
+
|
|
69
|
+
return this.count;
|
|
70
|
+
|
|
71
|
+
}
|
|
72
|
+
|
|
61
73
|
/**
|
|
62
74
|
* Returns the node's type.
|
|
63
75
|
*
|
|
@@ -40,6 +40,15 @@ class AssignNode extends TempNode {
|
|
|
40
40
|
*/
|
|
41
41
|
this.sourceNode = sourceNode;
|
|
42
42
|
|
|
43
|
+
/**
|
|
44
|
+
* This flag can be used for type testing.
|
|
45
|
+
*
|
|
46
|
+
* @type {boolean}
|
|
47
|
+
* @readonly
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
50
|
+
this.isAssignNode = true;
|
|
51
|
+
|
|
43
52
|
}
|
|
44
53
|
|
|
45
54
|
/**
|
|
@@ -84,15 +93,28 @@ class AssignNode extends TempNode {
|
|
|
84
93
|
|
|
85
94
|
}
|
|
86
95
|
|
|
87
|
-
|
|
96
|
+
setup( builder ) {
|
|
88
97
|
|
|
89
98
|
const { targetNode, sourceNode } = this;
|
|
90
99
|
|
|
100
|
+
const targetProperties = builder.getNodeProperties( targetNode );
|
|
101
|
+
targetProperties.assign = true;
|
|
102
|
+
|
|
103
|
+
const properties = builder.getNodeProperties( this );
|
|
104
|
+
properties.sourceNode = sourceNode;
|
|
105
|
+
properties.targetNode = targetNode.context( { assign: true } );
|
|
106
|
+
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
generate( builder, output ) {
|
|
110
|
+
|
|
111
|
+
const { targetNode, sourceNode } = builder.getNodeProperties( this );
|
|
112
|
+
|
|
91
113
|
const needsSplitAssign = this.needsSplitAssign( builder );
|
|
92
114
|
|
|
93
115
|
const targetType = targetNode.getNodeType( builder );
|
|
94
116
|
|
|
95
|
-
const target = targetNode.
|
|
117
|
+
const target = targetNode.build( builder );
|
|
96
118
|
const source = sourceNode.build( builder, targetType );
|
|
97
119
|
|
|
98
120
|
const sourceType = sourceNode.getNodeType( builder );
|
|
@@ -118,11 +140,14 @@ class AssignNode extends TempNode {
|
|
|
118
140
|
|
|
119
141
|
builder.addLineFlowCode( `${ sourceProperty } = ${ source }`, this );
|
|
120
142
|
|
|
121
|
-
const
|
|
143
|
+
const splitNode = targetNode.node;
|
|
144
|
+
const splitTargetNode = splitNode.node.context( { assign: true } );
|
|
145
|
+
|
|
146
|
+
const targetRoot = splitTargetNode.build( builder );
|
|
122
147
|
|
|
123
|
-
for ( let i = 0; i <
|
|
148
|
+
for ( let i = 0; i < splitNode.components.length; i ++ ) {
|
|
124
149
|
|
|
125
|
-
const component =
|
|
150
|
+
const component = splitNode.components[ i ];
|
|
126
151
|
|
|
127
152
|
builder.addLineFlowCode( `${ targetRoot }.${ component } = ${ sourceProperty }[ ${ i } ]`, this );
|
|
128
153
|
|
|
@@ -161,7 +161,7 @@ export default AttributeNode;
|
|
|
161
161
|
* @tsl
|
|
162
162
|
* @function
|
|
163
163
|
* @param {string} name - The name of the attribute.
|
|
164
|
-
* @param {string} [nodeType] - The node type.
|
|
164
|
+
* @param {?string} [nodeType=null] - The node type.
|
|
165
165
|
* @returns {AttributeNode}
|
|
166
166
|
*/
|
|
167
|
-
export const attribute = ( name, nodeType ) => nodeObject( new AttributeNode( name, nodeType ) );
|
|
167
|
+
export const attribute = ( name, nodeType = null ) => nodeObject( new AttributeNode( name, nodeType ) );
|
|
@@ -80,8 +80,14 @@ class ContextNode extends Node {
|
|
|
80
80
|
|
|
81
81
|
analyze( builder ) {
|
|
82
82
|
|
|
83
|
+
const previousContext = builder.getContext();
|
|
84
|
+
|
|
85
|
+
builder.setContext( { ...builder.context, ...this.value } );
|
|
86
|
+
|
|
83
87
|
this.node.build( builder );
|
|
84
88
|
|
|
89
|
+
builder.setContext( previousContext );
|
|
90
|
+
|
|
85
91
|
}
|
|
86
92
|
|
|
87
93
|
setup( builder ) {
|
|
@@ -90,12 +96,10 @@ class ContextNode extends Node {
|
|
|
90
96
|
|
|
91
97
|
builder.setContext( { ...builder.context, ...this.value } );
|
|
92
98
|
|
|
93
|
-
|
|
99
|
+
this.node.build( builder );
|
|
94
100
|
|
|
95
101
|
builder.setContext( previousContext );
|
|
96
102
|
|
|
97
|
-
return node;
|
|
98
|
-
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
generate( builder, output ) {
|
|
@@ -127,16 +131,35 @@ export default ContextNode;
|
|
|
127
131
|
*/
|
|
128
132
|
export const context = /*@__PURE__*/ nodeProxy( ContextNode ).setParameterLength( 1, 2 );
|
|
129
133
|
|
|
134
|
+
/**
|
|
135
|
+
* TSL function for defining a name for the context value for a given node.
|
|
136
|
+
*
|
|
137
|
+
* @tsl
|
|
138
|
+
* @function
|
|
139
|
+
* @param {Node} node - The node whose context should be modified.
|
|
140
|
+
* @param {string} name - The name to set.
|
|
141
|
+
* @returns {ContextNode}
|
|
142
|
+
*/
|
|
143
|
+
export const setName = ( node, name ) => context( node, { nodeName: name } );
|
|
144
|
+
|
|
130
145
|
/**
|
|
131
146
|
* TSL function for defining a label context value for a given node.
|
|
132
147
|
*
|
|
133
148
|
* @tsl
|
|
134
149
|
* @function
|
|
150
|
+
* @deprecated
|
|
135
151
|
* @param {Node} node - The node whose context should be modified.
|
|
136
152
|
* @param {string} name - The name/label to set.
|
|
137
153
|
* @returns {ContextNode}
|
|
138
154
|
*/
|
|
139
|
-
export
|
|
155
|
+
export function label( node, name ) {
|
|
156
|
+
|
|
157
|
+
console.warn( 'THREE.TSL: "label()" has been deprecated. Use "setName()" instead.' ); // @deprecated r179
|
|
158
|
+
|
|
159
|
+
return setName( node, name );
|
|
160
|
+
|
|
161
|
+
}
|
|
140
162
|
|
|
141
163
|
addMethodChaining( 'context', context );
|
|
142
164
|
addMethodChaining( 'label', label );
|
|
165
|
+
addMethodChaining( 'setName', setName );
|
package/src/nodes/core/Node.js
CHANGED
|
@@ -4,6 +4,11 @@ import { getNodeChildren, getCacheKey, hash } from './NodeUtils.js';
|
|
|
4
4
|
import { EventDispatcher } from '../../core/EventDispatcher.js';
|
|
5
5
|
import { MathUtils } from '../../math/MathUtils.js';
|
|
6
6
|
|
|
7
|
+
const _parentBuildStage = {
|
|
8
|
+
analyze: 'setup',
|
|
9
|
+
generate: 'analyze'
|
|
10
|
+
};
|
|
11
|
+
|
|
7
12
|
let _nodeId = 0;
|
|
8
13
|
|
|
9
14
|
/**
|
|
@@ -87,6 +92,14 @@ class Node extends EventDispatcher {
|
|
|
87
92
|
*/
|
|
88
93
|
this.global = false;
|
|
89
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Create a list of parents for this node during the build process.
|
|
97
|
+
*
|
|
98
|
+
* @type {boolean}
|
|
99
|
+
* @default false
|
|
100
|
+
*/
|
|
101
|
+
this.parents = false;
|
|
102
|
+
|
|
90
103
|
/**
|
|
91
104
|
* This flag can be used for type testing.
|
|
92
105
|
*
|
|
@@ -248,7 +261,7 @@ class Node extends EventDispatcher {
|
|
|
248
261
|
/**
|
|
249
262
|
* By default this method returns the value of the {@link Node#global} flag. This method
|
|
250
263
|
* can be overwritten in derived classes if an analytical way is required to determine the
|
|
251
|
-
* global
|
|
264
|
+
* global cache referring to the current shader-stage.
|
|
252
265
|
*
|
|
253
266
|
* @param {NodeBuilder} builder - The current node builder.
|
|
254
267
|
* @return {boolean} Whether this node is global or not.
|
|
@@ -467,10 +480,22 @@ class Node extends EventDispatcher {
|
|
|
467
480
|
|
|
468
481
|
}
|
|
469
482
|
|
|
483
|
+
/**
|
|
484
|
+
* Returns the number of elements in the node array.
|
|
485
|
+
*
|
|
486
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
487
|
+
* @return {?number} The number of elements in the node array.
|
|
488
|
+
*/
|
|
489
|
+
getArrayCount( /*builder*/ ) {
|
|
490
|
+
|
|
491
|
+
return null;
|
|
492
|
+
|
|
493
|
+
}
|
|
494
|
+
|
|
470
495
|
/**
|
|
471
496
|
* Represents the setup stage which is the first step of the build process, see {@link Node#build} method.
|
|
472
|
-
* This method is often overwritten in derived modules to prepare the node which is used as
|
|
473
|
-
*
|
|
497
|
+
* This method is often overwritten in derived modules to prepare the node which is used as a node's output/result.
|
|
498
|
+
* If an output node is prepared, then it must be returned in the `return` statement of the derived module's setup function.
|
|
474
499
|
*
|
|
475
500
|
* @param {NodeBuilder} builder - The current node builder.
|
|
476
501
|
* @return {?Node} The output node.
|
|
@@ -498,11 +523,21 @@ class Node extends EventDispatcher {
|
|
|
498
523
|
* This stage analyzes the node hierarchy and ensures descendent nodes are built.
|
|
499
524
|
*
|
|
500
525
|
* @param {NodeBuilder} builder - The current node builder.
|
|
526
|
+
* @param {?Node} output - The target output node.
|
|
501
527
|
*/
|
|
502
|
-
analyze( builder ) {
|
|
528
|
+
analyze( builder, output = null ) {
|
|
503
529
|
|
|
504
530
|
const usageCount = builder.increaseUsage( this );
|
|
505
531
|
|
|
532
|
+
if ( this.parents === true ) {
|
|
533
|
+
|
|
534
|
+
const nodeData = builder.getDataFromNode( this, 'any' );
|
|
535
|
+
nodeData.stages = nodeData.stages || {};
|
|
536
|
+
nodeData.stages[ builder.shaderStage ] = nodeData.stages[ builder.shaderStage ] || [];
|
|
537
|
+
nodeData.stages[ builder.shaderStage ].push( output );
|
|
538
|
+
|
|
539
|
+
}
|
|
540
|
+
|
|
506
541
|
if ( usageCount === 1 ) {
|
|
507
542
|
|
|
508
543
|
// node flow children
|
|
@@ -513,7 +548,7 @@ class Node extends EventDispatcher {
|
|
|
513
548
|
|
|
514
549
|
if ( childNode && childNode.isNode === true ) {
|
|
515
550
|
|
|
516
|
-
childNode.build( builder );
|
|
551
|
+
childNode.build( builder, this );
|
|
517
552
|
|
|
518
553
|
}
|
|
519
554
|
|
|
@@ -586,12 +621,14 @@ class Node extends EventDispatcher {
|
|
|
586
621
|
}
|
|
587
622
|
|
|
588
623
|
/**
|
|
589
|
-
* This method performs the build of a node. The behavior
|
|
590
|
-
*
|
|
624
|
+
* This method performs the build of a node. The behavior and return value depend on the current build stage:
|
|
625
|
+
* - **setup**: Prepares the node and its children for the build process. This process can also create new nodes. Returns the node itself or a variant.
|
|
626
|
+
* - **analyze**: Analyzes the node hierarchy for optimizations in the code generation stage. Returns `null`.
|
|
627
|
+
* - **generate**: Generates the shader code for the node. Returns the generated shader string.
|
|
591
628
|
*
|
|
592
629
|
* @param {NodeBuilder} builder - The current node builder.
|
|
593
|
-
* @param {
|
|
594
|
-
* @return {
|
|
630
|
+
* @param {string|Node|null} [output=null] - Can be used to define the output type.
|
|
631
|
+
* @return {Node|string|null} The result of the build process, depending on the build stage.
|
|
595
632
|
*/
|
|
596
633
|
build( builder, output = null ) {
|
|
597
634
|
|
|
@@ -603,6 +640,30 @@ class Node extends EventDispatcher {
|
|
|
603
640
|
|
|
604
641
|
}
|
|
605
642
|
|
|
643
|
+
//
|
|
644
|
+
|
|
645
|
+
const nodeData = builder.getDataFromNode( this );
|
|
646
|
+
nodeData.buildStages = nodeData.buildStages || {};
|
|
647
|
+
nodeData.buildStages[ builder.buildStage ] = true;
|
|
648
|
+
|
|
649
|
+
const parentBuildStage = _parentBuildStage[ builder.buildStage ];
|
|
650
|
+
|
|
651
|
+
if ( parentBuildStage && nodeData.buildStages[ parentBuildStage ] !== true ) {
|
|
652
|
+
|
|
653
|
+
// force parent build stage (setup or analyze)
|
|
654
|
+
|
|
655
|
+
const previousBuildStage = builder.getBuildStage();
|
|
656
|
+
|
|
657
|
+
builder.setBuildStage( parentBuildStage );
|
|
658
|
+
|
|
659
|
+
this.build( builder );
|
|
660
|
+
|
|
661
|
+
builder.setBuildStage( previousBuildStage );
|
|
662
|
+
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
//
|
|
666
|
+
|
|
606
667
|
builder.addNode( this );
|
|
607
668
|
builder.addChain( this );
|
|
608
669
|
|
|
@@ -626,9 +687,7 @@ class Node extends EventDispatcher {
|
|
|
626
687
|
//const stackNodesBeforeSetup = builder.stack.nodes.length;
|
|
627
688
|
|
|
628
689
|
properties.initialized = true;
|
|
629
|
-
|
|
630
|
-
const outputNode = this.setup( builder ); // return a node or null
|
|
631
|
-
const isNodeOutput = outputNode && outputNode.isNode === true;
|
|
690
|
+
properties.outputNode = this.setup( builder ) || properties.outputNode || null;
|
|
632
691
|
|
|
633
692
|
/*if ( isNodeOutput && builder.stack.nodes.length !== stackNodesBeforeSetup ) {
|
|
634
693
|
|
|
@@ -641,25 +700,27 @@ class Node extends EventDispatcher {
|
|
|
641
700
|
|
|
642
701
|
if ( childNode && childNode.isNode === true ) {
|
|
643
702
|
|
|
644
|
-
childNode.
|
|
703
|
+
if ( childNode.parents === true ) {
|
|
645
704
|
|
|
646
|
-
|
|
705
|
+
const childProperties = builder.getNodeProperties( childNode );
|
|
706
|
+
childProperties.parents = childProperties.parents || [];
|
|
707
|
+
childProperties.parents.push( this );
|
|
647
708
|
|
|
648
|
-
|
|
709
|
+
}
|
|
649
710
|
|
|
650
|
-
|
|
711
|
+
childNode.build( builder );
|
|
651
712
|
|
|
652
|
-
|
|
713
|
+
}
|
|
653
714
|
|
|
654
715
|
}
|
|
655
716
|
|
|
656
|
-
properties.outputNode = outputNode;
|
|
657
|
-
|
|
658
717
|
}
|
|
659
718
|
|
|
719
|
+
result = properties.outputNode;
|
|
720
|
+
|
|
660
721
|
} else if ( buildStage === 'analyze' ) {
|
|
661
722
|
|
|
662
|
-
this.analyze( builder );
|
|
723
|
+
this.analyze( builder, output );
|
|
663
724
|
|
|
664
725
|
} else if ( buildStage === 'generate' ) {
|
|
665
726
|
|
|
@@ -686,7 +747,7 @@ class Node extends EventDispatcher {
|
|
|
686
747
|
|
|
687
748
|
console.warn( 'THREE.Node: Recursion detected.', this );
|
|
688
749
|
|
|
689
|
-
result = '';
|
|
750
|
+
result = '/* Recursion detected. */';
|
|
690
751
|
|
|
691
752
|
}
|
|
692
753
|
|
|
@@ -848,7 +909,7 @@ class Node extends EventDispatcher {
|
|
|
848
909
|
type,
|
|
849
910
|
meta,
|
|
850
911
|
metadata: {
|
|
851
|
-
version: 4.
|
|
912
|
+
version: 4.7,
|
|
852
913
|
type: 'Node',
|
|
853
914
|
generator: 'Node.toJSON'
|
|
854
915
|
}
|