@gnsx/three 0.185.16 → 0.186.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +10 -82600
- package/build/three.core.js +1303 -728
- 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/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
|
@@ -95,6 +95,15 @@ class KeyframeTrack {
|
|
|
95
95
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
if ( AnimationUtils.hasTangents( track.settings ) ) {
|
|
99
|
+
|
|
100
|
+
json.settings = {
|
|
101
|
+
inTangents: AnimationUtils.convertArray( track.settings.inTangents, Array ),
|
|
102
|
+
outTangents: AnimationUtils.convertArray( track.settings.outTangents, Array )
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
|
|
98
107
|
}
|
|
99
108
|
|
|
100
109
|
json.type = track.ValueTypeName; // mandatory
|
|
@@ -320,6 +329,13 @@ class KeyframeTrack {
|
|
|
320
329
|
|
|
321
330
|
}
|
|
322
331
|
|
|
332
|
+
if ( AnimationUtils.hasTangents( this.settings ) ) {
|
|
333
|
+
|
|
334
|
+
scaleTangentTimes( this.settings.inTangents, timeScale );
|
|
335
|
+
scaleTangentTimes( this.settings.outTangents, timeScale );
|
|
336
|
+
|
|
337
|
+
}
|
|
338
|
+
|
|
323
339
|
}
|
|
324
340
|
|
|
325
341
|
return this;
|
|
@@ -595,12 +611,33 @@ class KeyframeTrack {
|
|
|
595
611
|
// Interpolant argument to constructor is not saved, so copy the factory method directly.
|
|
596
612
|
track.createInterpolant = this.createInterpolant;
|
|
597
613
|
|
|
614
|
+
if ( AnimationUtils.hasTangents( this.settings ) ) {
|
|
615
|
+
|
|
616
|
+
track.settings = {
|
|
617
|
+
inTangents: this.settings.inTangents.slice(),
|
|
618
|
+
outTangents: this.settings.outTangents.slice()
|
|
619
|
+
};
|
|
620
|
+
|
|
621
|
+
}
|
|
622
|
+
|
|
598
623
|
return track;
|
|
599
624
|
|
|
600
625
|
}
|
|
601
626
|
|
|
602
627
|
}
|
|
603
628
|
|
|
629
|
+
function scaleTangentTimes( tangents, timeScale ) {
|
|
630
|
+
|
|
631
|
+
// tangents are [ time, value ] pairs, so only every second entry is a time
|
|
632
|
+
|
|
633
|
+
for ( let i = 0, n = tangents.length; i !== n; i += 2 ) {
|
|
634
|
+
|
|
635
|
+
tangents[ i ] *= timeScale;
|
|
636
|
+
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
}
|
|
640
|
+
|
|
604
641
|
/**
|
|
605
642
|
* The value type name.
|
|
606
643
|
*
|
package/src/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const REVISION = '
|
|
1
|
+
export const REVISION = '186';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Represents mouse buttons and interaction types in context of controls.
|
|
@@ -70,6 +70,7 @@ export const PCFShadowMap = 1;
|
|
|
70
70
|
*
|
|
71
71
|
* @type {number}
|
|
72
72
|
* @constant
|
|
73
|
+
* @deprecated since r186. Use `PCFShadowMap` instead.
|
|
73
74
|
*/
|
|
74
75
|
export const PCFSoftShadowMap = 2;
|
|
75
76
|
|
|
@@ -1709,6 +1710,18 @@ export const Compatibility = {
|
|
|
1709
1710
|
TEXTURE_COMPARE: 'depthTextureCompare'
|
|
1710
1711
|
};
|
|
1711
1712
|
|
|
1713
|
+
/**
|
|
1714
|
+
* Represents the refresh types of render objects.
|
|
1715
|
+
*
|
|
1716
|
+
* @type {ConstantsRenderObjectRefreshType}
|
|
1717
|
+
* @constant
|
|
1718
|
+
*/
|
|
1719
|
+
export const RenderObjectRefreshType = {
|
|
1720
|
+
NONE: 0,
|
|
1721
|
+
SHARED: 1,
|
|
1722
|
+
FULL: 2
|
|
1723
|
+
};
|
|
1724
|
+
|
|
1712
1725
|
/**
|
|
1713
1726
|
* This type represents mouse buttons and interaction types in context of controls.
|
|
1714
1727
|
*
|
|
@@ -1758,3 +1771,12 @@ export const Compatibility = {
|
|
|
1758
1771
|
* @property {string} FIRST - Flat interpolation using the first vertex.
|
|
1759
1772
|
* @property {string} EITHER - Flat interpolation using either vertex.
|
|
1760
1773
|
*/
|
|
1774
|
+
|
|
1775
|
+
/**
|
|
1776
|
+
* Represents the refresh types of render objects.
|
|
1777
|
+
*
|
|
1778
|
+
* @typedef {Object} ConstantsRenderObjectRefreshType
|
|
1779
|
+
* @property {number} NONE - No refresh required.
|
|
1780
|
+
* @property {number} SHARED - Only shared uniform buffers require an update.
|
|
1781
|
+
* @property {number} FULL - The render object requires a full refresh.
|
|
1782
|
+
*/
|
|
@@ -670,8 +670,9 @@ class BufferAttribute extends EventDispatcher {
|
|
|
670
670
|
normalized: this.normalized
|
|
671
671
|
};
|
|
672
672
|
|
|
673
|
-
|
|
674
|
-
|
|
673
|
+
data.name = this.name;
|
|
674
|
+
data.usage = this.usage;
|
|
675
|
+
data.gpuType = this.gpuType;
|
|
675
676
|
|
|
676
677
|
return data;
|
|
677
678
|
|
|
@@ -1241,7 +1241,7 @@ class BufferGeometry extends EventDispatcher {
|
|
|
1241
1241
|
|
|
1242
1242
|
data.uuid = this.uuid;
|
|
1243
1243
|
data.type = ( this.parameters !== undefined && this._transformed === true ) ? 'BufferGeometry' : this.type;
|
|
1244
|
-
|
|
1244
|
+
data.name = this.name;
|
|
1245
1245
|
if ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;
|
|
1246
1246
|
|
|
1247
1247
|
if ( this.parameters !== undefined && this._transformed !== true ) {
|
|
@@ -277,13 +277,17 @@ class InterleavedBuffer {
|
|
|
277
277
|
|
|
278
278
|
//
|
|
279
279
|
|
|
280
|
-
|
|
280
|
+
const json = {
|
|
281
281
|
uuid: this.uuid,
|
|
282
282
|
buffer: this.array.buffer._uuid,
|
|
283
283
|
type: this.array.constructor.name,
|
|
284
284
|
stride: this.stride
|
|
285
285
|
};
|
|
286
286
|
|
|
287
|
+
json.usage = this.usage;
|
|
288
|
+
|
|
289
|
+
return json;
|
|
290
|
+
|
|
287
291
|
}
|
|
288
292
|
|
|
289
293
|
}
|
package/src/core/Object3D.js
CHANGED
|
@@ -1256,6 +1256,17 @@ class Object3D extends EventDispatcher {
|
|
|
1256
1256
|
*/
|
|
1257
1257
|
raycast( /* raycaster, intersects */ ) {}
|
|
1258
1258
|
|
|
1259
|
+
/**
|
|
1260
|
+
* Abstract method to test whether this 3D object intersects the given frustum.
|
|
1261
|
+
* Renderable 3D objects such as {@link Mesh}, {@link Line} or {@link Points}
|
|
1262
|
+
* implement this method in order to use frustum culling.
|
|
1263
|
+
*
|
|
1264
|
+
* @abstract
|
|
1265
|
+
* @param {Frustum|FrustumArray} frustum - The frustum to test.
|
|
1266
|
+
* @return {boolean|undefined} Whether this 3D object intersects the given frustum or not.
|
|
1267
|
+
*/
|
|
1268
|
+
intersectsFrustum( /* frustum */ ) {}
|
|
1269
|
+
|
|
1259
1270
|
/**
|
|
1260
1271
|
* Executes the callback on this 3D object and all descendants.
|
|
1261
1272
|
*
|
|
@@ -1505,20 +1516,18 @@ class Object3D extends EventDispatcher {
|
|
|
1505
1516
|
object.uuid = this.uuid;
|
|
1506
1517
|
object.type = this.type;
|
|
1507
1518
|
|
|
1519
|
+
object.name = this.name;
|
|
1520
|
+
object.castShadow = this.castShadow;
|
|
1521
|
+
object.receiveShadow = this.receiveShadow;
|
|
1522
|
+
object.visible = this.visible;
|
|
1523
|
+
object.frustumCulled = this.frustumCulled;
|
|
1524
|
+
object.renderOrder = this.renderOrder;
|
|
1525
|
+
object.static = this.static;
|
|
1526
|
+
object.matrixAutoUpdate = this.matrixAutoUpdate;
|
|
1508
1527
|
// WITH_GENESYS
|
|
1509
1528
|
object.nodeId = this.nodeId;
|
|
1510
|
-
// !WITH_GENESYS
|
|
1511
|
-
|
|
1512
|
-
if ( this.name !== '' ) object.name = this.name;
|
|
1513
|
-
if ( this.castShadow === true ) object.castShadow = true;
|
|
1514
|
-
if ( this.receiveShadow === true ) object.receiveShadow = true;
|
|
1515
|
-
if ( this.visible === false ) object.visible = false;
|
|
1516
|
-
// WITH_GENESYS
|
|
1517
1529
|
if ( this.selfHidden === true ) object.selfHidden = true;
|
|
1518
1530
|
// !WITH_GENESYS
|
|
1519
|
-
if ( this.frustumCulled === false ) object.frustumCulled = false;
|
|
1520
|
-
if ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;
|
|
1521
|
-
if ( this.static !== false ) object.static = this.static;
|
|
1522
1531
|
if ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;
|
|
1523
1532
|
|
|
1524
1533
|
object.layers = this.layers.mask;
|
|
@@ -1527,8 +1536,6 @@ class Object3D extends EventDispatcher {
|
|
|
1527
1536
|
|
|
1528
1537
|
if ( this.pivot !== null ) object.pivot = this.pivot.toArray();
|
|
1529
1538
|
|
|
1530
|
-
if ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;
|
|
1531
|
-
|
|
1532
1539
|
if ( this.morphTargetDictionary !== undefined ) object.morphTargetDictionary = Object.assign( {}, this.morphTargetDictionary );
|
|
1533
1540
|
if ( this.morphTargetInfluences !== undefined ) object.morphTargetInfluences = this.morphTargetInfluences.slice();
|
|
1534
1541
|
|
|
@@ -1850,6 +1857,27 @@ class Object3D extends EventDispatcher {
|
|
|
1850
1857
|
|
|
1851
1858
|
}
|
|
1852
1859
|
|
|
1860
|
+
/**
|
|
1861
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
1862
|
+
* method whenever this instance is no longer used in your app.
|
|
1863
|
+
*
|
|
1864
|
+
* Geometries, materials and textures are potentially shared with other
|
|
1865
|
+
* 3D objects and must be disposed of separately.
|
|
1866
|
+
*
|
|
1867
|
+
* @fires Object3D#dispose
|
|
1868
|
+
*/
|
|
1869
|
+
dispose() {
|
|
1870
|
+
|
|
1871
|
+
/**
|
|
1872
|
+
* Fires when the 3D object has been disposed of.
|
|
1873
|
+
*
|
|
1874
|
+
* @event Object3D#dispose
|
|
1875
|
+
* @type {Object}
|
|
1876
|
+
*/
|
|
1877
|
+
this.dispatchEvent( { type: 'dispose' } );
|
|
1878
|
+
|
|
1879
|
+
}
|
|
1880
|
+
|
|
1853
1881
|
}
|
|
1854
1882
|
|
|
1855
1883
|
/**
|
package/src/core/Raycaster.js
CHANGED
|
@@ -185,6 +185,10 @@ class Raycaster {
|
|
|
185
185
|
* be detected. To raycast against both faces of an object, you'll want to set {@link Material#side}
|
|
186
186
|
* to `THREE.DoubleSide`.
|
|
187
187
|
*
|
|
188
|
+
* Note that a ray hitting a triangle mesh exactly along an edge shared by two faces may be
|
|
189
|
+
* reported by both faces, resulting in two coincident intersections (identical point and
|
|
190
|
+
* distance) in the returned array.
|
|
191
|
+
*
|
|
188
192
|
* @param {Object3D} object - The 3D object to check for intersection with the ray.
|
|
189
193
|
* @param {boolean} [recursive=true] - If set to `true`, it also checks all descendants.
|
|
190
194
|
* Otherwise it only checks intersection with the object.
|
package/src/core/RenderTarget.js
CHANGED
|
@@ -2,7 +2,7 @@ import { EventDispatcher } from './EventDispatcher.js';
|
|
|
2
2
|
import { Texture } from '../textures/Texture.js';
|
|
3
3
|
import { LinearFilter } from '../constants.js';
|
|
4
4
|
import { Vector4 } from '../math/Vector4.js';
|
|
5
|
-
import {
|
|
5
|
+
import { TextureSource } from '../textures/TextureSource.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* A render target is a buffer where the video card draws pixels for a scene
|
|
@@ -30,8 +30,12 @@ class RenderTarget extends EventDispatcher {
|
|
|
30
30
|
* @property {string} [colorSpace=NoColorSpace] - The texture's color space.
|
|
31
31
|
* @property {boolean} [depthBuffer=true] - Whether to allocate a depth buffer or not.
|
|
32
32
|
* @property {boolean} [stencilBuffer=false] - Whether to allocate a stencil buffer or not.
|
|
33
|
-
* @property {boolean} [
|
|
34
|
-
* @property {boolean} [
|
|
33
|
+
* @property {boolean} [resolveColorBuffer=true] - Whether to resolve the color buffer or not. Only relevant for multisampled render targets.
|
|
34
|
+
* @property {boolean} [resolveDepthBuffer=true] - Whether to resolve the depth buffer or not. Only relevant for multisampled render targets.
|
|
35
|
+
* @property {boolean} [resolveStencilBuffer=true] - Whether to resolve the stencil buffer or not. Only relevant for multisampled render targets.
|
|
36
|
+
* @property {boolean} [storeMultisampledColorBuffer=true] - Whether to store the multisampled color buffer or not. Setting to `false` saves memory bandwidth when the multisampled data are not needed after a render pass.
|
|
37
|
+
* @property {boolean} [storeMultisampledDepthBuffer=true] - Whether to store the multisampled depth buffer or not. Setting to `false` saves memory bandwidth when the multisampled data are not needed after a render pass.
|
|
38
|
+
* @property {boolean} [storeMultisampledStencilBuffer=true] - Whether to store the multisampled stencil buffer or not. Setting to `false` saves memory bandwidth when the multisampled data are not needed after a render pass.
|
|
35
39
|
* @property {?Texture} [depthTexture=null] - Reference to a depth texture.
|
|
36
40
|
* @property {number} [samples=0] - The MSAA samples count.
|
|
37
41
|
* @property {number} [count=1] - Defines the number of color attachments . Must be at least `1`.
|
|
@@ -57,8 +61,12 @@ class RenderTarget extends EventDispatcher {
|
|
|
57
61
|
minFilter: LinearFilter,
|
|
58
62
|
depthBuffer: true,
|
|
59
63
|
stencilBuffer: false,
|
|
64
|
+
resolveColorBuffer: true,
|
|
60
65
|
resolveDepthBuffer: true,
|
|
61
66
|
resolveStencilBuffer: true,
|
|
67
|
+
storeMultisampledColorBuffer: true,
|
|
68
|
+
storeMultisampledDepthBuffer: true,
|
|
69
|
+
storeMultisampledStencilBuffer: true,
|
|
62
70
|
depthTexture: null,
|
|
63
71
|
samples: 0,
|
|
64
72
|
count: 1,
|
|
@@ -165,7 +173,28 @@ class RenderTarget extends EventDispatcher {
|
|
|
165
173
|
this.stencilBuffer = options.stencilBuffer;
|
|
166
174
|
|
|
167
175
|
/**
|
|
168
|
-
* Whether to resolve the
|
|
176
|
+
* Whether to resolve the color buffer or not. When set to `false`, the color
|
|
177
|
+
* attachments do not receive the resolved (single-sampled) output of a render
|
|
178
|
+
* pass and the render target's textures are left untouched. The rendered
|
|
179
|
+
* content is then only accessible within the render pass itself.
|
|
180
|
+
*
|
|
181
|
+
* Only relevant for multisampled render targets.
|
|
182
|
+
*
|
|
183
|
+
* @type {boolean}
|
|
184
|
+
* @default true
|
|
185
|
+
*/
|
|
186
|
+
this.resolveColorBuffer = options.resolveColorBuffer;
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Whether to resolve the depth buffer or not. When set to `false`, the depth
|
|
190
|
+
* texture does not receive the resolved depth output of a render pass which
|
|
191
|
+
* saves memory bandwidth. Use this setting when the depth data of a render
|
|
192
|
+
* pass are not required afterwards.
|
|
193
|
+
*
|
|
194
|
+
* Only relevant for multisampled render targets in WebGL. WebGPU does not
|
|
195
|
+
* support depth resolves; sampling the depth texture of a multisampled render
|
|
196
|
+
* target accesses the multisampled data directly, see
|
|
197
|
+
* {@link RenderTarget#storeMultisampledDepthBuffer}.
|
|
169
198
|
*
|
|
170
199
|
* @type {boolean}
|
|
171
200
|
* @default true
|
|
@@ -173,13 +202,54 @@ class RenderTarget extends EventDispatcher {
|
|
|
173
202
|
this.resolveDepthBuffer = options.resolveDepthBuffer;
|
|
174
203
|
|
|
175
204
|
/**
|
|
176
|
-
* Whether to resolve the stencil buffer or not.
|
|
205
|
+
* Whether to resolve the stencil buffer or not. Analogous to
|
|
206
|
+
* {@link RenderTarget#resolveDepthBuffer} but for the stencil aspect.
|
|
177
207
|
*
|
|
178
208
|
* @type {boolean}
|
|
179
209
|
* @default true
|
|
180
210
|
*/
|
|
181
211
|
this.resolveStencilBuffer = options.resolveStencilBuffer;
|
|
182
212
|
|
|
213
|
+
/**
|
|
214
|
+
* Whether to store the multisampled color buffer or not. When set to `false`,
|
|
215
|
+
* the multisampled data are discarded at the end of a render pass, right after
|
|
216
|
+
* they have been resolved. This saves memory bandwidth, especially on tile-based
|
|
217
|
+
* GPUs, and is the recommended setting for render targets that are fully redrawn
|
|
218
|
+
* each frame and whose output is only accessed via the resolved textures (e.g.
|
|
219
|
+
* scene passes in post-processing chains).
|
|
220
|
+
*
|
|
221
|
+
* Must be kept `true` when the multisampled data are needed after the render
|
|
222
|
+
* pass ends, e.g. when rendering into the target without clearing or when the
|
|
223
|
+
* scene contains transmissive objects which require a mid-pass framebuffer copy.
|
|
224
|
+
*
|
|
225
|
+
* @type {boolean}
|
|
226
|
+
* @default true
|
|
227
|
+
*/
|
|
228
|
+
this.storeMultisampledColorBuffer = options.storeMultisampledColorBuffer;
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Whether to store the multisampled depth buffer or not. When set to `false`,
|
|
232
|
+
* the multisampled depth data are discarded at the end of a render pass which
|
|
233
|
+
* saves memory bandwidth.
|
|
234
|
+
*
|
|
235
|
+
* Must be kept `true` in WebGPU when the depth texture of a multisampled render
|
|
236
|
+
* target is sampled (e.g. by depth-based post-processing effects) since depth
|
|
237
|
+
* is read directly from the multisampled data.
|
|
238
|
+
*
|
|
239
|
+
* @type {boolean}
|
|
240
|
+
* @default true
|
|
241
|
+
*/
|
|
242
|
+
this.storeMultisampledDepthBuffer = options.storeMultisampledDepthBuffer;
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Whether to store the multisampled stencil buffer or not. Analogous to
|
|
246
|
+
* {@link RenderTarget#storeMultisampledDepthBuffer} but for the stencil aspect.
|
|
247
|
+
*
|
|
248
|
+
* @type {boolean}
|
|
249
|
+
* @default true
|
|
250
|
+
*/
|
|
251
|
+
this.storeMultisampledStencilBuffer = options.storeMultisampledStencilBuffer;
|
|
252
|
+
|
|
183
253
|
this._depthTexture = null;
|
|
184
254
|
this.depthTexture = options.depthTexture;
|
|
185
255
|
|
|
@@ -264,8 +334,8 @@ class RenderTarget extends EventDispatcher {
|
|
|
264
334
|
|
|
265
335
|
set depthTexture( current ) {
|
|
266
336
|
|
|
267
|
-
if ( this._depthTexture !== null ) this._depthTexture.renderTarget = null;
|
|
268
|
-
if ( current !== null ) current.renderTarget = this;
|
|
337
|
+
if ( this._depthTexture !== null && this._depthTexture.renderTarget === this ) this._depthTexture.renderTarget = null;
|
|
338
|
+
if ( current !== null && current.renderTarget === null ) current.renderTarget = this;
|
|
269
339
|
|
|
270
340
|
this._depthTexture = current;
|
|
271
341
|
|
|
@@ -368,17 +438,37 @@ class RenderTarget extends EventDispatcher {
|
|
|
368
438
|
// ensure image object is not shared, see #20328
|
|
369
439
|
|
|
370
440
|
const image = Object.assign( {}, source.textures[ i ].image );
|
|
371
|
-
this.textures[ i ].source = new
|
|
441
|
+
this.textures[ i ].source = new TextureSource( image );
|
|
372
442
|
|
|
373
443
|
}
|
|
374
444
|
|
|
375
445
|
this.depthBuffer = source.depthBuffer;
|
|
376
446
|
this.stencilBuffer = source.stencilBuffer;
|
|
377
447
|
|
|
448
|
+
this.resolveColorBuffer = source.resolveColorBuffer;
|
|
378
449
|
this.resolveDepthBuffer = source.resolveDepthBuffer;
|
|
379
450
|
this.resolveStencilBuffer = source.resolveStencilBuffer;
|
|
380
451
|
|
|
381
|
-
|
|
452
|
+
this.storeMultisampledColorBuffer = source.storeMultisampledColorBuffer;
|
|
453
|
+
this.storeMultisampledDepthBuffer = source.storeMultisampledDepthBuffer;
|
|
454
|
+
this.storeMultisampledStencilBuffer = source.storeMultisampledStencilBuffer;
|
|
455
|
+
|
|
456
|
+
if ( source.depthTexture !== null ) {
|
|
457
|
+
|
|
458
|
+
if ( source.depthTexture.renderTarget === source ) {
|
|
459
|
+
|
|
460
|
+
const depthTexture = source.depthTexture.clone();
|
|
461
|
+
depthTexture.renderTarget = null;
|
|
462
|
+
|
|
463
|
+
this.depthTexture = depthTexture;
|
|
464
|
+
|
|
465
|
+
} else {
|
|
466
|
+
|
|
467
|
+
this.depthTexture = source.depthTexture;
|
|
468
|
+
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
}
|
|
382
472
|
|
|
383
473
|
this.samples = source.samples;
|
|
384
474
|
this.multiview = source.multiview;
|
|
@@ -31,15 +31,19 @@ class RenderTarget3D extends RenderTarget {
|
|
|
31
31
|
|
|
32
32
|
this.depth = depth;
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
* @type {Data3DTexture}
|
|
38
|
-
*/
|
|
39
|
-
this.texture = new Data3DTexture( null, width, height, depth );
|
|
40
|
-
this._setTextureOptions( options );
|
|
34
|
+
// overwrite attachments with 3D textures
|
|
35
|
+
|
|
36
|
+
for ( let i = 0; i < this.textures.length; i ++ ) {
|
|
41
37
|
|
|
42
|
-
|
|
38
|
+
const texture = new Data3DTexture( null, width, height, depth );
|
|
39
|
+
texture.isRenderTargetTexture = true;
|
|
40
|
+
texture.renderTarget = this;
|
|
41
|
+
|
|
42
|
+
this.textures[ i ] = texture;
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
this._setTextureOptions( options );
|
|
43
47
|
|
|
44
48
|
}
|
|
45
49
|
|
package/src/extras/Controls.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { EventDispatcher } from '../core/EventDispatcher.js';
|
|
2
|
-
import { warn } from '../utils.js';
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* Abstract base class for controls.
|
|
@@ -83,13 +82,6 @@ class Controls extends EventDispatcher {
|
|
|
83
82
|
*/
|
|
84
83
|
connect( element ) {
|
|
85
84
|
|
|
86
|
-
if ( element === undefined ) {
|
|
87
|
-
|
|
88
|
-
warn( 'Controls: connect() now requires an element.' ); // @deprecated, the warning can be removed with r185
|
|
89
|
-
return;
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
|
|
93
85
|
if ( this.domElement !== null ) this.disconnect();
|
|
94
86
|
|
|
95
87
|
this.domElement = element;
|