@plastic-software/three 0.174.0 → 0.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +10655 -1446
- package/build/three.core.js +9626 -1094
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +834 -157
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -125,7 +125,7 @@ export default ContextNode;
|
|
|
125
125
|
* @param {Object} [value={}] - The modified context data.
|
|
126
126
|
* @returns {ContextNode}
|
|
127
127
|
*/
|
|
128
|
-
export const context = /*@__PURE__*/ nodeProxy( ContextNode );
|
|
128
|
+
export const context = /*@__PURE__*/ nodeProxy( ContextNode ).setParameterLength( 1, 2 );
|
|
129
129
|
|
|
130
130
|
/**
|
|
131
131
|
* TSL function for defining a label context value for a given node.
|
|
@@ -17,7 +17,7 @@ class InputNode extends Node {
|
|
|
17
17
|
/**
|
|
18
18
|
* Constructs a new input node.
|
|
19
19
|
*
|
|
20
|
-
* @param {any} value - The value of this node. This can be
|
|
20
|
+
* @param {any} value - The value of this node. This can be any JS primitive, functions, array buffers or even three.js objects (vector, matrices, colors).
|
|
21
21
|
* @param {?string} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
|
|
22
22
|
*/
|
|
23
23
|
constructor( value, nodeType = null ) {
|
|
@@ -34,7 +34,7 @@ class InputNode extends Node {
|
|
|
34
34
|
this.isInputNode = true;
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
|
-
* The value of this node. This can be
|
|
37
|
+
* The value of this node. This can be any JS primitive, functions, array buffers or even three.js objects (vector, matrices, colors).
|
|
38
38
|
*
|
|
39
39
|
* @type {any}
|
|
40
40
|
*/
|
package/src/nodes/core/Node.js
CHANGED
|
@@ -674,9 +674,21 @@ class Node extends EventDispatcher {
|
|
|
674
674
|
|
|
675
675
|
if ( result === undefined ) {
|
|
676
676
|
|
|
677
|
-
|
|
677
|
+
if ( nodeData.generated === undefined ) {
|
|
678
678
|
|
|
679
|
-
|
|
679
|
+
nodeData.generated = true;
|
|
680
|
+
|
|
681
|
+
result = this.generate( builder ) || '';
|
|
682
|
+
|
|
683
|
+
nodeData.snippet = result;
|
|
684
|
+
|
|
685
|
+
} else {
|
|
686
|
+
|
|
687
|
+
console.warn( 'THREE.Node: Recursion detected.', this );
|
|
688
|
+
|
|
689
|
+
result = '';
|
|
690
|
+
|
|
691
|
+
}
|
|
680
692
|
|
|
681
693
|
} else if ( nodeData.flowCodes !== undefined && builder.context.nodeBlock !== undefined ) {
|
|
682
694
|
|
|
@@ -314,11 +314,20 @@ class NodeBuilder {
|
|
|
314
314
|
/**
|
|
315
315
|
* This dictionary holds the node variables of this builder.
|
|
316
316
|
* The variables are maintained in an array for each shader stage.
|
|
317
|
+
* This dictionary is also used to count the number of variables
|
|
318
|
+
* according to their type (const, vars).
|
|
317
319
|
*
|
|
318
|
-
* @type {Object<string,Array<NodeVar
|
|
320
|
+
* @type {Object<string,Array<NodeVar>|number>}
|
|
319
321
|
*/
|
|
320
322
|
this.vars = {};
|
|
321
323
|
|
|
324
|
+
/**
|
|
325
|
+
* This dictionary holds the declarations for each shader stage.
|
|
326
|
+
*
|
|
327
|
+
* @type {Object}
|
|
328
|
+
*/
|
|
329
|
+
this.declarations = {};
|
|
330
|
+
|
|
322
331
|
/**
|
|
323
332
|
* Current code flow.
|
|
324
333
|
* All code generated in this stack will be stored in `.flow`.
|
|
@@ -410,14 +419,6 @@ class NodeBuilder {
|
|
|
410
419
|
*/
|
|
411
420
|
this.buildStage = null;
|
|
412
421
|
|
|
413
|
-
/**
|
|
414
|
-
* Whether comparison in shader code are generated with methods or not.
|
|
415
|
-
*
|
|
416
|
-
* @type {boolean}
|
|
417
|
-
* @default false
|
|
418
|
-
*/
|
|
419
|
-
this.useComparisonMethod = false;
|
|
420
|
-
|
|
421
422
|
}
|
|
422
423
|
|
|
423
424
|
/**
|
|
@@ -946,7 +947,7 @@ class NodeBuilder {
|
|
|
946
947
|
* Only relevant for WebGL and its `WEBGL_multi_draw` extension.
|
|
947
948
|
*
|
|
948
949
|
* @abstract
|
|
949
|
-
* @return {string} The drawIndex shader string.
|
|
950
|
+
* @return {?string} The drawIndex shader string.
|
|
950
951
|
*/
|
|
951
952
|
getDrawIndex() {
|
|
952
953
|
|
|
@@ -1232,6 +1233,8 @@ class NodeBuilder {
|
|
|
1232
1233
|
|
|
1233
1234
|
const attribute = new NodeAttribute( name, type );
|
|
1234
1235
|
|
|
1236
|
+
this.registerDeclaration( attribute );
|
|
1237
|
+
|
|
1235
1238
|
attributes.push( attribute );
|
|
1236
1239
|
|
|
1237
1240
|
return attribute;
|
|
@@ -1283,7 +1286,7 @@ class NodeBuilder {
|
|
|
1283
1286
|
*/
|
|
1284
1287
|
isReference( type ) {
|
|
1285
1288
|
|
|
1286
|
-
return type === 'void' || type === 'property' || type === 'sampler' || type === 'texture' || type === 'cubeTexture' || type === 'storageTexture' || type === 'depthTexture' || type === 'texture3D';
|
|
1289
|
+
return type === 'void' || type === 'property' || type === 'sampler' || type === 'samplerComparison' || type === 'texture' || type === 'cubeTexture' || type === 'storageTexture' || type === 'depthTexture' || type === 'texture3D';
|
|
1287
1290
|
|
|
1288
1291
|
}
|
|
1289
1292
|
|
|
@@ -1413,6 +1416,18 @@ class NodeBuilder {
|
|
|
1413
1416
|
|
|
1414
1417
|
}
|
|
1415
1418
|
|
|
1419
|
+
/**
|
|
1420
|
+
* Returns the type is an integer type.
|
|
1421
|
+
*
|
|
1422
|
+
* @param {string} type - The type.
|
|
1423
|
+
* @return {boolean} Whether the type is an integer type or not.
|
|
1424
|
+
*/
|
|
1425
|
+
isInteger( type ) {
|
|
1426
|
+
|
|
1427
|
+
return /int|uint|(i|u)vec/.test( type );
|
|
1428
|
+
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1416
1431
|
/**
|
|
1417
1432
|
* Returns the type for a given buffer attribute.
|
|
1418
1433
|
*
|
|
@@ -1682,6 +1697,8 @@ class NodeBuilder {
|
|
|
1682
1697
|
|
|
1683
1698
|
this.uniforms[ shaderStage ].push( nodeUniform );
|
|
1684
1699
|
|
|
1700
|
+
this.registerDeclaration( nodeUniform );
|
|
1701
|
+
|
|
1685
1702
|
nodeData.uniform = nodeUniform;
|
|
1686
1703
|
|
|
1687
1704
|
}
|
|
@@ -1751,6 +1768,8 @@ class NodeBuilder {
|
|
|
1751
1768
|
|
|
1752
1769
|
}
|
|
1753
1770
|
|
|
1771
|
+
this.registerDeclaration( nodeVar );
|
|
1772
|
+
|
|
1754
1773
|
nodeData.variable = nodeVar;
|
|
1755
1774
|
|
|
1756
1775
|
}
|
|
@@ -1831,6 +1850,8 @@ class NodeBuilder {
|
|
|
1831
1850
|
|
|
1832
1851
|
varyings.push( nodeVarying );
|
|
1833
1852
|
|
|
1853
|
+
this.registerDeclaration( nodeVarying );
|
|
1854
|
+
|
|
1834
1855
|
nodeData.varying = nodeVarying;
|
|
1835
1856
|
|
|
1836
1857
|
}
|
|
@@ -1839,6 +1860,41 @@ class NodeBuilder {
|
|
|
1839
1860
|
|
|
1840
1861
|
}
|
|
1841
1862
|
|
|
1863
|
+
/**
|
|
1864
|
+
* Registers a node declaration in the current shader stage.
|
|
1865
|
+
*
|
|
1866
|
+
* @param {Object} node - The node to be registered.
|
|
1867
|
+
*/
|
|
1868
|
+
registerDeclaration( node ) {
|
|
1869
|
+
|
|
1870
|
+
const shaderStage = this.shaderStage;
|
|
1871
|
+
const declarations = this.declarations[ shaderStage ] || ( this.declarations[ shaderStage ] = {} );
|
|
1872
|
+
|
|
1873
|
+
const property = this.getPropertyName( node );
|
|
1874
|
+
|
|
1875
|
+
let index = 1;
|
|
1876
|
+
let name = property;
|
|
1877
|
+
|
|
1878
|
+
// Automatically renames the property if the name is already in use.
|
|
1879
|
+
|
|
1880
|
+
while ( declarations[ name ] !== undefined ) {
|
|
1881
|
+
|
|
1882
|
+
name = property + '_' + index ++;
|
|
1883
|
+
|
|
1884
|
+
}
|
|
1885
|
+
|
|
1886
|
+
declarations[ name ] = node;
|
|
1887
|
+
|
|
1888
|
+
if ( index > 1 ) {
|
|
1889
|
+
|
|
1890
|
+
node.name = name;
|
|
1891
|
+
|
|
1892
|
+
console.warn( `THREE.TSL: Declaration name '${ property }' of '${ node.type }' already in use. Renamed to '${ name }'.` );
|
|
1893
|
+
|
|
1894
|
+
}
|
|
1895
|
+
|
|
1896
|
+
}
|
|
1897
|
+
|
|
1842
1898
|
/**
|
|
1843
1899
|
* Returns an instance of {@link NodeCode} for the given code node.
|
|
1844
1900
|
*
|
|
@@ -2126,6 +2182,7 @@ class NodeBuilder {
|
|
|
2126
2182
|
|
|
2127
2183
|
const previousFlow = this.flow;
|
|
2128
2184
|
const previousVars = this.vars;
|
|
2185
|
+
const previousDeclarations = this.declarations;
|
|
2129
2186
|
const previousCache = this.cache;
|
|
2130
2187
|
const previousBuildStage = this.buildStage;
|
|
2131
2188
|
const previousStack = this.stack;
|
|
@@ -2136,6 +2193,7 @@ class NodeBuilder {
|
|
|
2136
2193
|
|
|
2137
2194
|
this.flow = flow;
|
|
2138
2195
|
this.vars = {};
|
|
2196
|
+
this.declarations = {};
|
|
2139
2197
|
this.cache = new NodeCache();
|
|
2140
2198
|
this.stack = stack();
|
|
2141
2199
|
|
|
@@ -2151,6 +2209,7 @@ class NodeBuilder {
|
|
|
2151
2209
|
|
|
2152
2210
|
this.flow = previousFlow;
|
|
2153
2211
|
this.vars = previousVars;
|
|
2212
|
+
this.declarations = previousDeclarations;
|
|
2154
2213
|
this.cache = previousCache;
|
|
2155
2214
|
this.stack = previousStack;
|
|
2156
2215
|
|
|
@@ -2166,7 +2225,7 @@ class NodeBuilder {
|
|
|
2166
2225
|
*
|
|
2167
2226
|
* @abstract
|
|
2168
2227
|
* @param {string} op - The operator name to resolve.
|
|
2169
|
-
* @return {string} The resolved operator name.
|
|
2228
|
+
* @return {?string} The resolved operator name.
|
|
2170
2229
|
*/
|
|
2171
2230
|
getFunctionOperator( /* op */ ) {
|
|
2172
2231
|
|
|
@@ -2174,6 +2233,19 @@ class NodeBuilder {
|
|
|
2174
2233
|
|
|
2175
2234
|
}
|
|
2176
2235
|
|
|
2236
|
+
/**
|
|
2237
|
+
* Builds the given shader node.
|
|
2238
|
+
*
|
|
2239
|
+
* @abstract
|
|
2240
|
+
* @param {ShaderNodeInternal} shaderNode - The shader node.
|
|
2241
|
+
* @return {string} The function code.
|
|
2242
|
+
*/
|
|
2243
|
+
buildFunctionCode( /* shaderNode */ ) {
|
|
2244
|
+
|
|
2245
|
+
console.warn( 'Abstract function.' );
|
|
2246
|
+
|
|
2247
|
+
}
|
|
2248
|
+
|
|
2177
2249
|
/**
|
|
2178
2250
|
* Generates a code flow based on a child Node.
|
|
2179
2251
|
*
|
|
@@ -2542,13 +2614,13 @@ class NodeBuilder {
|
|
|
2542
2614
|
|
|
2543
2615
|
if ( fromTypeLength === 16 && toTypeLength === 9 ) {
|
|
2544
2616
|
|
|
2545
|
-
return `${ this.getType( toType ) }(${ snippet }[0].xyz, ${ snippet }[1].xyz, ${ snippet }[2].xyz)`;
|
|
2617
|
+
return `${ this.getType( toType ) }( ${ snippet }[ 0 ].xyz, ${ snippet }[ 1 ].xyz, ${ snippet }[ 2 ].xyz )`;
|
|
2546
2618
|
|
|
2547
2619
|
}
|
|
2548
2620
|
|
|
2549
2621
|
if ( fromTypeLength === 9 && toTypeLength === 4 ) {
|
|
2550
2622
|
|
|
2551
|
-
return `${ this.getType( toType ) }(${ snippet }[0].xy, ${ snippet }[1].xy)`;
|
|
2623
|
+
return `${ this.getType( toType ) }( ${ snippet }[ 0 ].xy, ${ snippet }[ 1 ].xy )`;
|
|
2552
2624
|
|
|
2553
2625
|
}
|
|
2554
2626
|
|
|
@@ -167,12 +167,12 @@ class StackNode extends Node {
|
|
|
167
167
|
* @function
|
|
168
168
|
* @deprecated since r168. Use {@link StackNode#Else} instead.
|
|
169
169
|
*
|
|
170
|
-
* @param
|
|
170
|
+
* @param {...any} params
|
|
171
171
|
* @returns {StackNode}
|
|
172
172
|
*/
|
|
173
173
|
else( ...params ) { // @deprecated, r168
|
|
174
174
|
|
|
175
|
-
console.warn( 'TSL
|
|
175
|
+
console.warn( 'THREE.TSL: .else() has been renamed to .Else().' );
|
|
176
176
|
return this.Else( ...params );
|
|
177
177
|
|
|
178
178
|
}
|
|
@@ -180,12 +180,12 @@ class StackNode extends Node {
|
|
|
180
180
|
/**
|
|
181
181
|
* @deprecated since r168. Use {@link StackNode#ElseIf} instead.
|
|
182
182
|
*
|
|
183
|
-
* @param
|
|
183
|
+
* @param {...any} params
|
|
184
184
|
* @returns {StackNode}
|
|
185
185
|
*/
|
|
186
186
|
elseif( ...params ) { // @deprecated, r168
|
|
187
187
|
|
|
188
|
-
console.warn( 'TSL
|
|
188
|
+
console.warn( 'THREE.TSL: .elseif() has been renamed to .ElseIf().' );
|
|
189
189
|
return this.ElseIf( ...params );
|
|
190
190
|
|
|
191
191
|
}
|
|
@@ -202,4 +202,4 @@ export default StackNode;
|
|
|
202
202
|
* @param {?StackNode} [parent=null] - The parent stack node.
|
|
203
203
|
* @returns {StackNode}
|
|
204
204
|
*/
|
|
205
|
-
export const stack = /*@__PURE__*/ nodeProxy( StackNode );
|
|
205
|
+
export const stack = /*@__PURE__*/ nodeProxy( StackNode ).setParameterLength( 0, 1 );
|
|
@@ -75,7 +75,7 @@ export default StructNode;
|
|
|
75
75
|
* @tsl
|
|
76
76
|
* @function
|
|
77
77
|
* @param {Object} membersLayout - The layout of the struct members.
|
|
78
|
-
* @param {string} [name=null] - The name of the struct.
|
|
78
|
+
* @param {?string} [name=null] - The name of the struct.
|
|
79
79
|
* @returns {Function} The struct function.
|
|
80
80
|
*/
|
|
81
81
|
export const struct = ( membersLayout, name = null ) => {
|
|
@@ -46,7 +46,7 @@ class StructTypeNode extends Node {
|
|
|
46
46
|
* Creates an instance of StructTypeNode.
|
|
47
47
|
*
|
|
48
48
|
* @param {Object} membersLayout - The layout of the members for the struct.
|
|
49
|
-
* @param {string} [name=null] - The optional name of the struct.
|
|
49
|
+
* @param {?string} [name=null] - The optional name of the struct.
|
|
50
50
|
*/
|
|
51
51
|
constructor( membersLayout, name = null ) {
|
|
52
52
|
|
|
@@ -62,7 +62,7 @@ class StructTypeNode extends Node {
|
|
|
62
62
|
/**
|
|
63
63
|
* The name of the struct.
|
|
64
64
|
*
|
|
65
|
-
* @type {string}
|
|
65
|
+
* @type {?string}
|
|
66
66
|
* @default null
|
|
67
67
|
*/
|
|
68
68
|
this.name = name;
|
|
@@ -23,8 +23,8 @@ class VarNode extends Node {
|
|
|
23
23
|
* Constructs a new variable node.
|
|
24
24
|
*
|
|
25
25
|
* @param {Node} node - The node for which a variable should be created.
|
|
26
|
-
* @param {?string} name - The name of the variable in the shader.
|
|
27
|
-
* @param {
|
|
26
|
+
* @param {?string} [name=null] - The name of the variable in the shader.
|
|
27
|
+
* @param {boolean} [readOnly=false] - The read-only flag.
|
|
28
28
|
*/
|
|
29
29
|
constructor( node, name = null, readOnly = false ) {
|
|
30
30
|
|
|
@@ -74,12 +74,6 @@ class VarNode extends Node {
|
|
|
74
74
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
getHash( builder ) {
|
|
78
|
-
|
|
79
|
-
return this.name || super.getHash( builder );
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
|
|
83
77
|
getMemberType( builder, name ) {
|
|
84
78
|
|
|
85
79
|
return this.node.getMemberType( builder, name );
|
|
@@ -173,7 +173,7 @@ export default VaryingNode;
|
|
|
173
173
|
* @param {?string} name - The name of the varying in the shader.
|
|
174
174
|
* @returns {VaryingNode}
|
|
175
175
|
*/
|
|
176
|
-
export const varying = /*@__PURE__*/ nodeProxy( VaryingNode );
|
|
176
|
+
export const varying = /*@__PURE__*/ nodeProxy( VaryingNode ).setParameterLength( 1, 2 );
|
|
177
177
|
|
|
178
178
|
/**
|
|
179
179
|
* Computes a node in the vertex stage.
|
|
@@ -192,14 +192,14 @@ addMethodChaining( 'toVertexStage', vertexStage );
|
|
|
192
192
|
|
|
193
193
|
addMethodChaining( 'varying', ( ...params ) => { // @deprecated, r173
|
|
194
194
|
|
|
195
|
-
console.warn( 'TSL
|
|
195
|
+
console.warn( 'THREE.TSL: .varying() has been renamed to .toVarying().' );
|
|
196
196
|
return varying( ...params );
|
|
197
197
|
|
|
198
198
|
} );
|
|
199
199
|
|
|
200
200
|
addMethodChaining( 'vertexStage', ( ...params ) => { // @deprecated, r173
|
|
201
201
|
|
|
202
|
-
console.warn( 'TSL
|
|
202
|
+
console.warn( 'THREE.TSL: .vertexStage() has been renamed to .toVertexStage().' );
|
|
203
203
|
return varying( ...params );
|
|
204
204
|
|
|
205
205
|
} );
|
|
@@ -137,7 +137,7 @@ export const blendColor = /*@__PURE__*/ Fn( ( [ base, blend ] ) => {
|
|
|
137
137
|
* @function
|
|
138
138
|
* @deprecated since r171. Use {@link blendBurn} instead.
|
|
139
139
|
*
|
|
140
|
-
* @param
|
|
140
|
+
* @param {...any} params
|
|
141
141
|
* @returns {Function}
|
|
142
142
|
*/
|
|
143
143
|
export const burn = ( ...params ) => { // @deprecated, r171
|
|
@@ -152,7 +152,7 @@ export const burn = ( ...params ) => { // @deprecated, r171
|
|
|
152
152
|
* @function
|
|
153
153
|
* @deprecated since r171. Use {@link blendDodge} instead.
|
|
154
154
|
*
|
|
155
|
-
* @param
|
|
155
|
+
* @param {...any} params
|
|
156
156
|
* @returns {Function}
|
|
157
157
|
*/
|
|
158
158
|
export const dodge = ( ...params ) => { // @deprecated, r171
|
|
@@ -167,7 +167,7 @@ export const dodge = ( ...params ) => { // @deprecated, r171
|
|
|
167
167
|
* @function
|
|
168
168
|
* @deprecated since r171. Use {@link blendScreen} instead.
|
|
169
169
|
*
|
|
170
|
-
* @param
|
|
170
|
+
* @param {...any} params
|
|
171
171
|
* @returns {Function}
|
|
172
172
|
*/
|
|
173
173
|
export const screen = ( ...params ) => { // @deprecated, r171
|
|
@@ -182,7 +182,7 @@ export const screen = ( ...params ) => { // @deprecated, r171
|
|
|
182
182
|
* @function
|
|
183
183
|
* @deprecated since r171. Use {@link blendOverlay} instead.
|
|
184
184
|
*
|
|
185
|
-
* @param
|
|
185
|
+
* @param {...any} params
|
|
186
186
|
* @returns {Function}
|
|
187
187
|
*/
|
|
188
188
|
export const overlay = ( ...params ) => { // @deprecated, r171
|
|
@@ -114,4 +114,4 @@ export default BumpMapNode;
|
|
|
114
114
|
* @param {?Node<float>} [scaleNode=null] - Controls the intensity of the bump effect.
|
|
115
115
|
* @returns {BumpMapNode}
|
|
116
116
|
*/
|
|
117
|
-
export const bumpMap = /*@__PURE__*/ nodeProxy( BumpMapNode );
|
|
117
|
+
export const bumpMap = /*@__PURE__*/ nodeProxy( BumpMapNode ).setParameterLength( 1, 2 );
|
|
@@ -145,4 +145,4 @@ export default NormalMapNode;
|
|
|
145
145
|
* @param {?Node<vec2>} [scaleNode=null] - Controls the intensity of the effect.
|
|
146
146
|
* @returns {NormalMapNode}
|
|
147
147
|
*/
|
|
148
|
-
export const normalMap = /*@__PURE__*/ nodeProxy( NormalMapNode );
|
|
148
|
+
export const normalMap = /*@__PURE__*/ nodeProxy( NormalMapNode ).setParameterLength( 1, 2 );
|
|
@@ -62,4 +62,4 @@ export default PosterizeNode;
|
|
|
62
62
|
* @param {Node} stepsNode - Controls the intensity of the posterization effect. A lower number results in a more blocky appearance.
|
|
63
63
|
* @returns {PosterizeNode}
|
|
64
64
|
*/
|
|
65
|
-
export const posterize = /*@__PURE__*/ nodeProxy( PosterizeNode );
|
|
65
|
+
export const posterize = /*@__PURE__*/ nodeProxy( PosterizeNode ).setParameterLength( 2 );
|
|
@@ -253,7 +253,7 @@ export const viewportUV = /*@__PURE__*/ viewportCoordinate.div( viewportSize );
|
|
|
253
253
|
*/
|
|
254
254
|
export const viewportResolution = /*@__PURE__*/ ( Fn( () => { // @deprecated, r169
|
|
255
255
|
|
|
256
|
-
console.warn( 'TSL
|
|
256
|
+
console.warn( 'THREE.TSL: "viewportResolution" is deprecated. Use "screenSize" instead.' );
|
|
257
257
|
|
|
258
258
|
return screenSize;
|
|
259
259
|
|
|
@@ -266,7 +266,7 @@ export const viewportResolution = /*@__PURE__*/ ( Fn( () => { // @deprecated, r1
|
|
|
266
266
|
*/
|
|
267
267
|
export const viewportTopLeft = /*@__PURE__*/ ( Fn( () => { // @deprecated, r168
|
|
268
268
|
|
|
269
|
-
console.warn( 'TSL
|
|
269
|
+
console.warn( 'THREE.TSL: "viewportTopLeft" is deprecated. Use "screenUV" instead.' );
|
|
270
270
|
|
|
271
271
|
return screenUV;
|
|
272
272
|
|
|
@@ -279,7 +279,7 @@ export const viewportTopLeft = /*@__PURE__*/ ( Fn( () => { // @deprecated, r168
|
|
|
279
279
|
*/
|
|
280
280
|
export const viewportBottomLeft = /*@__PURE__*/ ( Fn( () => { // @deprecated, r168
|
|
281
281
|
|
|
282
|
-
console.warn( 'TSL
|
|
282
|
+
console.warn( 'THREE.TSL: "viewportBottomLeft" is deprecated. Use "screenUV.flipY()" instead.' );
|
|
283
283
|
|
|
284
284
|
return screenUV.flipY();
|
|
285
285
|
|
|
@@ -278,10 +278,10 @@ export const depth = /*@__PURE__*/ nodeImmutable( ViewportDepthNode, ViewportDep
|
|
|
278
278
|
*
|
|
279
279
|
* @tsl
|
|
280
280
|
* @function
|
|
281
|
-
* @param {Node<float>} value - The perspective depth.
|
|
281
|
+
* @param {?Node<float>} [value=null] - The perspective depth. If `null` is provided, the current fragment's depth is used.
|
|
282
282
|
* @returns {ViewportDepthNode<float>}
|
|
283
283
|
*/
|
|
284
|
-
export const linearDepth = /*@__PURE__*/ nodeProxy( ViewportDepthNode, ViewportDepthNode.LINEAR_DEPTH );
|
|
284
|
+
export const linearDepth = /*@__PURE__*/ nodeProxy( ViewportDepthNode, ViewportDepthNode.LINEAR_DEPTH ).setParameterLength( 0, 1 );
|
|
285
285
|
|
|
286
286
|
/**
|
|
287
287
|
* TSL object that represents the linear (orthographic) depth value of the current fragment
|
|
@@ -48,8 +48,8 @@ export default ViewportDepthTextureNode;
|
|
|
48
48
|
*
|
|
49
49
|
* @tsl
|
|
50
50
|
* @function
|
|
51
|
-
* @param {Node} [uvNode=screenUV] - The uv node.
|
|
51
|
+
* @param {?Node} [uvNode=screenUV] - The uv node.
|
|
52
52
|
* @param {?Node} [levelNode=null] - The level node.
|
|
53
53
|
* @returns {ViewportDepthTextureNode}
|
|
54
54
|
*/
|
|
55
|
-
export const viewportDepthTexture = /*@__PURE__*/ nodeProxy( ViewportDepthTextureNode );
|
|
55
|
+
export const viewportDepthTexture = /*@__PURE__*/ nodeProxy( ViewportDepthTextureNode ).setParameterLength( 0, 2 );
|
|
@@ -54,8 +54,8 @@ export default ViewportSharedTextureNode;
|
|
|
54
54
|
*
|
|
55
55
|
* @tsl
|
|
56
56
|
* @function
|
|
57
|
-
* @param {Node} [uvNode=screenUV] - The uv node.
|
|
57
|
+
* @param {?Node} [uvNode=screenUV] - The uv node.
|
|
58
58
|
* @param {?Node} [levelNode=null] - The level node.
|
|
59
59
|
* @returns {ViewportSharedTextureNode}
|
|
60
60
|
*/
|
|
61
|
-
export const viewportSharedTexture = /*@__PURE__*/ nodeProxy( ViewportSharedTextureNode );
|
|
61
|
+
export const viewportSharedTexture = /*@__PURE__*/ nodeProxy( ViewportSharedTextureNode ).setParameterLength( 0, 2 );
|
|
@@ -118,21 +118,21 @@ export default ViewportTextureNode;
|
|
|
118
118
|
*
|
|
119
119
|
* @tsl
|
|
120
120
|
* @function
|
|
121
|
-
* @param {Node} [uvNode=screenUV] - The uv node.
|
|
121
|
+
* @param {?Node} [uvNode=screenUV] - The uv node.
|
|
122
122
|
* @param {?Node} [levelNode=null] - The level node.
|
|
123
123
|
* @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
|
|
124
124
|
* @returns {ViewportTextureNode}
|
|
125
125
|
*/
|
|
126
|
-
export const viewportTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode );
|
|
126
|
+
export const viewportTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode ).setParameterLength( 0, 3 );
|
|
127
127
|
|
|
128
128
|
/**
|
|
129
129
|
* TSL function for creating a viewport texture node with enabled mipmap generation.
|
|
130
130
|
*
|
|
131
131
|
* @tsl
|
|
132
132
|
* @function
|
|
133
|
-
* @param {Node} [uvNode=screenUV] - The uv node.
|
|
133
|
+
* @param {?Node} [uvNode=screenUV] - The uv node.
|
|
134
134
|
* @param {?Node} [levelNode=null] - The level node.
|
|
135
135
|
* @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
|
|
136
136
|
* @returns {ViewportTextureNode}
|
|
137
137
|
*/
|
|
138
|
-
export const viewportMipTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode, null, null, { generateMipmaps: true } );
|
|
138
|
+
export const viewportMipTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode, null, null, { generateMipmaps: true } ).setParameterLength( 0, 3 );
|
|
@@ -30,18 +30,18 @@ class ShadowMaskModel extends LightingModel {
|
|
|
30
30
|
*
|
|
31
31
|
* @param {Object} input - The input data.
|
|
32
32
|
*/
|
|
33
|
-
direct( {
|
|
33
|
+
direct( { lightNode } ) {
|
|
34
34
|
|
|
35
|
-
this.shadowNode.mulAssign(
|
|
35
|
+
this.shadowNode.mulAssign( lightNode.shadowNode );
|
|
36
36
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
40
|
* Uses the shadow mask to produce the final color.
|
|
41
41
|
*
|
|
42
|
-
* @param {
|
|
42
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
43
43
|
*/
|
|
44
|
-
finish( context ) {
|
|
44
|
+
finish( { context } ) {
|
|
45
45
|
|
|
46
46
|
diffuseColor.a.mulAssign( this.shadowNode.oneMinus() );
|
|
47
47
|
|
|
@@ -20,16 +20,16 @@ import { float, Fn, min, normalize, sub, vec3 } from '../../tsl/TSLBase.js';
|
|
|
20
20
|
*/
|
|
21
21
|
const getParallaxCorrectNormal = /*@__PURE__*/ Fn( ( [ normal, cubeSize, cubePos ] ) => {
|
|
22
22
|
|
|
23
|
-
const nDir = normalize( normal ).toVar(
|
|
24
|
-
const rbmax = sub( float( 0.5 ).mul( cubeSize.sub( cubePos ) ), positionWorld ).div( nDir ).toVar(
|
|
25
|
-
const rbmin = sub( float( - 0.5 ).mul( cubeSize.sub( cubePos ) ), positionWorld ).div( nDir ).toVar(
|
|
26
|
-
const rbminmax = vec3().toVar(
|
|
23
|
+
const nDir = normalize( normal ).toVar();
|
|
24
|
+
const rbmax = sub( float( 0.5 ).mul( cubeSize.sub( cubePos ) ), positionWorld ).div( nDir ).toVar();
|
|
25
|
+
const rbmin = sub( float( - 0.5 ).mul( cubeSize.sub( cubePos ) ), positionWorld ).div( nDir ).toVar();
|
|
26
|
+
const rbminmax = vec3().toVar();
|
|
27
27
|
rbminmax.x = nDir.x.greaterThan( float( 0 ) ).select( rbmax.x, rbmin.x );
|
|
28
28
|
rbminmax.y = nDir.y.greaterThan( float( 0 ) ).select( rbmax.y, rbmin.y );
|
|
29
29
|
rbminmax.z = nDir.z.greaterThan( float( 0 ) ).select( rbmax.z, rbmin.z );
|
|
30
30
|
|
|
31
|
-
const correction = min( min( rbminmax.x, rbminmax.y ), rbminmax.z ).toVar(
|
|
32
|
-
const boxIntersection = positionWorld.add( nDir.mul( correction ) ).toVar(
|
|
31
|
+
const correction = min( min( rbminmax.x, rbminmax.y ), rbminmax.z ).toVar();
|
|
32
|
+
const boxIntersection = positionWorld.add( nDir.mul( correction ) ).toVar();
|
|
33
33
|
return boxIntersection.sub( cubePos );
|
|
34
34
|
|
|
35
35
|
} );
|
|
@@ -169,4 +169,4 @@ export default RangeNode;
|
|
|
169
169
|
* @param {Node<any>} [maxNode=float()] - A node defining the upper bound of the range.
|
|
170
170
|
* @returns {RangeNode}
|
|
171
171
|
*/
|
|
172
|
-
export const range = /*@__PURE__*/ nodeProxy( RangeNode );
|
|
172
|
+
export const range = /*@__PURE__*/ nodeProxy( RangeNode ).setParameterLength( 2 );
|