@gnsx/three 0.185.16 → 0.186.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 +10 -82600
- package/build/three.core.js +1309 -807
- package/build/three.module.js +439 -338
- package/build/three.tsl.js +74 -44
- package/build/three.webgpu.js +6036 -2184
- package/build/three.webgpu.nodes.js +6020 -2184
- package/examples/jsm/Addons.js +6 -6
- package/examples/jsm/controls/ArcballControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +44 -20
- package/examples/jsm/controls/OrbitControls.js +9 -0
- package/examples/jsm/controls/TrackballControls.js +109 -4
- package/examples/jsm/csm/CSMShadowNode.js +13 -0
- package/examples/jsm/exporters/GLTFExporter.js +23 -7
- package/examples/jsm/exporters/USDZExporter.js +2 -2
- package/examples/jsm/generators/CityGenerator.js +377 -45
- package/examples/jsm/generators/ForestGenerator.js +12 -12
- package/examples/jsm/generators/TerrainGenerator.js +49 -37
- package/examples/jsm/generators/TreeGenerator.js +70 -76
- package/examples/jsm/generators/city/BenchGenerator.js +127 -0
- package/examples/jsm/generators/city/CarGenerator.js +479 -0
- package/examples/jsm/generators/city/CityGeneratorUtils.js +31 -0
- package/examples/jsm/generators/city/HydrantGenerator.js +106 -0
- package/examples/jsm/generators/city/InstancedMeshGenerator.js +86 -0
- package/examples/jsm/generators/city/PersonGenerator.js +447 -0
- package/examples/jsm/generators/city/SidewalkGenerator.js +33 -38
- package/examples/jsm/generators/city/SkyscraperGenerator.js +448 -48
- package/examples/jsm/generators/city/StreetTreeGenerator.js +231 -0
- package/examples/jsm/generators/city/StreetlightGenerator.js +100 -0
- package/examples/jsm/generators/city/TrafficlightGenerator.js +106 -0
- package/examples/jsm/generators/city/TrashcanGenerator.js +100 -0
- package/examples/jsm/geometries/BoxLineGeometry.js +1 -1
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/RoundedBoxGeometry.js +1 -1
- package/examples/jsm/gpgpu/CountingSort.js +271 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +60 -239
- package/examples/jsm/helpers/LightProbeGridHelperWebGL.js +221 -0
- package/examples/jsm/inspector/Extension.js +94 -0
- package/examples/jsm/inspector/Inspector.js +145 -41
- package/examples/jsm/inspector/RendererInspector.js +100 -52
- package/examples/jsm/inspector/extensions/color-grading/ColorGrading.js +2609 -0
- package/examples/jsm/inspector/extensions/color-grading/ColorWheel.js +352 -0
- package/examples/jsm/inspector/extensions/color-grading/CurveEditor.js +599 -0
- package/examples/jsm/inspector/extensions/color-grading/LUT3DStyle.js +1201 -0
- package/examples/jsm/inspector/extensions/color-grading/LUTMath.js +788 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/BrightnessModule.js +72 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/ColorWheelModule.js +112 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/ContrastModule.js +82 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/CurvesModule.js +109 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/ExposureHueModule.js +110 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/ExposureModule.js +73 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/HueModule.js +78 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/ImportedCubeModule.js +89 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/Module.js +285 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/OutputModule.js +101 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/RendererModule.js +225 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/SatVibranceModule.js +102 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/SaturationModule.js +76 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/VibranceModule.js +76 -0
- package/examples/jsm/inspector/extensions/color-grading/modules/WhiteBalanceModule.js +86 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +26 -31
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +1 -0
- package/examples/jsm/inspector/tabs/Memory.js +0 -2
- package/examples/jsm/inspector/tabs/Settings.js +4 -0
- package/examples/jsm/inspector/tabs/Timeline.js +223 -171
- package/examples/jsm/inspector/tabs/Viewer.js +515 -21
- package/examples/jsm/inspector/ui/List.js +15 -9
- package/examples/jsm/inspector/ui/Profiler.js +170 -14
- package/examples/jsm/inspector/ui/Style.js +269 -23
- package/examples/jsm/inspector/ui/Tab.js +2 -0
- package/examples/jsm/inspector/ui/Values.js +14 -2
- package/examples/jsm/interactive/HTMLMesh.js +19 -3
- package/examples/jsm/lighting/LightProbeGrid.js +484 -889
- package/examples/jsm/lighting/LightProbeGridUtils.js +107 -0
- package/examples/jsm/lighting/LightProbeGridWebGL.js +841 -0
- package/examples/jsm/lighting/vxgi/VXGIConeTracer.js +194 -0
- package/examples/jsm/lighting/vxgi/VXGINode.js +660 -0
- package/examples/jsm/lighting/vxgi/VXGISceneCollector.js +478 -0
- package/examples/jsm/lighting/vxgi/VXGIVolume.js +1430 -0
- package/examples/jsm/lights/SunLight.js +95 -0
- package/examples/jsm/lights/SunLightNode.js +56 -0
- package/examples/jsm/lights/SunLightShadow.js +319 -0
- package/examples/jsm/lights/SunShadowNode.js +312 -0
- package/examples/jsm/loaders/3DMLoader.js +150 -49
- package/examples/jsm/loaders/3MFLoader.js +202 -1
- package/examples/jsm/loaders/FBXLoader.js +81 -5
- package/examples/jsm/loaders/GLTFGaussianSplatLoaderExtension.js +330 -0
- package/examples/jsm/loaders/GLTFLoader.js +79 -14
- package/examples/jsm/loaders/GaussianSplatPLYLoader.js +386 -0
- package/examples/jsm/loaders/KSPLATLoader.js +463 -0
- package/examples/jsm/loaders/MaterialXLoader.js +111 -1010
- package/examples/jsm/loaders/PCDLoader.js +1 -1
- package/examples/jsm/loaders/SPLATLoader.js +139 -0
- package/examples/jsm/loaders/SPZLoader.js +561 -0
- package/examples/jsm/loaders/materialx/MaterialXArchive.js +108 -0
- package/examples/jsm/loaders/materialx/MaterialXDocument.js +878 -0
- package/examples/jsm/loaders/materialx/MaterialXHextile.js +183 -0
- package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.js +376 -0
- package/examples/jsm/loaders/materialx/MaterialXLog.js +75 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js +4 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeLibrary.js +1021 -0
- package/examples/jsm/loaders/materialx/MaterialXSurfaceMappings.js +661 -0
- package/examples/jsm/loaders/materialx/MaterialXUtils.js +57 -0
- package/examples/jsm/loaders/materialx/compile/MaterialXCompileRegistry.js +997 -0
- package/examples/jsm/loaders/materialx/parse/MaterialXParser.js +28 -0
- package/examples/jsm/loaders/usd/USDAParser.js +15 -2
- package/examples/jsm/loaders/usd/USDCParser.js +1 -4
- package/examples/jsm/loaders/usd/USDComposer.js +80 -42
- package/examples/jsm/materials/WoodNodeMaterial.js +6 -108
- package/examples/jsm/misc/RollerCoaster.js +2 -2
- package/examples/jsm/misc/SculptGL.LICENSE.txt +21 -0
- package/examples/jsm/misc/Sculptor.js +1679 -0
- package/examples/jsm/misc/SculptorMesh.js +1504 -0
- package/examples/jsm/misc/SculptorTools.js +1180 -0
- package/examples/jsm/misc/SculptorUtils.js +345 -0
- package/examples/jsm/misc/TubePainter.js +28 -16
- package/examples/jsm/misc/VolumeSlice.js +24 -24
- package/examples/jsm/modifiers/SimplifyModifier.js +63 -556
- package/examples/jsm/objects/GaussianSplat.js +1039 -0
- package/examples/jsm/objects/Sky.js +66 -45
- package/examples/jsm/objects/SkyMesh.js +70 -51
- package/examples/jsm/physics/JoltPhysics.js +1 -1
- package/examples/jsm/postprocessing/AfterimagePass.js +4 -2
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/GTAOPass.js +1 -1
- package/examples/jsm/postprocessing/OutlinePass.js +5 -5
- package/examples/jsm/postprocessing/SAOPass.js +1 -1
- package/examples/jsm/postprocessing/SSAOPass.js +1 -1
- package/examples/jsm/postprocessing/SSRPass.js +4 -2
- package/examples/jsm/postprocessing/SavePass.js +1 -1
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +30 -13
- package/examples/jsm/renderers/CSS2DRenderer.js +29 -5
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
- package/examples/jsm/shaders/ExposureShader.js +1 -1
- package/examples/jsm/shaders/FilmShader.js +2 -1
- package/examples/jsm/transpiler/AST.js +21 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +498 -8
- package/examples/jsm/transpiler/TSLEncoder.js +82 -10
- package/examples/jsm/transpiler/WGSLEncoder.js +33 -4
- package/examples/jsm/tsl/WebGLNodesHandler.js +29 -39
- package/examples/jsm/tsl/display/AfterImageNode.js +2 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +3 -2
- package/examples/jsm/tsl/display/BilateralBlurNode.js +5 -2
- package/examples/jsm/tsl/display/BloomNode.js +55 -30
- package/examples/jsm/tsl/display/DenoiseNode.js +21 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +24 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +11 -11
- package/examples/jsm/tsl/display/FSR1Node.js +8 -4
- package/examples/jsm/tsl/display/GTAONode.js +199 -86
- package/examples/jsm/tsl/display/GaussianBlurNode.js +65 -52
- package/examples/jsm/tsl/display/GodraysNode.js +5 -2
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +2 -2
- package/examples/jsm/tsl/display/LensflareNode.js +5 -2
- package/examples/jsm/tsl/display/OITPassNode.js +352 -0
- package/examples/jsm/tsl/display/OutlineNode.js +2 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +3 -2
- package/examples/jsm/tsl/display/RGBShiftNode.js +9 -9
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +7 -4
- package/examples/jsm/tsl/display/RetroPassNode.js +1 -1
- package/examples/jsm/tsl/display/SMAANode.js +22 -61
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -4
- package/examples/jsm/tsl/display/SSAONode.js +436 -0
- package/examples/jsm/tsl/display/SSGINode.js +5 -2
- package/examples/jsm/tsl/display/SSRNode.js +7 -2
- package/examples/jsm/tsl/display/SSSNode.js +5 -2
- package/examples/jsm/tsl/display/SharpenNode.js +5 -4
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -3
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -3
- package/examples/jsm/tsl/display/TAAUNode.js +22 -125
- package/examples/jsm/tsl/display/TRAANode.js +16 -142
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +21 -15
- package/examples/jsm/tsl/display/depthAwareBlur.js +63 -0
- package/examples/jsm/tsl/display/hashBlur.js +3 -2
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +38 -27
- package/examples/jsm/tsl/lighting/LightProbeGridNode.js +136 -0
- package/examples/jsm/tsl/math/voronoiNoise.js +112 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +4 -6
- package/examples/jsm/tsl/utils/Raymarching.js +5 -5
- package/examples/jsm/tsl/utils/SoftParticles.js +60 -0
- package/examples/jsm/tsl/utils/TAAUtils.js +195 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +14 -14
- package/examples/jsm/utils/GaussianSplatUtils.js +229 -0
- package/examples/jsm/utils/WebGLTextureUtils.js +1 -1
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/WebGLXRFallback.js +2 -16
- package/examples/jsm/webxr/XRControllerModelFactory.js +16 -4
- package/package.json +9 -16
- package/src/Three.Core.js +2 -1
- package/src/Three.TSL.js +73 -43
- package/src/Three.WebGPU.Nodes.js +1 -0
- package/src/Three.WebGPU.js +1 -0
- package/src/animation/AnimationClip.js +15 -2
- package/src/animation/AnimationObjectGroup.js +18 -6
- package/src/animation/AnimationUtils.js +26 -0
- package/src/animation/KeyframeTrack.js +37 -0
- package/src/constants.js +23 -1
- package/src/core/BufferAttribute.js +3 -2
- package/src/core/BufferGeometry.js +1 -1
- package/src/core/InterleavedBuffer.js +5 -1
- package/src/core/Object3D.js +40 -12
- package/src/core/Raycaster.js +4 -0
- package/src/core/RenderTarget.js +99 -9
- package/src/core/RenderTarget3D.js +12 -8
- package/src/extras/Controls.js +0 -8
- package/src/extras/PMREMGenerator.js +99 -205
- package/src/geometries/TorusGeometry.js +1 -1
- package/src/helpers/ArrowHelper.js +2 -0
- package/src/helpers/AxesHelper.js +2 -0
- package/src/helpers/Box3Helper.js +2 -0
- package/src/helpers/BoxHelper.js +2 -0
- package/src/helpers/CameraHelper.js +2 -0
- package/src/helpers/DirectionalLightHelper.js +2 -0
- package/src/helpers/GridHelper.js +2 -0
- package/src/helpers/HemisphereLightHelper.js +2 -0
- package/src/helpers/PlaneHelper.js +2 -0
- package/src/helpers/PointLightHelper.js +2 -0
- package/src/helpers/PolarGridHelper.js +2 -0
- package/src/helpers/SkeletonHelper.js +2 -0
- package/src/helpers/SpotLightHelper.js +2 -0
- package/src/lights/Light.js +0 -10
- package/src/lights/LightShadow.js +43 -12
- package/src/lights/SpotLightShadow.js +18 -0
- package/src/loaders/BufferGeometryLoader.js +5 -0
- package/src/loaders/ImageBitmapLoader.js +3 -1
- package/src/loaders/ObjectLoader.js +8 -5
- package/src/materials/Material.js +80 -57
- package/src/materials/MeshPhysicalMaterial.js +32 -0
- package/src/materials/nodes/Line2NodeMaterial.js +17 -8
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +42 -5
- package/src/materials/nodes/NodeMaterial.js +19 -13
- package/src/materials/nodes/PointsNodeMaterial.js +2 -1
- package/src/materials/nodes/manager/NodeMaterialObserver.js +282 -55
- package/src/math/Frustum.js +9 -0
- package/src/math/FrustumArray.js +1 -1
- package/src/math/MathUtils.js +5 -3
- package/src/math/Matrix4.js +2 -9
- package/src/math/Plane.js +30 -1
- package/src/math/Quaternion.js +0 -10
- package/src/math/Ray.js +95 -45
- package/src/math/Triangle.js +0 -2
- package/src/math/Vector3.js +2 -2
- package/src/math/Vector4.js +0 -4
- package/src/math/interpolants/BezierInterpolant.js +36 -23
- package/src/nodes/Nodes.js +2 -0
- package/src/nodes/TSL.js +11 -3
- package/src/nodes/accessors/Batch.js +85 -13
- package/src/nodes/accessors/BufferAttributeNode.js +1 -1
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/Instance.js +19 -18
- package/src/nodes/accessors/MaterialNode.js +9 -0
- package/src/nodes/accessors/ModelNode.js +85 -9
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -70
- package/src/nodes/accessors/ReferenceElementNode.js +72 -0
- package/src/nodes/accessors/ReferenceNode.js +1 -70
- package/src/nodes/accessors/Skinning.js +124 -12
- package/src/nodes/accessors/StorageTextureNode.js +7 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +51 -21
- package/src/nodes/accessors/TextureSizeNode.js +4 -2
- package/src/nodes/accessors/UniformArrayNode.js +30 -5
- package/src/nodes/code/CodeNode.js +1 -1
- package/src/nodes/code/FunctionNode.js +12 -2
- package/src/nodes/core/ArrayNode.js +2 -2
- package/src/nodes/core/ContextNode.js +57 -4
- package/src/nodes/core/IndexNode.js +69 -4
- package/src/nodes/core/InspectorNode.js +2 -2
- package/src/nodes/core/MRTNode.js +44 -2
- package/src/nodes/core/Node.js +6 -3
- package/src/nodes/core/NodeBuilder.js +65 -50
- package/src/nodes/core/NodeFrame.js +11 -3
- package/src/nodes/core/NodeUtils.js +88 -0
- package/src/nodes/core/PropertyNode.js +8 -0
- package/src/nodes/core/StackNode.js +0 -1
- package/src/nodes/core/StructNode.js +4 -3
- package/src/nodes/core/UniformGroupNode.js +3 -2
- package/src/nodes/core/UniformNode.js +26 -12
- package/src/nodes/core/VarNode.js +0 -1
- package/src/nodes/display/BumpMapNode.js +2 -2
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/PassNode.js +76 -15
- package/src/nodes/display/ScreenNode.js +22 -65
- package/src/nodes/fog/Fog.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_GGX.js +6 -6
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +1 -1
- package/src/nodes/functions/BSDF/DFGLUT.js +2 -1
- package/src/nodes/functions/BSDF/LTC.js +1 -1
- package/src/nodes/functions/PhongLightingModel.js +1 -1
- package/src/nodes/functions/PhysicalLightingModel.js +83 -25
- package/src/nodes/functions/ToonLightingModel.js +2 -2
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +3 -3
- package/src/nodes/gpgpu/AtomicFunctionNode.js +64 -13
- package/src/nodes/gpgpu/BarrierNode.js +13 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +20 -17
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +165 -37
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +44 -6
- package/src/nodes/lighting/EnvironmentNode.js +40 -4
- package/src/nodes/lighting/LightsNode.js +20 -4
- package/src/nodes/lighting/ShadowBaseNode.js +158 -1
- package/src/nodes/lighting/ShadowFilterNode.js +2 -106
- package/src/nodes/lighting/ShadowNode.js +22 -91
- package/src/nodes/materialx/{lib/mx_hsv.js → MaterialXColor.js} +3 -6
- package/src/nodes/materialx/{lib/mx_transform_color.js → MaterialXColorTransform.js} +3 -6
- package/src/nodes/materialx/MaterialXCore.js +37 -0
- package/src/nodes/materialx/MaterialXNodes.js +64 -72
- package/src/nodes/materialx/{lib/mx_noise.js → MaterialXNoise.js} +426 -197
- package/src/nodes/math/BitcountNode.js +24 -4
- package/src/nodes/math/MathNode.js +4 -4
- package/src/nodes/math/MathUtils.js +15 -4
- package/src/nodes/math/OperatorNode.js +2 -2
- package/src/nodes/math/PackFloatNode.js +29 -1
- package/src/nodes/math/Packed4x8IntegerNode.js +433 -0
- package/src/nodes/math/UnpackFloatNode.js +30 -2
- package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +1 -1
- package/src/nodes/pmrem/PMREMUtils.js +31 -74
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLCore.js +1 -31
- package/src/nodes/utils/EventNode.js +75 -0
- package/src/nodes/utils/LoopNode.js +54 -13
- package/src/nodes/utils/PostProcessingUtils.js +23 -2
- package/src/nodes/utils/RTTNode.js +97 -32
- package/src/nodes/utils/ReflectorNode.js +8 -4
- package/src/nodes/utils/RotateNode.js +85 -8
- package/src/nodes/utils/SpriteUtils.js +58 -23
- package/src/objects/BatchedMesh.js +6 -0
- package/src/objects/InstancedMesh.js +1 -1
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +12 -0
- package/src/objects/Mesh.js +12 -0
- package/src/objects/Points.js +12 -0
- package/src/objects/Sprite.js +12 -0
- package/src/renderers/WebGLRenderer.js +93 -27
- package/src/renderers/common/Animation.js +12 -2
- package/src/renderers/common/Backend.js +38 -10
- package/src/renderers/common/BindGroup.js +0 -1
- package/src/renderers/common/Bindings.js +50 -4
- package/src/renderers/common/BundleGroup.js +4 -0
- package/src/renderers/common/ClippingContext.js +11 -1
- package/src/renderers/common/Color4.js +9 -0
- package/src/renderers/common/Constants.js +0 -5
- package/src/renderers/common/DirectRenderPipeline.js +233 -0
- package/src/renderers/common/Geometries.js +24 -3
- package/src/renderers/common/Info.js +3 -3
- package/src/renderers/common/InspectorBase.js +37 -8
- package/src/renderers/common/Lighting.js +11 -4
- package/src/renderers/common/Pipelines.js +6 -4
- package/src/renderers/common/QuadMesh.js +16 -2
- package/src/renderers/common/RenderContext.js +8 -0
- package/src/renderers/common/RenderList.js +53 -19
- package/src/renderers/common/RenderLists.js +58 -11
- package/src/renderers/common/RenderObject.js +14 -0
- package/src/renderers/common/RenderObjects.js +14 -9
- package/src/renderers/common/RenderPipeline.js +52 -44
- package/src/renderers/common/Renderer.js +226 -55
- package/src/renderers/common/Storage3DTexture.js +16 -0
- package/src/renderers/common/Textures.js +3 -3
- package/src/renderers/common/XRManager.js +79 -72
- package/src/renderers/common/extras/PMREMGenerator.js +76 -144
- package/src/renderers/common/nodes/NodeManager.js +144 -6
- package/src/renderers/common/nodes/NodeStorageBuffer.js +3 -1
- package/src/renderers/common/nodes/NodeUniformBuffer.js +3 -1
- package/src/renderers/shaders/DFGLUTData.js +2 -1
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +4 -2
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +48 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +53 -4
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +20 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +61 -57
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +9 -0
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +15 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -0
- package/src/renderers/shaders/ShaderLib.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +16 -0
- package/src/renderers/webgl/WebGLAnimation.js +2 -2
- package/src/renderers/webgl/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl/WebGLLights.js +74 -4
- package/src/renderers/webgl/WebGLMaterials.js +6 -0
- package/src/renderers/webgl/WebGLOutput.js +36 -24
- package/src/renderers/webgl/WebGLProgram.js +3 -0
- package/src/renderers/webgl/WebGLPrograms.js +8 -0
- package/src/renderers/webgl/WebGLRenderLists.js +6 -10
- package/src/renderers/webgl/WebGLShadowMap.js +47 -44
- package/src/renderers/webgl/WebGLTextures.js +7 -7
- package/src/renderers/webgl-fallback/WebGLBackend.js +153 -45
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +83 -29
- package/src/renderers/webgl-fallback/utils/WebGLState.js +163 -17
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +32 -5
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +11 -4
- package/src/renderers/webgpu/WebGPUBackend.js +513 -145
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +99 -20
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +2 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +3 -12
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +24 -14
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +80 -14
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +62 -7
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +9 -3
- package/src/renderers/webgpu/utils/WebGPUUtils.js +16 -4
- package/src/renderers/webxr/WebXRManager.js +25 -2
- package/src/scenes/Scene.js +3 -3
- package/src/textures/CompressedArrayTexture.js +16 -0
- package/src/textures/Data3DTexture.js +16 -0
- package/src/textures/DataArrayTexture.js +16 -0
- package/src/textures/DepthTexture.js +3 -3
- package/src/textures/Texture.js +3 -3
- package/src/textures/{Source.js → TextureSource.js} +39 -8
- package/src/utils.js +6 -79
- package/build/three.core.min.js +0 -6
- package/build/three.module.min.js +0 -6
- package/build/three.tsl.min.js +0 -6
- package/build/three.webgpu.min.js +0 -6
- package/build/three.webgpu.nodes.min.js +0 -6
- package/examples/jsm/libs/ecsy.module.js +0 -1792
- package/examples/jsm/loaders/LottieLoader.js +0 -130
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +0 -52
package/examples/jsm/Addons.js
CHANGED
|
@@ -92,11 +92,13 @@ export * from './loaders/EXRLoader.js';
|
|
|
92
92
|
export * from './loaders/FBXLoader.js';
|
|
93
93
|
export * from './loaders/FontLoader.js';
|
|
94
94
|
export * from './loaders/GCodeLoader.js';
|
|
95
|
+
export * from './loaders/GLTFGaussianSplatLoaderExtension.js';
|
|
95
96
|
export * from './loaders/GLTFLoader.js';
|
|
96
97
|
export * from './loaders/HDRLoader.js';
|
|
97
98
|
export * from './loaders/HDRCubeTextureLoader.js';
|
|
98
99
|
export * from './loaders/IESLoader.js';
|
|
99
100
|
export * from './loaders/KMZLoader.js';
|
|
101
|
+
export * from './loaders/KSPLATLoader.js';
|
|
100
102
|
export * from './loaders/KTX2Loader.js';
|
|
101
103
|
export * from './loaders/KTXLoader.js';
|
|
102
104
|
export * from './loaders/LDrawLoader.js';
|
|
@@ -104,12 +106,6 @@ export * from './loaders/LUT3dlLoader.js';
|
|
|
104
106
|
export * from './loaders/LUTCubeLoader.js';
|
|
105
107
|
export * from './loaders/LUTImageLoader.js';
|
|
106
108
|
export * from './loaders/LWOLoader.js';
|
|
107
|
-
// WITH_GENESYS
|
|
108
|
-
// LottieLoader is excluded from the Addons barrel because it imports lottie-web from a CDN URL
|
|
109
|
-
// (https://cdn.jsdelivr.net/npm/lottie-web@5.13.0/+esm), which Node.js/TSX cannot resolve in test
|
|
110
|
-
// environments. The loader is also deprecated in r185 and scheduled for removal in r186.
|
|
111
|
-
// export * from './loaders/LottieLoader.js';
|
|
112
|
-
// !WITH_GENESYS
|
|
113
109
|
export * from './loaders/MD2Loader.js';
|
|
114
110
|
export * from './loaders/MDDLoader.js';
|
|
115
111
|
export * from './loaders/MTLLoader.js';
|
|
@@ -120,6 +116,8 @@ export * from './loaders/PDBLoader.js';
|
|
|
120
116
|
export * from './loaders/PLYLoader.js';
|
|
121
117
|
export * from './loaders/PVRLoader.js';
|
|
122
118
|
export * from './loaders/RGBELoader.js';
|
|
119
|
+
export * from './loaders/SPLATLoader.js';
|
|
120
|
+
export * from './loaders/SPZLoader.js';
|
|
123
121
|
export * from './loaders/UltraHDRLoader.js';
|
|
124
122
|
export * from './loaders/STLLoader.js';
|
|
125
123
|
export * from './loaders/SVGLoader.js';
|
|
@@ -155,6 +153,7 @@ export * from './misc/MorphAnimMesh.js';
|
|
|
155
153
|
export * from './misc/MorphBlendMesh.js';
|
|
156
154
|
export * from './misc/ProgressiveLightMap.js';
|
|
157
155
|
export * from './misc/RollerCoaster.js';
|
|
156
|
+
export * from './misc/Sculptor.js';
|
|
158
157
|
export * from './misc/TileCreasedNormalsPlugin.js';
|
|
159
158
|
export * from './misc/TubePainter.js';
|
|
160
159
|
export * from './misc/Volume.js';
|
|
@@ -166,6 +165,7 @@ export * from './modifiers/SimplifyModifier.js';
|
|
|
166
165
|
export * from './modifiers/TessellateModifier.js';
|
|
167
166
|
|
|
168
167
|
export * from './objects/GroundedSkybox.js';
|
|
168
|
+
export * from './objects/GaussianSplat.js';
|
|
169
169
|
export * from './objects/Lensflare.js';
|
|
170
170
|
export * from './objects/MarchingCubes.js';
|
|
171
171
|
export * from './objects/Reflector.js';
|
|
@@ -2563,7 +2563,7 @@ class ArcballControls extends Controls {
|
|
|
2563
2563
|
* Rotates camera around its direction axis passing by a given point by a given angle.
|
|
2564
2564
|
*
|
|
2565
2565
|
* @private
|
|
2566
|
-
* @param {Vector3} point - The point where the rotation axis is passing
|
|
2566
|
+
* @param {Vector3} point - The point where the rotation axis is passing through.
|
|
2567
2567
|
* @param {number} angle - Angle in radians.
|
|
2568
2568
|
* @returns {Object} The computed transformation matrix.
|
|
2569
2569
|
*/
|
|
@@ -262,25 +262,51 @@ class FirstPersonControls extends Controls {
|
|
|
262
262
|
|
|
263
263
|
if ( this.enabled === false ) return;
|
|
264
264
|
|
|
265
|
-
|
|
266
|
-
|
|
265
|
+
let drive = ( this._keyForward ? 1 : 0 ) - ( this._keyBackward ? 1 : 0 );
|
|
266
|
+
let lookMove = ( this._pointerForward ? 1 : 0 ) - ( this._pointerBackward ? 1 : 0 );
|
|
267
267
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
// target velocity in the object's local space
|
|
271
|
-
|
|
272
|
-
_targetVelocity.set(
|
|
273
|
-
( this._moveRight ? 1 : 0 ) - ( this._moveLeft ? 1 : 0 ),
|
|
274
|
-
( this._moveUp ? 1 : 0 ) - ( this._moveDown ? 1 : 0 ),
|
|
275
|
-
( moveBackward ? 1 : 0 ) - ( forward ? 1 : 0 )
|
|
276
|
-
).multiplyScalar( this.movementSpeed );
|
|
268
|
+
if ( this.autoForward && drive === 0 && lookMove === 0 ) lookMove = 1;
|
|
277
269
|
|
|
278
270
|
// faster forward movement the higher the camera is
|
|
279
271
|
|
|
280
|
-
|
|
272
|
+
let forwardSpeed = this.movementSpeed;
|
|
273
|
+
|
|
274
|
+
if ( this.heightSpeed ) {
|
|
281
275
|
|
|
282
276
|
const y = MathUtils.clamp( this.object.position.y, this.heightMin, this.heightMax );
|
|
283
|
-
|
|
277
|
+
forwardSpeed += ( y - this.heightMin ) * this.heightCoef;
|
|
278
|
+
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// target velocity in world space: keys are world axis aligned, moving in the
|
|
282
|
+
// XZ plane from the camera's yaw only (R / F along world Y), while pointer
|
|
283
|
+
// and touch input moves along the look direction
|
|
284
|
+
|
|
285
|
+
const yaw = MathUtils.degToRad( this._lon );
|
|
286
|
+
const sinYaw = Math.sin( yaw );
|
|
287
|
+
const cosYaw = Math.cos( yaw );
|
|
288
|
+
|
|
289
|
+
let strafe = ( this._moveRight ? 1 : 0 ) - ( this._moveLeft ? 1 : 0 );
|
|
290
|
+
let climb = ( this._moveUp ? 1 : 0 ) - ( this._moveDown ? 1 : 0 );
|
|
291
|
+
|
|
292
|
+
// normalize combined key input so diagonal movement isn't faster
|
|
293
|
+
|
|
294
|
+
const keyScale = 1 / Math.max( 1, Math.sqrt( strafe * strafe + climb * climb + drive * drive ) );
|
|
295
|
+
|
|
296
|
+
strafe *= this.movementSpeed * keyScale;
|
|
297
|
+
climb *= this.movementSpeed * keyScale;
|
|
298
|
+
drive *= ( drive > 0 ? forwardSpeed : this.movementSpeed ) * keyScale;
|
|
299
|
+
|
|
300
|
+
_targetVelocity.set(
|
|
301
|
+
sinYaw * drive - cosYaw * strafe,
|
|
302
|
+
climb,
|
|
303
|
+
cosYaw * drive + sinYaw * strafe
|
|
304
|
+
);
|
|
305
|
+
|
|
306
|
+
if ( lookMove !== 0 ) {
|
|
307
|
+
|
|
308
|
+
_lookDirection.set( 0, 0, - 1 ).applyQuaternion( this.object.quaternion );
|
|
309
|
+
_targetVelocity.addScaledVector( _lookDirection, lookMove * ( lookMove > 0 ? forwardSpeed : this.movementSpeed ) );
|
|
284
310
|
|
|
285
311
|
}
|
|
286
312
|
|
|
@@ -288,9 +314,7 @@ class FirstPersonControls extends Controls {
|
|
|
288
314
|
|
|
289
315
|
this._velocity.lerp( _targetVelocity, this.dampingFactor );
|
|
290
316
|
|
|
291
|
-
this.object.
|
|
292
|
-
this.object.translateY( this._velocity.y * delta );
|
|
293
|
-
this.object.translateZ( this._velocity.z * delta );
|
|
317
|
+
this.object.position.addScaledVector( this._velocity, delta );
|
|
294
318
|
|
|
295
319
|
let verticalLookRatio = 1;
|
|
296
320
|
|
|
@@ -447,8 +471,8 @@ function onKeyDown( event ) {
|
|
|
447
471
|
case 'ArrowRight':
|
|
448
472
|
case 'KeyD': this._moveRight = true; break;
|
|
449
473
|
|
|
450
|
-
case '
|
|
451
|
-
case '
|
|
474
|
+
case 'KeyR': this._moveUp = true; break;
|
|
475
|
+
case 'KeyF': this._moveDown = true; break;
|
|
452
476
|
|
|
453
477
|
}
|
|
454
478
|
|
|
@@ -470,8 +494,8 @@ function onKeyUp( event ) {
|
|
|
470
494
|
case 'ArrowRight':
|
|
471
495
|
case 'KeyD': this._moveRight = false; break;
|
|
472
496
|
|
|
473
|
-
case '
|
|
474
|
-
case '
|
|
497
|
+
case 'KeyR': this._moveUp = false; break;
|
|
498
|
+
case 'KeyF': this._moveDown = false; break;
|
|
475
499
|
|
|
476
500
|
}
|
|
477
501
|
|
|
@@ -511,6 +511,8 @@ class OrbitControls extends Controls {
|
|
|
511
511
|
|
|
512
512
|
disconnect() {
|
|
513
513
|
|
|
514
|
+
this.state = _STATE.NONE;
|
|
515
|
+
|
|
514
516
|
this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
|
|
515
517
|
this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
|
|
516
518
|
this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
|
|
@@ -523,8 +525,15 @@ class OrbitControls extends Controls {
|
|
|
523
525
|
|
|
524
526
|
const document = this.domElement.getRootNode(); // offscreen canvas compatibility
|
|
525
527
|
document.removeEventListener( 'keydown', this._interceptControlDown, { capture: true } );
|
|
528
|
+
document.removeEventListener( 'keyup', this._interceptControlUp, { capture: true } );
|
|
529
|
+
|
|
530
|
+
this._controlActive = false;
|
|
531
|
+
|
|
532
|
+
this._pointers.length = 0;
|
|
533
|
+
this._pointerPositions = {};
|
|
526
534
|
|
|
527
535
|
this.domElement.style.touchAction = ''; // Restore touch scroll
|
|
536
|
+
this.domElement.style.cursor = 'auto';
|
|
528
537
|
|
|
529
538
|
}
|
|
530
539
|
|
|
@@ -97,6 +97,14 @@ class TrackballControls extends Controls {
|
|
|
97
97
|
*/
|
|
98
98
|
this.panSpeed = 0.3;
|
|
99
99
|
|
|
100
|
+
/**
|
|
101
|
+
* The roll speed used for multi-touch roll.
|
|
102
|
+
*
|
|
103
|
+
* @type {number}
|
|
104
|
+
* @default 1
|
|
105
|
+
*/
|
|
106
|
+
this.rollSpeed = 1.0;
|
|
107
|
+
|
|
100
108
|
/**
|
|
101
109
|
* Whether rotation is disabled or not.
|
|
102
110
|
*
|
|
@@ -121,6 +129,15 @@ class TrackballControls extends Controls {
|
|
|
121
129
|
*/
|
|
122
130
|
this.noPan = false;
|
|
123
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Whether two finger twist gesture rolls
|
|
134
|
+
* the camera around its view axis or not.
|
|
135
|
+
*
|
|
136
|
+
* @type {boolean}
|
|
137
|
+
* @default false
|
|
138
|
+
*/
|
|
139
|
+
this.multiTouchRoll = false;
|
|
140
|
+
|
|
124
141
|
/**
|
|
125
142
|
* Whether damping is disabled or not.
|
|
126
143
|
*
|
|
@@ -209,10 +226,14 @@ class TrackballControls extends Controls {
|
|
|
209
226
|
this.keyState = _STATE.NONE;
|
|
210
227
|
|
|
211
228
|
this._lastPosition = new Vector3();
|
|
229
|
+
this._lastUp = new Vector3();
|
|
212
230
|
this._lastZoom = 1;
|
|
213
231
|
this._touchZoomDistanceStart = 0;
|
|
214
232
|
this._touchZoomDistanceEnd = 0;
|
|
233
|
+
this._touchRollAngle = 0;
|
|
234
|
+
this._touchRollPointerIds = '';
|
|
215
235
|
this._lastAngle = 0;
|
|
236
|
+
this._lastRollAngle = 0;
|
|
216
237
|
|
|
217
238
|
this._eye = new Vector3();
|
|
218
239
|
|
|
@@ -331,6 +352,12 @@ class TrackballControls extends Controls {
|
|
|
331
352
|
|
|
332
353
|
this._rotateCamera();
|
|
333
354
|
|
|
355
|
+
if ( this.multiTouchRoll === true ) {
|
|
356
|
+
|
|
357
|
+
this._rollCamera();
|
|
358
|
+
|
|
359
|
+
}
|
|
360
|
+
|
|
334
361
|
}
|
|
335
362
|
|
|
336
363
|
if ( ! this.noZoom ) {
|
|
@@ -353,11 +380,15 @@ class TrackballControls extends Controls {
|
|
|
353
380
|
|
|
354
381
|
this.object.lookAt( this.target );
|
|
355
382
|
|
|
356
|
-
|
|
383
|
+
const positionChanged = this._lastPosition.distanceToSquared( this.object.position ) > _EPS;
|
|
384
|
+
const rollChanged = this._lastUp.distanceToSquared( this.object.up ) > _EPS;
|
|
385
|
+
|
|
386
|
+
if ( positionChanged || rollChanged ) {
|
|
357
387
|
|
|
358
388
|
this.dispatchEvent( _changeEvent );
|
|
359
389
|
|
|
360
390
|
this._lastPosition.copy( this.object.position );
|
|
391
|
+
this._lastUp.copy( this.object.up );
|
|
361
392
|
|
|
362
393
|
}
|
|
363
394
|
|
|
@@ -365,11 +396,16 @@ class TrackballControls extends Controls {
|
|
|
365
396
|
|
|
366
397
|
this.object.lookAt( this.target );
|
|
367
398
|
|
|
368
|
-
|
|
399
|
+
const positionChanged = this._lastPosition.distanceToSquared( this.object.position ) > _EPS;
|
|
400
|
+
const rollChanged = this._lastUp.distanceToSquared( this.object.up ) > _EPS;
|
|
401
|
+
const zoomChanged = this._lastZoom !== this.object.zoom;
|
|
402
|
+
|
|
403
|
+
if ( positionChanged || rollChanged || zoomChanged ) {
|
|
369
404
|
|
|
370
405
|
this.dispatchEvent( _changeEvent );
|
|
371
406
|
|
|
372
407
|
this._lastPosition.copy( this.object.position );
|
|
408
|
+
this._lastUp.copy( this.object.up );
|
|
373
409
|
this._lastZoom = this.object.zoom;
|
|
374
410
|
|
|
375
411
|
}
|
|
@@ -404,6 +440,7 @@ class TrackballControls extends Controls {
|
|
|
404
440
|
this.dispatchEvent( _changeEvent );
|
|
405
441
|
|
|
406
442
|
this._lastPosition.copy( this.object.position );
|
|
443
|
+
this._lastUp.copy( this.object.up );
|
|
407
444
|
this._lastZoom = this.object.zoom;
|
|
408
445
|
|
|
409
446
|
}
|
|
@@ -489,6 +526,76 @@ class TrackballControls extends Controls {
|
|
|
489
526
|
|
|
490
527
|
}
|
|
491
528
|
|
|
529
|
+
_rollCamera() {
|
|
530
|
+
|
|
531
|
+
const angle = this._getTouchRollAngle();
|
|
532
|
+
|
|
533
|
+
if ( angle ) {
|
|
534
|
+
|
|
535
|
+
this._lastRollAngle = angle * this.rollSpeed;
|
|
536
|
+
|
|
537
|
+
} else if ( ! this.staticMoving && this._lastRollAngle ) {
|
|
538
|
+
|
|
539
|
+
this._lastRollAngle *= Math.sqrt( 1.0 - this.dynamicDampingFactor );
|
|
540
|
+
|
|
541
|
+
} else {
|
|
542
|
+
|
|
543
|
+
return;
|
|
544
|
+
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
_eyeDirection.copy( this._eye ).normalize();
|
|
548
|
+
_quaternion.setFromAxisAngle( _eyeDirection, this._lastRollAngle );
|
|
549
|
+
|
|
550
|
+
this.object.up.applyQuaternion( _quaternion );
|
|
551
|
+
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
_getTouchRollAngle() {
|
|
555
|
+
|
|
556
|
+
const first = this._pointers[ 0 ];
|
|
557
|
+
const second = this._pointers[ 1 ];
|
|
558
|
+
|
|
559
|
+
if ( second === undefined || first.pointerType !== 'touch' || second.pointerType !== 'touch' ) {
|
|
560
|
+
|
|
561
|
+
this._touchRollPointerIds = '';
|
|
562
|
+
return 0;
|
|
563
|
+
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
const pointerIds = `${ first.pointerId },${ second.pointerId }`;
|
|
567
|
+
|
|
568
|
+
const positionFirst = this._pointerPositions[ first.pointerId ];
|
|
569
|
+
const positionSecond = this._pointerPositions[ second.pointerId ];
|
|
570
|
+
|
|
571
|
+
const rollAngle = Math.atan2( positionSecond.y - positionFirst.y, positionSecond.x - positionFirst.x );
|
|
572
|
+
|
|
573
|
+
// fingers changed or new gesture started
|
|
574
|
+
if ( pointerIds !== this._touchRollPointerIds ) {
|
|
575
|
+
|
|
576
|
+
this._touchRollPointerIds = pointerIds;
|
|
577
|
+
this._touchRollAngle = rollAngle;
|
|
578
|
+
return 0;
|
|
579
|
+
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
let angle = rollAngle - this._touchRollAngle;
|
|
583
|
+
this._touchRollAngle = rollAngle;
|
|
584
|
+
|
|
585
|
+
if ( angle > Math.PI ) {
|
|
586
|
+
|
|
587
|
+
angle -= 2 * Math.PI;
|
|
588
|
+
|
|
589
|
+
} else if ( angle < - Math.PI ) {
|
|
590
|
+
|
|
591
|
+
angle += 2 * Math.PI;
|
|
592
|
+
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
return angle;
|
|
596
|
+
|
|
597
|
+
}
|
|
598
|
+
|
|
492
599
|
_zoomCamera() {
|
|
493
600
|
|
|
494
601
|
let factor;
|
|
@@ -839,7 +946,6 @@ function onMouseMove( event ) {
|
|
|
839
946
|
|
|
840
947
|
if ( state === _STATE.ROTATE && ! this.noRotate ) {
|
|
841
948
|
|
|
842
|
-
this._movePrev.copy( this._moveCurr );
|
|
843
949
|
this._moveCurr.copy( this._getMouseOnCircle( event.pageX, event.pageY ) );
|
|
844
950
|
|
|
845
951
|
} else if ( state === _STATE.ZOOM && ! this.noZoom ) {
|
|
@@ -939,7 +1045,6 @@ function onTouchMove( event ) {
|
|
|
939
1045
|
switch ( this._pointers.length ) {
|
|
940
1046
|
|
|
941
1047
|
case 1:
|
|
942
|
-
this._movePrev.copy( this._moveCurr );
|
|
943
1048
|
this._moveCurr.copy( this._getMouseOnCircle( event.pageX, event.pageY ) );
|
|
944
1049
|
break;
|
|
945
1050
|
|
|
@@ -491,6 +491,16 @@ class CSMShadowNode extends ShadowBaseNode {
|
|
|
491
491
|
|
|
492
492
|
}
|
|
493
493
|
|
|
494
|
+
build( builder ) {
|
|
495
|
+
|
|
496
|
+
// register before the shadow nodes so `updateBefore()` runs first
|
|
497
|
+
|
|
498
|
+
builder.addSequentialNode( this );
|
|
499
|
+
|
|
500
|
+
return super.build( builder );
|
|
501
|
+
|
|
502
|
+
}
|
|
503
|
+
|
|
494
504
|
setup( builder ) {
|
|
495
505
|
|
|
496
506
|
if ( this.camera === null ) this._init( builder );
|
|
@@ -562,6 +572,9 @@ class CSMShadowNode extends ShadowBaseNode {
|
|
|
562
572
|
lwLight.target.position.copy( _center );
|
|
563
573
|
lwLight.target.position.add( _lightDirection );
|
|
564
574
|
|
|
575
|
+
lwLight.updateMatrixWorld();
|
|
576
|
+
lwLight.target.updateMatrixWorld();
|
|
577
|
+
|
|
565
578
|
}
|
|
566
579
|
|
|
567
580
|
}
|
|
@@ -19,8 +19,8 @@ import {
|
|
|
19
19
|
RGBAFormat,
|
|
20
20
|
RepeatWrapping,
|
|
21
21
|
Scene,
|
|
22
|
-
Source,
|
|
23
22
|
SRGBColorSpace,
|
|
23
|
+
TextureSource,
|
|
24
24
|
CompressedTexture,
|
|
25
25
|
Vector3,
|
|
26
26
|
Quaternion,
|
|
@@ -246,7 +246,7 @@ class GLTFExporter {
|
|
|
246
246
|
* Sets the texture utils for this exporter. Only relevant when compressed textures have to be exported.
|
|
247
247
|
*
|
|
248
248
|
* Depending on whether you use {@link WebGLRenderer} or {@link WebGPURenderer}, you must inject the
|
|
249
|
-
* corresponding texture utils {@link WebGLTextureUtils} or {@link WebGPUTextureUtils}.
|
|
249
|
+
* corresponding texture utils {@link module:WebGLTextureUtils} or {@link module:WebGPUTextureUtils}.
|
|
250
250
|
*
|
|
251
251
|
* @param {WebGLTextureUtils|WebGPUTextureUtils} utils - The texture utils.
|
|
252
252
|
* @return {GLTFExporter} A reference to this exporter.
|
|
@@ -616,7 +616,8 @@ class GLTFWriter {
|
|
|
616
616
|
attributesNormalized: new Map(),
|
|
617
617
|
materials: new Map(),
|
|
618
618
|
textures: new Map(),
|
|
619
|
-
images: new Map()
|
|
619
|
+
images: new Map(),
|
|
620
|
+
normalMaps: new Map()
|
|
620
621
|
};
|
|
621
622
|
|
|
622
623
|
this.textureUtils = null;
|
|
@@ -651,7 +652,8 @@ class GLTFWriter {
|
|
|
651
652
|
onlyVisible: true,
|
|
652
653
|
maxTextureSize: Infinity,
|
|
653
654
|
animations: [],
|
|
654
|
-
includeCustomExtensions: false
|
|
655
|
+
includeCustomExtensions: false,
|
|
656
|
+
copyright: null
|
|
655
657
|
}, options );
|
|
656
658
|
|
|
657
659
|
if ( this.options.animations.length > 0 ) {
|
|
@@ -686,6 +688,8 @@ class GLTFWriter {
|
|
|
686
688
|
// Update bytelength of the single buffer.
|
|
687
689
|
if ( json.buffers && json.buffers.length > 0 ) json.buffers[ 0 ].byteLength = blob.size;
|
|
688
690
|
|
|
691
|
+
if ( options.copyright ) json.asset.copyright = options.copyright;
|
|
692
|
+
|
|
689
693
|
if ( options.binary === true ) {
|
|
690
694
|
|
|
691
695
|
// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#glb-file-format-specification
|
|
@@ -1029,7 +1033,7 @@ class GLTFWriter {
|
|
|
1029
1033
|
|
|
1030
1034
|
const texture = reference.clone();
|
|
1031
1035
|
|
|
1032
|
-
texture.source = new
|
|
1036
|
+
texture.source = new TextureSource( canvas );
|
|
1033
1037
|
texture.colorSpace = NoColorSpace;
|
|
1034
1038
|
texture.channel = ( metalnessMap || roughnessMap ).channel;
|
|
1035
1039
|
|
|
@@ -1091,7 +1095,7 @@ class GLTFWriter {
|
|
|
1091
1095
|
context.putImageData( imageData, 0, 0 );
|
|
1092
1096
|
|
|
1093
1097
|
const texture = normalMap.clone();
|
|
1094
|
-
texture.source = new
|
|
1098
|
+
texture.source = new TextureSource( canvas );
|
|
1095
1099
|
|
|
1096
1100
|
return texture;
|
|
1097
1101
|
|
|
@@ -1750,7 +1754,18 @@ class GLTFWriter {
|
|
|
1750
1754
|
|
|
1751
1755
|
if ( flipX || flipY ) {
|
|
1752
1756
|
|
|
1753
|
-
normalMap
|
|
1757
|
+
if ( cache.normalMaps.has( material.normalMap ) === false ) cache.normalMaps.set( material.normalMap, {} );
|
|
1758
|
+
|
|
1759
|
+
const cachedVariants = cache.normalMaps.get( material.normalMap );
|
|
1760
|
+
const cacheKey = `${flipX}:${flipY}`;
|
|
1761
|
+
|
|
1762
|
+
if ( cachedVariants[ cacheKey ] === undefined ) {
|
|
1763
|
+
|
|
1764
|
+
cachedVariants[ cacheKey ] = await this.buildNormalMapTextureAsync( material.normalMap, flipX, flipY );
|
|
1765
|
+
|
|
1766
|
+
}
|
|
1767
|
+
|
|
1768
|
+
normalMap = cachedVariants[ cacheKey ];
|
|
1754
1769
|
|
|
1755
1770
|
}
|
|
1756
1771
|
|
|
@@ -3821,6 +3836,7 @@ GLTFExporter.Utils = {
|
|
|
3821
3836
|
* @property {Array<AnimationClip>|Array<Array<AnimationClip>>} [animations=[]] - List of animations to be included in the export. When exporting a single 3D object or scene, this is a flat list of clips.
|
|
3822
3837
|
* When exporting an array of multiple scenes, this must be a nested array with one list of clips per scene, matched to the input by index.
|
|
3823
3838
|
* @property {boolean} [includeCustomExtensions=false] - Export custom glTF extensions defined on an object's `userData.gltfExtensions` property.
|
|
3839
|
+
* @property {string} [copyright=null] - Export with a copyright notice embedded in the glTF.
|
|
3824
3840
|
**/
|
|
3825
3841
|
|
|
3826
3842
|
/**
|
|
@@ -156,7 +156,7 @@ class USDZExporter {
|
|
|
156
156
|
* Sets the texture utils for this exporter. Only relevant when compressed textures have to be exported.
|
|
157
157
|
*
|
|
158
158
|
* Depending on whether you use {@link WebGLRenderer} or {@link WebGPURenderer}, you must inject the
|
|
159
|
-
* corresponding texture utils {@link WebGLTextureUtils} or {@link WebGPUTextureUtils}.
|
|
159
|
+
* corresponding texture utils {@link module:WebGLTextureUtils} or {@link module:WebGPUTextureUtils}.
|
|
160
160
|
*
|
|
161
161
|
* @param {WebGLTextureUtils|WebGPUTextureUtils} utils - The texture utils.
|
|
162
162
|
*/
|
|
@@ -342,7 +342,7 @@ class USDZExporter {
|
|
|
342
342
|
|
|
343
343
|
}
|
|
344
344
|
|
|
345
|
-
return zipSync( files, { level: 0 } );
|
|
345
|
+
return zipSync( files, { level: 0, mtime: new Date() } );
|
|
346
346
|
|
|
347
347
|
}
|
|
348
348
|
|