super-three 0.181.0 → 0.184.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +3 -4
- package/build/three.cjs +13152 -11354
- package/build/three.core.js +12319 -11539
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +1808 -781
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +27 -13
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +10523 -6263
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +10484 -6262
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +11 -3
- package/examples/jsm/animation/CCDIKSolver.js +7 -3
- package/examples/jsm/controls/ArcballControls.js +7 -4
- package/examples/jsm/controls/DragControls.js +2 -2
- package/examples/jsm/controls/FirstPersonControls.js +58 -54
- package/examples/jsm/controls/FlyControls.js +4 -0
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +111 -8
- package/examples/jsm/controls/TrackballControls.js +8 -8
- package/examples/jsm/controls/TransformControls.js +34 -2
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMShadowNode.js +6 -2
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +152 -9
- package/examples/jsm/exporters/USDZExporter.js +22 -3
- package/examples/jsm/geometries/DecalGeometry.js +1 -1
- package/examples/jsm/geometries/TextGeometry.js +18 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +67 -8
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +203 -88
- package/examples/jsm/inspector/RendererInspector.js +14 -4
- package/examples/jsm/inspector/extensions/extensions.json +6 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Console.js +41 -7
- package/examples/jsm/inspector/tabs/Memory.js +128 -0
- package/examples/jsm/inspector/tabs/Parameters.js +51 -3
- package/examples/jsm/inspector/tabs/Performance.js +4 -4
- package/examples/jsm/inspector/tabs/Settings.js +264 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
- package/examples/jsm/inspector/tabs/Viewer.js +107 -5
- package/examples/jsm/inspector/ui/Graph.js +2 -2
- package/examples/jsm/inspector/ui/List.js +1 -1
- package/examples/jsm/inspector/ui/Profiler.js +1936 -34
- package/examples/jsm/inspector/ui/Style.js +1044 -31
- package/examples/jsm/inspector/ui/Tab.js +222 -3
- package/examples/jsm/inspector/ui/Values.js +55 -2
- package/examples/jsm/inspector/ui/utils.js +13 -0
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +651 -0
- package/examples/jsm/lines/LineMaterial.js +7 -1
- package/examples/jsm/loaders/3DMLoader.js +5 -4
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +24 -4026
- package/examples/jsm/loaders/DRACOLoader.js +5 -5
- package/examples/jsm/loaders/EXRLoader.js +687 -48
- package/examples/jsm/loaders/FBXLoader.js +235 -37
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +146 -178
- package/examples/jsm/loaders/HDRLoader.js +1 -2
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +27 -5
- package/examples/jsm/loaders/LDrawLoader.js +41 -50
- package/examples/jsm/loaders/LWOLoader.js +7 -39
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/PCDLoader.js +4 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +79 -2
- package/examples/jsm/loaders/VTKLoader.js +42 -25
- package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
- package/examples/jsm/loaders/usd/USDAParser.js +450 -363
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/Volume.js +0 -1
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +73 -25
- package/examples/jsm/objects/Sky.js +90 -6
- package/examples/jsm/objects/SkyMesh.js +150 -16
- package/examples/jsm/objects/Water.js +4 -3
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/WaterMesh.js +5 -7
- package/examples/jsm/physics/AmmoPhysics.js +12 -7
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +9 -5
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
- package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +174 -60
- package/examples/jsm/shaders/GTAOShader.js +19 -6
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +6 -5
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +63 -6
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +46 -3
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/AnamorphicNode.js +12 -1
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +16 -6
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
- package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -1
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/FXAANode.js +2 -2
- package/examples/jsm/tsl/display/GTAONode.js +6 -4
- package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +69 -19
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +8 -24
- package/examples/jsm/tsl/display/SSRNode.js +8 -8
- package/examples/jsm/tsl/display/SSSNode.js +6 -4
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +315 -126
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +53 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -3
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
- package/package.json +24 -30
- package/src/Three.Core.js +3 -1
- package/src/Three.TSL.js +25 -11
- package/src/Three.WebGPU.Nodes.js +5 -0
- package/src/Three.WebGPU.js +9 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +12 -2
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +47 -8
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +1 -1
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/cameras/Camera.js +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/constants.js +90 -5
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +14 -2
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +52 -4
- package/src/core/Raycaster.js +2 -2
- package/src/core/RenderTarget.js +4 -4
- package/src/extras/PMREMGenerator.js +7 -18
- package/src/extras/TextureUtils.js +5 -1
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/geometries/ExtrudeGeometry.js +2 -2
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- package/src/helpers/DirectionalLightHelper.js +4 -1
- package/src/helpers/HemisphereLightHelper.js +3 -0
- package/src/helpers/PointLightHelper.js +1 -25
- package/src/helpers/SpotLightHelper.js +3 -0
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/loaders/AudioLoader.js +11 -1
- package/src/loaders/Cache.js +28 -0
- package/src/loaders/DataTextureLoader.js +6 -4
- package/src/loaders/FileLoader.js +2 -3
- package/src/loaders/ImageBitmapLoader.js +12 -9
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/MaterialLoader.js +3 -2
- package/src/loaders/ObjectLoader.js +46 -6
- package/src/loaders/nodes/NodeLoader.js +2 -2
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/Material.js +2 -0
- package/src/materials/MeshLambertMaterial.js +9 -0
- package/src/materials/MeshPhongMaterial.js +9 -0
- package/src/materials/MeshToonMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +20 -1
- package/src/materials/nodes/Line2NodeMaterial.js +34 -7
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
- package/src/materials/nodes/NodeMaterial.js +45 -25
- package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -86
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +10 -10
- package/src/math/Matrix2.js +13 -9
- package/src/math/Matrix3.js +13 -9
- package/src/math/Matrix4.js +87 -74
- package/src/math/Plane.js +4 -3
- package/src/math/Quaternion.js +3 -29
- package/src/math/Sphere.js +1 -1
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +11 -7
- package/src/math/Vector3.js +15 -13
- package/src/math/Vector4.js +13 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/nodes/Nodes.js +86 -68
- package/src/nodes/TSL.js +7 -7
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/BatchNode.js +10 -10
- package/src/nodes/accessors/Bitangent.js +5 -5
- package/src/nodes/accessors/BufferAttributeNode.js +107 -15
- package/src/nodes/accessors/BufferNode.js +29 -2
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +27 -2
- package/src/nodes/accessors/InstanceNode.js +148 -43
- package/src/nodes/accessors/MaterialNode.js +9 -1
- package/src/nodes/accessors/MaterialProperties.js +2 -5
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +11 -11
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/Position.js +34 -2
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
- package/src/nodes/accessors/ReferenceNode.js +8 -8
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/SkinningNode.js +27 -26
- package/src/nodes/accessors/StorageBufferNode.js +14 -25
- package/src/nodes/accessors/StorageTextureNode.js +40 -9
- package/src/nodes/accessors/Tangent.js +4 -14
- package/src/nodes/accessors/Texture3DNode.js +32 -35
- package/src/nodes/accessors/TextureNode.js +67 -23
- package/src/nodes/accessors/UniformArrayNode.js +6 -4
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionCallNode.js +1 -1
- package/src/nodes/code/FunctionNode.js +2 -3
- package/src/nodes/core/ArrayNode.js +21 -2
- package/src/nodes/core/AssignNode.js +3 -3
- package/src/nodes/core/AttributeNode.js +3 -3
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +104 -5
- package/src/nodes/core/IndexNode.js +2 -1
- package/src/nodes/core/InputNode.js +1 -1
- package/src/nodes/core/InspectorNode.js +1 -1
- package/src/nodes/core/IsolateNode.js +1 -1
- package/src/nodes/core/MRTNode.js +48 -2
- package/src/nodes/core/Node.js +112 -15
- package/src/nodes/core/NodeBuilder.js +284 -66
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +12 -4
- package/src/nodes/core/NodeUtils.js +11 -9
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +4 -4
- package/src/nodes/core/PropertyNode.js +19 -3
- package/src/nodes/core/StackNode.js +66 -17
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +17 -3
- package/src/nodes/core/StructTypeNode.js +12 -18
- package/src/nodes/core/SubBuildNode.js +2 -2
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +21 -5
- package/src/nodes/core/VarNode.js +48 -23
- package/src/nodes/core/VaryingNode.js +2 -19
- package/src/nodes/display/BlendModes.js +0 -64
- package/src/nodes/display/ColorAdjustment.js +17 -0
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +39 -4
- package/src/nodes/display/PassNode.js +125 -16
- package/src/nodes/display/RenderOutputNode.js +7 -7
- package/src/nodes/display/ScreenNode.js +4 -2
- package/src/nodes/display/ToneMappingNode.js +1 -1
- package/src/nodes/display/ToonOutlinePassNode.js +2 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
- package/src/nodes/display/ViewportTextureNode.js +39 -11
- package/src/nodes/fog/Fog.js +18 -35
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/PhysicalLightingModel.js +126 -45
- package/src/nodes/geometry/RangeNode.js +5 -3
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
- package/src/nodes/gpgpu/ComputeNode.js +74 -48
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +4 -4
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +28 -3
- package/src/nodes/lighting/LightsNode.js +7 -28
- package/src/nodes/lighting/PointShadowNode.js +162 -149
- package/src/nodes/lighting/ShadowFilterNode.js +53 -65
- package/src/nodes/lighting/ShadowNode.js +120 -42
- package/src/nodes/math/BitcastNode.js +1 -1
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +3 -3
- package/src/nodes/math/MathNode.js +76 -41
- package/src/nodes/math/OperatorNode.js +3 -2
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/pmrem/PMREMNode.js +1 -1
- package/src/nodes/pmrem/PMREMUtils.js +9 -15
- package/src/nodes/tsl/TSLBase.js +1 -1
- package/src/nodes/tsl/TSLCore.js +38 -17
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +12 -12
- package/src/nodes/utils/EventNode.js +31 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Packing.js +13 -1
- package/src/nodes/utils/PostProcessingUtils.js +33 -1
- package/src/nodes/utils/RTTNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +3 -4
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +1 -1
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +44 -16
- package/src/objects/InstancedMesh.js +30 -3
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Skeleton.js +9 -0
- package/src/objects/SkinnedMesh.js +26 -9
- package/src/renderers/WebGLRenderer.js +329 -145
- package/src/renderers/common/Animation.js +3 -3
- package/src/renderers/common/Attributes.js +15 -1
- package/src/renderers/common/Backend.js +29 -8
- package/src/renderers/common/Background.js +26 -13
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +29 -14
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +40 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +51 -7
- package/src/renderers/common/Geometries.js +29 -3
- package/src/renderers/common/Info.js +333 -4
- package/src/renderers/common/InspectorBase.js +6 -1
- package/src/renderers/common/Lighting.js +5 -21
- package/src/renderers/common/Pipelines.js +40 -7
- package/src/renderers/common/PostProcessing.js +8 -206
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +7 -3
- package/src/renderers/common/RenderContext.js +16 -0
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +17 -5
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +21 -5
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +481 -117
- package/src/renderers/common/Sampler.js +4 -4
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +89 -4
- package/src/renderers/common/TimestampQueryPool.js +5 -3
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +62 -1
- package/src/renderers/common/XRManager.js +37 -29
- package/src/renderers/common/extras/PMREMGenerator.js +25 -23
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +242 -99
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
- package/src/renderers/shaders/DFGLUTData.js +19 -34
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +5 -3
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -6
- package/src/renderers/shaders/UniformsLib.js +7 -5
- package/src/renderers/shaders/UniformsUtils.js +27 -5
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +15 -15
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +9 -4
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -13
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +270 -0
- package/src/renderers/webgl/WebGLProgram.js +49 -109
- package/src/renderers/webgl/WebGLPrograms.js +63 -51
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShadowMap.js +188 -24
- package/src/renderers/webgl/WebGLState.js +75 -37
- package/src/renderers/webgl/WebGLTextures.js +215 -54
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +19 -0
- package/src/renderers/webgl/WebGLUtils.js +6 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +253 -82
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +173 -74
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +68 -53
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +6 -2
- package/src/renderers/webgpu/WebGPUBackend.js +260 -140
- package/src/renderers/webgpu/WebGPURenderer.js +2 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +366 -90
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +107 -34
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +357 -200
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +61 -23
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +152 -200
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +156 -59
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +7 -7
- package/src/renderers/webgpu/utils/WebGPUUtils.js +33 -11
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +4 -2
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +16 -5
- package/src/utils.js +280 -3
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/src/nodes/accessors/SceneNode.js +0 -145
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
- package/src/nodes/utils/RemapNode.js +0 -125
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
package/src/core/RenderTarget.js
CHANGED
|
@@ -124,10 +124,6 @@ class RenderTarget extends EventDispatcher {
|
|
|
124
124
|
*/
|
|
125
125
|
this.viewport = new Vector4( 0, 0, width, height );
|
|
126
126
|
|
|
127
|
-
const image = { width: width, height: height, depth: options.depth };
|
|
128
|
-
|
|
129
|
-
const texture = new Texture( image );
|
|
130
|
-
|
|
131
127
|
/**
|
|
132
128
|
* An array of textures. Each color attachment is represented as a separate texture.
|
|
133
129
|
* Has at least a single entry for the default color attachment.
|
|
@@ -136,6 +132,9 @@ class RenderTarget extends EventDispatcher {
|
|
|
136
132
|
*/
|
|
137
133
|
this.textures = [];
|
|
138
134
|
|
|
135
|
+
const image = { width: width, height: height, depth: options.depth };
|
|
136
|
+
const texture = new Texture( image );
|
|
137
|
+
|
|
139
138
|
const count = options.count;
|
|
140
139
|
for ( let i = 0; i < count; i ++ ) {
|
|
141
140
|
|
|
@@ -370,6 +369,7 @@ class RenderTarget extends EventDispatcher {
|
|
|
370
369
|
if ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();
|
|
371
370
|
|
|
372
371
|
this.samples = source.samples;
|
|
372
|
+
this.multiview = source.multiview;
|
|
373
373
|
|
|
374
374
|
return this;
|
|
375
375
|
|
|
@@ -103,7 +103,7 @@ class PMREMGenerator {
|
|
|
103
103
|
* @param {number} [far=100] - The far plane distance.
|
|
104
104
|
* @param {Object} [options={}] - The configuration options.
|
|
105
105
|
* @param {number} [options.size=256] - The texture size of the PMREM.
|
|
106
|
-
* @param {Vector3} [options.
|
|
106
|
+
* @param {Vector3} [options.position=origin] - The position of the internal cube camera that renders the scene.
|
|
107
107
|
* @return {WebGLRenderTarget} The resulting PMREM.
|
|
108
108
|
*/
|
|
109
109
|
fromScene( scene, sigma = 0, near = 0.1, far = 100, options = {} ) {
|
|
@@ -314,6 +314,7 @@ class PMREMGenerator {
|
|
|
314
314
|
( { lodMeshes: this._lodMeshes, sizeLods: this._sizeLods, sigmas: this._sigmas } = _createPlanes( _lodMax ) );
|
|
315
315
|
|
|
316
316
|
this._blurMaterial = _getBlurShader( _lodMax, width, height );
|
|
317
|
+
this._ggxMaterial = _getGGXShader( _lodMax, width, height );
|
|
317
318
|
|
|
318
319
|
}
|
|
319
320
|
|
|
@@ -519,14 +520,6 @@ class PMREMGenerator {
|
|
|
519
520
|
const renderer = this._renderer;
|
|
520
521
|
const pingPongRenderTarget = this._pingPongRenderTarget;
|
|
521
522
|
|
|
522
|
-
if ( this._ggxMaterial === null ) {
|
|
523
|
-
|
|
524
|
-
const width = 3 * Math.max( this._cubeSize, 16 );
|
|
525
|
-
const height = 4 * this._cubeSize;
|
|
526
|
-
this._ggxMaterial = _getGGXShader( this._lodMax, width, height );
|
|
527
|
-
|
|
528
|
-
}
|
|
529
|
-
|
|
530
523
|
const ggxMaterial = this._ggxMaterial;
|
|
531
524
|
const ggxMesh = this._lodMeshes[ lodOut ];
|
|
532
525
|
ggxMesh.material = ggxMaterial;
|
|
@@ -539,7 +532,7 @@ class PMREMGenerator {
|
|
|
539
532
|
const incrementalRoughness = Math.sqrt( targetRoughness * targetRoughness - sourceRoughness * sourceRoughness );
|
|
540
533
|
|
|
541
534
|
// Apply blur strength mapping for better quality across the roughness range
|
|
542
|
-
const blurStrength = 0.
|
|
535
|
+
const blurStrength = 0.0 + targetRoughness * 1.25;
|
|
543
536
|
const adjustedRoughness = incrementalRoughness * blurStrength;
|
|
544
537
|
|
|
545
538
|
// Calculate viewport position based on output LOD level
|
|
@@ -852,24 +845,20 @@ function _getGGXShader( lodMax, width, height ) {
|
|
|
852
845
|
vec3 importanceSampleGGX_VNDF(vec2 Xi, vec3 V, float roughness) {
|
|
853
846
|
float alpha = roughness * roughness;
|
|
854
847
|
|
|
855
|
-
// Section 3.2: Transform view direction to hemisphere configuration
|
|
856
|
-
vec3 Vh = normalize(vec3(alpha * V.x, alpha * V.y, V.z));
|
|
857
|
-
|
|
858
848
|
// Section 4.1: Orthonormal basis
|
|
859
|
-
|
|
860
|
-
vec3
|
|
861
|
-
vec3 T2 = cross(Vh, T1);
|
|
849
|
+
vec3 T1 = vec3(1.0, 0.0, 0.0);
|
|
850
|
+
vec3 T2 = cross(V, T1);
|
|
862
851
|
|
|
863
852
|
// Section 4.2: Parameterization of projected area
|
|
864
853
|
float r = sqrt(Xi.x);
|
|
865
854
|
float phi = 2.0 * PI * Xi.y;
|
|
866
855
|
float t1 = r * cos(phi);
|
|
867
856
|
float t2 = r * sin(phi);
|
|
868
|
-
float s = 0.5 * (1.0 +
|
|
857
|
+
float s = 0.5 * (1.0 + V.z);
|
|
869
858
|
t2 = (1.0 - s) * sqrt(1.0 - t1 * t1) + s * t2;
|
|
870
859
|
|
|
871
860
|
// Section 4.3: Reprojection onto hemisphere
|
|
872
|
-
vec3 Nh = t1 * T1 + t2 * T2 + sqrt(max(0.0, 1.0 - t1 * t1 - t2 * t2)) *
|
|
861
|
+
vec3 Nh = t1 * T1 + t2 * T2 + sqrt(max(0.0, 1.0 - t1 * t1 - t2 * t2)) * V;
|
|
873
862
|
|
|
874
863
|
// Section 3.4: Transform back to ellipsoid configuration
|
|
875
864
|
return normalize(vec3(alpha * Nh.x, alpha * Nh.y, max(0.0, Nh.z)));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AlphaFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBFormat, RGBAFormat, RGBAIntegerFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, UnsignedByteType, ByteType, UnsignedShortType, ShortType, HalfFloatType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedIntType, IntType, FloatType, UnsignedInt5999Type, UnsignedInt101111Type } from '../constants.js';
|
|
1
|
+
import { AlphaFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBFormat, RGBAFormat, RGBAIntegerFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, R11_EAC_Format, SIGNED_R11_EAC_Format, RG11_EAC_Format, SIGNED_RG11_EAC_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, UnsignedByteType, ByteType, UnsignedShortType, ShortType, HalfFloatType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedIntType, IntType, FloatType, UnsignedInt5999Type, UnsignedInt101111Type } from '../constants.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Scales the texture as large as possible within its surface without cropping
|
|
@@ -140,8 +140,12 @@ function getByteLength( width, height, format, type ) {
|
|
|
140
140
|
// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc/
|
|
141
141
|
case RGB_ETC1_Format:
|
|
142
142
|
case RGB_ETC2_Format:
|
|
143
|
+
case R11_EAC_Format:
|
|
144
|
+
case SIGNED_R11_EAC_Format:
|
|
143
145
|
return Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;
|
|
144
146
|
case RGBA_ETC2_EAC_Format:
|
|
147
|
+
case RG11_EAC_Format:
|
|
148
|
+
case SIGNED_RG11_EAC_Format:
|
|
145
149
|
return Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;
|
|
146
150
|
|
|
147
151
|
// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc/
|
|
@@ -78,6 +78,7 @@ function CubicPoly() {
|
|
|
78
78
|
//
|
|
79
79
|
|
|
80
80
|
const tmp = /*@__PURE__*/ new Vector3();
|
|
81
|
+
const tmp2 = /*@__PURE__*/ new Vector3();
|
|
81
82
|
const px = /*@__PURE__*/ new CubicPoly();
|
|
82
83
|
const py = /*@__PURE__*/ new CubicPoly();
|
|
83
84
|
const pz = /*@__PURE__*/ new CubicPoly();
|
|
@@ -202,8 +203,8 @@ class CatmullRomCurve3 extends Curve {
|
|
|
202
203
|
} else {
|
|
203
204
|
|
|
204
205
|
// extrapolate first point
|
|
205
|
-
|
|
206
|
-
p0 =
|
|
206
|
+
tmp2.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );
|
|
207
|
+
p0 = tmp2;
|
|
207
208
|
|
|
208
209
|
}
|
|
209
210
|
|
|
@@ -112,9 +112,9 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
112
112
|
|
|
113
113
|
// SETUP TNB variables
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
const isClosed = extrudePath.isCatmullRomCurve3 ? extrudePath.closed : false;
|
|
116
116
|
|
|
117
|
-
splineTube = extrudePath.computeFrenetFrames( steps,
|
|
117
|
+
splineTube = extrudePath.computeFrenetFrames( steps, isClosed );
|
|
118
118
|
|
|
119
119
|
// log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);
|
|
120
120
|
|
|
@@ -339,7 +339,7 @@ class PolyhedronGeometry extends BufferGeometry {
|
|
|
339
339
|
*/
|
|
340
340
|
static fromJSON( data ) {
|
|
341
341
|
|
|
342
|
-
return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.
|
|
342
|
+
return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.detail );
|
|
343
343
|
|
|
344
344
|
}
|
|
345
345
|
|
|
@@ -25,8 +25,10 @@ class TorusGeometry extends BufferGeometry {
|
|
|
25
25
|
* @param {number} [radialSegments=12] - The number of radial segments.
|
|
26
26
|
* @param {number} [tubularSegments=48] - The number of tubular segments.
|
|
27
27
|
* @param {number} [arc=Math.PI*2] - Central angle in radians.
|
|
28
|
+
* @param {number} [thetaStart=0] - Start of the tubular sweep in radians.
|
|
29
|
+
* @param {number} [thetaLength=Math.PI*2] - Length of the tubular sweep in radians.
|
|
28
30
|
*/
|
|
29
|
-
constructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {
|
|
31
|
+
constructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI * 2 ) {
|
|
30
32
|
|
|
31
33
|
super();
|
|
32
34
|
|
|
@@ -44,7 +46,9 @@ class TorusGeometry extends BufferGeometry {
|
|
|
44
46
|
tube: tube,
|
|
45
47
|
radialSegments: radialSegments,
|
|
46
48
|
tubularSegments: tubularSegments,
|
|
47
|
-
arc: arc
|
|
49
|
+
arc: arc,
|
|
50
|
+
thetaStart: thetaStart,
|
|
51
|
+
thetaLength: thetaLength,
|
|
48
52
|
};
|
|
49
53
|
|
|
50
54
|
radialSegments = Math.floor( radialSegments );
|
|
@@ -67,10 +71,11 @@ class TorusGeometry extends BufferGeometry {
|
|
|
67
71
|
|
|
68
72
|
for ( let j = 0; j <= radialSegments; j ++ ) {
|
|
69
73
|
|
|
74
|
+
const v = thetaStart + ( j / radialSegments ) * thetaLength;
|
|
75
|
+
|
|
70
76
|
for ( let i = 0; i <= tubularSegments; i ++ ) {
|
|
71
77
|
|
|
72
78
|
const u = i / tubularSegments * arc;
|
|
73
|
-
const v = j / radialSegments * Math.PI * 2;
|
|
74
79
|
|
|
75
80
|
// vertex
|
|
76
81
|
|
|
@@ -18,6 +18,9 @@ const _camera = /*@__PURE__*/ new Camera();
|
|
|
18
18
|
*
|
|
19
19
|
* `CameraHelper` must be a child of the scene.
|
|
20
20
|
*
|
|
21
|
+
* When the camera is transformed or its projection matrix is changed, it's necessary
|
|
22
|
+
* to call the `update()` method of the respective helper.
|
|
23
|
+
*
|
|
21
24
|
* ```js
|
|
22
25
|
* const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
|
|
23
26
|
* const helper = new THREE.CameraHelper( camera );
|
|
@@ -11,9 +11,12 @@ const _v3 = /*@__PURE__*/ new Vector3();
|
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Helper object to assist with visualizing a {@link DirectionalLight}'s
|
|
14
|
-
* effect on the scene. This consists of plane and a line representing the
|
|
14
|
+
* effect on the scene. This consists of a plane and a line representing the
|
|
15
15
|
* light's position and direction.
|
|
16
16
|
*
|
|
17
|
+
* When the directional light or its target are transformed or light properties
|
|
18
|
+
* are changed, it's necessary to call the `update()` method of the respective helper.
|
|
19
|
+
*
|
|
17
20
|
* ```js
|
|
18
21
|
* const light = new THREE.DirectionalLight( 0xFFFFFF );
|
|
19
22
|
* scene.add( light );
|
|
@@ -14,6 +14,9 @@ const _color2 = /*@__PURE__*/ new Color();
|
|
|
14
14
|
* Creates a visual aid consisting of a spherical mesh for a
|
|
15
15
|
* given {@link HemisphereLight}.
|
|
16
16
|
*
|
|
17
|
+
* When the hemisphere light is transformed or its light properties are changed,
|
|
18
|
+
* it's necessary to call the `update()` method of the respective helper.
|
|
19
|
+
*
|
|
17
20
|
* ```js
|
|
18
21
|
* const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
|
|
19
22
|
* const helper = new THREE.HemisphereLightHelper( light, 5 );
|
|
@@ -38,7 +38,7 @@ class PointLightHelper extends Mesh {
|
|
|
38
38
|
/**
|
|
39
39
|
* The light being visualized.
|
|
40
40
|
*
|
|
41
|
-
* @type {
|
|
41
|
+
* @type {PointLight}
|
|
42
42
|
*/
|
|
43
43
|
this.light = light;
|
|
44
44
|
|
|
@@ -57,30 +57,6 @@ class PointLightHelper extends Mesh {
|
|
|
57
57
|
|
|
58
58
|
this.update();
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
/*
|
|
62
|
-
// TODO: delete this comment?
|
|
63
|
-
const distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );
|
|
64
|
-
const distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );
|
|
65
|
-
|
|
66
|
-
this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );
|
|
67
|
-
this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );
|
|
68
|
-
|
|
69
|
-
const d = light.distance;
|
|
70
|
-
|
|
71
|
-
if ( d === 0.0 ) {
|
|
72
|
-
|
|
73
|
-
this.lightDistance.visible = false;
|
|
74
|
-
|
|
75
|
-
} else {
|
|
76
|
-
|
|
77
|
-
this.lightDistance.scale.set( d, d, d );
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
this.add( this.lightDistance );
|
|
82
|
-
*/
|
|
83
|
-
|
|
84
60
|
}
|
|
85
61
|
|
|
86
62
|
/**
|
|
@@ -10,6 +10,9 @@ const _vector = /*@__PURE__*/ new Vector3();
|
|
|
10
10
|
/**
|
|
11
11
|
* This displays a cone shaped helper object for a {@link SpotLight}.
|
|
12
12
|
*
|
|
13
|
+
* When the spot light or its target are transformed or light properties are
|
|
14
|
+
* changed, it's necessary to call the `update()` method of the respective helper.
|
|
15
|
+
*
|
|
13
16
|
* ```js
|
|
14
17
|
* const spotLight = new THREE.SpotLight( 0xffffff );
|
|
15
18
|
* spotLight.position.set( 10, 10, 10 );
|
|
@@ -80,6 +80,8 @@ class DirectionalLight extends Light {
|
|
|
80
80
|
|
|
81
81
|
dispose() {
|
|
82
82
|
|
|
83
|
+
super.dispose();
|
|
84
|
+
|
|
83
85
|
this.shadow.dispose();
|
|
84
86
|
|
|
85
87
|
}
|
|
@@ -95,6 +97,17 @@ class DirectionalLight extends Light {
|
|
|
95
97
|
|
|
96
98
|
}
|
|
97
99
|
|
|
100
|
+
toJSON( meta ) {
|
|
101
|
+
|
|
102
|
+
const data = super.toJSON( meta );
|
|
103
|
+
|
|
104
|
+
data.object.shadow = this.shadow.toJSON();
|
|
105
|
+
data.object.target = this.target.uuid;
|
|
106
|
+
|
|
107
|
+
return data;
|
|
108
|
+
|
|
109
|
+
}
|
|
110
|
+
|
|
98
111
|
}
|
|
99
112
|
|
|
100
113
|
export { DirectionalLight };
|
package/src/lights/Light.js
CHANGED
|
@@ -54,7 +54,7 @@ class Light extends Object3D {
|
|
|
54
54
|
*/
|
|
55
55
|
dispose() {
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
this.dispatchEvent( { type: 'dispose' } );
|
|
58
58
|
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -76,16 +76,6 @@ class Light extends Object3D {
|
|
|
76
76
|
data.object.color = this.color.getHex();
|
|
77
77
|
data.object.intensity = this.intensity;
|
|
78
78
|
|
|
79
|
-
if ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();
|
|
80
|
-
|
|
81
|
-
if ( this.distance !== undefined ) data.object.distance = this.distance;
|
|
82
|
-
if ( this.angle !== undefined ) data.object.angle = this.angle;
|
|
83
|
-
if ( this.decay !== undefined ) data.object.decay = this.decay;
|
|
84
|
-
if ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;
|
|
85
|
-
|
|
86
|
-
if ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();
|
|
87
|
-
if ( this.target !== undefined ) data.object.target = this.target.uuid;
|
|
88
|
-
|
|
89
79
|
return data;
|
|
90
80
|
|
|
91
81
|
}
|
package/src/lights/LightProbe.js
CHANGED
|
@@ -60,21 +60,6 @@ class LightProbe extends Light {
|
|
|
60
60
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
/**
|
|
64
|
-
* Deserializes the light prove from the given JSON.
|
|
65
|
-
*
|
|
66
|
-
* @param {Object} json - The JSON holding the serialized light probe.
|
|
67
|
-
* @return {LightProbe} A reference to this light probe.
|
|
68
|
-
*/
|
|
69
|
-
fromJSON( json ) {
|
|
70
|
-
|
|
71
|
-
this.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();
|
|
72
|
-
this.sh.fromArray( json.sh );
|
|
73
|
-
|
|
74
|
-
return this;
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
63
|
toJSON( meta ) {
|
|
79
64
|
|
|
80
65
|
const data = super.toJSON( meta );
|
|
@@ -3,7 +3,7 @@ import { Vector2 } from '../math/Vector2.js';
|
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
import { Vector4 } from '../math/Vector4.js';
|
|
5
5
|
import { Frustum } from '../math/Frustum.js';
|
|
6
|
-
import { UnsignedByteType } from '../constants.js';
|
|
6
|
+
import { UnsignedByteType, WebGPUCoordinateSystem } from '../constants.js';
|
|
7
7
|
|
|
8
8
|
const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
|
|
9
9
|
const _lightPositionWorld = /*@__PURE__*/ new Vector3();
|
|
@@ -52,6 +52,16 @@ class LightShadow {
|
|
|
52
52
|
*/
|
|
53
53
|
this.bias = 0;
|
|
54
54
|
|
|
55
|
+
/**
|
|
56
|
+
* A node version of `bias`. Only supported with `WebGPURenderer`.
|
|
57
|
+
*
|
|
58
|
+
* If a bias node is defined, `bias` has no effect.
|
|
59
|
+
*
|
|
60
|
+
* @type {?Node<float>}
|
|
61
|
+
* @default null
|
|
62
|
+
*/
|
|
63
|
+
this.biasNode = null;
|
|
64
|
+
|
|
55
65
|
/**
|
|
56
66
|
* Defines how much the position used to query the shadow map is offset along
|
|
57
67
|
* the object normal. The default is `0`. Increasing this value can be used to
|
|
@@ -69,9 +79,6 @@ class LightShadow {
|
|
|
69
79
|
* map size will allow for a higher value to be used here before these effects
|
|
70
80
|
* become visible.
|
|
71
81
|
*
|
|
72
|
-
* The property has no effect when the shadow map type is `PCFSoftShadowMap` and
|
|
73
|
-
* and it is recommended to increase softness by decreasing the shadow map size instead.
|
|
74
|
-
*
|
|
75
82
|
* The property has no effect when the shadow map type is `BasicShadowMap`.
|
|
76
83
|
*
|
|
77
84
|
* @type {number}
|
|
@@ -206,12 +213,12 @@ class LightShadow {
|
|
|
206
213
|
_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );
|
|
207
214
|
this._frustum.setFromProjectionMatrix( _projScreenMatrix, shadowCamera.coordinateSystem, shadowCamera.reversedDepth );
|
|
208
215
|
|
|
209
|
-
if ( shadowCamera.reversedDepth ) {
|
|
216
|
+
if ( shadowCamera.coordinateSystem === WebGPUCoordinateSystem || shadowCamera.reversedDepth ) {
|
|
210
217
|
|
|
211
218
|
shadowMatrix.set(
|
|
212
219
|
0.5, 0.0, 0.0, 0.5,
|
|
213
220
|
0.0, 0.5, 0.0, 0.5,
|
|
214
|
-
0.0, 0.0, 1.0, 0.0,
|
|
221
|
+
0.0, 0.0, 1.0, 0.0, // Identity Z (preserving the correct [0, 1] range from the projection matrix)
|
|
215
222
|
0.0, 0.0, 0.0, 1.0
|
|
216
223
|
);
|
|
217
224
|
|
|
@@ -295,6 +302,8 @@ class LightShadow {
|
|
|
295
302
|
|
|
296
303
|
this.mapSize.copy( source.mapSize );
|
|
297
304
|
|
|
305
|
+
this.biasNode = source.biasNode;
|
|
306
|
+
|
|
298
307
|
return this;
|
|
299
308
|
|
|
300
309
|
}
|
package/src/lights/PointLight.js
CHANGED
|
@@ -94,6 +94,8 @@ class PointLight extends Light {
|
|
|
94
94
|
|
|
95
95
|
dispose() {
|
|
96
96
|
|
|
97
|
+
super.dispose();
|
|
98
|
+
|
|
97
99
|
this.shadow.dispose();
|
|
98
100
|
|
|
99
101
|
}
|
|
@@ -111,6 +113,19 @@ class PointLight extends Light {
|
|
|
111
113
|
|
|
112
114
|
}
|
|
113
115
|
|
|
116
|
+
toJSON( meta ) {
|
|
117
|
+
|
|
118
|
+
const data = super.toJSON( meta );
|
|
119
|
+
|
|
120
|
+
data.object.distance = this.distance;
|
|
121
|
+
data.object.decay = this.decay;
|
|
122
|
+
|
|
123
|
+
data.object.shadow = this.shadow.toJSON();
|
|
124
|
+
|
|
125
|
+
return data;
|
|
126
|
+
|
|
127
|
+
}
|
|
128
|
+
|
|
114
129
|
}
|
|
115
130
|
|
|
116
131
|
export { PointLight };
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import { LightShadow } from './LightShadow.js';
|
|
2
2
|
import { PerspectiveCamera } from '../cameras/PerspectiveCamera.js';
|
|
3
|
-
import { Matrix4 } from '../math/Matrix4.js';
|
|
4
|
-
import { Vector2 } from '../math/Vector2.js';
|
|
5
|
-
import { Vector3 } from '../math/Vector3.js';
|
|
6
|
-
import { Vector4 } from '../math/Vector4.js';
|
|
7
|
-
|
|
8
|
-
const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
|
|
9
|
-
const _lightPositionWorld = /*@__PURE__*/ new Vector3();
|
|
10
|
-
const _lookTarget = /*@__PURE__*/ new Vector3();
|
|
11
3
|
|
|
12
4
|
/**
|
|
13
5
|
* Represents the shadow configuration of point lights.
|
|
@@ -32,84 +24,6 @@ class PointLightShadow extends LightShadow {
|
|
|
32
24
|
*/
|
|
33
25
|
this.isPointLightShadow = true;
|
|
34
26
|
|
|
35
|
-
this._frameExtents = new Vector2( 4, 2 );
|
|
36
|
-
|
|
37
|
-
this._viewportCount = 6;
|
|
38
|
-
|
|
39
|
-
this._viewports = [
|
|
40
|
-
// These viewports map a cube-map onto a 2D texture with the
|
|
41
|
-
// following orientation:
|
|
42
|
-
//
|
|
43
|
-
// xzXZ
|
|
44
|
-
// y Y
|
|
45
|
-
//
|
|
46
|
-
// X - Positive x direction
|
|
47
|
-
// x - Negative x direction
|
|
48
|
-
// Y - Positive y direction
|
|
49
|
-
// y - Negative y direction
|
|
50
|
-
// Z - Positive z direction
|
|
51
|
-
// z - Negative z direction
|
|
52
|
-
|
|
53
|
-
// positive X
|
|
54
|
-
new Vector4( 2, 1, 1, 1 ),
|
|
55
|
-
// negative X
|
|
56
|
-
new Vector4( 0, 1, 1, 1 ),
|
|
57
|
-
// positive Z
|
|
58
|
-
new Vector4( 3, 1, 1, 1 ),
|
|
59
|
-
// negative Z
|
|
60
|
-
new Vector4( 1, 1, 1, 1 ),
|
|
61
|
-
// positive Y
|
|
62
|
-
new Vector4( 3, 0, 1, 1 ),
|
|
63
|
-
// negative Y
|
|
64
|
-
new Vector4( 1, 0, 1, 1 )
|
|
65
|
-
];
|
|
66
|
-
|
|
67
|
-
this._cubeDirections = [
|
|
68
|
-
new Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),
|
|
69
|
-
new Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )
|
|
70
|
-
];
|
|
71
|
-
|
|
72
|
-
this._cubeUps = [
|
|
73
|
-
new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),
|
|
74
|
-
new Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ), new Vector3( 0, 0, - 1 )
|
|
75
|
-
];
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Update the matrices for the camera and shadow, used internally by the renderer.
|
|
81
|
-
*
|
|
82
|
-
* @param {Light} light - The light for which the shadow is being rendered.
|
|
83
|
-
* @param {number} [viewportIndex=0] - The viewport index.
|
|
84
|
-
*/
|
|
85
|
-
updateMatrices( light, viewportIndex = 0 ) {
|
|
86
|
-
|
|
87
|
-
const camera = this.camera;
|
|
88
|
-
const shadowMatrix = this.matrix;
|
|
89
|
-
|
|
90
|
-
const far = light.distance || camera.far;
|
|
91
|
-
|
|
92
|
-
if ( far !== camera.far ) {
|
|
93
|
-
|
|
94
|
-
camera.far = far;
|
|
95
|
-
camera.updateProjectionMatrix();
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );
|
|
100
|
-
camera.position.copy( _lightPositionWorld );
|
|
101
|
-
|
|
102
|
-
_lookTarget.copy( camera.position );
|
|
103
|
-
_lookTarget.add( this._cubeDirections[ viewportIndex ] );
|
|
104
|
-
camera.up.copy( this._cubeUps[ viewportIndex ] );
|
|
105
|
-
camera.lookAt( _lookTarget );
|
|
106
|
-
camera.updateMatrixWorld();
|
|
107
|
-
|
|
108
|
-
shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );
|
|
109
|
-
|
|
110
|
-
_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
|
|
111
|
-
this._frustum.setFromProjectionMatrix( _projScreenMatrix, camera.coordinateSystem, camera.reversedDepth );
|
|
112
|
-
|
|
113
27
|
}
|
|
114
28
|
|
|
115
29
|
}
|
package/src/lights/SpotLight.js
CHANGED
|
@@ -147,6 +147,8 @@ class SpotLight extends Light {
|
|
|
147
147
|
|
|
148
148
|
dispose() {
|
|
149
149
|
|
|
150
|
+
super.dispose();
|
|
151
|
+
|
|
150
152
|
this.shadow.dispose();
|
|
151
153
|
|
|
152
154
|
}
|
|
@@ -161,13 +163,32 @@ class SpotLight extends Light {
|
|
|
161
163
|
this.decay = source.decay;
|
|
162
164
|
|
|
163
165
|
this.target = source.target.clone();
|
|
164
|
-
|
|
166
|
+
this.map = source.map;
|
|
165
167
|
this.shadow = source.shadow.clone();
|
|
166
168
|
|
|
167
169
|
return this;
|
|
168
170
|
|
|
169
171
|
}
|
|
170
172
|
|
|
173
|
+
toJSON( meta ) {
|
|
174
|
+
|
|
175
|
+
const data = super.toJSON( meta );
|
|
176
|
+
|
|
177
|
+
data.object.distance = this.distance;
|
|
178
|
+
data.object.angle = this.angle;
|
|
179
|
+
data.object.decay = this.decay;
|
|
180
|
+
data.object.penumbra = this.penumbra;
|
|
181
|
+
|
|
182
|
+
data.object.target = this.target.uuid;
|
|
183
|
+
|
|
184
|
+
if ( this.map && this.map.isTexture ) data.object.map = this.map.toJSON( meta ).uuid;
|
|
185
|
+
|
|
186
|
+
data.object.shadow = this.shadow.toJSON();
|
|
187
|
+
|
|
188
|
+
return data;
|
|
189
|
+
|
|
190
|
+
}
|
|
191
|
+
|
|
171
192
|
}
|
|
172
193
|
|
|
173
194
|
export { SpotLight };
|
|
@@ -22,7 +22,8 @@ class IESSpotLight extends SpotLight {
|
|
|
22
22
|
super( color, intensity, distance, angle, penumbra, decay );
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
25
|
+
* The IES map. It's a lookup table that stores normalized attenuation factors
|
|
26
|
+
* (0.0 to 1.0) that represent the light's intensity at a specific angle.
|
|
26
27
|
*
|
|
27
28
|
* @type {?Texture}
|
|
28
29
|
* @default null
|
|
@@ -60,11 +60,21 @@ class AudioLoader extends Loader {
|
|
|
60
60
|
const bufferCopy = buffer.slice( 0 );
|
|
61
61
|
|
|
62
62
|
const context = AudioContext.getContext();
|
|
63
|
+
|
|
64
|
+
const decodeUrl = url + '#decode';
|
|
65
|
+
scope.manager.itemStart( decodeUrl ); // prevent loading manager from completing too early, see #33378
|
|
66
|
+
|
|
63
67
|
context.decodeAudioData( bufferCopy, function ( audioBuffer ) {
|
|
64
68
|
|
|
65
69
|
onLoad( audioBuffer );
|
|
70
|
+
scope.manager.itemEnd( decodeUrl );
|
|
71
|
+
|
|
72
|
+
} ).catch( function ( e ) {
|
|
73
|
+
|
|
74
|
+
handleError( e );
|
|
75
|
+
scope.manager.itemEnd( decodeUrl );
|
|
66
76
|
|
|
67
|
-
} )
|
|
77
|
+
} );
|
|
68
78
|
|
|
69
79
|
} catch ( e ) {
|
|
70
80
|
|