@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
|
@@ -46,10 +46,10 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
|
|
|
46
46
|
/**
|
|
47
47
|
* Allocates a pair of queries for a given render context.
|
|
48
48
|
*
|
|
49
|
-
* @param {
|
|
49
|
+
* @param {string} uid - A unique identifier for the render context.
|
|
50
50
|
* @returns {?number} The base offset for the allocated queries, or null if allocation failed.
|
|
51
51
|
*/
|
|
52
|
-
allocateQueriesForContext(
|
|
52
|
+
allocateQueriesForContext( uid ) {
|
|
53
53
|
|
|
54
54
|
if ( ! this.trackTimestamp || this.isDisposed ) return null;
|
|
55
55
|
|
|
@@ -63,7 +63,8 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
|
|
|
63
63
|
const baseOffset = this.currentQueryIndex;
|
|
64
64
|
this.currentQueryIndex += 2;
|
|
65
65
|
|
|
66
|
-
this.queryOffsets.set(
|
|
66
|
+
this.queryOffsets.set( uid, baseOffset );
|
|
67
|
+
|
|
67
68
|
return baseOffset;
|
|
68
69
|
|
|
69
70
|
}
|
|
@@ -177,26 +178,48 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
|
|
|
177
178
|
|
|
178
179
|
}
|
|
179
180
|
|
|
181
|
+
//
|
|
182
|
+
|
|
180
183
|
const times = new BigUint64Array( this.resultBuffer.getMappedRange( 0, bytesUsed ) );
|
|
181
|
-
|
|
184
|
+
const framesDuration = {};
|
|
185
|
+
|
|
186
|
+
const frames = [];
|
|
187
|
+
|
|
188
|
+
for ( const [ uid, baseOffset ] of currentOffsets ) {
|
|
189
|
+
|
|
190
|
+
const match = uid.match( /^(.*):f(\d+)$/ );
|
|
191
|
+
const frame = parseInt( match[ 2 ] );
|
|
192
|
+
|
|
193
|
+
if ( frames.includes( frame ) === false ) {
|
|
182
194
|
|
|
183
|
-
|
|
195
|
+
frames.push( frame );
|
|
196
|
+
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if ( framesDuration[ frame ] === undefined ) framesDuration[ frame ] = 0;
|
|
184
200
|
|
|
185
201
|
const startTime = times[ baseOffset ];
|
|
186
202
|
const endTime = times[ baseOffset + 1 ];
|
|
187
203
|
const duration = Number( endTime - startTime ) / 1e6;
|
|
188
|
-
|
|
204
|
+
|
|
205
|
+
this.timestamps.set( uid, duration );
|
|
206
|
+
|
|
207
|
+
framesDuration[ frame ] += duration;
|
|
189
208
|
|
|
190
209
|
}
|
|
191
210
|
|
|
211
|
+
// Return the total duration of the last frame
|
|
212
|
+
const totalDuration = framesDuration[ frames[ frames.length - 1 ] ];
|
|
213
|
+
|
|
192
214
|
this.resultBuffer.unmap();
|
|
193
215
|
this.lastValue = totalDuration;
|
|
216
|
+
this.frames = frames;
|
|
194
217
|
|
|
195
218
|
return totalDuration;
|
|
196
219
|
|
|
197
220
|
} catch ( error ) {
|
|
198
221
|
|
|
199
|
-
|
|
222
|
+
error( 'Error resolving queries:', error );
|
|
200
223
|
if ( this.resultBuffer.mapState === 'mapped' ) {
|
|
201
224
|
|
|
202
225
|
this.resultBuffer.unmap();
|
|
@@ -234,7 +257,7 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
|
|
|
234
257
|
|
|
235
258
|
} catch ( error ) {
|
|
236
259
|
|
|
237
|
-
|
|
260
|
+
error( 'Error waiting for pending resolve:', error );
|
|
238
261
|
|
|
239
262
|
}
|
|
240
263
|
|
|
@@ -249,7 +272,7 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
|
|
|
249
272
|
|
|
250
273
|
} catch ( error ) {
|
|
251
274
|
|
|
252
|
-
|
|
275
|
+
error( 'Error unmapping buffer:', error );
|
|
253
276
|
|
|
254
277
|
}
|
|
255
278
|
|
|
@@ -83,7 +83,7 @@ class WebGPUUtils {
|
|
|
83
83
|
const renderer = this.backend.renderer;
|
|
84
84
|
const renderTarget = renderer.getRenderTarget();
|
|
85
85
|
|
|
86
|
-
samples = renderTarget ? renderTarget.samples : renderer.
|
|
86
|
+
samples = renderTarget ? renderTarget.samples : renderer.currentSamples;
|
|
87
87
|
|
|
88
88
|
} else if ( texture.renderTarget ) {
|
|
89
89
|
|
|
@@ -124,6 +124,26 @@ class WebGPUUtils {
|
|
|
124
124
|
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
/**
|
|
128
|
+
* Returns the GPU formats of all color attachments of the current render context.
|
|
129
|
+
*
|
|
130
|
+
* @param {RenderContext} renderContext - The render context.
|
|
131
|
+
* @return {Array<string>} The GPU texture formats of all color attachments.
|
|
132
|
+
*/
|
|
133
|
+
getCurrentColorFormats( renderContext ) {
|
|
134
|
+
|
|
135
|
+
if ( renderContext.textures !== null ) {
|
|
136
|
+
|
|
137
|
+
return renderContext.textures.map( t => this.getTextureFormatGPU( t ) );
|
|
138
|
+
|
|
139
|
+
} else {
|
|
140
|
+
|
|
141
|
+
return [ this.getPreferredCanvasFormat() ]; // default context format
|
|
142
|
+
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
}
|
|
146
|
+
|
|
127
147
|
/**
|
|
128
148
|
* Returns the output color space of the current render context.
|
|
129
149
|
*
|
|
@@ -186,7 +206,7 @@ class WebGPUUtils {
|
|
|
186
206
|
|
|
187
207
|
}
|
|
188
208
|
|
|
189
|
-
return this.getSampleCount( this.backend.renderer.
|
|
209
|
+
return this.getSampleCount( this.backend.renderer.currentSamples );
|
|
190
210
|
|
|
191
211
|
}
|
|
192
212
|
|
|
@@ -12,6 +12,7 @@ import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
|
12
12
|
import { ExternalTexture } from '../../textures/ExternalTexture.js';
|
|
13
13
|
import { DepthFormat, DepthStencilFormat, RGBAFormat, UnsignedByteType, UnsignedIntType, UnsignedInt248Type } from '../../constants.js';
|
|
14
14
|
import { WebXRDepthSensing } from './WebXRDepthSensing.js';
|
|
15
|
+
import { warn } from '../../utils.js';
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* This class represents an abstraction of the WebXR Device API and is
|
|
@@ -52,6 +53,8 @@ class WebXRManager extends EventDispatcher {
|
|
|
52
53
|
let glBaseLayer = null;
|
|
53
54
|
let xrFrame = null;
|
|
54
55
|
|
|
56
|
+
const supportsGlBinding = typeof XRWebGLBinding !== 'undefined';
|
|
57
|
+
|
|
55
58
|
const depthSensing = new WebXRDepthSensing();
|
|
56
59
|
const cameraAccessTextures = {};
|
|
57
60
|
const attributes = gl.getContextAttributes();
|
|
@@ -276,7 +279,7 @@ class WebXRManager extends EventDispatcher {
|
|
|
276
279
|
|
|
277
280
|
if ( scope.isPresenting === true ) {
|
|
278
281
|
|
|
279
|
-
|
|
282
|
+
warn( 'WebXRManager: Cannot change framebuffer scale while presenting.' );
|
|
280
283
|
|
|
281
284
|
}
|
|
282
285
|
|
|
@@ -298,7 +301,7 @@ class WebXRManager extends EventDispatcher {
|
|
|
298
301
|
|
|
299
302
|
if ( scope.isPresenting === true ) {
|
|
300
303
|
|
|
301
|
-
|
|
304
|
+
warn( 'WebXRManager: Cannot change reference space type while presenting.' );
|
|
302
305
|
|
|
303
306
|
}
|
|
304
307
|
|
|
@@ -329,6 +332,9 @@ class WebXRManager extends EventDispatcher {
|
|
|
329
332
|
/**
|
|
330
333
|
* Returns the current base layer.
|
|
331
334
|
*
|
|
335
|
+
* This is an `XRProjectionLayer` when the targeted XR device supports the
|
|
336
|
+
* WebXR Layers API, or an `XRWebGLLayer` otherwise.
|
|
337
|
+
*
|
|
332
338
|
* @return {?(XRWebGLLayer|XRProjectionLayer)} The XR base layer.
|
|
333
339
|
*/
|
|
334
340
|
this.getBaseLayer = function () {
|
|
@@ -340,10 +346,19 @@ class WebXRManager extends EventDispatcher {
|
|
|
340
346
|
/**
|
|
341
347
|
* Returns the current XR binding.
|
|
342
348
|
*
|
|
343
|
-
*
|
|
349
|
+
* Creates a new binding if needed and the browser is
|
|
350
|
+
* capable of doing so.
|
|
351
|
+
*
|
|
352
|
+
* @return {?XRWebGLBinding} The XR binding. Returns `null` if one cannot be created.
|
|
344
353
|
*/
|
|
345
354
|
this.getBinding = function () {
|
|
346
355
|
|
|
356
|
+
if ( glBinding === null && supportsGlBinding ) {
|
|
357
|
+
|
|
358
|
+
glBinding = new XRWebGLBinding( session, gl );
|
|
359
|
+
|
|
360
|
+
}
|
|
361
|
+
|
|
347
362
|
return glBinding;
|
|
348
363
|
|
|
349
364
|
};
|
|
@@ -405,17 +420,12 @@ class WebXRManager extends EventDispatcher {
|
|
|
405
420
|
currentPixelRatio = renderer.getPixelRatio();
|
|
406
421
|
renderer.getSize( currentSize );
|
|
407
422
|
|
|
408
|
-
if ( typeof XRWebGLBinding !== 'undefined' ) {
|
|
409
|
-
|
|
410
|
-
glBinding = new XRWebGLBinding( session, gl );
|
|
411
|
-
|
|
412
|
-
}
|
|
413
423
|
|
|
414
424
|
// Check that the browser implements the necessary APIs to use an
|
|
415
425
|
// XRProjectionLayer rather than an XRWebGLLayer
|
|
416
|
-
const
|
|
426
|
+
const supportsLayers = supportsGlBinding && 'createProjectionLayer' in XRWebGLBinding.prototype;
|
|
417
427
|
|
|
418
|
-
if ( !
|
|
428
|
+
if ( ! supportsLayers ) {
|
|
419
429
|
|
|
420
430
|
const layerInit = {
|
|
421
431
|
antialias: attributes.antialias,
|
|
@@ -466,6 +476,8 @@ class WebXRManager extends EventDispatcher {
|
|
|
466
476
|
scaleFactor: framebufferScaleFactor
|
|
467
477
|
};
|
|
468
478
|
|
|
479
|
+
glBinding = this.getBinding();
|
|
480
|
+
|
|
469
481
|
glProjLayer = glBinding.createProjectionLayer( projectionlayerInit );
|
|
470
482
|
|
|
471
483
|
session.updateRenderState( { layers: [ glProjLayer ] } );
|
|
@@ -525,6 +537,8 @@ class WebXRManager extends EventDispatcher {
|
|
|
525
537
|
/**
|
|
526
538
|
* Returns the current depth texture computed via depth sensing.
|
|
527
539
|
*
|
|
540
|
+
* See {@link WebXRDepthSensing#getDepthTexture}.
|
|
541
|
+
*
|
|
528
542
|
* @return {?Texture} The depth texture.
|
|
529
543
|
*/
|
|
530
544
|
this.getDepthTexture = function () {
|
|
@@ -695,7 +709,7 @@ class WebXRManager extends EventDispatcher {
|
|
|
695
709
|
|
|
696
710
|
/**
|
|
697
711
|
* Updates the state of the XR camera. Use this method on app level if you
|
|
698
|
-
* set cameraAutoUpdate` to `false`. The method requires the non-XR
|
|
712
|
+
* set `cameraAutoUpdate` to `false`. The method requires the non-XR
|
|
699
713
|
* camera of the scene as a parameter. The passed in camera's transformation
|
|
700
714
|
* is automatically adjusted to the position of the XR camera when calling
|
|
701
715
|
* this method.
|
|
@@ -872,6 +886,8 @@ class WebXRManager extends EventDispatcher {
|
|
|
872
886
|
/**
|
|
873
887
|
* Returns the depth sensing mesh.
|
|
874
888
|
*
|
|
889
|
+
* See {@link WebXRDepthSensing#getMesh}.
|
|
890
|
+
*
|
|
875
891
|
* @return {Mesh} The depth sensing mesh.
|
|
876
892
|
*/
|
|
877
893
|
this.getDepthSensingMesh = function () {
|
|
@@ -992,7 +1008,9 @@ class WebXRManager extends EventDispatcher {
|
|
|
992
1008
|
enabledFeatures.includes( 'depth-sensing' ) &&
|
|
993
1009
|
session.depthUsage == 'gpu-optimized';
|
|
994
1010
|
|
|
995
|
-
if ( gpuDepthSensingEnabled &&
|
|
1011
|
+
if ( gpuDepthSensingEnabled && supportsGlBinding ) {
|
|
1012
|
+
|
|
1013
|
+
glBinding = scope.getBinding();
|
|
996
1014
|
|
|
997
1015
|
const depthData = glBinding.getDepthInformation( views[ 0 ] );
|
|
998
1016
|
|
|
@@ -1007,32 +1025,30 @@ class WebXRManager extends EventDispatcher {
|
|
|
1007
1025
|
const cameraAccessEnabled = enabledFeatures &&
|
|
1008
1026
|
enabledFeatures.includes( 'camera-access' );
|
|
1009
1027
|
|
|
1010
|
-
if ( cameraAccessEnabled ) {
|
|
1028
|
+
if ( cameraAccessEnabled && supportsGlBinding ) {
|
|
1011
1029
|
|
|
1012
1030
|
renderer.state.unbindTexture();
|
|
1013
1031
|
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
for ( let i = 0; i < views.length; i ++ ) {
|
|
1032
|
+
glBinding = scope.getBinding();
|
|
1017
1033
|
|
|
1018
|
-
|
|
1034
|
+
for ( let i = 0; i < views.length; i ++ ) {
|
|
1019
1035
|
|
|
1020
|
-
|
|
1036
|
+
const camera = views[ i ].camera;
|
|
1021
1037
|
|
|
1022
|
-
|
|
1038
|
+
if ( camera ) {
|
|
1023
1039
|
|
|
1024
|
-
|
|
1040
|
+
let cameraTex = cameraAccessTextures[ camera ];
|
|
1025
1041
|
|
|
1026
|
-
|
|
1027
|
-
cameraAccessTextures[ camera ] = cameraTex;
|
|
1042
|
+
if ( ! cameraTex ) {
|
|
1028
1043
|
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
const glTexture = glBinding.getCameraImage( camera );
|
|
1032
|
-
cameraTex.sourceTexture = glTexture;
|
|
1044
|
+
cameraTex = new ExternalTexture();
|
|
1045
|
+
cameraAccessTextures[ camera ] = cameraTex;
|
|
1033
1046
|
|
|
1034
1047
|
}
|
|
1035
1048
|
|
|
1049
|
+
const glTexture = glBinding.getCameraImage( camera );
|
|
1050
|
+
cameraTex.sourceTexture = glTexture;
|
|
1051
|
+
|
|
1036
1052
|
}
|
|
1037
1053
|
|
|
1038
1054
|
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Texture } from './Texture.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Represents a texture created externally
|
|
4
|
+
* Represents a texture created externally with the same renderer context.
|
|
5
5
|
*
|
|
6
6
|
* This may be a texture from a protected media stream, device camera feed,
|
|
7
7
|
* or other data feeds like a depth sensor.
|
|
8
8
|
*
|
|
9
|
-
* Note that this class is only supported in {@link WebGLRenderer}
|
|
9
|
+
* Note that this class is only supported in {@link WebGLRenderer}, and in
|
|
10
|
+
* the {@link WebGPURenderer} WebGPU backend.
|
|
10
11
|
*
|
|
11
12
|
* @augments Texture
|
|
12
13
|
*/
|
|
@@ -15,7 +16,7 @@ class ExternalTexture extends Texture {
|
|
|
15
16
|
/**
|
|
16
17
|
* Creates a new raw texture.
|
|
17
18
|
*
|
|
18
|
-
* @param {?WebGLTexture} [sourceTexture=null] - The external texture.
|
|
19
|
+
* @param {?(WebGLTexture|GPUTexture)} [sourceTexture=null] - The external texture.
|
|
19
20
|
*/
|
|
20
21
|
constructor( sourceTexture = null ) {
|
|
21
22
|
|
|
@@ -24,7 +25,7 @@ class ExternalTexture extends Texture {
|
|
|
24
25
|
/**
|
|
25
26
|
* The external source texture.
|
|
26
27
|
*
|
|
27
|
-
* @type {?WebGLTexture}
|
|
28
|
+
* @type {?(WebGLTexture|GPUTexture)}
|
|
28
29
|
* @default null
|
|
29
30
|
*/
|
|
30
31
|
this.sourceTexture = sourceTexture;
|
|
@@ -40,6 +41,16 @@ class ExternalTexture extends Texture {
|
|
|
40
41
|
|
|
41
42
|
}
|
|
42
43
|
|
|
44
|
+
copy( source ) {
|
|
45
|
+
|
|
46
|
+
super.copy( source );
|
|
47
|
+
|
|
48
|
+
this.sourceTexture = source.sourceTexture;
|
|
49
|
+
|
|
50
|
+
return this;
|
|
51
|
+
|
|
52
|
+
}
|
|
53
|
+
|
|
43
54
|
}
|
|
44
55
|
|
|
45
56
|
export { ExternalTexture };
|
package/src/textures/Source.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ImageUtils } from '../extras/ImageUtils.js';
|
|
2
2
|
import { generateUUID } from '../math/MathUtils.js';
|
|
3
|
+
import { warn } from '../utils.js';
|
|
3
4
|
|
|
4
5
|
let _sourceId = 0;
|
|
5
6
|
|
|
@@ -83,7 +84,7 @@ class Source {
|
|
|
83
84
|
|
|
84
85
|
const data = this.data;
|
|
85
86
|
|
|
86
|
-
if ( data instanceof HTMLVideoElement ) {
|
|
87
|
+
if ( ( typeof HTMLVideoElement !== 'undefined' ) && ( data instanceof HTMLVideoElement ) ) {
|
|
87
88
|
|
|
88
89
|
target.set( data.videoWidth, data.videoHeight, 0 );
|
|
89
90
|
|
|
@@ -217,7 +218,7 @@ function serializeImage( image ) {
|
|
|
217
218
|
|
|
218
219
|
} else {
|
|
219
220
|
|
|
220
|
-
|
|
221
|
+
warn( 'Texture: Unable to serialize Texture.' );
|
|
221
222
|
return {};
|
|
222
223
|
|
|
223
224
|
}
|
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
|
|
|
@@ -521,7 +522,7 @@ class Texture extends EventDispatcher {
|
|
|
521
522
|
|
|
522
523
|
if ( newValue === undefined ) {
|
|
523
524
|
|
|
524
|
-
|
|
525
|
+
warn( `Texture.setValues(): parameter '${ key }' has value of undefined.` );
|
|
525
526
|
continue;
|
|
526
527
|
|
|
527
528
|
}
|
|
@@ -530,7 +531,7 @@ class Texture extends EventDispatcher {
|
|
|
530
531
|
|
|
531
532
|
if ( currentValue === undefined ) {
|
|
532
533
|
|
|
533
|
-
|
|
534
|
+
warn( `Texture.setValues(): property '${ key }' does not exist.` );
|
|
534
535
|
continue;
|
|
535
536
|
|
|
536
537
|
}
|
|
@@ -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
|
@@ -78,13 +78,77 @@ function createCanvasElement() {
|
|
|
78
78
|
|
|
79
79
|
const _cache = {};
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
let _setConsoleFunction = null;
|
|
82
|
+
|
|
83
|
+
function setConsoleFunction( fn ) {
|
|
84
|
+
|
|
85
|
+
_setConsoleFunction = fn;
|
|
86
|
+
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function getConsoleFunction() {
|
|
90
|
+
|
|
91
|
+
return _setConsoleFunction;
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function log( ...params ) {
|
|
96
|
+
|
|
97
|
+
const message = 'THREE.' + params.shift();
|
|
98
|
+
|
|
99
|
+
if ( _setConsoleFunction ) {
|
|
100
|
+
|
|
101
|
+
_setConsoleFunction( 'log', message, ...params );
|
|
102
|
+
|
|
103
|
+
} else {
|
|
104
|
+
|
|
105
|
+
console.log( message, ...params );
|
|
106
|
+
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function warn( ...params ) {
|
|
112
|
+
|
|
113
|
+
const message = 'THREE.' + params.shift();
|
|
114
|
+
|
|
115
|
+
if ( _setConsoleFunction ) {
|
|
116
|
+
|
|
117
|
+
_setConsoleFunction( 'warn', message, ...params );
|
|
118
|
+
|
|
119
|
+
} else {
|
|
120
|
+
|
|
121
|
+
console.warn( message, ...params );
|
|
122
|
+
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function error( ...params ) {
|
|
128
|
+
|
|
129
|
+
const message = 'THREE.' + params.shift();
|
|
130
|
+
|
|
131
|
+
if ( _setConsoleFunction ) {
|
|
132
|
+
|
|
133
|
+
_setConsoleFunction( 'error', message, ...params );
|
|
134
|
+
|
|
135
|
+
} else {
|
|
136
|
+
|
|
137
|
+
console.error( message, ...params );
|
|
138
|
+
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function warnOnce( ...params ) {
|
|
144
|
+
|
|
145
|
+
const message = params.join( ' ' );
|
|
82
146
|
|
|
83
147
|
if ( message in _cache ) return;
|
|
84
148
|
|
|
85
149
|
_cache[ message ] = true;
|
|
86
150
|
|
|
87
|
-
|
|
151
|
+
warn( ...params );
|
|
88
152
|
|
|
89
153
|
}
|
|
90
154
|
|
|
@@ -149,4 +213,4 @@ function toReversedProjectionMatrix( projectionMatrix ) {
|
|
|
149
213
|
|
|
150
214
|
}
|
|
151
215
|
|
|
152
|
-
export { arrayMin, arrayMax, arrayNeedsUint32, getTypedArray, createElementNS, createCanvasElement, warnOnce, probeAsync, toNormalizedProjectionMatrix, toReversedProjectionMatrix };
|
|
216
|
+
export { arrayMin, arrayMax, arrayNeedsUint32, getTypedArray, createElementNS, createCanvasElement, setConsoleFunction, getConsoleFunction, log, warn, error, warnOnce, probeAsync, toNormalizedProjectionMatrix, toReversedProjectionMatrix };
|