super-three 0.179.0 → 0.181.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +1112 -595
- package/build/three.core.js +616 -345
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +492 -254
- 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 +6573 -2150
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +6572 -2149
- 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 +52 -43
- 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 +3 -2
- 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 +41 -27
- 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
|
|
|
@@ -13,6 +13,7 @@ import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
|
13
13
|
import { ExternalTexture } from '../../textures/ExternalTexture.js';
|
|
14
14
|
import { DepthFormat, DepthStencilFormat, RGBAFormat, UnsignedByteType, UnsignedIntType, UnsignedInt248Type } from '../../constants.js';
|
|
15
15
|
import { WebXRDepthSensing } from './WebXRDepthSensing.js';
|
|
16
|
+
import { warn } from '../../utils.js';
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
19
|
* This class represents an abstraction of the WebXR Device API and is
|
|
@@ -56,6 +57,8 @@ class WebXRManager extends EventDispatcher {
|
|
|
56
57
|
let glBaseLayer = null;
|
|
57
58
|
let xrFrame = null;
|
|
58
59
|
|
|
60
|
+
const supportsGlBinding = typeof XRWebGLBinding !== 'undefined';
|
|
61
|
+
|
|
59
62
|
const depthSensing = new WebXRDepthSensing();
|
|
60
63
|
const cameraAccessTextures = {};
|
|
61
64
|
const attributes = gl.getContextAttributes();
|
|
@@ -287,7 +290,7 @@ class WebXRManager extends EventDispatcher {
|
|
|
287
290
|
|
|
288
291
|
if ( scope.isPresenting === true ) {
|
|
289
292
|
|
|
290
|
-
|
|
293
|
+
warn( 'WebXRManager: Cannot change framebuffer scale while presenting.' );
|
|
291
294
|
|
|
292
295
|
}
|
|
293
296
|
|
|
@@ -309,7 +312,7 @@ class WebXRManager extends EventDispatcher {
|
|
|
309
312
|
|
|
310
313
|
if ( scope.isPresenting === true ) {
|
|
311
314
|
|
|
312
|
-
|
|
315
|
+
warn( 'WebXRManager: Cannot change reference space type while presenting.' );
|
|
313
316
|
|
|
314
317
|
}
|
|
315
318
|
|
|
@@ -340,6 +343,9 @@ class WebXRManager extends EventDispatcher {
|
|
|
340
343
|
/**
|
|
341
344
|
* Returns the current base layer.
|
|
342
345
|
*
|
|
346
|
+
* This is an `XRProjectionLayer` when the targeted XR device supports the
|
|
347
|
+
* WebXR Layers API, or an `XRWebGLLayer` otherwise.
|
|
348
|
+
*
|
|
343
349
|
* @return {?(XRWebGLLayer|XRProjectionLayer)} The XR base layer.
|
|
344
350
|
*/
|
|
345
351
|
this.getBaseLayer = function () {
|
|
@@ -351,10 +357,19 @@ class WebXRManager extends EventDispatcher {
|
|
|
351
357
|
/**
|
|
352
358
|
* Returns the current XR binding.
|
|
353
359
|
*
|
|
354
|
-
*
|
|
360
|
+
* Creates a new binding if needed and the browser is
|
|
361
|
+
* capable of doing so.
|
|
362
|
+
*
|
|
363
|
+
* @return {?XRWebGLBinding} The XR binding. Returns `null` if one cannot be created.
|
|
355
364
|
*/
|
|
356
365
|
this.getBinding = function () {
|
|
357
366
|
|
|
367
|
+
if ( glBinding === null && supportsGlBinding ) {
|
|
368
|
+
|
|
369
|
+
glBinding = new XRWebGLBinding( session, gl );
|
|
370
|
+
|
|
371
|
+
}
|
|
372
|
+
|
|
358
373
|
return glBinding;
|
|
359
374
|
|
|
360
375
|
};
|
|
@@ -422,17 +437,12 @@ class WebXRManager extends EventDispatcher {
|
|
|
422
437
|
currentPixelRatio = renderer.getPixelRatio();
|
|
423
438
|
renderer.getSize( currentSize );
|
|
424
439
|
|
|
425
|
-
if ( typeof XRWebGLBinding !== 'undefined' ) {
|
|
426
|
-
|
|
427
|
-
glBinding = new XRWebGLBinding( session, gl );
|
|
428
|
-
|
|
429
|
-
}
|
|
430
440
|
|
|
431
441
|
// Check that the browser implements the necessary APIs to use an
|
|
432
442
|
// XRProjectionLayer rather than an XRWebGLLayer
|
|
433
|
-
const
|
|
443
|
+
const supportsLayers = supportsGlBinding && 'createProjectionLayer' in XRWebGLBinding.prototype;
|
|
434
444
|
|
|
435
|
-
if ( !
|
|
445
|
+
if ( ! supportsLayers ) {
|
|
436
446
|
|
|
437
447
|
const layerInit = {
|
|
438
448
|
antialias: attributes.antialias,
|
|
@@ -491,7 +501,7 @@ class WebXRManager extends EventDispatcher {
|
|
|
491
501
|
|
|
492
502
|
}
|
|
493
503
|
|
|
494
|
-
glBinding =
|
|
504
|
+
glBinding = this.getBinding();
|
|
495
505
|
|
|
496
506
|
glProjLayer = glBinding.createProjectionLayer( projectionlayerInit );
|
|
497
507
|
|
|
@@ -587,6 +597,8 @@ class WebXRManager extends EventDispatcher {
|
|
|
587
597
|
/**
|
|
588
598
|
* Returns the current depth texture computed via depth sensing.
|
|
589
599
|
*
|
|
600
|
+
* See {@link WebXRDepthSensing#getDepthTexture}.
|
|
601
|
+
*
|
|
590
602
|
* @return {?Texture} The depth texture.
|
|
591
603
|
*/
|
|
592
604
|
this.getDepthTexture = function () {
|
|
@@ -763,7 +775,7 @@ class WebXRManager extends EventDispatcher {
|
|
|
763
775
|
|
|
764
776
|
/**
|
|
765
777
|
* Updates the state of the XR camera. Use this method on app level if you
|
|
766
|
-
* set cameraAutoUpdate` to `false`. The method requires the non-XR
|
|
778
|
+
* set `cameraAutoUpdate` to `false`. The method requires the non-XR
|
|
767
779
|
* camera of the scene as a parameter. The passed in camera's transformation
|
|
768
780
|
* is automatically adjusted to the position of the XR camera when calling
|
|
769
781
|
* this method.
|
|
@@ -941,6 +953,8 @@ class WebXRManager extends EventDispatcher {
|
|
|
941
953
|
/**
|
|
942
954
|
* Returns the depth sensing mesh.
|
|
943
955
|
*
|
|
956
|
+
* See {@link WebXRDepthSensing#getMesh}.
|
|
957
|
+
*
|
|
944
958
|
* @return {Mesh} The depth sensing mesh.
|
|
945
959
|
*/
|
|
946
960
|
this.getDepthSensingMesh = function () {
|
|
@@ -1061,7 +1075,9 @@ class WebXRManager extends EventDispatcher {
|
|
|
1061
1075
|
enabledFeatures.includes( 'depth-sensing' ) &&
|
|
1062
1076
|
session.depthUsage == 'gpu-optimized';
|
|
1063
1077
|
|
|
1064
|
-
if ( gpuDepthSensingEnabled &&
|
|
1078
|
+
if ( gpuDepthSensingEnabled && supportsGlBinding ) {
|
|
1079
|
+
|
|
1080
|
+
glBinding = scope.getBinding();
|
|
1065
1081
|
|
|
1066
1082
|
const depthData = glBinding.getDepthInformation( views[ 0 ] );
|
|
1067
1083
|
|
|
@@ -1076,32 +1092,30 @@ class WebXRManager extends EventDispatcher {
|
|
|
1076
1092
|
const cameraAccessEnabled = enabledFeatures &&
|
|
1077
1093
|
enabledFeatures.includes( 'camera-access' );
|
|
1078
1094
|
|
|
1079
|
-
if ( cameraAccessEnabled ) {
|
|
1095
|
+
if ( cameraAccessEnabled && supportsGlBinding ) {
|
|
1080
1096
|
|
|
1081
1097
|
renderer.state.unbindTexture();
|
|
1082
1098
|
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
for ( let i = 0; i < views.length; i ++ ) {
|
|
1099
|
+
glBinding = scope.getBinding();
|
|
1086
1100
|
|
|
1087
|
-
|
|
1101
|
+
for ( let i = 0; i < views.length; i ++ ) {
|
|
1088
1102
|
|
|
1089
|
-
|
|
1103
|
+
const camera = views[ i ].camera;
|
|
1090
1104
|
|
|
1091
|
-
|
|
1105
|
+
if ( camera ) {
|
|
1092
1106
|
|
|
1093
|
-
|
|
1107
|
+
let cameraTex = cameraAccessTextures[ camera ];
|
|
1094
1108
|
|
|
1095
|
-
|
|
1096
|
-
cameraAccessTextures[ camera ] = cameraTex;
|
|
1109
|
+
if ( ! cameraTex ) {
|
|
1097
1110
|
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
const glTexture = glBinding.getCameraImage( camera );
|
|
1101
|
-
cameraTex.sourceTexture = glTexture;
|
|
1111
|
+
cameraTex = new ExternalTexture();
|
|
1112
|
+
cameraAccessTextures[ camera ] = cameraTex;
|
|
1102
1113
|
|
|
1103
1114
|
}
|
|
1104
1115
|
|
|
1116
|
+
const glTexture = glBinding.getCameraImage( camera );
|
|
1117
|
+
cameraTex.sourceTexture = glTexture;
|
|
1118
|
+
|
|
1105
1119
|
}
|
|
1106
1120
|
|
|
1107
1121
|
}
|
|
@@ -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 };
|