@plastic-software/three 0.179.0 → 0.181.1
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 +1108 -591
- package/build/three.core.js +616 -345
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +488 -250
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +37 -6
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +6576 -2152
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +6575 -2151
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +8 -8
- package/examples/jsm/controls/DragControls.js +7 -57
- package/examples/jsm/controls/FirstPersonControls.js +3 -3
- package/examples/jsm/controls/FlyControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +1 -1
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +33 -25
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +9 -2
- package/examples/jsm/geometries/DecalGeometry.js +2 -2
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +3 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/ViewHelper.js +43 -5
- package/examples/jsm/inspector/Inspector.js +427 -0
- package/examples/jsm/inspector/RendererInspector.js +415 -0
- package/examples/jsm/inspector/tabs/Console.js +204 -0
- package/examples/jsm/inspector/tabs/Parameters.js +332 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -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 +170 -0
- package/examples/jsm/inspector/ui/Style.js +654 -0
- package/examples/jsm/inspector/ui/Tab.js +46 -0
- package/examples/jsm/inspector/ui/Values.js +423 -0
- package/examples/jsm/inspector/ui/utils.js +56 -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/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/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/3MFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +3 -3
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +5 -5
- package/examples/jsm/loaders/FBXLoader.js +2 -2
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GLTFLoader.js +14 -8
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +486 -0
- package/examples/jsm/loaders/KTX2Loader.js +136 -49
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +2 -2
- package/examples/jsm/loaders/MaterialXLoader.js +22 -5
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TTFLoader.js +4 -4
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- 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/SimplexNoise.js +1 -1
- 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/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/SkyMesh.js +1 -1
- package/examples/jsm/objects/Water.js +3 -3
- package/examples/jsm/objects/WaterMesh.js +6 -6
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
- package/examples/jsm/renderers/SVGRenderer.js +1 -1
- 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 +2 -2
- package/examples/jsm/shaders/GodRaysShader.js +1 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
- package/examples/jsm/shaders/SSRShader.js +1 -1
- 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 +1 -1
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +22 -19
- package/examples/jsm/transpiler/TSLEncoder.js +9 -10
- package/examples/jsm/transpiler/WGSLEncoder.js +24 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
- package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
- package/examples/jsm/tsl/display/BloomNode.js +7 -3
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +2 -1
- package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/GTAONode.js +53 -5
- package/examples/jsm/tsl/display/GaussianBlurNode.js +49 -35
- package/examples/jsm/tsl/display/OutlineNode.js +13 -2
- package/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/examples/jsm/tsl/display/SSRNode.js +182 -65
- package/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/examples/jsm/tsl/display/TRAANode.js +124 -7
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/hashBlur.js +16 -18
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
- package/package.json +5 -10
- package/src/Three.Core.js +4 -2
- package/src/Three.TSL.js +36 -5
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +2 -0
- package/src/animation/AnimationClip.js +20 -4
- package/src/animation/AnimationMixer.js +3 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/KeyframeTrack.js +7 -6
- package/src/animation/PropertyBinding.js +12 -11
- package/src/audio/Audio.js +10 -9
- package/src/audio/PositionalAudio.js +1 -1
- 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 +11 -3
- package/src/core/BufferGeometry.js +10 -10
- 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 +3 -2
- package/src/core/Raycaster.js +2 -1
- package/src/core/RenderTarget.js +10 -1
- 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 +268 -55
- package/src/extras/TextureUtils.js +2 -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/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 +8 -6
- 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/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 +1 -0
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +1 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +2 -1
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +2 -2
- package/src/loaders/DataTextureLoader.js +1 -1
- package/src/loaders/FileLoader.js +3 -2
- package/src/loaders/ImageBitmapLoader.js +5 -4
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/Loader.js +3 -3
- package/src/loaders/LoadingManager.js +25 -3
- package/src/loaders/MaterialLoader.js +3 -2
- package/src/loaders/ObjectLoader.js +13 -13
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +3 -2
- package/src/materials/Material.js +16 -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 +2 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +2 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +1 -0
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +2 -2
- package/src/materials/nodes/Line2NodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/NodeMaterial.js +62 -22
- package/src/materials/nodes/PointsNodeMaterial.js +81 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +3 -2
- 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/MathUtils.js +13 -11
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +7 -7
- package/src/math/Plane.js +1 -1
- package/src/math/Quaternion.js +68 -66
- package/src/math/Spherical.js +1 -1
- package/src/nodes/Nodes.js +4 -1
- package/src/nodes/TSL.js +4 -1
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +133 -7
- package/src/nodes/accessors/ClippingNode.js +6 -5
- package/src/nodes/accessors/CubeTextureNode.js +5 -4
- package/src/nodes/accessors/InstanceNode.js +25 -5
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/Normal.js +5 -4
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/Position.js +18 -2
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +3 -2
- package/src/nodes/accessors/SceneNode.js +2 -1
- package/src/nodes/accessors/StorageBufferNode.js +2 -1
- package/src/nodes/accessors/StorageTextureNode.js +22 -0
- package/src/nodes/accessors/Texture3DNode.js +14 -1
- package/src/nodes/accessors/TextureNode.js +130 -44
- package/src/nodes/code/FunctionCallNode.js +24 -4
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/ArrayNode.js +1 -0
- package/src/nodes/core/AssignNode.js +4 -3
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +29 -10
- package/src/nodes/core/IndexNode.js +2 -2
- package/src/nodes/core/InputNode.js +2 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +40 -7
- package/src/nodes/core/Node.js +152 -31
- package/src/nodes/core/NodeBuilder.js +183 -35
- package/src/nodes/core/NodeFrame.js +21 -21
- 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 +17 -91
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +43 -16
- package/src/nodes/core/StructNode.js +5 -5
- package/src/nodes/core/StructTypeNode.js +1 -0
- package/src/nodes/core/SubBuildNode.js +2 -2
- package/src/nodes/core/UniformNode.js +18 -10
- package/src/nodes/core/VarNode.js +70 -33
- package/src/nodes/core/VaryingNode.js +3 -2
- package/src/nodes/display/BlendModes.js +5 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/FrontFacingNode.js +4 -8
- package/src/nodes/display/NormalMapNode.js +2 -1
- package/src/nodes/display/PassNode.js +52 -11
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +44 -14
- package/src/nodes/display/ToneMappingNode.js +31 -4
- package/src/nodes/display/ToonOutlinePassNode.js +8 -0
- package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +42 -12
- package/src/nodes/fog/Fog.js +3 -2
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhysicalLightingModel.js +3 -2
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/geometry/RangeNode.js +40 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
- package/src/nodes/gpgpu/ComputeNode.js +17 -5
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
- package/src/nodes/lighting/EnvironmentNode.js +6 -6
- package/src/nodes/lighting/LightsNode.js +3 -4
- package/src/nodes/lighting/PointShadowNode.js +6 -0
- package/src/nodes/lighting/ShadowFilterNode.js +2 -0
- package/src/nodes/lighting/ShadowNode.js +75 -8
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +24 -7
- package/src/nodes/math/MathNode.js +25 -19
- package/src/nodes/math/OperatorNode.js +7 -5
- package/src/nodes/pmrem/PMREMUtils.js +117 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +5 -2
- package/src/nodes/tsl/TSLCore.js +460 -159
- package/src/nodes/utils/DebugNode.js +2 -1
- package/src/nodes/utils/EventNode.js +36 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +20 -24
- package/src/nodes/utils/MemberNode.js +59 -7
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +13 -3
- package/src/nodes/utils/ReflectorNode.js +58 -7
- package/src/nodes/utils/SampleNode.js +12 -2
- package/src/nodes/utils/SplitNode.js +11 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/objects/BatchedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +2 -1
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Skeleton.js +3 -2
- package/src/objects/SkinnedMesh.js +3 -1
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +48 -41
- package/src/renderers/common/Animation.js +13 -1
- package/src/renderers/common/Attributes.js +1 -1
- package/src/renderers/common/Backend.js +108 -27
- package/src/renderers/common/Background.js +2 -1
- package/src/renderers/common/Bindings.js +58 -2
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +1 -1
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +26 -0
- package/src/renderers/common/Info.js +4 -2
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Pipelines.js +1 -1
- package/src/renderers/common/PostProcessing.js +6 -25
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/RenderContext.js +2 -2
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderObject.js +16 -2
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +473 -245
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +9 -1
- package/src/renderers/common/Sampler.js +50 -12
- package/src/renderers/common/StorageTexture.js +9 -1
- package/src/renderers/common/Textures.js +121 -45
- package/src/renderers/common/TimestampQueryPool.js +65 -3
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +42 -22
- package/src/renderers/common/extras/PMREMGenerator.js +160 -65
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/Nodes.js +38 -16
- package/src/renderers/shaders/DFGLUTData.js +64 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
- 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/shadowmap_pars_fragment.glsl.js +7 -15
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +1 -1
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +25 -4
- package/src/renderers/webgl/WebGLCapabilities.js +2 -1
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +15 -14
- package/src/renderers/webgl/WebGLPrograms.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -2
- package/src/renderers/webgl/WebGLState.js +15 -14
- package/src/renderers/webgl/WebGLTextures.js +19 -14
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +199 -167
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +181 -25
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +7 -6
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +169 -19
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
- package/src/renderers/webgpu/WebGPUBackend.js +153 -123
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +142 -50
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +7 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +53 -34
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +260 -99
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +22 -2
- package/src/renderers/webxr/WebXRManager.js +42 -26
- package/src/textures/ExternalTexture.js +15 -4
- package/src/textures/Source.js +3 -2
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +2 -3
- package/src/utils.js +67 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Fn, vec2, uv, Loop, vec4, premultiplyAlpha, unpremultiplyAlpha, max, int, textureSize, nodeObject, convertToTexture } from 'three/tsl';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Applies a box blur effect to the given texture node.
|
|
5
|
+
*
|
|
6
|
+
* Compared to Gaussian blur, box blur produces a more blocky result but with better performance when correctly
|
|
7
|
+
* configured. It is intended for mobile devices or performance restricted use cases where Gaussian is too heavy.
|
|
8
|
+
*
|
|
9
|
+
* The (kernel) `size` parameter should be small (1, 2 or 3) since it determines the number of samples based on (size * 2 + 1)^2.
|
|
10
|
+
* This implementation uses a single pass approach so the kernel is not applied as a separable filter. That means larger
|
|
11
|
+
* kernels won't perform well. Use Gaussian instead if you need a more high-quality blur.
|
|
12
|
+
*
|
|
13
|
+
* To produce wider blurs, increase the `separation` parameter instead which has no influence on the performance.
|
|
14
|
+
*
|
|
15
|
+
* Reference: {@link https://github.com/lettier/3d-game-shaders-for-beginners/blob/master/demonstration/shaders/fragment/box-blur.frag}.
|
|
16
|
+
*
|
|
17
|
+
* @tsl
|
|
18
|
+
* @function
|
|
19
|
+
* @param {Node<vec4>} textureNode - The texture node that should be blurred.
|
|
20
|
+
* @param {Object} [options={}] - Additional options for the hash blur effect.
|
|
21
|
+
* @param {Node<int>} [options.size=int(1)] - Controls the blur's kernel. For performant results, the range should within [1, 3].
|
|
22
|
+
* @param {Node<int>} [options.separation=int(1)] - Spreads out the blur without having to sample additional fragments. Ranges from [1, Infinity].
|
|
23
|
+
* @param {boolean} [options.premultipliedAlpha=false] - Whether to use premultiplied alpha for the blur effect.
|
|
24
|
+
* @return {Node<vec4>} The blurred texture node.
|
|
25
|
+
*/
|
|
26
|
+
export const boxBlur = /*#__PURE__*/ Fn( ( [ textureNode, options = {} ] ) => {
|
|
27
|
+
|
|
28
|
+
textureNode = convertToTexture( textureNode );
|
|
29
|
+
|
|
30
|
+
const size = nodeObject( options.size ) || int( 1 );
|
|
31
|
+
const separation = nodeObject( options.separation ) || int( 1 );
|
|
32
|
+
const premultipliedAlpha = options.premultipliedAlpha || false;
|
|
33
|
+
|
|
34
|
+
const tap = ( uv ) => {
|
|
35
|
+
|
|
36
|
+
const sample = textureNode.sample( uv );
|
|
37
|
+
|
|
38
|
+
return premultipliedAlpha ? premultiplyAlpha( sample ) : sample;
|
|
39
|
+
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const targetUV = textureNode.uvNode || uv();
|
|
43
|
+
|
|
44
|
+
const result = vec4( 0 );
|
|
45
|
+
const sep = max( separation, 1 );
|
|
46
|
+
const count = int( 0 );
|
|
47
|
+
const pixelStep = vec2( 1 ).div( textureSize( textureNode ) );
|
|
48
|
+
|
|
49
|
+
Loop( { start: size.negate(), end: size, name: 'i', condition: '<=' }, ( { i } ) => {
|
|
50
|
+
|
|
51
|
+
Loop( { start: size.negate(), end: size, name: 'j', condition: '<=' }, ( { j } ) => {
|
|
52
|
+
|
|
53
|
+
const uvs = targetUV.add( vec2( i, j ).mul( pixelStep ).mul( sep ) );
|
|
54
|
+
result.addAssign( tap( uvs ) );
|
|
55
|
+
count.addAssign( 1 );
|
|
56
|
+
|
|
57
|
+
} );
|
|
58
|
+
|
|
59
|
+
} );
|
|
60
|
+
|
|
61
|
+
result.divAssign( count );
|
|
62
|
+
|
|
63
|
+
return premultipliedAlpha ? unpremultiplyAlpha( result ) : result;
|
|
64
|
+
|
|
65
|
+
} );
|
|
@@ -1,51 +1,49 @@
|
|
|
1
|
-
import { float, Fn, vec2, uv, sin, rand, degrees, cos, Loop, vec4, premultiplyAlpha, unpremultiplyAlpha } from 'three/tsl';
|
|
1
|
+
import { float, Fn, vec2, uv, sin, rand, degrees, cos, Loop, vec4, premultiplyAlpha, unpremultiplyAlpha, convertToTexture, nodeObject } from 'three/tsl';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Applies a hash blur effect to the given texture node.
|
|
5
5
|
*
|
|
6
|
+
* The approach of this blur is different compared to Gaussian and box blur since
|
|
7
|
+
* it does not rely on a kernel to apply a convolution. Instead, it reads the base
|
|
8
|
+
* texture multiple times in a random pattern and then averages the samples. A
|
|
9
|
+
* typical artifact of this technique is a slightly noisy appearance of the blur which
|
|
10
|
+
* can be mitigated by increasing the number of iterations (see `repeats` parameter).
|
|
11
|
+
* Compared to Gaussian blur, hash blur requires just a single pass.
|
|
12
|
+
*
|
|
6
13
|
* Reference: {@link https://www.shadertoy.com/view/4lXXWn}.
|
|
7
14
|
*
|
|
15
|
+
* @tsl
|
|
8
16
|
* @function
|
|
9
17
|
* @param {Node<vec4>} textureNode - The texture node that should be blurred.
|
|
10
18
|
* @param {Node<float>} [bluramount=float(0.1)] - This node determines the amount of blur.
|
|
11
19
|
* @param {Object} [options={}] - Additional options for the hash blur effect.
|
|
12
20
|
* @param {Node<float>} [options.repeats=float(45)] - The number of iterations for the blur effect.
|
|
13
|
-
* @param {Node<vec4>} [options.mask=null] - A mask node to control the alpha blending of the blur.
|
|
14
21
|
* @param {boolean} [options.premultipliedAlpha=false] - Whether to use premultiplied alpha for the blur effect.
|
|
15
22
|
* @return {Node<vec4>} The blurred texture node.
|
|
16
23
|
*/
|
|
17
24
|
export const hashBlur = /*#__PURE__*/ Fn( ( [ textureNode, bluramount = float( 0.1 ), options = {} ] ) => {
|
|
18
25
|
|
|
19
|
-
|
|
20
|
-
repeats = float( 45 ),
|
|
21
|
-
mask = null,
|
|
22
|
-
premultipliedAlpha = false
|
|
23
|
-
} = options;
|
|
24
|
-
|
|
25
|
-
const draw = ( uv ) => {
|
|
26
|
-
|
|
27
|
-
let sample = textureNode.sample( uv );
|
|
28
|
-
|
|
29
|
-
if ( mask !== null ) {
|
|
26
|
+
textureNode = convertToTexture( textureNode );
|
|
30
27
|
|
|
31
|
-
|
|
28
|
+
const repeats = nodeObject( options.repeats ) || float( 45 );
|
|
29
|
+
const premultipliedAlpha = options.premultipliedAlpha || false;
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
const tap = ( uv ) => {
|
|
34
32
|
|
|
35
|
-
|
|
33
|
+
const sample = textureNode.sample( uv );
|
|
36
34
|
|
|
37
35
|
return premultipliedAlpha ? premultiplyAlpha( sample ) : sample;
|
|
38
36
|
|
|
39
37
|
};
|
|
40
38
|
|
|
41
39
|
const targetUV = textureNode.uvNode || uv();
|
|
42
|
-
const blurred_image = vec4( 0. )
|
|
40
|
+
const blurred_image = vec4( 0. );
|
|
43
41
|
|
|
44
42
|
Loop( { start: 0., end: repeats, type: 'float' }, ( { i } ) => {
|
|
45
43
|
|
|
46
44
|
const q = vec2( vec2( cos( degrees( i.div( repeats ).mul( 360. ) ) ), sin( degrees( i.div( repeats ).mul( 360. ) ) ) ).mul( rand( vec2( i, targetUV.x.add( targetUV.y ) ) ).add( bluramount ) ) );
|
|
47
45
|
const uv2 = vec2( targetUV.add( q.mul( bluramount ) ) );
|
|
48
|
-
blurred_image.addAssign(
|
|
46
|
+
blurred_image.addAssign( tap( uv2 ) );
|
|
49
47
|
|
|
50
48
|
} );
|
|
51
49
|
|
|
@@ -5,6 +5,17 @@ import {
|
|
|
5
5
|
Fn, If, Return, textureLoad, instanceIndex, screenCoordinate, directPointLight
|
|
6
6
|
} from 'three/tsl';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* TSL function that checks if a circle intersects with an axis-aligned bounding box (AABB).
|
|
10
|
+
*
|
|
11
|
+
* @tsl
|
|
12
|
+
* @function
|
|
13
|
+
* @param {Node<vec2>} circleCenter - The center of the circle.
|
|
14
|
+
* @param {Node<float>} radius - The radius of the circle.
|
|
15
|
+
* @param {Node<vec2>} minBounds - The minimum bounds of the AABB.
|
|
16
|
+
* @param {Node<vec2>} maxBounds - The maximum bounds of the AABB.
|
|
17
|
+
* @return {Node<bool>} True if the circle intersects the AABB.
|
|
18
|
+
*/
|
|
8
19
|
export const circleIntersectsAABB = /*@__PURE__*/ Fn( ( [ circleCenter, radius, minBounds, maxBounds ] ) => {
|
|
9
20
|
|
|
10
21
|
// Find the closest point on the AABB to the circle's center using method chaining
|
|
@@ -392,7 +403,7 @@ class TiledLightsNode extends LightsNode {
|
|
|
392
403
|
|
|
393
404
|
} );
|
|
394
405
|
|
|
395
|
-
} )().compute( count );
|
|
406
|
+
} )().compute( count ).setName( 'Update Tiled Lights' );
|
|
396
407
|
|
|
397
408
|
// screen coordinate lighting indexes
|
|
398
409
|
|
|
@@ -419,4 +430,13 @@ class TiledLightsNode extends LightsNode {
|
|
|
419
430
|
|
|
420
431
|
export default TiledLightsNode;
|
|
421
432
|
|
|
433
|
+
/**
|
|
434
|
+
* TSL function that creates a tiled lights node.
|
|
435
|
+
*
|
|
436
|
+
* @tsl
|
|
437
|
+
* @function
|
|
438
|
+
* @param {number} [maxLights=1024] - The maximum number of lights.
|
|
439
|
+
* @param {number} [tileSize=32] - The tile size.
|
|
440
|
+
* @return {TiledLightsNode} The tiled lights node.
|
|
441
|
+
*/
|
|
422
442
|
export const tiledLights = /*@__PURE__*/ nodeProxy( TiledLightsNode );
|
|
@@ -446,7 +446,7 @@ function deepCloneAttribute( attribute ) {
|
|
|
446
446
|
* single {@link InterleavedBuffer} instance. All attributes must have compatible types.
|
|
447
447
|
*
|
|
448
448
|
* @param {Array<BufferAttribute>} attributes - The attributes to interleave.
|
|
449
|
-
* @return {Array<InterleavedBufferAttribute>} An array of interleaved attributes. If interleave does not succeed, the method returns `null`.
|
|
449
|
+
* @return {?Array<InterleavedBufferAttribute>} An array of interleaved attributes. If interleave does not succeed, the method returns `null`.
|
|
450
450
|
*/
|
|
451
451
|
function interleaveAttributes( attributes ) {
|
|
452
452
|
|
|
@@ -7,9 +7,10 @@ import {
|
|
|
7
7
|
OrthographicCamera,
|
|
8
8
|
PlaneGeometry,
|
|
9
9
|
Scene,
|
|
10
|
-
|
|
10
|
+
DepthTexture,
|
|
11
|
+
Vector2
|
|
11
12
|
} from 'three';
|
|
12
|
-
import {
|
|
13
|
+
import { uv, uniform, textureLoad } from 'three/tsl';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* This is a helper for visualising a given light's shadow map.
|
|
@@ -60,8 +61,10 @@ class ShadowMapViewer {
|
|
|
60
61
|
|
|
61
62
|
const material = new NodeMaterial();
|
|
62
63
|
|
|
63
|
-
const
|
|
64
|
-
|
|
64
|
+
const textureDimension = uniform( new Vector2() );
|
|
65
|
+
|
|
66
|
+
const shadowMapUniform = textureLoad( new DepthTexture(), uv().flipY().mul( textureDimension ) );
|
|
67
|
+
material.fragmentNode = shadowMapUniform.x.oneMinus();
|
|
65
68
|
|
|
66
69
|
const plane = new PlaneGeometry( frame.width, frame.height );
|
|
67
70
|
const mesh = new Mesh( plane, material );
|
|
@@ -173,7 +176,11 @@ class ShadowMapViewer {
|
|
|
173
176
|
//always end up with the scene's first added shadow casting light's shadowMap
|
|
174
177
|
//in the shader
|
|
175
178
|
//See: https://github.com/mrdoob/three.js/issues/5932
|
|
176
|
-
|
|
179
|
+
|
|
180
|
+
const depthTexture = light.shadow.map.depthTexture;
|
|
181
|
+
|
|
182
|
+
shadowMapUniform.value = depthTexture;
|
|
183
|
+
textureDimension.value.set( depthTexture.width, depthTexture.height );
|
|
177
184
|
|
|
178
185
|
currentAutoClear = renderer.autoClear;
|
|
179
186
|
renderer.autoClear = false; // To allow render overlay
|
|
@@ -122,7 +122,7 @@ class OculusHandModel extends Object3D {
|
|
|
122
122
|
/**
|
|
123
123
|
* Returns the pointer position which is the position of the index finger tip.
|
|
124
124
|
*
|
|
125
|
-
* @return {Vector3
|
|
125
|
+
* @return {?Vector3} The pointer position. Returns `null` if not index finger tip joint was found.
|
|
126
126
|
*/
|
|
127
127
|
getPointerPosition() {
|
|
128
128
|
|
|
@@ -245,7 +245,7 @@ function addAssetSceneToControllerModel( controllerModel, scene ) {
|
|
|
245
245
|
* attached to the object returned from getControllerGrip in order to match the orientation of
|
|
246
246
|
* the held device.
|
|
247
247
|
*
|
|
248
|
-
* This module depends on the [motion-controllers]
|
|
248
|
+
* This module depends on the [motion-controllers](https://github.com/immersive-web/webxr-input-profiles/blob/main/packages/motion-controllers/README.md)
|
|
249
249
|
* third-part library.
|
|
250
250
|
*
|
|
251
251
|
* ```js
|
|
@@ -179,16 +179,12 @@ class XRHandModelFactory {
|
|
|
179
179
|
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
controller.visible = true;
|
|
183
|
-
|
|
184
182
|
} );
|
|
185
183
|
|
|
186
184
|
controller.addEventListener( 'disconnected', () => {
|
|
187
185
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
// handModel.remove( scene );
|
|
191
|
-
// scene = null;
|
|
186
|
+
handModel.clear();
|
|
187
|
+
handModel.motionController = null;
|
|
192
188
|
|
|
193
189
|
} );
|
|
194
190
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plastic-software/three",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.181.1",
|
|
4
4
|
"description": "JavaScript 3D library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./build/three.cjs",
|
|
@@ -63,13 +63,12 @@
|
|
|
63
63
|
"lint-utils": "eslint utils --ignore-pattern prettify --ignore-pattern fuse",
|
|
64
64
|
"lint": "npm run lint-core",
|
|
65
65
|
"lint-fix": "npm run lint-core -- --fix && npm run lint-addons -- --fix && npm run lint-examples -- --fix && npm run lint-docs -- --fix && npm run lint-editor -- --fix && npm run lint-playground -- --fix && npm run lint-manual -- --fix && npm run lint-test -- --fix && npm run lint-utils -- --fix",
|
|
66
|
-
"test-unit": "qunit
|
|
67
|
-
"test-unit-addons": "qunit
|
|
66
|
+
"test-unit": "qunit test/unit/three.source.unit.js",
|
|
67
|
+
"test-unit-addons": "qunit test/unit/three.addons.unit.js",
|
|
68
68
|
"test-e2e": "node test/e2e/puppeteer.js",
|
|
69
69
|
"test-e2e-cov": "node test/e2e/check-coverage.js",
|
|
70
70
|
"test-e2e-webgpu": "node test/e2e/puppeteer.js --webgpu",
|
|
71
71
|
"test-treeshake": "rollup -c test/rollup.treeshake.config.js",
|
|
72
|
-
"test-circular-deps": "dpdm --no-warning --no-tree --exit-code circular:1 src/nodes/Nodes.js",
|
|
73
72
|
"make-screenshot": "node test/e2e/puppeteer.js --make"
|
|
74
73
|
},
|
|
75
74
|
"keywords": [
|
|
@@ -97,24 +96,20 @@
|
|
|
97
96
|
"devDependencies": {
|
|
98
97
|
"@rollup/plugin-node-resolve": "^16.0.0",
|
|
99
98
|
"@rollup/plugin-terser": "^0.4.0",
|
|
100
|
-
"chalk": "^5.2.0",
|
|
101
99
|
"concurrently": "^9.0.0",
|
|
102
|
-
"dpdm": "^3.14.0",
|
|
103
100
|
"eslint": "^8.37.0",
|
|
104
101
|
"eslint-config-mdcs": "^5.0.0",
|
|
105
102
|
"eslint-plugin-compat": "^6.0.0",
|
|
106
103
|
"eslint-plugin-html": "^8.0.0",
|
|
107
104
|
"eslint-plugin-import": "^2.27.5",
|
|
108
|
-
"failonlyreporter": "^1.0.0",
|
|
109
105
|
"jimp": "^1.6.0",
|
|
110
|
-
"jsdoc": "^4.0.
|
|
106
|
+
"jsdoc": "^4.0.5",
|
|
111
107
|
"magic-string": "^0.30.0",
|
|
112
108
|
"pixelmatch": "^7.0.0",
|
|
113
|
-
"puppeteer": "^
|
|
109
|
+
"puppeteer": "^24.25.0",
|
|
114
110
|
"qunit": "^2.19.4",
|
|
115
111
|
"rollup": "^4.6.0",
|
|
116
112
|
"rollup-plugin-filesize": "^10.0.0",
|
|
117
|
-
"rollup-plugin-visualizer": "^6.0.0",
|
|
118
113
|
"servez": "^2.2.4"
|
|
119
114
|
},
|
|
120
115
|
"overrides": {
|
package/src/Three.Core.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { REVISION } from './constants.js';
|
|
2
|
+
import { warn } from './utils.js';
|
|
2
3
|
|
|
3
4
|
export { WebGLArrayRenderTarget } from './renderers/WebGLArrayRenderTarget.js';
|
|
4
5
|
export { WebGL3DRenderTarget } from './renderers/WebGL3DRenderTarget.js';
|
|
@@ -34,6 +35,7 @@ export { CompressedCubeTexture } from './textures/CompressedCubeTexture.js';
|
|
|
34
35
|
export { CubeTexture } from './textures/CubeTexture.js';
|
|
35
36
|
export { CanvasTexture } from './textures/CanvasTexture.js';
|
|
36
37
|
export { DepthTexture } from './textures/DepthTexture.js';
|
|
38
|
+
export { ExternalTexture } from './textures/ExternalTexture.js';
|
|
37
39
|
export { Texture } from './textures/Texture.js';
|
|
38
40
|
export * from './geometries/Geometries.js';
|
|
39
41
|
export * from './materials/Materials.js';
|
|
@@ -156,7 +158,7 @@ export { DataUtils } from './extras/DataUtils.js';
|
|
|
156
158
|
export { ImageUtils } from './extras/ImageUtils.js';
|
|
157
159
|
export { ShapeUtils } from './extras/ShapeUtils.js';
|
|
158
160
|
export { TextureUtils } from './extras/TextureUtils.js';
|
|
159
|
-
export { createCanvasElement } from './utils.js';
|
|
161
|
+
export { createCanvasElement, setConsoleFunction, getConsoleFunction, log, warn, error, warnOnce } from './utils.js';
|
|
160
162
|
export * from './constants.js';
|
|
161
163
|
export * from './Three.Legacy.js';
|
|
162
164
|
|
|
@@ -172,7 +174,7 @@ if ( typeof window !== 'undefined' ) {
|
|
|
172
174
|
|
|
173
175
|
if ( window.__THREE__ ) {
|
|
174
176
|
|
|
175
|
-
|
|
177
|
+
warn( 'WARNING: Multiple instances of Three.js being imported.' );
|
|
176
178
|
|
|
177
179
|
} else {
|
|
178
180
|
|
package/src/Three.TSL.js
CHANGED
|
@@ -24,6 +24,8 @@ export const PCFShadowFilter = TSL.PCFShadowFilter;
|
|
|
24
24
|
export const PCFSoftShadowFilter = TSL.PCFSoftShadowFilter;
|
|
25
25
|
export const PI = TSL.PI;
|
|
26
26
|
export const PI2 = TSL.PI2;
|
|
27
|
+
export const TWO_PI = TSL.TWO_PI;
|
|
28
|
+
export const HALF_PI = TSL.HALF_PI;
|
|
27
29
|
export const PointShadowFilter = TSL.PointShadowFilter;
|
|
28
30
|
export const Return = TSL.Return;
|
|
29
31
|
export const Schlick_to_F0 = TSL.Schlick_to_F0;
|
|
@@ -97,6 +99,7 @@ export const buffer = TSL.buffer;
|
|
|
97
99
|
export const bufferAttribute = TSL.bufferAttribute;
|
|
98
100
|
export const bumpMap = TSL.bumpMap;
|
|
99
101
|
export const burn = TSL.burn;
|
|
102
|
+
export const builtin = TSL.builtin;
|
|
100
103
|
export const bvec2 = TSL.bvec2;
|
|
101
104
|
export const bvec3 = TSL.bvec3;
|
|
102
105
|
export const bvec4 = TSL.bvec4;
|
|
@@ -111,6 +114,7 @@ export const cameraPosition = TSL.cameraPosition;
|
|
|
111
114
|
export const cameraProjectionMatrix = TSL.cameraProjectionMatrix;
|
|
112
115
|
export const cameraProjectionMatrixInverse = TSL.cameraProjectionMatrixInverse;
|
|
113
116
|
export const cameraViewMatrix = TSL.cameraViewMatrix;
|
|
117
|
+
export const cameraViewport = TSL.cameraViewport;
|
|
114
118
|
export const cameraWorldMatrix = TSL.cameraWorldMatrix;
|
|
115
119
|
export const cbrt = TSL.cbrt;
|
|
116
120
|
export const cdl = TSL.cdl;
|
|
@@ -177,6 +181,8 @@ export const faceDirection = TSL.faceDirection;
|
|
|
177
181
|
export const faceForward = TSL.faceForward;
|
|
178
182
|
export const faceforward = TSL.faceforward;
|
|
179
183
|
export const float = TSL.float;
|
|
184
|
+
export const floatBitsToInt = TSL.floatBitsToInt;
|
|
185
|
+
export const floatBitsToUint = TSL.floatBitsToUint;
|
|
180
186
|
export const floor = TSL.floor;
|
|
181
187
|
export const fog = TSL.fog;
|
|
182
188
|
export const fract = TSL.fract;
|
|
@@ -192,6 +198,7 @@ export const getDirection = TSL.getDirection;
|
|
|
192
198
|
export const getDistanceAttenuation = TSL.getDistanceAttenuation;
|
|
193
199
|
export const getGeometryRoughness = TSL.getGeometryRoughness;
|
|
194
200
|
export const getNormalFromDepth = TSL.getNormalFromDepth;
|
|
201
|
+
export const interleavedGradientNoise = TSL.interleavedGradientNoise;
|
|
195
202
|
export const getParallaxCorrectNormal = TSL.getParallaxCorrectNormal;
|
|
196
203
|
export const getRoughness = TSL.getRoughness;
|
|
197
204
|
export const getScreenPosition = TSL.getScreenPosition;
|
|
@@ -219,6 +226,7 @@ export const instancedBufferAttribute = TSL.instancedBufferAttribute;
|
|
|
219
226
|
export const instancedDynamicBufferAttribute = TSL.instancedDynamicBufferAttribute;
|
|
220
227
|
export const instancedMesh = TSL.instancedMesh;
|
|
221
228
|
export const int = TSL.int;
|
|
229
|
+
export const intBitsToFloat = TSL.intBitsToFloat;
|
|
222
230
|
export const inverse = TSL.inverse;
|
|
223
231
|
export const inverseSqrt = TSL.inverseSqrt;
|
|
224
232
|
export const inversesqrt = TSL.inversesqrt;
|
|
@@ -391,6 +399,8 @@ export const objectRadius = TSL.objectRadius;
|
|
|
391
399
|
export const objectScale = TSL.objectScale;
|
|
392
400
|
export const objectViewPosition = TSL.objectViewPosition;
|
|
393
401
|
export const objectWorldMatrix = TSL.objectWorldMatrix;
|
|
402
|
+
export const OnBeforeObjectUpdate = TSL.OnBeforeObjectUpdate;
|
|
403
|
+
export const OnBeforeMaterialUpdate = TSL.OnBeforeMaterialUpdate;
|
|
394
404
|
export const OnObjectUpdate = TSL.OnObjectUpdate;
|
|
395
405
|
export const OnMaterialUpdate = TSL.OnMaterialUpdate;
|
|
396
406
|
export const oneMinus = TSL.oneMinus;
|
|
@@ -465,6 +475,7 @@ export const saturate = TSL.saturate;
|
|
|
465
475
|
export const saturation = TSL.saturation;
|
|
466
476
|
export const screen = TSL.screen;
|
|
467
477
|
export const screenCoordinate = TSL.screenCoordinate;
|
|
478
|
+
export const screenDPR = TSL.screenDPR;
|
|
468
479
|
export const screenSize = TSL.screenSize;
|
|
469
480
|
export const screenUV = TSL.screenUV;
|
|
470
481
|
export const scriptable = TSL.scriptable;
|
|
@@ -504,15 +515,35 @@ export const storageTexture = TSL.storageTexture;
|
|
|
504
515
|
export const string = TSL.string;
|
|
505
516
|
export const struct = TSL.struct;
|
|
506
517
|
export const sub = TSL.sub;
|
|
518
|
+
export const subgroupAdd = TSL.subgroupAdd;
|
|
519
|
+
export const subgroupAll = TSL.subgroupAll;
|
|
520
|
+
export const subgroupAnd = TSL.subgroupAnd;
|
|
521
|
+
export const subgroupAny = TSL.subgroupAny;
|
|
522
|
+
export const subgroupBallot = TSL.subgroupBallot;
|
|
523
|
+
export const subgroupBroadcast = TSL.subgroupBroadcast;
|
|
524
|
+
export const subgroupBroadcastFirst = TSL.subgroupBroadcastFirst;
|
|
507
525
|
export const subBuild = TSL.subBuild;
|
|
526
|
+
export const subgroupElect = TSL.subgroupElect;
|
|
527
|
+
export const subgroupExclusiveAdd = TSL.subgroupExclusiveAdd;
|
|
528
|
+
export const subgroupExclusiveMul = TSL.subgroupExclusiveMul;
|
|
529
|
+
export const subgroupInclusiveAdd = TSL.subgroupInclusiveAdd;
|
|
530
|
+
export const subgroupInclusiveMul = TSL.subgroupInclusiveMul;
|
|
508
531
|
export const subgroupIndex = TSL.subgroupIndex;
|
|
532
|
+
export const subgroupMax = TSL.subgroupMax;
|
|
533
|
+
export const subgroupMin = TSL.subgroupMin;
|
|
534
|
+
export const subgroupMul = TSL.subgroupMul;
|
|
535
|
+
export const subgroupOr = TSL.subgroupOr;
|
|
536
|
+
export const subgroupShuffle = TSL.subgroupShuffle;
|
|
537
|
+
export const subgroupShuffleDown = TSL.subgroupShuffleDown;
|
|
538
|
+
export const subgroupShuffleUp = TSL.subgroupShuffleUp;
|
|
539
|
+
export const subgroupShuffleXor = TSL.subgroupShuffleXor;
|
|
509
540
|
export const subgroupSize = TSL.subgroupSize;
|
|
541
|
+
export const subgroupXor = TSL.subgroupXor;
|
|
510
542
|
export const tan = TSL.tan;
|
|
511
543
|
export const tangentGeometry = TSL.tangentGeometry;
|
|
512
544
|
export const tangentLocal = TSL.tangentLocal;
|
|
513
545
|
export const tangentView = TSL.tangentView;
|
|
514
546
|
export const tangentWorld = TSL.tangentWorld;
|
|
515
|
-
export const temp = TSL.temp;
|
|
516
547
|
export const texture = TSL.texture;
|
|
517
548
|
export const texture3D = TSL.texture3D;
|
|
518
549
|
export const textureBarrier = TSL.textureBarrier;
|
|
@@ -521,12 +552,10 @@ export const textureBicubicLevel = TSL.textureBicubicLevel;
|
|
|
521
552
|
export const textureCubeUV = TSL.textureCubeUV;
|
|
522
553
|
export const textureLoad = TSL.textureLoad;
|
|
523
554
|
export const textureSize = TSL.textureSize;
|
|
555
|
+
export const textureLevel = TSL.textureLevel;
|
|
524
556
|
export const textureStore = TSL.textureStore;
|
|
525
557
|
export const thickness = TSL.thickness;
|
|
526
558
|
export const time = TSL.time;
|
|
527
|
-
export const timerDelta = TSL.timerDelta;
|
|
528
|
-
export const timerGlobal = TSL.timerGlobal;
|
|
529
|
-
export const timerLocal = TSL.timerLocal;
|
|
530
559
|
export const toneMapping = TSL.toneMapping;
|
|
531
560
|
export const toneMappingExposure = TSL.toneMappingExposure;
|
|
532
561
|
export const toonOutlinePass = TSL.toonOutlinePass;
|
|
@@ -543,10 +572,12 @@ export const triplanarTexture = TSL.triplanarTexture;
|
|
|
543
572
|
export const triplanarTextures = TSL.triplanarTextures;
|
|
544
573
|
export const trunc = TSL.trunc;
|
|
545
574
|
export const uint = TSL.uint;
|
|
575
|
+
export const uintBitsToFloat = TSL.uintBitsToFloat;
|
|
546
576
|
export const uniform = TSL.uniform;
|
|
547
577
|
export const uniformArray = TSL.uniformArray;
|
|
548
578
|
export const uniformCubeTexture = TSL.uniformCubeTexture;
|
|
549
579
|
export const uniformGroup = TSL.uniformGroup;
|
|
580
|
+
export const uniformFlow = TSL.uniformFlow;
|
|
550
581
|
export const uniformTexture = TSL.uniformTexture;
|
|
551
582
|
export const unpremultiplyAlpha = TSL.unpremultiplyAlpha;
|
|
552
583
|
export const userData = TSL.userData;
|
|
@@ -598,5 +629,5 @@ for ( const key of Object.keys( THREE.TSL ) ) {
|
|
|
598
629
|
|
|
599
630
|
}
|
|
600
631
|
|
|
601
|
-
|
|
632
|
+
log( code );
|
|
602
633
|
//*/
|
|
@@ -18,6 +18,8 @@ export { default as ProjectorLight } from './lights/webgpu/ProjectorLight.js';
|
|
|
18
18
|
export { default as NodeLoader } from './loaders/nodes/NodeLoader.js';
|
|
19
19
|
export { default as NodeObjectLoader } from './loaders/nodes/NodeObjectLoader.js';
|
|
20
20
|
export { default as NodeMaterialLoader } from './loaders/nodes/NodeMaterialLoader.js';
|
|
21
|
+
export { default as InspectorBase } from './renderers/common/InspectorBase.js';
|
|
22
|
+
export { default as CanvasTarget } from './renderers/common/CanvasTarget.js';
|
|
21
23
|
export { ClippingGroup } from './objects/ClippingGroup.js';
|
|
22
24
|
export * from './nodes/Nodes.js';
|
|
23
25
|
import * as TSL from './nodes/TSL.js';
|
package/src/Three.WebGPU.js
CHANGED
|
@@ -20,6 +20,8 @@ export { default as ProjectorLight } from './lights/webgpu/ProjectorLight.js';
|
|
|
20
20
|
export { default as NodeLoader } from './loaders/nodes/NodeLoader.js';
|
|
21
21
|
export { default as NodeObjectLoader } from './loaders/nodes/NodeObjectLoader.js';
|
|
22
22
|
export { default as NodeMaterialLoader } from './loaders/nodes/NodeMaterialLoader.js';
|
|
23
|
+
export { default as InspectorBase } from './renderers/common/InspectorBase.js';
|
|
24
|
+
export { default as CanvasTarget } from './renderers/common/CanvasTarget.js';
|
|
23
25
|
export { ClippingGroup } from './objects/ClippingGroup.js';
|
|
24
26
|
export * from './nodes/Nodes.js';
|
|
25
27
|
import * as TSL from './nodes/TSL.js';
|
|
@@ -8,6 +8,7 @@ import { StringKeyframeTrack } from './tracks/StringKeyframeTrack.js';
|
|
|
8
8
|
import { VectorKeyframeTrack } from './tracks/VectorKeyframeTrack.js';
|
|
9
9
|
import { generateUUID } from '../math/MathUtils.js';
|
|
10
10
|
import { NormalAnimationBlendMode } from '../constants.js';
|
|
11
|
+
import { warn, error } from '../utils.js';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* A reusable set of keyframe tracks which represent an animation.
|
|
@@ -67,6 +68,14 @@ class AnimationClip {
|
|
|
67
68
|
*/
|
|
68
69
|
this.uuid = generateUUID();
|
|
69
70
|
|
|
71
|
+
/**
|
|
72
|
+
* An object that can be used to store custom data about the animation clip.
|
|
73
|
+
* It should not hold references to functions as these will not be cloned.
|
|
74
|
+
*
|
|
75
|
+
* @type {Object}
|
|
76
|
+
*/
|
|
77
|
+
this.userData = {};
|
|
78
|
+
|
|
70
79
|
// this means it should figure out its duration by scanning the tracks
|
|
71
80
|
if ( this.duration < 0 ) {
|
|
72
81
|
|
|
@@ -98,6 +107,8 @@ class AnimationClip {
|
|
|
98
107
|
const clip = new this( json.name, json.duration, tracks, json.blendMode );
|
|
99
108
|
clip.uuid = json.uuid;
|
|
100
109
|
|
|
110
|
+
clip.userData = JSON.parse( json.userData || '{}' );
|
|
111
|
+
|
|
101
112
|
return clip;
|
|
102
113
|
|
|
103
114
|
}
|
|
@@ -120,7 +131,8 @@ class AnimationClip {
|
|
|
120
131
|
'duration': clip.duration,
|
|
121
132
|
'tracks': tracks,
|
|
122
133
|
'uuid': clip.uuid,
|
|
123
|
-
'blendMode': clip.blendMode
|
|
134
|
+
'blendMode': clip.blendMode,
|
|
135
|
+
'userData': JSON.stringify( clip.userData ),
|
|
124
136
|
|
|
125
137
|
};
|
|
126
138
|
|
|
@@ -294,11 +306,11 @@ class AnimationClip {
|
|
|
294
306
|
*/
|
|
295
307
|
static parseAnimation( animation, bones ) {
|
|
296
308
|
|
|
297
|
-
|
|
309
|
+
warn( 'AnimationClip: parseAnimation() is deprecated and will be removed with r185' );
|
|
298
310
|
|
|
299
311
|
if ( ! animation ) {
|
|
300
312
|
|
|
301
|
-
|
|
313
|
+
error( 'AnimationClip: No animation in JSONLoader data.' );
|
|
302
314
|
return null;
|
|
303
315
|
|
|
304
316
|
}
|
|
@@ -515,7 +527,11 @@ class AnimationClip {
|
|
|
515
527
|
|
|
516
528
|
}
|
|
517
529
|
|
|
518
|
-
|
|
530
|
+
const clip = new this.constructor( this.name, this.duration, tracks, this.blendMode );
|
|
531
|
+
|
|
532
|
+
clip.userData = JSON.parse( JSON.stringify( this.userData ) );
|
|
533
|
+
|
|
534
|
+
return clip;
|
|
519
535
|
|
|
520
536
|
}
|
|
521
537
|
|
|
@@ -641,7 +641,7 @@ class AnimationMixer extends EventDispatcher {
|
|
|
641
641
|
/**
|
|
642
642
|
* Deactivates all previously scheduled actions on this mixer.
|
|
643
643
|
*
|
|
644
|
-
* @return {AnimationMixer} A reference to
|
|
644
|
+
* @return {AnimationMixer} A reference to this animation mixer.
|
|
645
645
|
*/
|
|
646
646
|
stopAllAction() {
|
|
647
647
|
|
|
@@ -665,7 +665,7 @@ class AnimationMixer extends EventDispatcher {
|
|
|
665
665
|
* time from {@link Clock} or {@link Timer}.
|
|
666
666
|
*
|
|
667
667
|
* @param {number} deltaTime - The delta time in seconds.
|
|
668
|
-
* @return {AnimationMixer} A reference to
|
|
668
|
+
* @return {AnimationMixer} A reference to this animation mixer.
|
|
669
669
|
*/
|
|
670
670
|
update( deltaTime ) {
|
|
671
671
|
|
|
@@ -711,7 +711,7 @@ class AnimationMixer extends EventDispatcher {
|
|
|
711
711
|
* input parameter will be scaled by {@link AnimationMixer#timeScale}
|
|
712
712
|
*
|
|
713
713
|
* @param {number} time - The time to set in seconds.
|
|
714
|
-
* @return {AnimationMixer} A reference to
|
|
714
|
+
* @return {AnimationMixer} A reference to this animation mixer.
|
|
715
715
|
*/
|
|
716
716
|
setTime( time ) {
|
|
717
717
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PropertyBinding } from './PropertyBinding.js';
|
|
2
2
|
import { generateUUID } from '../math/MathUtils.js';
|
|
3
|
+
import { error } from '../utils.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* A group of objects that receives a shared animation state.
|
|
@@ -175,7 +176,7 @@ class AnimationObjectGroup {
|
|
|
175
176
|
|
|
176
177
|
} else if ( objects[ index ] !== knownObject ) {
|
|
177
178
|
|
|
178
|
-
|
|
179
|
+
error( 'AnimationObjectGroup: Different objects with the same UUID ' +
|
|
179
180
|
'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );
|
|
180
181
|
|
|
181
182
|
} // else the object is already where we want it to be
|