super-three 0.176.0 → 0.177.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/README.md +3 -3
- package/build/three.cjs +7631 -6743
- package/build/three.core.js +7496 -6758
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +172 -22
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +14 -6
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +3948 -1678
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +3941 -1678
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +0 -1
- package/examples/jsm/animation/AnimationClipCreator.js +1 -0
- package/examples/jsm/animation/CCDIKSolver.js +6 -3
- package/examples/jsm/capabilities/WebGL.js +1 -0
- package/examples/jsm/capabilities/WebGPU.js +1 -0
- package/examples/jsm/controls/ArcballControls.js +14 -3
- package/examples/jsm/controls/DragControls.js +1 -0
- package/examples/jsm/controls/FirstPersonControls.js +1 -0
- package/examples/jsm/controls/FlyControls.js +1 -0
- package/examples/jsm/controls/MapControls.js +1 -0
- package/examples/jsm/controls/OrbitControls.js +1 -0
- package/examples/jsm/controls/PointerLockControls.js +5 -3
- package/examples/jsm/controls/TrackballControls.js +1 -0
- package/examples/jsm/controls/TransformControls.js +1 -0
- package/examples/jsm/csm/CSM.js +2 -0
- package/examples/jsm/csm/CSMFrustum.js +2 -0
- package/examples/jsm/csm/CSMHelper.js +1 -0
- package/examples/jsm/csm/CSMShader.js +4 -1
- package/examples/jsm/csm/CSMShadowNode.js +18 -4
- package/examples/jsm/curves/CurveExtras.js +14 -0
- package/examples/jsm/curves/NURBSCurve.js +1 -0
- package/examples/jsm/curves/NURBSSurface.js +2 -0
- package/examples/jsm/curves/NURBSUtils.js +4 -1
- package/examples/jsm/curves/NURBSVolume.js +2 -0
- package/examples/jsm/effects/AnaglyphEffect.js +2 -0
- package/examples/jsm/effects/AsciiEffect.js +2 -0
- package/examples/jsm/effects/OutlineEffect.js +2 -0
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -0
- package/examples/jsm/effects/StereoEffect.js +2 -0
- package/examples/jsm/environments/DebugEnvironment.js +1 -0
- package/examples/jsm/environments/RoomEnvironment.js +49 -35
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -0
- package/examples/jsm/exporters/GLTFExporter.js +7 -4
- package/examples/jsm/exporters/KTX2Exporter.js +2 -0
- package/examples/jsm/exporters/OBJExporter.js +3 -1
- package/examples/jsm/exporters/PLYExporter.js +4 -2
- package/examples/jsm/exporters/STLExporter.js +2 -0
- package/examples/jsm/exporters/USDZExporter.js +12 -10
- package/examples/jsm/geometries/BoxLineGeometry.js +1 -0
- package/examples/jsm/geometries/ConvexGeometry.js +1 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -0
- package/examples/jsm/geometries/ParametricFunctions.js +4 -1
- package/examples/jsm/geometries/ParametricGeometry.js +1 -0
- package/examples/jsm/geometries/RoundedBoxGeometry.js +1 -0
- package/examples/jsm/geometries/TeapotGeometry.js +1 -0
- package/examples/jsm/geometries/TextGeometry.js +1 -0
- package/examples/jsm/helpers/LightProbeHelper.js +1 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -0
- package/examples/jsm/helpers/OctreeHelper.js +1 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +1 -0
- package/examples/jsm/helpers/RapierHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +5 -4
- package/examples/jsm/helpers/VertexNormalsHelper.js +1 -0
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -0
- package/examples/jsm/helpers/ViewHelper.js +1 -0
- package/examples/jsm/interactive/HTMLMesh.js +7 -0
- package/examples/jsm/interactive/InteractiveGroup.js +1 -0
- package/examples/jsm/interactive/SelectionBox.js +2 -0
- package/examples/jsm/interactive/SelectionHelper.js +2 -0
- package/examples/jsm/lighting/TiledLighting.js +1 -0
- package/examples/jsm/lights/LightProbeGenerator.js +1 -0
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
- package/examples/jsm/lines/Line2.js +1 -0
- package/examples/jsm/lines/LineGeometry.js +1 -0
- package/examples/jsm/lines/LineMaterial.js +4 -4
- package/examples/jsm/lines/LineSegments2.js +1 -0
- package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
- package/examples/jsm/lines/Wireframe.js +1 -0
- package/examples/jsm/lines/WireframeGeometry2.js +1 -0
- package/examples/jsm/lines/webgpu/Line2.js +1 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +1 -0
- package/examples/jsm/loaders/AMFLoader.js +1 -0
- package/examples/jsm/loaders/BVHLoader.js +1 -0
- package/examples/jsm/loaders/ColladaLoader.js +5 -4
- package/examples/jsm/loaders/DDSLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -1
- package/examples/jsm/loaders/EXRLoader.js +1 -0
- package/examples/jsm/loaders/FBXLoader.js +24 -22
- package/examples/jsm/loaders/FontLoader.js +1 -0
- package/examples/jsm/loaders/GCodeLoader.js +1 -0
- package/examples/jsm/loaders/GLTFLoader.js +10 -82
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
- package/examples/jsm/loaders/IESLoader.js +1 -0
- package/examples/jsm/loaders/KMZLoader.js +1 -0
- package/examples/jsm/loaders/KTX2Loader.js +67 -26
- package/examples/jsm/loaders/KTXLoader.js +1 -0
- package/examples/jsm/loaders/LDrawLoader.js +55 -3
- package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
- package/examples/jsm/loaders/LUTImageLoader.js +1 -0
- package/examples/jsm/loaders/LWOLoader.js +1 -13
- package/examples/jsm/loaders/LottieLoader.js +15 -0
- package/examples/jsm/loaders/MD2Loader.js +1 -0
- package/examples/jsm/loaders/MDDLoader.js +1 -0
- package/examples/jsm/loaders/MTLLoader.js +4 -3
- package/examples/jsm/loaders/MaterialXLoader.js +1 -0
- package/examples/jsm/loaders/NRRDLoader.js +1 -0
- package/examples/jsm/loaders/OBJLoader.js +1 -0
- package/examples/jsm/loaders/PCDLoader.js +122 -19
- package/examples/jsm/loaders/PDBLoader.js +1 -0
- package/examples/jsm/loaders/PLYLoader.js +1 -0
- package/examples/jsm/loaders/PVRLoader.js +1 -0
- package/examples/jsm/loaders/RGBELoader.js +1 -0
- package/examples/jsm/loaders/RGBMLoader.js +1 -0
- package/examples/jsm/loaders/STLLoader.js +1 -0
- package/examples/jsm/loaders/SVGLoader.js +1 -0
- package/examples/jsm/loaders/TDSLoader.js +1 -0
- package/examples/jsm/loaders/TGALoader.js +1 -0
- package/examples/jsm/loaders/TIFFLoader.js +1 -0
- package/examples/jsm/loaders/TTFLoader.js +1 -0
- package/examples/jsm/loaders/USDZLoader.js +1 -0
- package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +3 -2
- package/examples/jsm/loaders/VTKLoader.js +1 -0
- package/examples/jsm/loaders/XYZLoader.js +1 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
- package/examples/jsm/math/Capsule.js +2 -0
- package/examples/jsm/math/ColorConverter.js +1 -0
- package/examples/jsm/math/ConvexHull.js +2 -0
- package/examples/jsm/math/ImprovedNoise.js +19 -14
- package/examples/jsm/math/Lut.js +2 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
- package/examples/jsm/math/OBB.js +2 -0
- package/examples/jsm/math/Octree.js +20 -1
- package/examples/jsm/math/SimplexNoise.js +2 -0
- package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/Gyroscope.js +1 -0
- package/examples/jsm/misc/MD2Character.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
- package/examples/jsm/misc/MorphAnimMesh.js +1 -0
- package/examples/jsm/misc/MorphBlendMesh.js +1 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +5 -0
- package/examples/jsm/misc/Timer.js +2 -0
- package/examples/jsm/misc/TubePainter.js +1 -0
- package/examples/jsm/misc/Volume.js +2 -0
- package/examples/jsm/misc/VolumeSlice.js +1 -0
- package/examples/jsm/modifiers/CurveModifier.js +3 -0
- package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
- package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
- package/examples/jsm/modifiers/TessellateModifier.js +2 -0
- package/examples/jsm/objects/GroundedSkybox.js +1 -0
- package/examples/jsm/objects/Lensflare.js +3 -0
- package/examples/jsm/objects/LensflareMesh.js +1 -0
- package/examples/jsm/objects/MarchingCubes.js +2 -0
- package/examples/jsm/objects/Reflector.js +1 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Refractor.js +1 -0
- package/examples/jsm/objects/ShadowMesh.js +1 -0
- package/examples/jsm/objects/Sky.js +2 -1
- package/examples/jsm/objects/SkyMesh.js +20 -17
- package/examples/jsm/objects/Water.js +1 -0
- package/examples/jsm/objects/Water2.js +1 -0
- package/examples/jsm/objects/Water2Mesh.js +3 -1
- package/examples/jsm/objects/WaterMesh.js +2 -1
- package/examples/jsm/physics/AmmoPhysics.js +1 -0
- package/examples/jsm/physics/JoltPhysics.js +1 -0
- package/examples/jsm/physics/RapierPhysics.js +58 -1
- package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
- package/examples/jsm/postprocessing/BloomPass.js +2 -1
- package/examples/jsm/postprocessing/BokehPass.js +2 -1
- package/examples/jsm/postprocessing/ClearPass.js +1 -0
- package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
- package/examples/jsm/postprocessing/EffectComposer.js +5 -6
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +1 -0
- package/examples/jsm/postprocessing/GTAOPass.js +4 -3
- package/examples/jsm/postprocessing/GlitchPass.js +2 -1
- package/examples/jsm/postprocessing/HalftonePass.js +2 -1
- package/examples/jsm/postprocessing/LUTPass.js +1 -0
- package/examples/jsm/postprocessing/MaskPass.js +1 -0
- package/examples/jsm/postprocessing/OutlinePass.js +5 -2
- package/examples/jsm/postprocessing/OutputPass.js +1 -0
- package/examples/jsm/postprocessing/Pass.js +3 -1
- package/examples/jsm/postprocessing/RenderPass.js +1 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
- package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
- package/examples/jsm/postprocessing/SAOPass.js +3 -2
- package/examples/jsm/postprocessing/SMAAPass.js +3 -2
- package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -1
- package/examples/jsm/postprocessing/SSRPass.js +4 -3
- package/examples/jsm/postprocessing/SavePass.js +2 -1
- package/examples/jsm/postprocessing/ShaderPass.js +1 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
- package/examples/jsm/postprocessing/TexturePass.js +1 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
- package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
- package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
- package/examples/jsm/renderers/Projector.js +2 -0
- package/examples/jsm/renderers/SVGRenderer.js +3 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
- package/examples/jsm/shaders/AfterimageShader.js +4 -1
- package/examples/jsm/shaders/BasicShader.js +4 -1
- package/examples/jsm/shaders/BleachBypassShader.js +4 -1
- package/examples/jsm/shaders/BlendShader.js +4 -1
- package/examples/jsm/shaders/BokehShader.js +4 -1
- package/examples/jsm/shaders/BokehShader2.js +4 -1
- package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
- package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
- package/examples/jsm/shaders/ColorifyShader.js +4 -1
- package/examples/jsm/shaders/ConvolutionShader.js +4 -1
- package/examples/jsm/shaders/CopyShader.js +4 -1
- package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
- package/examples/jsm/shaders/DigitalGlitch.js +4 -1
- package/examples/jsm/shaders/DotScreenShader.js +4 -1
- package/examples/jsm/shaders/ExposureShader.js +4 -1
- package/examples/jsm/shaders/FXAAShader.js +4 -1
- package/examples/jsm/shaders/FilmShader.js +4 -1
- package/examples/jsm/shaders/FocusShader.js +4 -1
- package/examples/jsm/shaders/FreiChenShader.js +4 -1
- package/examples/jsm/shaders/GTAOShader.js +4 -1
- package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
- package/examples/jsm/shaders/GodRaysShader.js +4 -1
- package/examples/jsm/shaders/HalftoneShader.js +4 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/HueSaturationShader.js +4 -1
- package/examples/jsm/shaders/KaleidoShader.js +4 -1
- package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
- package/examples/jsm/shaders/LuminosityShader.js +4 -1
- package/examples/jsm/shaders/MirrorShader.js +4 -1
- package/examples/jsm/shaders/NormalMapShader.js +4 -1
- package/examples/jsm/shaders/OutputShader.js +4 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
- package/examples/jsm/shaders/RGBShiftShader.js +4 -1
- package/examples/jsm/shaders/SAOShader.js +4 -1
- package/examples/jsm/shaders/SMAAShader.js +1 -0
- package/examples/jsm/shaders/SSAOShader.js +4 -1
- package/examples/jsm/shaders/SSRShader.js +1 -0
- package/examples/jsm/shaders/SepiaShader.js +4 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
- package/examples/jsm/shaders/TechnicolorShader.js +4 -1
- package/examples/jsm/shaders/ToonShader.js +2 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +4 -1
- package/examples/jsm/shaders/VelocityShader.js +4 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/VignetteShader.js +4 -1
- package/examples/jsm/shaders/VolumeShader.js +5 -2
- package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
- package/examples/jsm/textures/FlakesTexture.js +2 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +1 -2
- package/examples/jsm/transpiler/TSLEncoder.js +52 -8
- package/examples/jsm/transpiler/Transpiler.js +2 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
- package/examples/jsm/tsl/display/BloomNode.js +1 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
- package/examples/jsm/tsl/display/FXAANode.js +3 -2
- package/examples/jsm/tsl/display/FilmNode.js +1 -0
- package/examples/jsm/tsl/display/GTAONode.js +1 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +2 -27
- package/examples/jsm/tsl/display/LensflareNode.js +1 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
- package/examples/jsm/tsl/display/OutlineNode.js +1 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
- package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
- package/examples/jsm/tsl/display/SMAANode.js +9 -8
- package/examples/jsm/tsl/display/SSAAPassNode.js +3 -2
- package/examples/jsm/tsl/display/SSRNode.js +1 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +5 -4
- package/examples/jsm/tsl/display/TransitionNode.js +1 -0
- package/examples/jsm/tsl/display/hashBlur.js +28 -6
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +4 -3
- package/examples/jsm/tsl/math/Bayer.js +4 -1
- package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/examples/jsm/tsl/utils/Raymarching.js +6 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +4 -1
- package/examples/jsm/utils/LDrawUtils.js +2 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -0
- package/examples/jsm/utils/SceneUtils.js +4 -1
- package/examples/jsm/utils/ShadowMapViewer.js +2 -0
- package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
- package/examples/jsm/utils/SkeletonUtils.js +4 -1
- package/examples/jsm/utils/SortUtils.js +4 -1
- package/examples/jsm/utils/UVsDebug.js +4 -1
- package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
- package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
- package/examples/jsm/utils/WorkerPool.js +2 -0
- package/examples/jsm/webxr/ARButton.js +1 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
- package/examples/jsm/webxr/Text2D.js +4 -1
- package/examples/jsm/webxr/VRButton.js +1 -0
- package/examples/jsm/webxr/XRButton.js +1 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
- package/examples/jsm/webxr/XREstimatedLight.js +1 -0
- package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
- package/examples/jsm/webxr/XRPlanes.js +1 -0
- package/package.json +6 -4
- package/src/Three.Core.js +1 -1
- package/src/Three.TSL.js +13 -5
- package/src/Three.WebGPU.Nodes.js +1 -0
- package/src/Three.WebGPU.js +1 -0
- package/src/audio/AudioListener.js +13 -10
- package/src/cameras/ArrayCamera.js +9 -1
- package/src/constants.js +47 -20
- package/src/core/BufferAttribute.js +1 -1
- package/src/core/BufferGeometry.js +2 -5
- package/src/core/Object3D.js +22 -21
- package/src/core/RenderTarget.js +65 -21
- package/src/core/RenderTarget3D.js +1 -0
- package/src/extras/TextureUtils.js +1 -5
- package/src/extras/core/Curve.js +1 -1
- package/src/geometries/CapsuleGeometry.js +167 -17
- package/src/geometries/ExtrudeGeometry.js +39 -29
- package/src/helpers/ArrowHelper.js +2 -2
- package/src/helpers/SkeletonHelper.js +1 -1
- package/src/lights/LightShadow.js +14 -0
- package/src/lights/SpotLightShadow.js +9 -1
- package/src/lights/webgpu/ProjectorLight.js +46 -0
- package/src/loaders/BufferGeometryLoader.js +1 -10
- package/src/loaders/ImageBitmapLoader.js +21 -5
- package/src/loaders/ObjectLoader.js +44 -16
- package/src/loaders/nodes/NodeObjectLoader.js +2 -2
- package/src/materials/Material.js +1 -7
- package/src/materials/nodes/NodeMaterial.js +81 -18
- package/src/materials/nodes/manager/NodeMaterialObserver.js +20 -2
- package/src/math/Box3.js +28 -0
- package/src/math/Color.js +7 -7
- package/src/math/ColorManagement.js +22 -3
- package/src/math/FrustumArray.js +253 -0
- package/src/math/Ray.js +2 -0
- package/src/math/Sphere.js +28 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/Bitangent.js +31 -9
- package/src/nodes/accessors/Camera.js +31 -4
- package/src/nodes/accessors/CubeTextureNode.js +50 -2
- package/src/nodes/accessors/InstanceNode.js +5 -4
- package/src/nodes/accessors/Lights.js +2 -2
- package/src/nodes/accessors/MaterialNode.js +4 -0
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +26 -6
- package/src/nodes/accessors/Object3DNode.js +6 -7
- package/src/nodes/accessors/Position.js +14 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +25 -0
- package/src/nodes/accessors/StorageTextureNode.js +14 -3
- package/src/nodes/accessors/TextureNode.js +59 -8
- package/src/nodes/accessors/VelocityNode.js +1 -0
- package/src/nodes/accessors/VertexColorNode.js +4 -4
- package/src/nodes/code/CodeNode.js +8 -11
- package/src/nodes/core/AssignNode.js +27 -5
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/CacheNode.js +14 -0
- package/src/nodes/core/ContextNode.js +7 -3
- package/src/nodes/core/Node.js +68 -19
- package/src/nodes/core/NodeBuilder.js +100 -12
- package/src/nodes/core/NodeUtils.js +42 -0
- package/src/nodes/core/NodeVarying.js +19 -1
- package/src/nodes/core/PropertyNode.js +8 -12
- package/src/nodes/core/StackNode.js +127 -2
- package/src/nodes/core/StructTypeNode.js +26 -4
- package/src/nodes/core/VarNode.js +11 -2
- package/src/nodes/core/VaryingNode.js +40 -21
- package/src/nodes/display/BlendModes.js +42 -1
- package/src/nodes/display/ColorSpaceNode.js +4 -27
- package/src/nodes/display/PassNode.js +8 -11
- package/src/nodes/functions/ShadowMaskModel.js +5 -1
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
- package/src/nodes/gpgpu/BarrierNode.js +3 -3
- package/src/nodes/gpgpu/ComputeNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +7 -13
- package/src/nodes/lighting/HemisphereLightNode.js +2 -2
- package/src/nodes/lighting/IESSpotLightNode.js +2 -1
- package/src/nodes/lighting/LightsNode.js +25 -7
- package/src/nodes/lighting/ProjectorLightNode.js +78 -0
- package/src/nodes/lighting/ShadowBaseNode.js +1 -12
- package/src/nodes/lighting/ShadowFilterNode.js +274 -0
- package/src/nodes/lighting/ShadowNode.js +172 -240
- package/src/nodes/lighting/SpotLightNode.js +44 -7
- package/src/nodes/materialx/lib/mx_noise.js +1 -1
- package/src/nodes/math/MathNode.js +56 -20
- package/src/nodes/math/OperatorNode.js +109 -82
- package/src/nodes/shapes/Shapes.js +5 -4
- package/src/nodes/tsl/TSLCore.js +140 -49
- package/src/nodes/utils/DebugNode.js +15 -3
- package/src/nodes/utils/Discard.js +2 -2
- package/src/nodes/utils/LoopNode.js +64 -17
- package/src/nodes/utils/ReflectorNode.js +67 -4
- package/src/objects/BatchedMesh.js +16 -4
- package/src/objects/Mesh.js +9 -0
- package/src/objects/Skeleton.js +1 -1
- package/src/objects/Sprite.js +9 -0
- package/src/renderers/WebGL3DRenderTarget.js +1 -0
- package/src/renderers/WebGLArrayRenderTarget.js +1 -0
- package/src/renderers/WebGLCubeRenderTarget.js +2 -4
- package/src/renderers/WebGLRenderer.js +21 -10
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Background.js +11 -0
- package/src/renderers/common/RenderList.js +0 -4
- package/src/renderers/common/RenderObject.js +12 -1
- package/src/renderers/common/Renderer.js +116 -8
- package/src/renderers/common/Textures.js +15 -21
- package/src/renderers/common/TimestampQueryPool.js +1 -0
- package/src/renderers/common/Uniform.js +1 -1
- package/src/renderers/common/UniformsGroup.js +14 -18
- package/src/renderers/common/XRManager.js +154 -25
- package/src/renderers/common/extras/PMREMGenerator.js +29 -22
- package/src/renderers/common/nodes/Nodes.js +13 -3
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -2
- package/src/renderers/webgl/WebGLTextures.js +143 -4
- package/src/renderers/webgl/WebGLUtils.js +1 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +170 -34
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -7
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +42 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
- package/src/renderers/webgpu/WebGPUBackend.js +442 -127
- package/src/renderers/webgpu/WebGPURenderer.js +7 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +75 -27
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +3 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -5
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +34 -4
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +44 -49
- package/src/renderers/webxr/WebXRController.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +2 -1
- package/src/textures/DepthTexture.js +6 -10
- package/src/textures/Source.js +22 -0
- package/src/textures/Texture.js +118 -1
- package/src/textures/VideoTexture.js +1 -1
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
- package/src/core/RenderTargetArray.js +0 -40
package/src/Three.TSL.js
CHANGED
|
@@ -13,6 +13,7 @@ export const F_Schlick = TSL.F_Schlick;
|
|
|
13
13
|
export const Fn = TSL.Fn;
|
|
14
14
|
export const INFINITY = TSL.INFINITY;
|
|
15
15
|
export const If = TSL.If;
|
|
16
|
+
export const Switch = TSL.Switch;
|
|
16
17
|
export const Loop = TSL.Loop;
|
|
17
18
|
export const NodeShaderStage = TSL.NodeShaderStage;
|
|
18
19
|
export const NodeType = TSL.NodeType;
|
|
@@ -130,6 +131,8 @@ export const dFdx = TSL.dFdx;
|
|
|
130
131
|
export const dFdy = TSL.dFdy;
|
|
131
132
|
export const dashSize = TSL.dashSize;
|
|
132
133
|
export const debug = TSL.debug;
|
|
134
|
+
export const decrement = TSL.decrement;
|
|
135
|
+
export const decrementBefore = TSL.decrementBefore;
|
|
133
136
|
export const defaultBuildStages = TSL.defaultBuildStages;
|
|
134
137
|
export const defaultShaderStages = TSL.defaultShaderStages;
|
|
135
138
|
export const defined = TSL.defined;
|
|
@@ -183,6 +186,8 @@ export const getScreenPosition = TSL.getScreenPosition;
|
|
|
183
186
|
export const getShIrradianceAt = TSL.getShIrradianceAt;
|
|
184
187
|
export const getTextureIndex = TSL.getTextureIndex;
|
|
185
188
|
export const getViewPosition = TSL.getViewPosition;
|
|
189
|
+
export const getShadowMaterial = TSL.getShadowMaterial;
|
|
190
|
+
export const getShadowRenderObjectFunction = TSL.getShadowRenderObjectFunction;
|
|
186
191
|
export const glsl = TSL.glsl;
|
|
187
192
|
export const glslFn = TSL.glslFn;
|
|
188
193
|
export const grayscale = TSL.grayscale;
|
|
@@ -192,6 +197,8 @@ export const hash = TSL.hash;
|
|
|
192
197
|
export const highpModelNormalViewMatrix = TSL.highpModelNormalViewMatrix;
|
|
193
198
|
export const highpModelViewMatrix = TSL.highpModelViewMatrix;
|
|
194
199
|
export const hue = TSL.hue;
|
|
200
|
+
export const increment = TSL.increment;
|
|
201
|
+
export const incrementBefore = TSL.incrementBefore;
|
|
195
202
|
export const instance = TSL.instance;
|
|
196
203
|
export const instanceIndex = TSL.instanceIndex;
|
|
197
204
|
export const instancedArray = TSL.instancedArray;
|
|
@@ -217,6 +224,7 @@ export const lengthSq = TSL.lengthSq;
|
|
|
217
224
|
export const lessThan = TSL.lessThan;
|
|
218
225
|
export const lessThanEqual = TSL.lessThanEqual;
|
|
219
226
|
export const lightPosition = TSL.lightPosition;
|
|
227
|
+
export const lightShadowMatrix = TSL.lightShadowMatrix;
|
|
220
228
|
export const lightTargetDirection = TSL.lightTargetDirection;
|
|
221
229
|
export const lightTargetPosition = TSL.lightTargetPosition;
|
|
222
230
|
export const lightViewPosition = TSL.lightViewPosition;
|
|
@@ -319,6 +327,7 @@ export const mx_transform_uv = TSL.mx_transform_uv;
|
|
|
319
327
|
export const mx_worley_noise_float = TSL.mx_worley_noise_float;
|
|
320
328
|
export const mx_worley_noise_vec2 = TSL.mx_worley_noise_vec2;
|
|
321
329
|
export const mx_worley_noise_vec3 = TSL.mx_worley_noise_vec3;
|
|
330
|
+
export const namespace = TSL.namespace;
|
|
322
331
|
export const negate = TSL.negate;
|
|
323
332
|
export const neutralToneMapping = TSL.neutralToneMapping;
|
|
324
333
|
export const nodeArray = TSL.nodeArray;
|
|
@@ -377,6 +386,7 @@ export const pow = TSL.pow;
|
|
|
377
386
|
export const pow2 = TSL.pow2;
|
|
378
387
|
export const pow3 = TSL.pow3;
|
|
379
388
|
export const pow4 = TSL.pow4;
|
|
389
|
+
export const premult = TSL.premult;
|
|
380
390
|
export const property = TSL.property;
|
|
381
391
|
export const radians = TSL.radians;
|
|
382
392
|
export const rand = TSL.rand;
|
|
@@ -469,13 +479,10 @@ export const textureLoad = TSL.textureLoad;
|
|
|
469
479
|
export const textureSize = TSL.textureSize;
|
|
470
480
|
export const textureStore = TSL.textureStore;
|
|
471
481
|
export const thickness = TSL.thickness;
|
|
472
|
-
export const threshold = TSL.threshold;
|
|
473
482
|
export const time = TSL.time;
|
|
474
483
|
export const timerDelta = TSL.timerDelta;
|
|
475
484
|
export const timerGlobal = TSL.timerGlobal;
|
|
476
485
|
export const timerLocal = TSL.timerLocal;
|
|
477
|
-
export const toOutputColorSpace = TSL.toOutputColorSpace;
|
|
478
|
-
export const toWorkingColorSpace = TSL.toWorkingColorSpace;
|
|
479
486
|
export const toneMapping = TSL.toneMapping;
|
|
480
487
|
export const toneMappingExposure = TSL.toneMappingExposure;
|
|
481
488
|
export const toonOutlinePass = TSL.toonOutlinePass;
|
|
@@ -492,8 +499,6 @@ export const transformedTangentView = TSL.transformedTangentView;
|
|
|
492
499
|
export const transformedTangentWorld = TSL.transformedTangentWorld;
|
|
493
500
|
export const transmission = TSL.transmission;
|
|
494
501
|
export const transpose = TSL.transpose;
|
|
495
|
-
export const tri = TSL.tri;
|
|
496
|
-
export const tri3 = TSL.tri3;
|
|
497
502
|
export const triNoise3D = TSL.triNoise3D;
|
|
498
503
|
export const triplanarTexture = TSL.triplanarTexture;
|
|
499
504
|
export const triplanarTextures = TSL.triplanarTextures;
|
|
@@ -501,9 +506,12 @@ export const trunc = TSL.trunc;
|
|
|
501
506
|
export const tslFn = TSL.tslFn;
|
|
502
507
|
export const uint = TSL.uint;
|
|
503
508
|
export const uniform = TSL.uniform;
|
|
509
|
+
export const uniformCubeTexture = TSL.uniformCubeTexture;
|
|
504
510
|
export const uniformArray = TSL.uniformArray;
|
|
505
511
|
export const uniformGroup = TSL.uniformGroup;
|
|
512
|
+
export const uniformTexture = TSL.uniformTexture;
|
|
506
513
|
export const uniforms = TSL.uniforms;
|
|
514
|
+
export const unpremult = TSL.unpremult;
|
|
507
515
|
export const userData = TSL.userData;
|
|
508
516
|
export const uv = TSL.uv;
|
|
509
517
|
export const uvec2 = TSL.uvec2;
|
|
@@ -14,6 +14,7 @@ export { default as StorageBufferAttribute } from './renderers/common/StorageBuf
|
|
|
14
14
|
export { default as StorageInstancedBufferAttribute } from './renderers/common/StorageInstancedBufferAttribute.js';
|
|
15
15
|
export { default as IndirectStorageBufferAttribute } from './renderers/common/IndirectStorageBufferAttribute.js';
|
|
16
16
|
export { default as IESSpotLight } from './lights/webgpu/IESSpotLight.js';
|
|
17
|
+
export { default as ProjectorLight } from './lights/webgpu/ProjectorLight.js';
|
|
17
18
|
export { default as NodeLoader } from './loaders/nodes/NodeLoader.js';
|
|
18
19
|
export { default as NodeObjectLoader } from './loaders/nodes/NodeObjectLoader.js';
|
|
19
20
|
export { default as NodeMaterialLoader } from './loaders/nodes/NodeMaterialLoader.js';
|
package/src/Three.WebGPU.js
CHANGED
|
@@ -14,6 +14,7 @@ export { default as StorageBufferAttribute } from './renderers/common/StorageBuf
|
|
|
14
14
|
export { default as StorageInstancedBufferAttribute } from './renderers/common/StorageInstancedBufferAttribute.js';
|
|
15
15
|
export { default as IndirectStorageBufferAttribute } from './renderers/common/IndirectStorageBufferAttribute.js';
|
|
16
16
|
export { default as IESSpotLight } from './lights/webgpu/IESSpotLight.js';
|
|
17
|
+
export { default as ProjectorLight } from './lights/webgpu/ProjectorLight.js';
|
|
17
18
|
export { default as NodeLoader } from './loaders/nodes/NodeLoader.js';
|
|
18
19
|
export { default as NodeObjectLoader } from './loaders/nodes/NodeObjectLoader.js';
|
|
19
20
|
export { default as NodeMaterialLoader } from './loaders/nodes/NodeMaterialLoader.js';
|
|
@@ -7,7 +7,9 @@ import { AudioContext } from './AudioContext.js';
|
|
|
7
7
|
const _position = /*@__PURE__*/ new Vector3();
|
|
8
8
|
const _quaternion = /*@__PURE__*/ new Quaternion();
|
|
9
9
|
const _scale = /*@__PURE__*/ new Vector3();
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
const _forward = /*@__PURE__*/ new Vector3();
|
|
12
|
+
const _up = /*@__PURE__*/ new Vector3();
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* The class represents a virtual listener of the all positional and non-positional audio effects
|
|
@@ -175,13 +177,14 @@ class AudioListener extends Object3D {
|
|
|
175
177
|
super.updateMatrixWorld( force );
|
|
176
178
|
|
|
177
179
|
const listener = this.context.listener;
|
|
178
|
-
const up = this.up;
|
|
179
180
|
|
|
180
181
|
this.timeDelta = this._clock.getDelta();
|
|
181
182
|
|
|
182
183
|
this.matrixWorld.decompose( _position, _quaternion, _scale );
|
|
183
184
|
|
|
184
|
-
|
|
185
|
+
// the initial forward and up directions must be orthogonal
|
|
186
|
+
_forward.set( 0, 0, - 1 ).applyQuaternion( _quaternion );
|
|
187
|
+
_up.set( 0, 1, 0 ).applyQuaternion( _quaternion );
|
|
185
188
|
|
|
186
189
|
if ( listener.positionX ) {
|
|
187
190
|
|
|
@@ -192,17 +195,17 @@ class AudioListener extends Object3D {
|
|
|
192
195
|
listener.positionX.linearRampToValueAtTime( _position.x, endTime );
|
|
193
196
|
listener.positionY.linearRampToValueAtTime( _position.y, endTime );
|
|
194
197
|
listener.positionZ.linearRampToValueAtTime( _position.z, endTime );
|
|
195
|
-
listener.forwardX.linearRampToValueAtTime(
|
|
196
|
-
listener.forwardY.linearRampToValueAtTime(
|
|
197
|
-
listener.forwardZ.linearRampToValueAtTime(
|
|
198
|
-
listener.upX.linearRampToValueAtTime(
|
|
199
|
-
listener.upY.linearRampToValueAtTime(
|
|
200
|
-
listener.upZ.linearRampToValueAtTime(
|
|
198
|
+
listener.forwardX.linearRampToValueAtTime( _forward.x, endTime );
|
|
199
|
+
listener.forwardY.linearRampToValueAtTime( _forward.y, endTime );
|
|
200
|
+
listener.forwardZ.linearRampToValueAtTime( _forward.z, endTime );
|
|
201
|
+
listener.upX.linearRampToValueAtTime( _up.x, endTime );
|
|
202
|
+
listener.upY.linearRampToValueAtTime( _up.y, endTime );
|
|
203
|
+
listener.upZ.linearRampToValueAtTime( _up.z, endTime );
|
|
201
204
|
|
|
202
205
|
} else {
|
|
203
206
|
|
|
204
207
|
listener.setPosition( _position.x, _position.y, _position.z );
|
|
205
|
-
listener.setOrientation(
|
|
208
|
+
listener.setOrientation( _forward.x, _forward.y, _forward.z, _up.x, _up.y, _up.z );
|
|
206
209
|
|
|
207
210
|
}
|
|
208
211
|
|
|
@@ -31,13 +31,21 @@ class ArrayCamera extends PerspectiveCamera {
|
|
|
31
31
|
*/
|
|
32
32
|
this.isArrayCamera = true;
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Whether this camera is used with multiview rendering or not.
|
|
36
|
+
*
|
|
37
|
+
* @type {boolean}
|
|
38
|
+
* @readonly
|
|
39
|
+
* @default false
|
|
40
|
+
*/
|
|
41
|
+
this.isMultiViewCamera = false;
|
|
42
|
+
|
|
34
43
|
/**
|
|
35
44
|
* An array of perspective sub cameras.
|
|
36
45
|
*
|
|
37
46
|
* @type {Array<PerspectiveCamera>}
|
|
38
47
|
*/
|
|
39
48
|
this.cameras = array;
|
|
40
|
-
this.index = 0;
|
|
41
49
|
|
|
42
50
|
}
|
|
43
51
|
|
package/src/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const REVISION = '
|
|
1
|
+
export const REVISION = '177';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Represents mouse buttons and interaction types in context of controls.
|
|
@@ -745,25 +745,6 @@ export const RGBFormat = 1022;
|
|
|
745
745
|
*/
|
|
746
746
|
export const RGBAFormat = 1023;
|
|
747
747
|
|
|
748
|
-
/**
|
|
749
|
-
* reads each element as a single luminance component. This is then converted to a floating point,
|
|
750
|
-
* clamped to the range `[0,1]`, and then assembled into an RGBA element by placing the luminance value
|
|
751
|
-
* in the red, green and blue channels, and attaching 1.0 to the alpha channel.
|
|
752
|
-
*
|
|
753
|
-
* @type {number}
|
|
754
|
-
* @constant
|
|
755
|
-
*/
|
|
756
|
-
export const LuminanceFormat = 1024;
|
|
757
|
-
|
|
758
|
-
/**
|
|
759
|
-
* Reads each element as a luminance/alpha double. The same process occurs as for the `LuminanceFormat`,
|
|
760
|
-
* except that the alpha channel may have values other than `1.0`.
|
|
761
|
-
*
|
|
762
|
-
* @type {number}
|
|
763
|
-
* @constant
|
|
764
|
-
*/
|
|
765
|
-
export const LuminanceAlphaFormat = 1025;
|
|
766
|
-
|
|
767
748
|
/**
|
|
768
749
|
* Reads each element as a single depth value, converts it to floating point, and clamps to the range `[0,1]`.
|
|
769
750
|
*
|
|
@@ -1609,6 +1590,32 @@ export const TimestampQuery = {
|
|
|
1609
1590
|
RENDER: 'render'
|
|
1610
1591
|
};
|
|
1611
1592
|
|
|
1593
|
+
/**
|
|
1594
|
+
* Represents mouse buttons and interaction types in context of controls.
|
|
1595
|
+
*
|
|
1596
|
+
* @type {ConstantsInterpolationSamplingType}
|
|
1597
|
+
* @constant
|
|
1598
|
+
*/
|
|
1599
|
+
export const InterpolationSamplingType = {
|
|
1600
|
+
PERSPECTIVE: 'perspective',
|
|
1601
|
+
LINEAR: 'linear',
|
|
1602
|
+
FLAT: 'flat'
|
|
1603
|
+
};
|
|
1604
|
+
|
|
1605
|
+
/**
|
|
1606
|
+
* Represents the different interpolation sampling modes.
|
|
1607
|
+
*
|
|
1608
|
+
* @type {ConstantsInterpolationSamplingMode}
|
|
1609
|
+
* @constant
|
|
1610
|
+
*/
|
|
1611
|
+
export const InterpolationSamplingMode = {
|
|
1612
|
+
NORMAL: 'normal',
|
|
1613
|
+
CENTROID: 'centroid',
|
|
1614
|
+
SAMPLE: 'sample',
|
|
1615
|
+
FLAT_FIRST: 'flat first',
|
|
1616
|
+
FLAT_EITHER: 'flat either'
|
|
1617
|
+
};
|
|
1618
|
+
|
|
1612
1619
|
/**
|
|
1613
1620
|
* This type represents mouse buttons and interaction types in context of controls.
|
|
1614
1621
|
*
|
|
@@ -1638,3 +1645,23 @@ export const TimestampQuery = {
|
|
|
1638
1645
|
* @property {string} COMPUTE - A `compute` timestamp query.
|
|
1639
1646
|
* @property {string} RENDER - A `render` timestamp query.
|
|
1640
1647
|
**/
|
|
1648
|
+
|
|
1649
|
+
/**
|
|
1650
|
+
* Represents the different interpolation sampling types.
|
|
1651
|
+
*
|
|
1652
|
+
* @typedef {Object} ConstantsInterpolationSamplingType
|
|
1653
|
+
* @property {string} PERSPECTIVE - Perspective-correct interpolation.
|
|
1654
|
+
* @property {string} LINEAR - Linear interpolation.
|
|
1655
|
+
* @property {string} FLAT - Flat interpolation.
|
|
1656
|
+
*/
|
|
1657
|
+
|
|
1658
|
+
/**
|
|
1659
|
+
* Represents the different interpolation sampling modes.
|
|
1660
|
+
*
|
|
1661
|
+
* @typedef {Object} ConstantsInterpolationSamplingMode
|
|
1662
|
+
* @property {string} NORMAL - Normal sampling mode.
|
|
1663
|
+
* @property {string} CENTROID - Centroid sampling mode.
|
|
1664
|
+
* @property {string} SAMPLE - Sample-specific sampling mode.
|
|
1665
|
+
* @property {string} FLAT_FIRST - Flat interpolation using the first vertex.
|
|
1666
|
+
* @property {string} FLAT_EITHER - Flat interpolation using either vertex.
|
|
1667
|
+
*/
|
|
@@ -841,7 +841,7 @@ class Uint32BufferAttribute extends BufferAttribute {
|
|
|
841
841
|
* Convenient class that can be used when creating a `Float16` buffer attribute with
|
|
842
842
|
* a plain `Array` instance.
|
|
843
843
|
*
|
|
844
|
-
* This class automatically converts to
|
|
844
|
+
* This class automatically converts to and from FP16 since `Float16Array` is not
|
|
845
845
|
* natively supported in JavaScript.
|
|
846
846
|
*
|
|
847
847
|
* @augments BufferAttribute
|
|
@@ -1201,7 +1201,7 @@ class BufferGeometry extends EventDispatcher {
|
|
|
1201
1201
|
|
|
1202
1202
|
const data = {
|
|
1203
1203
|
metadata: {
|
|
1204
|
-
version: 4.
|
|
1204
|
+
version: 4.7,
|
|
1205
1205
|
type: 'BufferGeometry',
|
|
1206
1206
|
generator: 'BufferGeometry.toJSON'
|
|
1207
1207
|
}
|
|
@@ -1299,10 +1299,7 @@ class BufferGeometry extends EventDispatcher {
|
|
|
1299
1299
|
|
|
1300
1300
|
if ( boundingSphere !== null ) {
|
|
1301
1301
|
|
|
1302
|
-
data.data.boundingSphere =
|
|
1303
|
-
center: boundingSphere.center.toArray(),
|
|
1304
|
-
radius: boundingSphere.radius
|
|
1305
|
-
};
|
|
1302
|
+
data.data.boundingSphere = boundingSphere.toJSON();
|
|
1306
1303
|
|
|
1307
1304
|
}
|
|
1308
1305
|
|
package/src/core/Object3D.js
CHANGED
|
@@ -1246,7 +1246,7 @@ class Object3D extends EventDispatcher {
|
|
|
1246
1246
|
};
|
|
1247
1247
|
|
|
1248
1248
|
output.metadata = {
|
|
1249
|
-
version: 4.
|
|
1249
|
+
version: 4.7,
|
|
1250
1250
|
type: 'Object',
|
|
1251
1251
|
generator: 'Object3D.toJSON'
|
|
1252
1252
|
};
|
|
@@ -1294,44 +1294,45 @@ class Object3D extends EventDispatcher {
|
|
|
1294
1294
|
object.drawRanges = this._drawRanges;
|
|
1295
1295
|
object.reservedRanges = this._reservedRanges;
|
|
1296
1296
|
|
|
1297
|
-
object.
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
boxMin: bound.box.min.toArray(),
|
|
1302
|
-
boxMax: bound.box.max.toArray(),
|
|
1303
|
-
|
|
1304
|
-
sphereInitialized: bound.sphereInitialized,
|
|
1305
|
-
sphereRadius: bound.sphere.radius,
|
|
1306
|
-
sphereCenter: bound.sphere.center.toArray()
|
|
1297
|
+
object.geometryInfo = this._geometryInfo.map( info => ( {
|
|
1298
|
+
...info,
|
|
1299
|
+
boundingBox: info.boundingBox ? info.boundingBox.toJSON() : undefined,
|
|
1300
|
+
boundingSphere: info.boundingSphere ? info.boundingSphere.toJSON() : undefined
|
|
1307
1301
|
} ) );
|
|
1302
|
+
object.instanceInfo = this._instanceInfo.map( info => ( { ...info } ) );
|
|
1303
|
+
|
|
1304
|
+
object.availableInstanceIds = this._availableInstanceIds.slice();
|
|
1305
|
+
object.availableGeometryIds = this._availableGeometryIds.slice();
|
|
1306
|
+
|
|
1307
|
+
object.nextIndexStart = this._nextIndexStart;
|
|
1308
|
+
object.nextVertexStart = this._nextVertexStart;
|
|
1309
|
+
object.geometryCount = this._geometryCount;
|
|
1308
1310
|
|
|
1309
1311
|
object.maxInstanceCount = this._maxInstanceCount;
|
|
1310
1312
|
object.maxVertexCount = this._maxVertexCount;
|
|
1311
1313
|
object.maxIndexCount = this._maxIndexCount;
|
|
1312
1314
|
|
|
1313
1315
|
object.geometryInitialized = this._geometryInitialized;
|
|
1314
|
-
object.geometryCount = this._geometryCount;
|
|
1315
1316
|
|
|
1316
1317
|
object.matricesTexture = this._matricesTexture.toJSON( meta );
|
|
1317
1318
|
|
|
1318
|
-
|
|
1319
|
+
object.indirectTexture = this._indirectTexture.toJSON( meta );
|
|
1320
|
+
|
|
1321
|
+
if ( this._colorsTexture !== null ) {
|
|
1322
|
+
|
|
1323
|
+
object.colorsTexture = this._colorsTexture.toJSON( meta );
|
|
1324
|
+
|
|
1325
|
+
}
|
|
1319
1326
|
|
|
1320
1327
|
if ( this.boundingSphere !== null ) {
|
|
1321
1328
|
|
|
1322
|
-
object.boundingSphere =
|
|
1323
|
-
center: object.boundingSphere.center.toArray(),
|
|
1324
|
-
radius: object.boundingSphere.radius
|
|
1325
|
-
};
|
|
1329
|
+
object.boundingSphere = this.boundingSphere.toJSON();
|
|
1326
1330
|
|
|
1327
1331
|
}
|
|
1328
1332
|
|
|
1329
1333
|
if ( this.boundingBox !== null ) {
|
|
1330
1334
|
|
|
1331
|
-
object.boundingBox =
|
|
1332
|
-
min: object.boundingBox.min.toArray(),
|
|
1333
|
-
max: object.boundingBox.max.toArray()
|
|
1334
|
-
};
|
|
1335
|
+
object.boundingBox = this.boundingBox.toJSON();
|
|
1335
1336
|
|
|
1336
1337
|
}
|
|
1337
1338
|
|
package/src/core/RenderTarget.js
CHANGED
|
@@ -35,6 +35,8 @@ class RenderTarget extends EventDispatcher {
|
|
|
35
35
|
* @property {?Texture} [depthTexture=null] - Reference to a depth texture.
|
|
36
36
|
* @property {number} [samples=0] - The MSAA samples count.
|
|
37
37
|
* @property {number} [count=1] - Defines the number of color attachments . Must be at least `1`.
|
|
38
|
+
* @property {number} [depth=1] - The texture depth.
|
|
39
|
+
* @property {boolean} [multiview=false] - Whether this target is used for multiview rendering.
|
|
38
40
|
*/
|
|
39
41
|
|
|
40
42
|
/**
|
|
@@ -48,6 +50,21 @@ class RenderTarget extends EventDispatcher {
|
|
|
48
50
|
|
|
49
51
|
super();
|
|
50
52
|
|
|
53
|
+
options = Object.assign( {
|
|
54
|
+
generateMipmaps: false,
|
|
55
|
+
internalFormat: null,
|
|
56
|
+
minFilter: LinearFilter,
|
|
57
|
+
depthBuffer: true,
|
|
58
|
+
stencilBuffer: false,
|
|
59
|
+
resolveDepthBuffer: true,
|
|
60
|
+
resolveStencilBuffer: true,
|
|
61
|
+
depthTexture: null,
|
|
62
|
+
samples: 0,
|
|
63
|
+
count: 1,
|
|
64
|
+
depth: 1,
|
|
65
|
+
multiview: false
|
|
66
|
+
}, options );
|
|
67
|
+
|
|
51
68
|
/**
|
|
52
69
|
* This flag can be used for type testing.
|
|
53
70
|
*
|
|
@@ -79,7 +96,7 @@ class RenderTarget extends EventDispatcher {
|
|
|
79
96
|
* @type {number}
|
|
80
97
|
* @default 1
|
|
81
98
|
*/
|
|
82
|
-
this.depth =
|
|
99
|
+
this.depth = options.depth;
|
|
83
100
|
|
|
84
101
|
/**
|
|
85
102
|
* A rectangular area inside the render target's viewport. Fragments that are
|
|
@@ -107,26 +124,9 @@ class RenderTarget extends EventDispatcher {
|
|
|
107
124
|
*/
|
|
108
125
|
this.viewport = new Vector4( 0, 0, width, height );
|
|
109
126
|
|
|
110
|
-
const image = { width: width, height: height, depth:
|
|
111
|
-
|
|
112
|
-
options = Object.assign( {
|
|
113
|
-
generateMipmaps: false,
|
|
114
|
-
internalFormat: null,
|
|
115
|
-
minFilter: LinearFilter,
|
|
116
|
-
depthBuffer: true,
|
|
117
|
-
stencilBuffer: false,
|
|
118
|
-
resolveDepthBuffer: true,
|
|
119
|
-
resolveStencilBuffer: true,
|
|
120
|
-
depthTexture: null,
|
|
121
|
-
samples: 0,
|
|
122
|
-
count: 1
|
|
123
|
-
}, options );
|
|
124
|
-
|
|
125
|
-
const texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );
|
|
127
|
+
const image = { width: width, height: height, depth: options.depth };
|
|
126
128
|
|
|
127
|
-
texture
|
|
128
|
-
texture.generateMipmaps = options.generateMipmaps;
|
|
129
|
-
texture.internalFormat = options.internalFormat;
|
|
129
|
+
const texture = new Texture( image );
|
|
130
130
|
|
|
131
131
|
/**
|
|
132
132
|
* An array of textures. Each color attachment is represented as a separate texture.
|
|
@@ -145,6 +145,8 @@ class RenderTarget extends EventDispatcher {
|
|
|
145
145
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
+
this._setTextureOptions( options );
|
|
149
|
+
|
|
148
150
|
/**
|
|
149
151
|
* Whether to allocate a depth buffer or not.
|
|
150
152
|
*
|
|
@@ -177,7 +179,8 @@ class RenderTarget extends EventDispatcher {
|
|
|
177
179
|
*/
|
|
178
180
|
this.resolveStencilBuffer = options.resolveStencilBuffer;
|
|
179
181
|
|
|
180
|
-
this._depthTexture =
|
|
182
|
+
this._depthTexture = null;
|
|
183
|
+
this.depthTexture = options.depthTexture;
|
|
181
184
|
|
|
182
185
|
/**
|
|
183
186
|
* The number of MSAA samples.
|
|
@@ -189,6 +192,46 @@ class RenderTarget extends EventDispatcher {
|
|
|
189
192
|
*/
|
|
190
193
|
this.samples = options.samples;
|
|
191
194
|
|
|
195
|
+
/**
|
|
196
|
+
* Whether to this target is used in multiview rendering.
|
|
197
|
+
*
|
|
198
|
+
* @type {boolean}
|
|
199
|
+
* @default false
|
|
200
|
+
*/
|
|
201
|
+
this.multiview = options.multiview;
|
|
202
|
+
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
_setTextureOptions( options = {} ) {
|
|
206
|
+
|
|
207
|
+
const values = {
|
|
208
|
+
minFilter: LinearFilter,
|
|
209
|
+
generateMipmaps: false,
|
|
210
|
+
flipY: false,
|
|
211
|
+
internalFormat: null
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
if ( options.mapping !== undefined ) values.mapping = options.mapping;
|
|
215
|
+
if ( options.wrapS !== undefined ) values.wrapS = options.wrapS;
|
|
216
|
+
if ( options.wrapT !== undefined ) values.wrapT = options.wrapT;
|
|
217
|
+
if ( options.wrapR !== undefined ) values.wrapR = options.wrapR;
|
|
218
|
+
if ( options.magFilter !== undefined ) values.magFilter = options.magFilter;
|
|
219
|
+
if ( options.minFilter !== undefined ) values.minFilter = options.minFilter;
|
|
220
|
+
if ( options.format !== undefined ) values.format = options.format;
|
|
221
|
+
if ( options.type !== undefined ) values.type = options.type;
|
|
222
|
+
if ( options.anisotropy !== undefined ) values.anisotropy = options.anisotropy;
|
|
223
|
+
if ( options.colorSpace !== undefined ) values.colorSpace = options.colorSpace;
|
|
224
|
+
if ( options.flipY !== undefined ) values.flipY = options.flipY;
|
|
225
|
+
if ( options.generateMipmaps !== undefined ) values.generateMipmaps = options.generateMipmaps;
|
|
226
|
+
if ( options.internalFormat !== undefined ) values.internalFormat = options.internalFormat;
|
|
227
|
+
|
|
228
|
+
for ( let i = 0; i < this.textures.length; i ++ ) {
|
|
229
|
+
|
|
230
|
+
const texture = this.textures[ i ];
|
|
231
|
+
texture.setValues( values );
|
|
232
|
+
|
|
233
|
+
}
|
|
234
|
+
|
|
192
235
|
}
|
|
193
236
|
|
|
194
237
|
/**
|
|
@@ -251,6 +294,7 @@ class RenderTarget extends EventDispatcher {
|
|
|
251
294
|
this.textures[ i ].image.width = width;
|
|
252
295
|
this.textures[ i ].image.height = height;
|
|
253
296
|
this.textures[ i ].image.depth = depth;
|
|
297
|
+
this.textures[ i ].isArrayTexture = this.textures[ i ].image.depth > 1;
|
|
254
298
|
|
|
255
299
|
}
|
|
256
300
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AlphaFormat,
|
|
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 } from '../constants.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Scales the texture as large as possible within its surface without cropping
|
|
@@ -106,10 +106,6 @@ function getByteLength( width, height, format, type ) {
|
|
|
106
106
|
// https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml
|
|
107
107
|
case AlphaFormat:
|
|
108
108
|
return width * height;
|
|
109
|
-
case LuminanceFormat:
|
|
110
|
-
return width * height;
|
|
111
|
-
case LuminanceAlphaFormat:
|
|
112
|
-
return width * height * 2;
|
|
113
109
|
case RedFormat:
|
|
114
110
|
return ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength;
|
|
115
111
|
case RedIntegerFormat:
|