super-three 0.179.0 → 0.184.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +3 -4
- package/build/three.cjs +14522 -12207
- package/build/three.core.js +12005 -10954
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +2270 -1005
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +63 -18
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +16573 -7890
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +16533 -7888
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +12 -4
- package/examples/jsm/animation/CCDIKSolver.js +8 -4
- package/examples/jsm/controls/ArcballControls.js +15 -12
- package/examples/jsm/controls/DragControls.js +9 -59
- package/examples/jsm/controls/FirstPersonControls.js +61 -57
- package/examples/jsm/controls/FlyControls.js +5 -1
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +113 -10
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +9 -9
- package/examples/jsm/controls/TransformControls.js +35 -3
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMShadowNode.js +6 -2
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -2
- package/examples/jsm/exporters/GLTFExporter.js +185 -34
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +31 -5
- package/examples/jsm/geometries/DecalGeometry.js +3 -3
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +21 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +110 -13
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +542 -0
- package/examples/jsm/inspector/RendererInspector.js +425 -0
- package/examples/jsm/inspector/extensions/extensions.json +6 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Console.js +238 -0
- package/examples/jsm/inspector/tabs/Memory.js +128 -0
- package/examples/jsm/inspector/tabs/Parameters.js +380 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Settings.js +264 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
- package/examples/jsm/inspector/tabs/Viewer.js +268 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +2072 -0
- package/examples/jsm/inspector/ui/Style.js +1667 -0
- package/examples/jsm/inspector/ui/Tab.js +265 -0
- package/examples/jsm/inspector/ui/Values.js +476 -0
- package/examples/jsm/inspector/ui/utils.js +69 -0
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/interactive/HTMLMesh.js +6 -10
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +651 -0
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineMaterial.js +7 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3DMLoader.js +5 -4
- package/examples/jsm/loaders/3MFLoader.js +3 -3
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +27 -4029
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +692 -53
- package/examples/jsm/loaders/FBXLoader.js +237 -39
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +159 -185
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +485 -0
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +162 -53
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +41 -50
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +9 -41
- package/examples/jsm/loaders/MaterialXLoader.js +22 -5
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PCDLoader.js +4 -2
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +4 -4
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/TTFLoader.js +4 -4
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +287 -162
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +79 -2
- package/examples/jsm/loaders/VTKLoader.js +42 -25
- package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +450 -363
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -2
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +73 -25
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +91 -7
- package/examples/jsm/objects/SkyMesh.js +151 -17
- package/examples/jsm/objects/Water.js +7 -6
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/WaterMesh.js +11 -13
- package/examples/jsm/physics/AmmoPhysics.js +12 -7
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +9 -5
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +56 -24
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +8 -7
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +175 -61
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +21 -8
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +8 -4
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +7 -6
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +3 -5
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +85 -25
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +52 -10
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +51 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +36 -24
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/AnamorphicNode.js +40 -5
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +23 -9
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +5 -37
- package/examples/jsm/tsl/display/DenoiseNode.js +3 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/FXAANode.js +2 -2
- package/examples/jsm/tsl/display/GTAONode.js +59 -9
- package/examples/jsm/tsl/display/GaussianBlurNode.js +68 -35
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +81 -20
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +638 -0
- package/examples/jsm/tsl/display/SSRNode.js +186 -69
- package/examples/jsm/tsl/display/SSSNode.js +490 -0
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +381 -75
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/hashBlur.js +16 -18
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +53 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +3 -4
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +13 -6
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +4 -7
- package/package.json +27 -38
- package/src/Three.Core.js +7 -3
- package/src/Three.TSL.js +61 -16
- package/src/Three.WebGPU.Nodes.js +7 -0
- package/src/Three.WebGPU.js +11 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +12 -2
- package/src/animation/AnimationClip.js +21 -5
- package/src/animation/AnimationMixer.js +9 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +54 -14
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +11 -10
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +100 -7
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +24 -12
- package/src/core/Clock.js +7 -0
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +55 -6
- package/src/core/Raycaster.js +4 -3
- package/src/core/RenderTarget.js +14 -5
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +259 -57
- package/src/extras/TextureUtils.js +6 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +10 -8
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +9 -3
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +4 -1
- package/src/helpers/DirectionalLightHelper.js +4 -1
- package/src/helpers/HemisphereLightHelper.js +3 -0
- package/src/helpers/PointLightHelper.js +1 -25
- package/src/helpers/SpotLightHelper.js +3 -0
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +13 -2
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +30 -2
- package/src/loaders/DataTextureLoader.js +6 -4
- package/src/loaders/FileLoader.js +4 -4
- package/src/loaders/ImageBitmapLoader.js +17 -13
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/Loader.js +9 -3
- package/src/loaders/LoadingManager.js +25 -3
- package/src/loaders/MaterialLoader.js +6 -4
- package/src/loaders/ObjectLoader.js +57 -17
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +5 -4
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +1 -0
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +11 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +11 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +2 -1
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +22 -3
- package/src/materials/nodes/Line2NodeMaterial.js +36 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
- package/src/materials/nodes/NodeMaterial.js +95 -35
- package/src/materials/nodes/PointsNodeMaterial.js +81 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +194 -88
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +23 -21
- package/src/math/Matrix2.js +14 -10
- package/src/math/Matrix3.js +15 -11
- package/src/math/Matrix4.js +94 -81
- package/src/math/Plane.js +5 -4
- package/src/math/Quaternion.js +60 -84
- package/src/math/Sphere.js +1 -1
- package/src/math/Spherical.js +1 -1
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +11 -7
- package/src/math/Vector3.js +15 -13
- package/src/math/Vector4.js +13 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/nodes/Nodes.js +86 -65
- package/src/nodes/TSL.js +11 -8
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/BatchNode.js +10 -10
- package/src/nodes/accessors/Bitangent.js +5 -5
- package/src/nodes/accessors/BufferAttributeNode.js +107 -15
- package/src/nodes/accessors/BufferNode.js +30 -3
- package/src/nodes/accessors/Camera.js +260 -13
- package/src/nodes/accessors/ClippingNode.js +10 -9
- package/src/nodes/accessors/CubeTextureNode.js +32 -6
- package/src/nodes/accessors/InstanceNode.js +164 -39
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/MaterialNode.js +9 -1
- package/src/nodes/accessors/MaterialProperties.js +2 -5
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +16 -15
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +51 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +7 -7
- package/src/nodes/accessors/ReferenceNode.js +11 -10
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/SkinningNode.js +27 -26
- package/src/nodes/accessors/StorageBufferNode.js +14 -24
- package/src/nodes/accessors/StorageTextureNode.js +62 -9
- package/src/nodes/accessors/Tangent.js +4 -14
- package/src/nodes/accessors/Texture3DNode.js +41 -31
- package/src/nodes/accessors/TextureNode.js +193 -63
- package/src/nodes/accessors/UniformArrayNode.js +6 -4
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionCallNode.js +25 -5
- package/src/nodes/code/FunctionNode.js +25 -3
- package/src/nodes/core/ArrayNode.js +22 -2
- package/src/nodes/core/AssignNode.js +6 -5
- package/src/nodes/core/AttributeNode.js +5 -4
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +133 -15
- package/src/nodes/core/IndexNode.js +4 -3
- package/src/nodes/core/InputNode.js +3 -2
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +41 -8
- package/src/nodes/core/MRTNode.js +48 -2
- package/src/nodes/core/Node.js +264 -46
- package/src/nodes/core/NodeBuilder.js +453 -87
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +31 -23
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +25 -97
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +34 -3
- package/src/nodes/core/PropertyNode.js +26 -3
- package/src/nodes/core/StackNode.js +99 -23
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +22 -8
- package/src/nodes/core/StructTypeNode.js +13 -18
- package/src/nodes/core/SubBuildNode.js +4 -4
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +37 -13
- package/src/nodes/core/VarNode.js +96 -34
- package/src/nodes/core/VaryingNode.js +2 -18
- package/src/nodes/display/BlendModes.js +0 -63
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +18 -1
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +4 -8
- package/src/nodes/display/NormalMapNode.js +41 -5
- package/src/nodes/display/PassNode.js +175 -25
- package/src/nodes/display/RenderOutputNode.js +35 -9
- package/src/nodes/display/ScreenNode.js +47 -15
- package/src/nodes/display/ToneMappingNode.js +32 -5
- package/src/nodes/display/ToonOutlinePassNode.js +10 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +14 -6
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +72 -14
- package/src/nodes/fog/Fog.js +18 -34
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhysicalLightingModel.js +128 -46
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/geometry/RangeNode.js +44 -6
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +4 -4
- package/src/nodes/gpgpu/ComputeNode.js +76 -38
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -4
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +34 -9
- package/src/nodes/lighting/LightsNode.js +10 -32
- package/src/nodes/lighting/PointShadowNode.js +167 -148
- package/src/nodes/lighting/ShadowFilterNode.js +55 -65
- package/src/nodes/lighting/ShadowNode.js +189 -44
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +25 -8
- package/src/nodes/math/MathNode.js +98 -57
- package/src/nodes/math/OperatorNode.js +8 -5
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/pmrem/PMREMNode.js +1 -1
- package/src/nodes/pmrem/PMREMUtils.js +111 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -3
- package/src/nodes/tsl/TSLCore.js +488 -166
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +14 -13
- package/src/nodes/utils/EventNode.js +67 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +7 -4
- package/src/nodes/utils/LoopNode.js +20 -24
- package/src/nodes/utils/MemberNode.js +60 -8
- package/src/nodes/utils/Packing.js +13 -1
- package/src/nodes/utils/PostProcessingUtils.js +60 -1
- package/src/nodes/utils/RTTNode.js +14 -4
- package/src/nodes/utils/ReflectorNode.js +61 -11
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +12 -2
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +12 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +46 -18
- package/src/objects/InstancedMesh.js +30 -3
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +3 -2
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Skeleton.js +12 -2
- package/src/objects/SkinnedMesh.js +29 -10
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +372 -179
- package/src/renderers/common/Animation.js +16 -4
- package/src/renderers/common/Attributes.js +16 -2
- package/src/renderers/common/Backend.js +137 -35
- package/src/renderers/common/Background.js +28 -14
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +83 -12
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +40 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +51 -7
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +55 -3
- package/src/renderers/common/Info.js +337 -6
- package/src/renderers/common/InspectorBase.js +151 -0
- package/src/renderers/common/Lighting.js +5 -21
- package/src/renderers/common/Pipelines.js +41 -8
- package/src/renderers/common/PostProcessing.js +9 -226
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +7 -3
- package/src/renderers/common/RenderContext.js +18 -2
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +32 -6
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +22 -6
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +927 -335
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +9 -1
- package/src/renderers/common/Sampler.js +52 -14
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/StorageTexture.js +9 -1
- package/src/renderers/common/Textures.js +208 -47
- package/src/renderers/common/TimestampQueryPool.js +70 -6
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +64 -2
- package/src/renderers/common/XRManager.js +79 -51
- package/src/renderers/common/extras/PMREMGenerator.js +176 -79
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +260 -95
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
- package/src/renderers/shaders/DFGLUTData.js +49 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +152 -59
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +221 -190
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +5 -3
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +4 -1
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -6
- package/src/renderers/shaders/UniformsLib.js +8 -5
- package/src/renderers/shaders/UniformsUtils.js +52 -9
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +15 -15
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +11 -5
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -13
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +270 -0
- package/src/renderers/webgl/WebGLProgram.js +63 -122
- package/src/renderers/webgl/WebGLPrograms.js +65 -52
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShadowMap.js +191 -26
- package/src/renderers/webgl/WebGLState.js +79 -40
- package/src/renderers/webgl/WebGLTextures.js +234 -68
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +24 -3
- package/src/renderers/webgl/WebGLUtils.js +8 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +438 -235
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +339 -84
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +229 -11
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +237 -72
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +56 -27
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +8 -3
- package/src/renderers/webgpu/WebGPUBackend.js +403 -253
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +5 -3
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +491 -123
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +108 -34
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +360 -201
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +111 -54
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +155 -205
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +407 -149
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +36 -13
- package/src/renderers/webgpu/utils/WebGPUUtils.js +55 -13
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +45 -29
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/ExternalTexture.js +15 -4
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +5 -4
- package/src/textures/Texture.js +19 -7
- package/src/textures/VideoTexture.js +2 -3
- package/src/utils.js +344 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/src/nodes/accessors/SceneNode.js +0 -144
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
- package/src/nodes/utils/RemapNode.js +0 -125
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
package/src/textures/Texture.js
CHANGED
|
@@ -15,6 +15,7 @@ import { Vector2 } from '../math/Vector2.js';
|
|
|
15
15
|
import { Vector3 } from '../math/Vector3.js';
|
|
16
16
|
import { Matrix3 } from '../math/Matrix3.js';
|
|
17
17
|
import { Source } from './Source.js';
|
|
18
|
+
import { warn } from '../utils.js';
|
|
18
19
|
|
|
19
20
|
let _textureId = 0;
|
|
20
21
|
|
|
@@ -67,7 +68,7 @@ class Texture extends EventDispatcher {
|
|
|
67
68
|
Object.defineProperty( this, 'id', { value: _textureId ++ } );
|
|
68
69
|
|
|
69
70
|
/**
|
|
70
|
-
* The UUID of the
|
|
71
|
+
* The UUID of the texture.
|
|
71
72
|
*
|
|
72
73
|
* @type {string}
|
|
73
74
|
* @readonly
|
|
@@ -75,7 +76,7 @@ class Texture extends EventDispatcher {
|
|
|
75
76
|
this.uuid = generateUUID();
|
|
76
77
|
|
|
77
78
|
/**
|
|
78
|
-
* The name of the
|
|
79
|
+
* The name of the texture.
|
|
79
80
|
*
|
|
80
81
|
* @type {string}
|
|
81
82
|
*/
|
|
@@ -157,7 +158,7 @@ class Texture extends EventDispatcher {
|
|
|
157
158
|
* texture samples being used.
|
|
158
159
|
*
|
|
159
160
|
* @type {number}
|
|
160
|
-
* @default
|
|
161
|
+
* @default Texture.DEFAULT_ANISOTROPY
|
|
161
162
|
*/
|
|
162
163
|
this.anisotropy = anisotropy;
|
|
163
164
|
|
|
@@ -367,6 +368,15 @@ class Texture extends EventDispatcher {
|
|
|
367
368
|
*/
|
|
368
369
|
this.pmremVersion = 0;
|
|
369
370
|
|
|
371
|
+
/**
|
|
372
|
+
* Whether the texture should use one of the 16 bit integer formats which are normalized
|
|
373
|
+
* to [0, 1] or [-1, 1] (depending on signed/unsigned) when sampled.
|
|
374
|
+
*
|
|
375
|
+
* @type {boolean}
|
|
376
|
+
* @default false
|
|
377
|
+
*/
|
|
378
|
+
this.normalized = false;
|
|
379
|
+
|
|
370
380
|
}
|
|
371
381
|
|
|
372
382
|
/**
|
|
@@ -407,14 +417,14 @@ class Texture extends EventDispatcher {
|
|
|
407
417
|
|
|
408
418
|
}
|
|
409
419
|
|
|
410
|
-
set image( value
|
|
420
|
+
set image( value ) {
|
|
411
421
|
|
|
412
422
|
this.source.data = value;
|
|
413
423
|
|
|
414
424
|
}
|
|
415
425
|
|
|
416
426
|
/**
|
|
417
|
-
* Updates the texture transformation matrix from the
|
|
427
|
+
* Updates the texture transformation matrix from the properties {@link Texture#offset},
|
|
418
428
|
* {@link Texture#repeat}, {@link Texture#rotation}, and {@link Texture#center}.
|
|
419
429
|
*/
|
|
420
430
|
updateMatrix() {
|
|
@@ -482,6 +492,7 @@ class Texture extends EventDispatcher {
|
|
|
482
492
|
this.format = source.format;
|
|
483
493
|
this.internalFormat = source.internalFormat;
|
|
484
494
|
this.type = source.type;
|
|
495
|
+
this.normalized = source.normalized;
|
|
485
496
|
|
|
486
497
|
this.offset.copy( source.offset );
|
|
487
498
|
this.repeat.copy( source.repeat );
|
|
@@ -521,7 +532,7 @@ class Texture extends EventDispatcher {
|
|
|
521
532
|
|
|
522
533
|
if ( newValue === undefined ) {
|
|
523
534
|
|
|
524
|
-
|
|
535
|
+
warn( `Texture.setValues(): parameter '${ key }' has value of undefined.` );
|
|
525
536
|
continue;
|
|
526
537
|
|
|
527
538
|
}
|
|
@@ -530,7 +541,7 @@ class Texture extends EventDispatcher {
|
|
|
530
541
|
|
|
531
542
|
if ( currentValue === undefined ) {
|
|
532
543
|
|
|
533
|
-
|
|
544
|
+
warn( `Texture.setValues(): property '${ key }' does not exist.` );
|
|
534
545
|
continue;
|
|
535
546
|
|
|
536
547
|
}
|
|
@@ -600,6 +611,7 @@ class Texture extends EventDispatcher {
|
|
|
600
611
|
format: this.format,
|
|
601
612
|
internalFormat: this.internalFormat,
|
|
602
613
|
type: this.type,
|
|
614
|
+
normalized: this.normalized,
|
|
603
615
|
colorSpace: this.colorSpace,
|
|
604
616
|
|
|
605
617
|
minFilter: this.minFilter,
|
|
@@ -108,15 +108,14 @@ class VideoTexture extends Texture {
|
|
|
108
108
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
/**
|
|
112
|
-
* @override
|
|
113
|
-
*/
|
|
114
111
|
dispose() {
|
|
115
112
|
|
|
116
113
|
if ( this._requestVideoFrameCallbackId !== 0 ) {
|
|
117
114
|
|
|
118
115
|
this.source.data.cancelVideoFrameCallback( this._requestVideoFrameCallbackId );
|
|
119
116
|
|
|
117
|
+
this._requestVideoFrameCallbackId = 0;
|
|
118
|
+
|
|
120
119
|
}
|
|
121
120
|
|
|
122
121
|
super.dispose();
|
package/src/utils.js
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
import { AlwaysDepth, EqualDepth, GreaterDepth, GreaterEqualDepth, LessDepth, LessEqualDepth, NeverDepth, NotEqualDepth } from './constants.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Finds the minimum value in an array.
|
|
5
|
+
*
|
|
6
|
+
* @private
|
|
7
|
+
* @param {Array<number>} array - The array to search for the minimum value.
|
|
8
|
+
* @return {number} The minimum value in the array, or Infinity if the array is empty.
|
|
9
|
+
*/
|
|
1
10
|
function arrayMin( array ) {
|
|
2
11
|
|
|
3
12
|
if ( array.length === 0 ) return Infinity;
|
|
@@ -14,6 +23,13 @@ function arrayMin( array ) {
|
|
|
14
23
|
|
|
15
24
|
}
|
|
16
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Finds the maximum value in an array.
|
|
28
|
+
*
|
|
29
|
+
* @private
|
|
30
|
+
* @param {Array<number>} array - The array to search for the maximum value.
|
|
31
|
+
* @return {number} The maximum value in the array, or -Infinity if the array is empty.
|
|
32
|
+
*/
|
|
17
33
|
function arrayMax( array ) {
|
|
18
34
|
|
|
19
35
|
if ( array.length === 0 ) return - Infinity;
|
|
@@ -30,6 +46,18 @@ function arrayMax( array ) {
|
|
|
30
46
|
|
|
31
47
|
}
|
|
32
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Checks if an array contains values that require Uint32 representation.
|
|
51
|
+
*
|
|
52
|
+
* This function determines whether the array contains any values >= 65535,
|
|
53
|
+
* which would require a Uint32Array rather than a Uint16Array for proper storage.
|
|
54
|
+
* The function iterates from the end of the array, assuming larger values are
|
|
55
|
+
* typically located at the end.
|
|
56
|
+
*
|
|
57
|
+
* @private
|
|
58
|
+
* @param {Array<number>} array - The array to check.
|
|
59
|
+
* @return {boolean} True if the array contains values >= 65535, false otherwise.
|
|
60
|
+
*/
|
|
33
61
|
function arrayNeedsUint32( array ) {
|
|
34
62
|
|
|
35
63
|
// assumes larger values usually on last
|
|
@@ -44,6 +72,14 @@ function arrayNeedsUint32( array ) {
|
|
|
44
72
|
|
|
45
73
|
}
|
|
46
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Map of typed array constructor names to their constructors.
|
|
77
|
+
* This mapping enables dynamic creation of typed arrays based on string type names.
|
|
78
|
+
*
|
|
79
|
+
* @private
|
|
80
|
+
* @constant
|
|
81
|
+
* @type {Object<string, TypedArrayConstructor>}
|
|
82
|
+
*/
|
|
47
83
|
const TYPED_ARRAYS = {
|
|
48
84
|
Int8Array: Int8Array,
|
|
49
85
|
Uint8Array: Uint8Array,
|
|
@@ -56,18 +92,57 @@ const TYPED_ARRAYS = {
|
|
|
56
92
|
Float64Array: Float64Array
|
|
57
93
|
};
|
|
58
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Creates a typed array of the specified type from the given buffer.
|
|
97
|
+
*
|
|
98
|
+
* @private
|
|
99
|
+
* @param {string} type - The name of the typed array type (e.g., 'Float32Array', 'Uint16Array').
|
|
100
|
+
* @param {ArrayBuffer} buffer - The buffer to create the typed array from.
|
|
101
|
+
* @return {TypedArray} A new typed array of the specified type.
|
|
102
|
+
*/
|
|
59
103
|
function getTypedArray( type, buffer ) {
|
|
60
104
|
|
|
61
105
|
return new TYPED_ARRAYS[ type ]( buffer );
|
|
62
106
|
|
|
63
107
|
}
|
|
64
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Returns `true` if the given object is a typed array.
|
|
111
|
+
*
|
|
112
|
+
* @param {any} array - The object to check.
|
|
113
|
+
* @return {boolean} Whether the given object is a typed array.
|
|
114
|
+
*/
|
|
115
|
+
function isTypedArray( array ) {
|
|
116
|
+
|
|
117
|
+
return ArrayBuffer.isView( array ) && ! ( array instanceof DataView );
|
|
118
|
+
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Creates an XHTML element with the specified tag name.
|
|
123
|
+
*
|
|
124
|
+
* This function uses the XHTML namespace to create DOM elements,
|
|
125
|
+
* ensuring proper element creation in XML-based contexts.
|
|
126
|
+
*
|
|
127
|
+
* @private
|
|
128
|
+
* @param {string} name - The tag name of the element to create (e.g., 'canvas', 'div').
|
|
129
|
+
* @return {HTMLElement} The created XHTML element.
|
|
130
|
+
*/
|
|
65
131
|
function createElementNS( name ) {
|
|
66
132
|
|
|
67
133
|
return document.createElementNS( 'http://www.w3.org/1999/xhtml', name );
|
|
68
134
|
|
|
69
135
|
}
|
|
70
136
|
|
|
137
|
+
/**
|
|
138
|
+
* Creates a canvas element configured for block display.
|
|
139
|
+
*
|
|
140
|
+
* This is a convenience function that creates a canvas element with
|
|
141
|
+
* display style set to 'block', which is commonly used in three.js
|
|
142
|
+
* rendering contexts to avoid inline element spacing issues.
|
|
143
|
+
*
|
|
144
|
+
* @return {HTMLCanvasElement} A canvas element with display set to 'block'.
|
|
145
|
+
*/
|
|
71
146
|
function createCanvasElement() {
|
|
72
147
|
|
|
73
148
|
const canvas = createElementNS( 'canvas' );
|
|
@@ -76,18 +151,238 @@ function createCanvasElement() {
|
|
|
76
151
|
|
|
77
152
|
}
|
|
78
153
|
|
|
154
|
+
/**
|
|
155
|
+
* Internal cache for tracking warning messages to prevent duplicate warnings.
|
|
156
|
+
*
|
|
157
|
+
* @private
|
|
158
|
+
* @type {Object<string, boolean>}
|
|
159
|
+
*/
|
|
79
160
|
const _cache = {};
|
|
80
161
|
|
|
81
|
-
|
|
162
|
+
/**
|
|
163
|
+
* Custom console function handler for intercepting log, warn, and error calls.
|
|
164
|
+
*
|
|
165
|
+
* @private
|
|
166
|
+
* @type {Function|null}
|
|
167
|
+
*/
|
|
168
|
+
let _setConsoleFunction = null;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Sets a custom function to handle console output.
|
|
172
|
+
*
|
|
173
|
+
* This allows external code to intercept and handle console.log, console.warn,
|
|
174
|
+
* and console.error calls made by three.js, which is useful for custom logging,
|
|
175
|
+
* testing, or debugging workflows.
|
|
176
|
+
*
|
|
177
|
+
* @param {Function} fn - The function to handle console output. Should accept
|
|
178
|
+
* (type, message, ...params) where type is 'log', 'warn', or 'error'.
|
|
179
|
+
*/
|
|
180
|
+
function setConsoleFunction( fn ) {
|
|
181
|
+
|
|
182
|
+
_setConsoleFunction = fn;
|
|
183
|
+
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Gets the currently set custom console function.
|
|
188
|
+
*
|
|
189
|
+
* @return {Function|null} The custom console function, or null if not set.
|
|
190
|
+
*/
|
|
191
|
+
function getConsoleFunction() {
|
|
192
|
+
|
|
193
|
+
return _setConsoleFunction;
|
|
194
|
+
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Logs an informational message with the 'THREE.' prefix.
|
|
199
|
+
*
|
|
200
|
+
* If a custom console function is set via setConsoleFunction(), it will be used
|
|
201
|
+
* instead of the native console.log. The first parameter is treated as the
|
|
202
|
+
* method name and is automatically prefixed with 'THREE.'.
|
|
203
|
+
*
|
|
204
|
+
* @param {...any} params - The message components. The first param is used as
|
|
205
|
+
* the method name and prefixed with 'THREE.'.
|
|
206
|
+
*/
|
|
207
|
+
function log( ...params ) {
|
|
208
|
+
|
|
209
|
+
const message = 'THREE.' + params.shift();
|
|
210
|
+
|
|
211
|
+
if ( _setConsoleFunction ) {
|
|
212
|
+
|
|
213
|
+
_setConsoleFunction( 'log', message, ...params );
|
|
214
|
+
|
|
215
|
+
} else {
|
|
216
|
+
|
|
217
|
+
console.log( message, ...params );
|
|
218
|
+
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Enhances log/warn/error messages related to TSL.
|
|
225
|
+
*
|
|
226
|
+
* @param {Array<any>} params - The original message parameters.
|
|
227
|
+
* @returns {Array<any>} The filtered and enhanced message parameters.
|
|
228
|
+
*/
|
|
229
|
+
function enhanceLogMessage( params ) {
|
|
230
|
+
|
|
231
|
+
const message = params[ 0 ];
|
|
232
|
+
|
|
233
|
+
if ( typeof message === 'string' && message.startsWith( 'TSL:' ) ) {
|
|
234
|
+
|
|
235
|
+
const stackTrace = params[ 1 ];
|
|
236
|
+
|
|
237
|
+
if ( stackTrace && stackTrace.isStackTrace ) {
|
|
238
|
+
|
|
239
|
+
params[ 0 ] += ' ' + stackTrace.getLocation();
|
|
240
|
+
|
|
241
|
+
} else {
|
|
242
|
+
|
|
243
|
+
params[ 1 ] = 'Stack trace not available. Enable "THREE.Node.captureStackTrace" to capture stack traces.';
|
|
244
|
+
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
return params;
|
|
250
|
+
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Logs a warning message with the 'THREE.' prefix.
|
|
255
|
+
*
|
|
256
|
+
* If a custom console function is set via setConsoleFunction(), it will be used
|
|
257
|
+
* instead of the native console.warn. The first parameter is treated as the
|
|
258
|
+
* method name and is automatically prefixed with 'THREE.'.
|
|
259
|
+
*
|
|
260
|
+
* @param {...any} params - The message components. The first param is used as
|
|
261
|
+
* the method name and prefixed with 'THREE.'.
|
|
262
|
+
*/
|
|
263
|
+
function warn( ...params ) {
|
|
264
|
+
|
|
265
|
+
params = enhanceLogMessage( params );
|
|
266
|
+
|
|
267
|
+
const message = 'THREE.' + params.shift();
|
|
268
|
+
|
|
269
|
+
if ( _setConsoleFunction ) {
|
|
270
|
+
|
|
271
|
+
_setConsoleFunction( 'warn', message, ...params );
|
|
272
|
+
|
|
273
|
+
} else {
|
|
274
|
+
|
|
275
|
+
const stackTrace = params[ 0 ];
|
|
276
|
+
|
|
277
|
+
if ( stackTrace && stackTrace.isStackTrace ) {
|
|
278
|
+
|
|
279
|
+
console.warn( stackTrace.getError( message ) );
|
|
280
|
+
|
|
281
|
+
} else {
|
|
282
|
+
|
|
283
|
+
console.warn( message, ...params );
|
|
284
|
+
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Logs an error message with the 'THREE.' prefix.
|
|
293
|
+
*
|
|
294
|
+
* If a custom console function is set via setConsoleFunction(), it will be used
|
|
295
|
+
* instead of the native console.error. The first parameter is treated as the
|
|
296
|
+
* method name and is automatically prefixed with 'THREE.'.
|
|
297
|
+
*
|
|
298
|
+
* @param {...any} params - The message components. The first param is used as
|
|
299
|
+
* the method name and prefixed with 'THREE.'.
|
|
300
|
+
*/
|
|
301
|
+
function error( ...params ) {
|
|
302
|
+
|
|
303
|
+
params = enhanceLogMessage( params );
|
|
304
|
+
|
|
305
|
+
const message = 'THREE.' + params.shift();
|
|
306
|
+
|
|
307
|
+
if ( _setConsoleFunction ) {
|
|
308
|
+
|
|
309
|
+
_setConsoleFunction( 'error', message, ...params );
|
|
310
|
+
|
|
311
|
+
} else {
|
|
312
|
+
|
|
313
|
+
const stackTrace = params[ 0 ];
|
|
314
|
+
|
|
315
|
+
if ( stackTrace && stackTrace.isStackTrace ) {
|
|
316
|
+
|
|
317
|
+
console.error( stackTrace.getError( message ) );
|
|
318
|
+
|
|
319
|
+
} else {
|
|
320
|
+
|
|
321
|
+
console.error( message, ...params );
|
|
322
|
+
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Logs a warning message only once, preventing duplicate warnings.
|
|
331
|
+
*
|
|
332
|
+
* This function maintains an internal cache of warning messages and will only
|
|
333
|
+
* output each unique warning message once. Useful for warnings that may be
|
|
334
|
+
* triggered repeatedly but should only be shown to the user once.
|
|
335
|
+
*
|
|
336
|
+
* @param {...any} params - The warning message components.
|
|
337
|
+
*/
|
|
338
|
+
function warnOnce( ...params ) {
|
|
339
|
+
|
|
340
|
+
const message = params.join( ' ' );
|
|
82
341
|
|
|
83
342
|
if ( message in _cache ) return;
|
|
84
343
|
|
|
85
344
|
_cache[ message ] = true;
|
|
86
345
|
|
|
87
|
-
|
|
346
|
+
warn( ...params );
|
|
88
347
|
|
|
89
348
|
}
|
|
90
349
|
|
|
350
|
+
/**
|
|
351
|
+
* Yields execution to the main thread to allow rendering and other tasks.
|
|
352
|
+
* Uses scheduler.yield() when available (Chrome 115+), falls back to requestAnimationFrame.
|
|
353
|
+
*
|
|
354
|
+
* @return {Promise<void>}
|
|
355
|
+
*/
|
|
356
|
+
function yieldToMain() {
|
|
357
|
+
|
|
358
|
+
if ( typeof self !== 'undefined' && typeof self.scheduler !== 'undefined' && typeof self.scheduler.yield !== 'undefined' ) {
|
|
359
|
+
|
|
360
|
+
return self.scheduler.yield();
|
|
361
|
+
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
return new Promise( resolve => {
|
|
365
|
+
|
|
366
|
+
requestAnimationFrame( resolve );
|
|
367
|
+
|
|
368
|
+
} );
|
|
369
|
+
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Asynchronously probes for WebGL sync object completion.
|
|
374
|
+
*
|
|
375
|
+
* This function creates a promise that resolves when the WebGL sync object
|
|
376
|
+
* signals completion or rejects if the sync operation fails. It uses polling
|
|
377
|
+
* at the specified interval to check the sync status without blocking the
|
|
378
|
+
* main thread. This is useful for GPU-CPU synchronization in WebGL contexts.
|
|
379
|
+
*
|
|
380
|
+
* @private
|
|
381
|
+
* @param {WebGL2RenderingContext} gl - The WebGL rendering context.
|
|
382
|
+
* @param {WebGLSync} sync - The WebGL sync object to wait for.
|
|
383
|
+
* @param {number} interval - The polling interval in milliseconds.
|
|
384
|
+
* @return {Promise<void>} A promise that resolves when the sync completes or rejects if it fails.
|
|
385
|
+
*/
|
|
91
386
|
function probeAsync( gl, sync, interval ) {
|
|
92
387
|
|
|
93
388
|
return new Promise( function ( resolve, reject ) {
|
|
@@ -117,6 +412,18 @@ function probeAsync( gl, sync, interval ) {
|
|
|
117
412
|
|
|
118
413
|
}
|
|
119
414
|
|
|
415
|
+
/**
|
|
416
|
+
* Converts a projection matrix from normalized device coordinates (NDC)
|
|
417
|
+
* range [-1, 1] to [0, 1].
|
|
418
|
+
*
|
|
419
|
+
* This conversion is commonly needed when working with depth textures or
|
|
420
|
+
* render targets that expect depth values in the [0, 1] range rather than
|
|
421
|
+
* the standard OpenGL NDC range of [-1, 1]. The function modifies the
|
|
422
|
+
* projection matrix in place.
|
|
423
|
+
*
|
|
424
|
+
* @private
|
|
425
|
+
* @param {Matrix4} projectionMatrix - The projection matrix to convert (modified in place).
|
|
426
|
+
*/
|
|
120
427
|
function toNormalizedProjectionMatrix( projectionMatrix ) {
|
|
121
428
|
|
|
122
429
|
const m = projectionMatrix.elements;
|
|
@@ -129,6 +436,21 @@ function toNormalizedProjectionMatrix( projectionMatrix ) {
|
|
|
129
436
|
|
|
130
437
|
}
|
|
131
438
|
|
|
439
|
+
/**
|
|
440
|
+
* Reverses the depth range of a projection matrix.
|
|
441
|
+
*
|
|
442
|
+
* This function inverts the depth mapping of a projection matrix, which is
|
|
443
|
+
* useful for reversed-Z depth buffer techniques that can improve depth
|
|
444
|
+
* precision. The function handles both perspective and orthographic projection
|
|
445
|
+
* matrices differently and modifies the matrix in place.
|
|
446
|
+
*
|
|
447
|
+
* For perspective matrices (where m[11] === -1), the depth mapping is
|
|
448
|
+
* reversed with an offset. For orthographic matrices, a simpler reversal
|
|
449
|
+
* is applied.
|
|
450
|
+
*
|
|
451
|
+
* @private
|
|
452
|
+
* @param {Matrix4} projectionMatrix - The projection matrix to reverse (modified in place).
|
|
453
|
+
*/
|
|
132
454
|
function toReversedProjectionMatrix( projectionMatrix ) {
|
|
133
455
|
|
|
134
456
|
const m = projectionMatrix.elements;
|
|
@@ -149,4 +471,23 @@ function toReversedProjectionMatrix( projectionMatrix ) {
|
|
|
149
471
|
|
|
150
472
|
}
|
|
151
473
|
|
|
152
|
-
|
|
474
|
+
/**
|
|
475
|
+
* Used to select the correct depth functions
|
|
476
|
+
* when reversed depth buffer is used.
|
|
477
|
+
*
|
|
478
|
+
* @private
|
|
479
|
+
* @type {Object}
|
|
480
|
+
*/
|
|
481
|
+
const ReversedDepthFuncs = {
|
|
482
|
+
[ NeverDepth ]: AlwaysDepth,
|
|
483
|
+
[ LessDepth ]: GreaterDepth,
|
|
484
|
+
[ EqualDepth ]: NotEqualDepth,
|
|
485
|
+
[ LessEqualDepth ]: GreaterEqualDepth,
|
|
486
|
+
|
|
487
|
+
[ AlwaysDepth ]: NeverDepth,
|
|
488
|
+
[ GreaterDepth ]: LessDepth,
|
|
489
|
+
[ NotEqualDepth ]: EqualDepth,
|
|
490
|
+
[ GreaterEqualDepth ]: LessEqualDepth,
|
|
491
|
+
};
|
|
492
|
+
|
|
493
|
+
export { arrayMin, arrayMax, arrayNeedsUint32, getTypedArray, createElementNS, createCanvasElement, setConsoleFunction, getConsoleFunction, log, warn, error, warnOnce, probeAsync, yieldToMain, toNormalizedProjectionMatrix, toReversedProjectionMatrix, isTypedArray, ReversedDepthFuncs };
|