@plastic-software/three 0.175.14 → 0.179.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 +4 -4
- package/build/three.cjs +8402 -6787
- package/build/three.core.js +8007 -6688
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +397 -102
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +84 -27
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +6831 -2838
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +6648 -2838
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -3
- package/examples/jsm/animation/AnimationClipCreator.js +1 -0
- package/examples/jsm/animation/CCDIKSolver.js +6 -3
- package/examples/jsm/capabilities/WebGL.js +1 -27
- package/examples/jsm/capabilities/WebGPU.js +2 -1
- package/examples/jsm/controls/ArcballControls.js +15 -4
- 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 +62 -14
- 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 +22 -8
- 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 +57 -38
- 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 +679 -300
- 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 +48 -8
- 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 +11 -2
- 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/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lighting/TiledLighting.js +1 -0
- package/examples/jsm/lights/LightProbeGenerator.js +15 -3
- 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 +6 -5
- package/examples/jsm/loaders/DDSLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -1
- package/examples/jsm/loaders/EXRLoader.js +211 -22
- package/examples/jsm/loaders/FBXLoader.js +25 -23
- 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 +213 -30
- 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 +14 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -891
- 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/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- 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/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 +4 -3
- 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 +22 -19
- 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 +149 -13
- 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 +4 -2
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +1 -0
- package/examples/jsm/postprocessing/GTAOPass.js +14 -12
- 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 +22 -19
- 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 +12 -10
- 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 +15 -3
- 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/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +227 -88
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +234 -85
- package/examples/jsm/transpiler/Transpiler.js +19 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +788 -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 +9 -7
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -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 +9 -36
- 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 +5 -4
- 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 → TRAANode.js} +184 -174
- 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 +5 -4
- 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 +2 -1
- package/src/Three.TSL.js +83 -26
- package/src/Three.WebGPU.Nodes.js +1 -0
- package/src/Three.WebGPU.js +3 -0
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/AudioListener.js +13 -10
- package/src/cameras/ArrayCamera.js +9 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/constants.js +47 -20
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +2 -5
- package/src/core/Clock.js +2 -8
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/Object3D.js +23 -22
- package/src/core/RenderTarget.js +65 -21
- package/src/core/RenderTarget3D.js +1 -0
- package/{examples/jsm/misc → src/core}/Timer.js +4 -40
- package/src/extras/PMREMGenerator.js +11 -0
- package/src/extras/TextureUtils.js +1 -5
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +22 -22
- package/src/geometries/CapsuleGeometry.js +167 -17
- package/src/geometries/ExtrudeGeometry.js +39 -29
- package/src/helpers/ArrowHelper.js +2 -2
- package/src/helpers/CameraHelper.js +41 -11
- package/src/helpers/SkeletonHelper.js +36 -7
- package/src/lights/LightShadow.js +34 -7
- package/src/lights/PointLightShadow.js +1 -1
- 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/FileLoader.js +27 -4
- package/src/loaders/ImageBitmapLoader.js +48 -9
- package/src/loaders/ImageLoader.js +55 -8
- package/src/loaders/Loader.js +14 -0
- package/src/loaders/LoadingManager.js +23 -0
- 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/MeshBasicMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +0 -8
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +106 -20
- package/src/materials/nodes/PointsNodeMaterial.js +5 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +107 -4
- package/src/math/Box3.js +28 -0
- package/src/math/Color.js +7 -7
- package/src/math/ColorManagement.js +22 -3
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +258 -0
- package/src/math/Line3.js +129 -2
- package/src/math/Matrix4.js +48 -27
- package/src/math/Quaternion.js +1 -1
- package/src/math/Ray.js +2 -0
- package/src/math/Sphere.js +28 -0
- package/src/math/Spherical.js +2 -2
- package/src/nodes/Nodes.js +3 -3
- package/src/nodes/TSL.js +6 -3
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +54 -26
- package/src/nodes/accessors/Camera.js +40 -13
- 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 +110 -24
- package/src/nodes/accessors/Object3DNode.js +7 -8
- package/src/nodes/accessors/Position.js +14 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +19 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.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 +15 -4
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +71 -8
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- 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/ArrayNode.js +12 -0
- package/src/nodes/core/AssignNode.js +30 -5
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/ContextNode.js +27 -4
- package/src/nodes/core/Node.js +83 -22
- package/src/nodes/core/NodeBuilder.js +273 -49
- package/src/nodes/core/NodeUtils.js +46 -1
- package/src/nodes/core/NodeVarying.js +19 -1
- package/src/nodes/core/PropertyNode.js +8 -12
- package/src/nodes/core/StackNode.js +171 -26
- package/src/nodes/core/StructTypeNode.js +26 -4
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +63 -5
- package/src/nodes/core/VarNode.js +102 -4
- package/src/nodes/core/VaryingNode.js +45 -24
- package/src/nodes/display/BlendModes.js +42 -1
- package/src/nodes/display/ColorSpaceNode.js +4 -27
- package/src/nodes/display/FrontFacingNode.js +34 -2
- package/src/nodes/display/NormalMapNode.js +19 -50
- package/src/nodes/display/PassNode.js +165 -20
- package/src/nodes/display/ScreenNode.js +0 -26
- package/src/nodes/display/ViewportTextureNode.js +67 -7
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +16 -16
- package/src/nodes/functions/ShadowMaskModel.js +5 -1
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- 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 +68 -24
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +28 -3
- package/src/nodes/lighting/AnalyticLightNode.js +7 -13
- package/src/nodes/lighting/EnvironmentNode.js +5 -5
- package/src/nodes/lighting/HemisphereLightNode.js +2 -2
- package/src/nodes/lighting/IESSpotLightNode.js +2 -1
- package/src/nodes/lighting/LightsNode.js +29 -11
- package/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/src/nodes/lighting/ShadowBaseNode.js +1 -12
- package/src/nodes/lighting/ShadowFilterNode.js +274 -0
- package/src/nodes/lighting/ShadowNode.js +174 -242
- package/src/nodes/lighting/SpotLightNode.js +44 -7
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +166 -2
- package/src/nodes/math/ConditionalNode.js +1 -20
- package/src/nodes/math/MathNode.js +146 -75
- package/src/nodes/math/OperatorNode.js +129 -119
- package/src/nodes/shapes/Shapes.js +5 -4
- package/src/nodes/tsl/TSLBase.js +1 -0
- package/src/nodes/tsl/TSLCore.js +222 -72
- package/src/nodes/utils/DebugNode.js +16 -4
- package/src/nodes/utils/Discard.js +2 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +83 -0
- package/src/nodes/utils/LoopNode.js +64 -34
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/RTTNode.js +22 -5
- package/src/nodes/utils/ReflectorNode.js +77 -7
- package/src/nodes/utils/SampleNode.js +81 -0
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +20 -6
- 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 +45 -32
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Background.js +13 -2
- package/src/renderers/common/Bindings.js +19 -18
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/PostProcessing.js +60 -5
- package/src/renderers/common/RenderList.js +0 -4
- package/src/renderers/common/RenderObject.js +80 -4
- package/src/renderers/common/Renderer.js +133 -22
- package/src/renderers/common/SampledTexture.js +3 -71
- package/src/renderers/common/Sampler.js +79 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +19 -0
- package/src/renderers/common/Textures.js +34 -24
- 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 +183 -35
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +30 -23
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- 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/ShaderChunk/shadowmap_pars_fragment.glsl.js +20 -2
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl/WebGLMaterials.js +6 -6
- package/src/renderers/webgl/WebGLProgram.js +22 -16
- package/src/renderers/webgl/WebGLPrograms.js +8 -6
- package/src/renderers/webgl/WebGLShadowMap.js +14 -3
- package/src/renderers/webgl/WebGLState.js +4 -4
- package/src/renderers/webgl/WebGLTextures.js +163 -11
- package/src/renderers/webgl/WebGLUtils.js +1 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +261 -94
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -9
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
- package/src/renderers/webgpu/WebGPUBackend.js +505 -143
- 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 +129 -96
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +58 -31
- package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +50 -108
- package/src/renderers/webgpu/utils/WebGPUUtils.js +2 -17
- package/src/renderers/webxr/WebXRController.js +1 -1
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +70 -9
- package/src/textures/DepthTexture.js +6 -10
- package/src/textures/ExternalTexture.js +45 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +32 -0
- package/src/textures/Texture.js +118 -1
- package/src/textures/VideoTexture.js +31 -3
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
- package/src/core/RenderTargetArray.js +0 -40
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -88,7 +88,7 @@ class BufferAttribute {
|
|
|
88
88
|
/**
|
|
89
89
|
* Applies to integer data only. Indicates how the underlying data in the buffer maps to
|
|
90
90
|
* the values in the GLSL code. For instance, if `array` is an instance of `UInt16Array`,
|
|
91
|
-
* and `normalized` is `true`, the values `0
|
|
91
|
+
* and `normalized` is `true`, the values `0 - +65535` in the array data will be mapped to
|
|
92
92
|
* `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted
|
|
93
93
|
* to floats unmodified, i.e. `65535` becomes `65535.0f`.
|
|
94
94
|
*
|
|
@@ -841,8 +841,8 @@ 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
|
|
845
|
-
*
|
|
844
|
+
* This class automatically converts to and from FP16 via `Uint16Array` since `Float16Array`
|
|
845
|
+
* browser support is still problematic.
|
|
846
846
|
*
|
|
847
847
|
* @augments BufferAttribute
|
|
848
848
|
*/
|
|
@@ -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/Clock.js
CHANGED
|
@@ -61,7 +61,7 @@ class Clock {
|
|
|
61
61
|
*/
|
|
62
62
|
start() {
|
|
63
63
|
|
|
64
|
-
this.startTime = now();
|
|
64
|
+
this.startTime = performance.now();
|
|
65
65
|
|
|
66
66
|
this.oldTime = this.startTime;
|
|
67
67
|
this.elapsedTime = 0;
|
|
@@ -110,7 +110,7 @@ class Clock {
|
|
|
110
110
|
|
|
111
111
|
if ( this.running ) {
|
|
112
112
|
|
|
113
|
-
const newTime = now();
|
|
113
|
+
const newTime = performance.now();
|
|
114
114
|
|
|
115
115
|
diff = ( newTime - this.oldTime ) / 1000;
|
|
116
116
|
this.oldTime = newTime;
|
|
@@ -125,10 +125,4 @@ class Clock {
|
|
|
125
125
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
function now() {
|
|
129
|
-
|
|
130
|
-
return performance.now();
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
|
|
134
128
|
export { Clock };
|
|
@@ -19,8 +19,9 @@ class GLBufferAttribute {
|
|
|
19
19
|
* @param {number} itemSize - The item size.
|
|
20
20
|
* @param {number} elementSize - The corresponding size (in bytes) for the given `type` parameter.
|
|
21
21
|
* @param {number} count - The expected number of vertices in VBO.
|
|
22
|
+
* @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
22
23
|
*/
|
|
23
|
-
constructor( buffer, type, itemSize, elementSize, count ) {
|
|
24
|
+
constructor( buffer, type, itemSize, elementSize, count, normalized = false ) {
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* This flag can be used for type testing.
|
|
@@ -73,6 +74,17 @@ class GLBufferAttribute {
|
|
|
73
74
|
*/
|
|
74
75
|
this.count = count;
|
|
75
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Applies to integer data only. Indicates how the underlying data in the buffer maps to
|
|
79
|
+
* the values in the GLSL code. For instance, if `buffer` contains data of `gl.UNSIGNED_SHORT`,
|
|
80
|
+
* and `normalized` is `true`, the values `0 - +65535` in the buffer data will be mapped to
|
|
81
|
+
* `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted
|
|
82
|
+
* to floats unmodified, i.e. `65535` becomes `65535.0f`.
|
|
83
|
+
*
|
|
84
|
+
* @type {boolean}
|
|
85
|
+
*/
|
|
86
|
+
this.normalized = normalized;
|
|
87
|
+
|
|
76
88
|
/**
|
|
77
89
|
* A version number, incremented every time the `needsUpdate` is set to `true`.
|
|
78
90
|
*
|
package/src/core/Object3D.js
CHANGED
|
@@ -47,7 +47,7 @@ const _removedEvent = { type: 'removed' };
|
|
|
47
47
|
const _childaddedEvent = { type: 'childadded', child: null };
|
|
48
48
|
|
|
49
49
|
/**
|
|
50
|
-
* Fires when a
|
|
50
|
+
* Fires when a child object has been removed.
|
|
51
51
|
*
|
|
52
52
|
* @event Object3D#childremoved
|
|
53
53
|
* @type {Object}
|
|
@@ -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
|
|
|
@@ -21,7 +21,7 @@ class Timer {
|
|
|
21
21
|
|
|
22
22
|
this._previousTime = 0;
|
|
23
23
|
this._currentTime = 0;
|
|
24
|
-
this._startTime = now();
|
|
24
|
+
this._startTime = performance.now();
|
|
25
25
|
|
|
26
26
|
this._delta = 0;
|
|
27
27
|
this._elapsed = 0;
|
|
@@ -127,7 +127,7 @@ class Timer {
|
|
|
127
127
|
*/
|
|
128
128
|
reset() {
|
|
129
129
|
|
|
130
|
-
this._currentTime = now() - this._startTime;
|
|
130
|
+
this._currentTime = performance.now() - this._startTime;
|
|
131
131
|
|
|
132
132
|
return this;
|
|
133
133
|
|
|
@@ -162,7 +162,7 @@ class Timer {
|
|
|
162
162
|
} else {
|
|
163
163
|
|
|
164
164
|
this._previousTime = this._currentTime;
|
|
165
|
-
this._currentTime = ( timestamp !== undefined ? timestamp : now() ) - this._startTime;
|
|
165
|
+
this._currentTime = ( timestamp !== undefined ? timestamp : performance.now() ) - this._startTime;
|
|
166
166
|
|
|
167
167
|
this._delta = ( this._currentTime - this._previousTime ) * this._timescale;
|
|
168
168
|
this._elapsed += this._delta; // _elapsed is the accumulation of all previous deltas
|
|
@@ -175,46 +175,10 @@ class Timer {
|
|
|
175
175
|
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
/**
|
|
179
|
-
* A special version of a timer with a fixed time delta value.
|
|
180
|
-
* Can be useful for testing and debugging purposes.
|
|
181
|
-
*
|
|
182
|
-
* @augments Timer
|
|
183
|
-
*/
|
|
184
|
-
class FixedTimer extends Timer {
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Constructs a new timer.
|
|
188
|
-
*
|
|
189
|
-
* @param {number} [fps=60] - The fixed FPS of this timer.
|
|
190
|
-
*/
|
|
191
|
-
constructor( fps = 60 ) {
|
|
192
|
-
|
|
193
|
-
super();
|
|
194
|
-
this._delta = ( 1 / fps ) * 1000;
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
update() {
|
|
199
|
-
|
|
200
|
-
this._elapsed += ( this._delta * this._timescale ); // _elapsed is the accumulation of all previous deltas
|
|
201
|
-
|
|
202
|
-
return this;
|
|
203
|
-
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
function now() {
|
|
209
|
-
|
|
210
|
-
return performance.now();
|
|
211
|
-
|
|
212
|
-
}
|
|
213
|
-
|
|
214
178
|
function handleVisibilityChange() {
|
|
215
179
|
|
|
216
180
|
if ( this._document.hidden === false ) this.reset();
|
|
217
181
|
|
|
218
182
|
}
|
|
219
183
|
|
|
220
|
-
export { Timer
|
|
184
|
+
export { Timer };
|
|
@@ -347,6 +347,17 @@ class PMREMGenerator {
|
|
|
347
347
|
renderer.toneMapping = NoToneMapping;
|
|
348
348
|
renderer.autoClear = false;
|
|
349
349
|
|
|
350
|
+
// https://github.com/mrdoob/three.js/issues/31413#issuecomment-3095966812
|
|
351
|
+
const reversedDepthBuffer = renderer.state.buffers.depth.getReversed();
|
|
352
|
+
|
|
353
|
+
if ( reversedDepthBuffer ) {
|
|
354
|
+
|
|
355
|
+
renderer.setRenderTarget( cubeUVRenderTarget );
|
|
356
|
+
renderer.clearDepth();
|
|
357
|
+
renderer.setRenderTarget( null );
|
|
358
|
+
|
|
359
|
+
}
|
|
360
|
+
|
|
350
361
|
const backgroundMaterial = new MeshBasicMaterial( {
|
|
351
362
|
name: 'PMREM.Background',
|
|
352
363
|
side: BackSide,
|
|
@@ -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:
|
package/src/extras/core/Curve.js
CHANGED
package/src/extras/core/Path.js
CHANGED
|
@@ -190,11 +190,11 @@ class Path extends CurvePath {
|
|
|
190
190
|
* Adds an arc as an instance of {@link EllipseCurve} to the path, positioned relative
|
|
191
191
|
* to the current point.
|
|
192
192
|
*
|
|
193
|
-
* @param {number} aX - The x coordinate of the center of the arc offsetted from the previous curve.
|
|
194
|
-
* @param {number} aY - The y coordinate of the center of the arc offsetted from the previous curve.
|
|
195
|
-
* @param {number} aRadius - The radius of the arc.
|
|
196
|
-
* @param {number} aStartAngle - The start angle in radians.
|
|
197
|
-
* @param {number} aEndAngle - The end angle in radians.
|
|
193
|
+
* @param {number} [aX=0] - The x coordinate of the center of the arc offsetted from the previous curve.
|
|
194
|
+
* @param {number} [aY=0] - The y coordinate of the center of the arc offsetted from the previous curve.
|
|
195
|
+
* @param {number} [aRadius=1] - The radius of the arc.
|
|
196
|
+
* @param {number} [aStartAngle=0] - The start angle in radians.
|
|
197
|
+
* @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.
|
|
198
198
|
* @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.
|
|
199
199
|
* @return {Path} A reference to this path.
|
|
200
200
|
*/
|
|
@@ -213,11 +213,11 @@ class Path extends CurvePath {
|
|
|
213
213
|
/**
|
|
214
214
|
* Adds an absolutely positioned arc as an instance of {@link EllipseCurve} to the path.
|
|
215
215
|
*
|
|
216
|
-
* @param {number} aX - The x coordinate of the center of the arc.
|
|
217
|
-
* @param {number} aY - The y coordinate of the center of the arc.
|
|
218
|
-
* @param {number} aRadius - The radius of the arc.
|
|
219
|
-
* @param {number} aStartAngle - The start angle in radians.
|
|
220
|
-
* @param {number} aEndAngle - The end angle in radians.
|
|
216
|
+
* @param {number} [aX=0] - The x coordinate of the center of the arc.
|
|
217
|
+
* @param {number} [aY=0] - The y coordinate of the center of the arc.
|
|
218
|
+
* @param {number} [aRadius=1] - The radius of the arc.
|
|
219
|
+
* @param {number} [aStartAngle=0] - The start angle in radians.
|
|
220
|
+
* @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.
|
|
221
221
|
* @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.
|
|
222
222
|
* @return {Path} A reference to this path.
|
|
223
223
|
*/
|
|
@@ -233,12 +233,12 @@ class Path extends CurvePath {
|
|
|
233
233
|
* Adds an ellipse as an instance of {@link EllipseCurve} to the path, positioned relative
|
|
234
234
|
* to the current point
|
|
235
235
|
*
|
|
236
|
-
* @param {number} aX - The x coordinate of the center of the ellipse offsetted from the previous curve.
|
|
237
|
-
* @param {number} aY - The y coordinate of the center of the ellipse offsetted from the previous curve.
|
|
238
|
-
* @param {number} xRadius - The radius of the ellipse in the x axis.
|
|
239
|
-
* @param {number} yRadius - The radius of the ellipse in the y axis.
|
|
240
|
-
* @param {number} aStartAngle - The start angle in radians.
|
|
241
|
-
* @param {number} aEndAngle - The end angle in radians.
|
|
236
|
+
* @param {number} [aX=0] - The x coordinate of the center of the ellipse offsetted from the previous curve.
|
|
237
|
+
* @param {number} [aY=0] - The y coordinate of the center of the ellipse offsetted from the previous curve.
|
|
238
|
+
* @param {number} [xRadius=1] - The radius of the ellipse in the x axis.
|
|
239
|
+
* @param {number} [yRadius=1] - The radius of the ellipse in the y axis.
|
|
240
|
+
* @param {number} [aStartAngle=0] - The start angle in radians.
|
|
241
|
+
* @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.
|
|
242
242
|
* @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.
|
|
243
243
|
* @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.
|
|
244
244
|
* @return {Path} A reference to this path.
|
|
@@ -257,12 +257,12 @@ class Path extends CurvePath {
|
|
|
257
257
|
/**
|
|
258
258
|
* Adds an absolutely positioned ellipse as an instance of {@link EllipseCurve} to the path.
|
|
259
259
|
*
|
|
260
|
-
* @param {number} aX - The x coordinate of the absolute center of the ellipse.
|
|
261
|
-
* @param {number} aY - The y coordinate of the absolute center of the ellipse.
|
|
262
|
-
* @param {number} xRadius - The radius of the ellipse in the x axis.
|
|
263
|
-
* @param {number} yRadius - The radius of the ellipse in the y axis.
|
|
264
|
-
* @param {number} aStartAngle - The start angle in radians.
|
|
265
|
-
* @param {number} aEndAngle - The end angle in radians.
|
|
260
|
+
* @param {number} [aX=0] - The x coordinate of the absolute center of the ellipse.
|
|
261
|
+
* @param {number} [aY=0] - The y coordinate of the absolute center of the ellipse.
|
|
262
|
+
* @param {number} [xRadius=1] - The radius of the ellipse in the x axis.
|
|
263
|
+
* @param {number} [yRadius=1] - The radius of the ellipse in the y axis.
|
|
264
|
+
* @param {number} [aStartAngle=0] - The start angle in radians.
|
|
265
|
+
* @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.
|
|
266
266
|
* @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.
|
|
267
267
|
* @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.
|
|
268
268
|
* @return {Path} A reference to this path.
|