@plastic-software/three 0.175.13 → 0.178.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 +7747 -6792
- package/build/three.core.js +7371 -6576
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +190 -30
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +19 -11
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +4989 -2235
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +5082 -2469
- 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 -27
- package/examples/jsm/capabilities/WebGPU.js +1 -0
- 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 +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 +2 -1
- 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 +6 -5
- 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 +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 +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 +139 -12
- 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 +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/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +226 -87
- 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 +1 -0
- 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 +4 -29
- 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 +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 +18 -10
- package/src/Three.WebGPU.Nodes.js +1 -0
- package/src/Three.WebGPU.js +3 -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 +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/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/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/FileLoader.js +2 -2
- package/src/loaders/ImageBitmapLoader.js +25 -9
- package/src/loaders/ImageLoader.js +55 -8
- 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/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 +105 -19
- 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/Frustum.js +6 -1
- package/src/math/FrustumArray.js +253 -0
- package/src/math/Quaternion.js +1 -1
- package/src/math/Ray.js +2 -0
- package/src/math/Sphere.js +28 -0
- package/src/nodes/Nodes.js +2 -3
- package/src/nodes/TSL.js +5 -3
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +54 -26
- 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 +102 -16
- 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 +1 -1
- package/src/nodes/accessors/ReflectVector.js +3 -3
- 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/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 +59 -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/AssignNode.js +27 -5
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/ContextNode.js +7 -3
- package/src/nodes/core/Node.js +69 -20
- package/src/nodes/core/NodeBuilder.js +248 -29
- 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 +129 -26
- package/src/nodes/core/StructTypeNode.js +26 -4
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/VarNode.js +11 -2
- 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 +18 -19
- package/src/nodes/display/ScreenNode.js +0 -26
- 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 +14 -14
- 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 +1 -1
- 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 +78 -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/lib/mx_noise.js +1 -1
- package/src/nodes/math/ConditionalNode.js +0 -19
- package/src/nodes/math/MathNode.js +68 -21
- package/src/nodes/math/OperatorNode.js +108 -98
- package/src/nodes/shapes/Shapes.js +5 -4
- package/src/nodes/tsl/TSLBase.js +1 -0
- package/src/nodes/tsl/TSLCore.js +160 -65
- package/src/nodes/utils/DebugNode.js +15 -3
- package/src/nodes/utils/Discard.js +2 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/LoopNode.js +64 -34
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/RTTNode.js +13 -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 +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 +25 -11
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Background.js +13 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/RenderList.js +0 -4
- package/src/renderers/common/RenderObject.js +80 -4
- package/src/renderers/common/Renderer.js +116 -8
- package/src/renderers/common/Storage3DTexture.js +79 -0
- package/src/renderers/common/StorageArrayTexture.js +63 -0
- 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 +157 -27
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +30 -23
- package/src/renderers/common/nodes/Nodes.js +13 -3
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +1 -1
- 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/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLPrograms.js +4 -2
- package/src/renderers/webgl/WebGLShadowMap.js +3 -2
- package/src/renderers/webgl/WebGLState.js +4 -4
- package/src/renderers/webgl/WebGLTextures.js +144 -4
- package/src/renderers/webgl/WebGLUtils.js +1 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +244 -87
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +73 -7
- 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 +451 -128
- 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 +86 -33
- 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 +28 -5
- package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +38 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +45 -50
- 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/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
GPUTextureFormat, GPUAddressMode, GPUFilterMode, GPUTextureDimension, GPUFeatureName
|
|
2
|
+
GPUTextureFormat, GPUAddressMode, GPUFilterMode, GPUTextureDimension, GPUFeatureName, GPUTextureViewDimension
|
|
3
3
|
} from './WebGPUConstants.js';
|
|
4
|
+
import { ColorManagement } from '../../../math/ColorManagement.js';
|
|
4
5
|
|
|
5
6
|
import WebGPUTexturePassUtils from './WebGPUTexturePassUtils.js';
|
|
6
7
|
|
|
@@ -9,11 +10,10 @@ import {
|
|
|
9
10
|
NearestFilter, NearestMipmapNearestFilter, NearestMipmapLinearFilter,
|
|
10
11
|
RepeatWrapping, MirroredRepeatWrapping,
|
|
11
12
|
RGB_ETC2_Format, RGBA_ETC2_EAC_Format,
|
|
12
|
-
RGBAFormat, RGBFormat, RedFormat, RGFormat, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, UnsignedByteType, FloatType, HalfFloatType,
|
|
13
|
+
RGBAFormat, RGBFormat, RedFormat, RGFormat, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, UnsignedByteType, FloatType, HalfFloatType, SRGBTransfer, DepthFormat, DepthStencilFormat,
|
|
13
14
|
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,
|
|
14
15
|
RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, UnsignedIntType, UnsignedShortType, UnsignedInt248Type, UnsignedInt5999Type,
|
|
15
|
-
NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, IntType, RedIntegerFormat, RGIntegerFormat, RGBAIntegerFormat
|
|
16
|
-
CubeReflectionMapping, CubeRefractionMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping
|
|
16
|
+
NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, IntType, RedIntegerFormat, RGIntegerFormat, RGBAIntegerFormat
|
|
17
17
|
} from '../../../constants.js';
|
|
18
18
|
import { CubeTexture } from '../../../textures/CubeTexture.js';
|
|
19
19
|
import { DepthTexture } from '../../../textures/DepthTexture.js';
|
|
@@ -270,6 +270,12 @@ class WebGPUTextureUtils {
|
|
|
270
270
|
|
|
271
271
|
}
|
|
272
272
|
|
|
273
|
+
if ( texture.isCubeTexture ) {
|
|
274
|
+
|
|
275
|
+
textureDescriptorGPU.textureBindingViewDimension = GPUTextureViewDimension.Cube;
|
|
276
|
+
|
|
277
|
+
}
|
|
278
|
+
|
|
273
279
|
textureData.texture = backend.device.createTexture( textureDescriptorGPU );
|
|
274
280
|
|
|
275
281
|
}
|
|
@@ -458,7 +464,7 @@ class WebGPUTextureUtils {
|
|
|
458
464
|
|
|
459
465
|
this._copyBufferToTexture( options.image, textureData.texture, textureDescriptorGPU, 0, texture.flipY );
|
|
460
466
|
|
|
461
|
-
} else if ( texture.isDataArrayTexture || texture.isData3DTexture ) {
|
|
467
|
+
} else if ( texture.isArrayTexture || texture.isDataArrayTexture || texture.isData3DTexture ) {
|
|
462
468
|
|
|
463
469
|
for ( let i = 0; i < options.image.depth; i ++ ) {
|
|
464
470
|
|
|
@@ -472,7 +478,7 @@ class WebGPUTextureUtils {
|
|
|
472
478
|
|
|
473
479
|
} else if ( texture.isCubeTexture ) {
|
|
474
480
|
|
|
475
|
-
this._copyCubeMapToTexture( options.images, textureData.texture, textureDescriptorGPU, texture.flipY );
|
|
481
|
+
this._copyCubeMapToTexture( options.images, textureData.texture, textureDescriptorGPU, texture.flipY, texture.premultiplyAlpha );
|
|
476
482
|
|
|
477
483
|
} else if ( texture.isVideoTexture ) {
|
|
478
484
|
|
|
@@ -482,7 +488,7 @@ class WebGPUTextureUtils {
|
|
|
482
488
|
|
|
483
489
|
} else {
|
|
484
490
|
|
|
485
|
-
this._copyImageToTexture( options.image, textureData.texture, textureDescriptorGPU, 0, texture.flipY );
|
|
491
|
+
this._copyImageToTexture( options.image, textureData.texture, textureDescriptorGPU, 0, texture.flipY, texture.premultiplyAlpha );
|
|
486
492
|
|
|
487
493
|
}
|
|
488
494
|
|
|
@@ -555,21 +561,6 @@ class WebGPUTextureUtils {
|
|
|
555
561
|
|
|
556
562
|
}
|
|
557
563
|
|
|
558
|
-
/**
|
|
559
|
-
* Returns `true` if the given texture is an environment map.
|
|
560
|
-
*
|
|
561
|
-
* @private
|
|
562
|
-
* @param {Texture} texture - The texture.
|
|
563
|
-
* @return {boolean} Whether the given texture is an environment map or not.
|
|
564
|
-
*/
|
|
565
|
-
_isEnvironmentTexture( texture ) {
|
|
566
|
-
|
|
567
|
-
const mapping = texture.mapping;
|
|
568
|
-
|
|
569
|
-
return ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) || ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );
|
|
570
|
-
|
|
571
|
-
}
|
|
572
|
-
|
|
573
564
|
/**
|
|
574
565
|
* Returns the default GPU texture for the given format.
|
|
575
566
|
*
|
|
@@ -659,8 +650,9 @@ class WebGPUTextureUtils {
|
|
|
659
650
|
* @param {GPUTexture} textureGPU - The GPU texture.
|
|
660
651
|
* @param {Object} textureDescriptorGPU - The GPU texture descriptor.
|
|
661
652
|
* @param {boolean} flipY - Whether to flip texture data along their vertical axis or not.
|
|
653
|
+
* @param {boolean} premultiplyAlpha - Whether the texture should have its RGB channels premultiplied by the alpha channel or not.
|
|
662
654
|
*/
|
|
663
|
-
_copyCubeMapToTexture( images, textureGPU, textureDescriptorGPU, flipY ) {
|
|
655
|
+
_copyCubeMapToTexture( images, textureGPU, textureDescriptorGPU, flipY, premultiplyAlpha ) {
|
|
664
656
|
|
|
665
657
|
for ( let i = 0; i < 6; i ++ ) {
|
|
666
658
|
|
|
@@ -674,7 +666,7 @@ class WebGPUTextureUtils {
|
|
|
674
666
|
|
|
675
667
|
} else {
|
|
676
668
|
|
|
677
|
-
this._copyImageToTexture( image, textureGPU, textureDescriptorGPU, flipIndex, flipY );
|
|
669
|
+
this._copyImageToTexture( image, textureGPU, textureDescriptorGPU, flipIndex, flipY, premultiplyAlpha );
|
|
678
670
|
|
|
679
671
|
}
|
|
680
672
|
|
|
@@ -691,8 +683,9 @@ class WebGPUTextureUtils {
|
|
|
691
683
|
* @param {Object} textureDescriptorGPU - The GPU texture descriptor.
|
|
692
684
|
* @param {number} originDepth - The origin depth.
|
|
693
685
|
* @param {boolean} flipY - Whether to flip texture data along their vertical axis or not.
|
|
686
|
+
* @param {boolean} premultiplyAlpha - Whether the texture should have its RGB channels premultiplied by the alpha channel or not.
|
|
694
687
|
*/
|
|
695
|
-
_copyImageToTexture( image, textureGPU, textureDescriptorGPU, originDepth, flipY ) {
|
|
688
|
+
_copyImageToTexture( image, textureGPU, textureDescriptorGPU, originDepth, flipY, premultiplyAlpha ) {
|
|
696
689
|
|
|
697
690
|
const device = this.backend.device;
|
|
698
691
|
|
|
@@ -703,7 +696,8 @@ class WebGPUTextureUtils {
|
|
|
703
696
|
}, {
|
|
704
697
|
texture: textureGPU,
|
|
705
698
|
mipLevel: 0,
|
|
706
|
-
origin: { x: 0, y: 0, z: originDepth }
|
|
699
|
+
origin: { x: 0, y: 0, z: originDepth },
|
|
700
|
+
premultipliedAlpha: premultiplyAlpha
|
|
707
701
|
}, {
|
|
708
702
|
width: image.width,
|
|
709
703
|
height: image.height,
|
|
@@ -824,7 +818,7 @@ class WebGPUTextureUtils {
|
|
|
824
818
|
const device = this.backend.device;
|
|
825
819
|
|
|
826
820
|
const blockData = this._getBlockData( textureDescriptorGPU.format );
|
|
827
|
-
const
|
|
821
|
+
const isArrayTexture = textureDescriptorGPU.size.depthOrArrayLayers > 1;
|
|
828
822
|
|
|
829
823
|
for ( let i = 0; i < mipmaps.length; i ++ ) {
|
|
830
824
|
|
|
@@ -832,7 +826,7 @@ class WebGPUTextureUtils {
|
|
|
832
826
|
|
|
833
827
|
const width = mipmap.width;
|
|
834
828
|
const height = mipmap.height;
|
|
835
|
-
const depth =
|
|
829
|
+
const depth = isArrayTexture ? textureDescriptorGPU.size.depthOrArrayLayers : 1;
|
|
836
830
|
|
|
837
831
|
const bytesPerRow = Math.ceil( width / blockData.width ) * blockData.byteLength;
|
|
838
832
|
const bytesPerImage = bytesPerRow * Math.ceil( height / blockData.height );
|
|
@@ -1084,7 +1078,7 @@ class WebGPUTextureUtils {
|
|
|
1084
1078
|
|
|
1085
1079
|
let dimension;
|
|
1086
1080
|
|
|
1087
|
-
if ( texture.isData3DTexture ) {
|
|
1081
|
+
if ( texture.is3DTexture || texture.isData3DTexture ) {
|
|
1088
1082
|
|
|
1089
1083
|
dimension = GPUTextureDimension.ThreeD;
|
|
1090
1084
|
|
|
@@ -1113,6 +1107,7 @@ export function getFormat( texture, device = null ) {
|
|
|
1113
1107
|
const format = texture.format;
|
|
1114
1108
|
const type = texture.type;
|
|
1115
1109
|
const colorSpace = texture.colorSpace;
|
|
1110
|
+
const transfer = ColorManagement.getTransfer( colorSpace );
|
|
1116
1111
|
|
|
1117
1112
|
let formatGPU;
|
|
1118
1113
|
|
|
@@ -1121,83 +1116,83 @@ export function getFormat( texture, device = null ) {
|
|
|
1121
1116
|
switch ( format ) {
|
|
1122
1117
|
|
|
1123
1118
|
case RGBA_S3TC_DXT1_Format:
|
|
1124
|
-
formatGPU = (
|
|
1119
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.BC1RGBAUnormSRGB : GPUTextureFormat.BC1RGBAUnorm;
|
|
1125
1120
|
break;
|
|
1126
1121
|
|
|
1127
1122
|
case RGBA_S3TC_DXT3_Format:
|
|
1128
|
-
formatGPU = (
|
|
1123
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.BC2RGBAUnormSRGB : GPUTextureFormat.BC2RGBAUnorm;
|
|
1129
1124
|
break;
|
|
1130
1125
|
|
|
1131
1126
|
case RGBA_S3TC_DXT5_Format:
|
|
1132
|
-
formatGPU = (
|
|
1127
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.BC3RGBAUnormSRGB : GPUTextureFormat.BC3RGBAUnorm;
|
|
1133
1128
|
break;
|
|
1134
1129
|
|
|
1135
1130
|
case RGB_ETC2_Format:
|
|
1136
|
-
formatGPU = (
|
|
1131
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ETC2RGB8UnormSRGB : GPUTextureFormat.ETC2RGB8Unorm;
|
|
1137
1132
|
break;
|
|
1138
1133
|
|
|
1139
1134
|
case RGBA_ETC2_EAC_Format:
|
|
1140
|
-
formatGPU = (
|
|
1135
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ETC2RGBA8UnormSRGB : GPUTextureFormat.ETC2RGBA8Unorm;
|
|
1141
1136
|
break;
|
|
1142
1137
|
|
|
1143
1138
|
case RGBA_ASTC_4x4_Format:
|
|
1144
|
-
formatGPU = (
|
|
1139
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC4x4UnormSRGB : GPUTextureFormat.ASTC4x4Unorm;
|
|
1145
1140
|
break;
|
|
1146
1141
|
|
|
1147
1142
|
case RGBA_ASTC_5x4_Format:
|
|
1148
|
-
formatGPU = (
|
|
1143
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC5x4UnormSRGB : GPUTextureFormat.ASTC5x4Unorm;
|
|
1149
1144
|
break;
|
|
1150
1145
|
|
|
1151
1146
|
case RGBA_ASTC_5x5_Format:
|
|
1152
|
-
formatGPU = (
|
|
1147
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC5x5UnormSRGB : GPUTextureFormat.ASTC5x5Unorm;
|
|
1153
1148
|
break;
|
|
1154
1149
|
|
|
1155
1150
|
case RGBA_ASTC_6x5_Format:
|
|
1156
|
-
formatGPU = (
|
|
1151
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC6x5UnormSRGB : GPUTextureFormat.ASTC6x5Unorm;
|
|
1157
1152
|
break;
|
|
1158
1153
|
|
|
1159
1154
|
case RGBA_ASTC_6x6_Format:
|
|
1160
|
-
formatGPU = (
|
|
1155
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC6x6UnormSRGB : GPUTextureFormat.ASTC6x6Unorm;
|
|
1161
1156
|
break;
|
|
1162
1157
|
|
|
1163
1158
|
case RGBA_ASTC_8x5_Format:
|
|
1164
|
-
formatGPU = (
|
|
1159
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC8x5UnormSRGB : GPUTextureFormat.ASTC8x5Unorm;
|
|
1165
1160
|
break;
|
|
1166
1161
|
|
|
1167
1162
|
case RGBA_ASTC_8x6_Format:
|
|
1168
|
-
formatGPU = (
|
|
1163
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC8x6UnormSRGB : GPUTextureFormat.ASTC8x6Unorm;
|
|
1169
1164
|
break;
|
|
1170
1165
|
|
|
1171
1166
|
case RGBA_ASTC_8x8_Format:
|
|
1172
|
-
formatGPU = (
|
|
1167
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC8x8UnormSRGB : GPUTextureFormat.ASTC8x8Unorm;
|
|
1173
1168
|
break;
|
|
1174
1169
|
|
|
1175
1170
|
case RGBA_ASTC_10x5_Format:
|
|
1176
|
-
formatGPU = (
|
|
1171
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC10x5UnormSRGB : GPUTextureFormat.ASTC10x5Unorm;
|
|
1177
1172
|
break;
|
|
1178
1173
|
|
|
1179
1174
|
case RGBA_ASTC_10x6_Format:
|
|
1180
|
-
formatGPU = (
|
|
1175
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC10x6UnormSRGB : GPUTextureFormat.ASTC10x6Unorm;
|
|
1181
1176
|
break;
|
|
1182
1177
|
|
|
1183
1178
|
case RGBA_ASTC_10x8_Format:
|
|
1184
|
-
formatGPU = (
|
|
1179
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC10x8UnormSRGB : GPUTextureFormat.ASTC10x8Unorm;
|
|
1185
1180
|
break;
|
|
1186
1181
|
|
|
1187
1182
|
case RGBA_ASTC_10x10_Format:
|
|
1188
|
-
formatGPU = (
|
|
1183
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC10x10UnormSRGB : GPUTextureFormat.ASTC10x10Unorm;
|
|
1189
1184
|
break;
|
|
1190
1185
|
|
|
1191
1186
|
case RGBA_ASTC_12x10_Format:
|
|
1192
|
-
formatGPU = (
|
|
1187
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC12x10UnormSRGB : GPUTextureFormat.ASTC12x10Unorm;
|
|
1193
1188
|
break;
|
|
1194
1189
|
|
|
1195
1190
|
case RGBA_ASTC_12x12_Format:
|
|
1196
|
-
formatGPU = (
|
|
1191
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC12x12UnormSRGB : GPUTextureFormat.ASTC12x12Unorm;
|
|
1197
1192
|
break;
|
|
1198
1193
|
|
|
1199
1194
|
case RGBAFormat:
|
|
1200
|
-
formatGPU = (
|
|
1195
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.RGBA8UnormSRGB : GPUTextureFormat.RGBA8Unorm;
|
|
1201
1196
|
break;
|
|
1202
1197
|
|
|
1203
1198
|
default:
|
|
@@ -1233,7 +1228,7 @@ export function getFormat( texture, device = null ) {
|
|
|
1233
1228
|
break;
|
|
1234
1229
|
|
|
1235
1230
|
case UnsignedByteType:
|
|
1236
|
-
formatGPU = (
|
|
1231
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.RGBA8UnormSRGB : GPUTextureFormat.RGBA8Unorm;
|
|
1237
1232
|
break;
|
|
1238
1233
|
|
|
1239
1234
|
case HalfFloatType:
|
|
@@ -402,7 +402,7 @@ class WebXRController {
|
|
|
402
402
|
*
|
|
403
403
|
* @private
|
|
404
404
|
* @param {Group} hand - The group representing the hand space.
|
|
405
|
-
* @param {
|
|
405
|
+
* @param {XRJointSpace} inputjoint - The hand joint data.
|
|
406
406
|
* @return {Group} A group representing the hand joint for the given input joint.
|
|
407
407
|
*/
|
|
408
408
|
_getHandJoint( hand, inputjoint ) {
|
|
@@ -278,7 +278,8 @@ class WebXRManager extends EventDispatcher {
|
|
|
278
278
|
/**
|
|
279
279
|
* Sets the reference space type. Can be used to configure a spatial relationship with the user's physical
|
|
280
280
|
* environment. Depending on how the user moves in 3D space, setting an appropriate reference space can
|
|
281
|
-
* improve tracking. Default is `local-floor`.
|
|
281
|
+
* improve tracking. Default is `local-floor`. Valid values can be found here
|
|
282
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace#reference_space_types.
|
|
282
283
|
*
|
|
283
284
|
* This method can not be used during a XR session.
|
|
284
285
|
*
|
|
@@ -23,8 +23,9 @@ class DepthTexture extends Texture {
|
|
|
23
23
|
* @param {number} [minFilter=LinearFilter] - The min filter value.
|
|
24
24
|
* @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
|
|
25
25
|
* @param {number} [format=DepthFormat] - The texture format.
|
|
26
|
+
* @param {number} [depth=1] - The depth of the texture.
|
|
26
27
|
*/
|
|
27
|
-
constructor( width, height, type = UnsignedIntType, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, format = DepthFormat ) {
|
|
28
|
+
constructor( width, height, type = UnsignedIntType, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, format = DepthFormat, depth = 1 ) {
|
|
28
29
|
|
|
29
30
|
if ( format !== DepthFormat && format !== DepthStencilFormat ) {
|
|
30
31
|
|
|
@@ -32,7 +33,9 @@ class DepthTexture extends Texture {
|
|
|
32
33
|
|
|
33
34
|
}
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
const image = { width: width, height: height, depth: depth };
|
|
37
|
+
|
|
38
|
+
super( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
|
|
36
39
|
|
|
37
40
|
/**
|
|
38
41
|
* This flag can be used for type testing.
|
|
@@ -43,13 +46,6 @@ class DepthTexture extends Texture {
|
|
|
43
46
|
*/
|
|
44
47
|
this.isDepthTexture = true;
|
|
45
48
|
|
|
46
|
-
/**
|
|
47
|
-
* The image property of a depth texture just defines its dimensions.
|
|
48
|
-
*
|
|
49
|
-
* @type {{width:number,height:number}}
|
|
50
|
-
*/
|
|
51
|
-
this.image = { width: width, height: height };
|
|
52
|
-
|
|
53
49
|
/**
|
|
54
50
|
* If set to `true`, the texture is flipped along the vertical axis when
|
|
55
51
|
* uploaded to the GPU.
|
|
@@ -72,7 +68,7 @@ class DepthTexture extends Texture {
|
|
|
72
68
|
this.generateMipmaps = false;
|
|
73
69
|
|
|
74
70
|
/**
|
|
75
|
-
*
|
|
71
|
+
* Code corresponding to the depth compare function.
|
|
76
72
|
*
|
|
77
73
|
* @type {?(NeverCompare|LessCompare|EqualCompare|LessEqualCompare|GreaterCompare|NotEqualCompare|GreaterEqualCompare|AlwaysCompare)}
|
|
78
74
|
* @default null
|
package/src/textures/Source.js
CHANGED
|
@@ -73,6 +73,28 @@ class Source {
|
|
|
73
73
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
getSize( target ) {
|
|
77
|
+
|
|
78
|
+
const data = this.data;
|
|
79
|
+
|
|
80
|
+
if ( data instanceof HTMLVideoElement ) {
|
|
81
|
+
|
|
82
|
+
target.set( data.videoWidth, data.videoHeight );
|
|
83
|
+
|
|
84
|
+
} else if ( data !== null ) {
|
|
85
|
+
|
|
86
|
+
target.set( data.width, data.height, data.depth || 0 );
|
|
87
|
+
|
|
88
|
+
} else {
|
|
89
|
+
|
|
90
|
+
target.set( 0, 0, 0 );
|
|
91
|
+
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return target;
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
|
|
76
98
|
/**
|
|
77
99
|
* When the property is set to `true`, the engine allocates the memory
|
|
78
100
|
* for the texture (if necessary) and triggers the actual texture upload
|
package/src/textures/Texture.js
CHANGED
|
@@ -12,11 +12,14 @@ import {
|
|
|
12
12
|
} from '../constants.js';
|
|
13
13
|
import { generateUUID } from '../math/MathUtils.js';
|
|
14
14
|
import { Vector2 } from '../math/Vector2.js';
|
|
15
|
+
import { Vector3 } from '../math/Vector3.js';
|
|
15
16
|
import { Matrix3 } from '../math/Matrix3.js';
|
|
16
17
|
import { Source } from './Source.js';
|
|
17
18
|
|
|
18
19
|
let _textureId = 0;
|
|
19
20
|
|
|
21
|
+
const _tempVec3 = /*@__PURE__*/ new Vector3();
|
|
22
|
+
|
|
20
23
|
/**
|
|
21
24
|
* Base class for all textures.
|
|
22
25
|
*
|
|
@@ -302,6 +305,14 @@ class Texture extends EventDispatcher {
|
|
|
302
305
|
*/
|
|
303
306
|
this.userData = {};
|
|
304
307
|
|
|
308
|
+
/**
|
|
309
|
+
* This can be used to only update a subregion or specific rows of the texture (for example, just the
|
|
310
|
+
* first 3 rows). Use the `addUpdateRange()` function to add ranges to this array.
|
|
311
|
+
*
|
|
312
|
+
* @type {Array<Object>}
|
|
313
|
+
*/
|
|
314
|
+
this.updateRanges = [];
|
|
315
|
+
|
|
305
316
|
/**
|
|
306
317
|
* This starts at `0` and counts how many times {@link Texture#needsUpdate} is set to `true`.
|
|
307
318
|
*
|
|
@@ -337,6 +348,15 @@ class Texture extends EventDispatcher {
|
|
|
337
348
|
*/
|
|
338
349
|
this.isRenderTargetTexture = false;
|
|
339
350
|
|
|
351
|
+
/**
|
|
352
|
+
* Indicates if a texture should be handled like a texture array.
|
|
353
|
+
*
|
|
354
|
+
* @type {boolean}
|
|
355
|
+
* @readonly
|
|
356
|
+
* @default false
|
|
357
|
+
*/
|
|
358
|
+
this.isArrayTexture = image && image.depth && image.depth > 1 ? true : false;
|
|
359
|
+
|
|
340
360
|
/**
|
|
341
361
|
* Indicates whether this texture should be processed by `PMREMGenerator` or not
|
|
342
362
|
* (only relevant for render target textures).
|
|
@@ -349,6 +369,33 @@ class Texture extends EventDispatcher {
|
|
|
349
369
|
|
|
350
370
|
}
|
|
351
371
|
|
|
372
|
+
/**
|
|
373
|
+
* The width of the texture in pixels.
|
|
374
|
+
*/
|
|
375
|
+
get width() {
|
|
376
|
+
|
|
377
|
+
return this.source.getSize( _tempVec3 ).x;
|
|
378
|
+
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* The height of the texture in pixels.
|
|
383
|
+
*/
|
|
384
|
+
get height() {
|
|
385
|
+
|
|
386
|
+
return this.source.getSize( _tempVec3 ).y;
|
|
387
|
+
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* The depth of the texture in pixels.
|
|
392
|
+
*/
|
|
393
|
+
get depth() {
|
|
394
|
+
|
|
395
|
+
return this.source.getSize( _tempVec3 ).z;
|
|
396
|
+
|
|
397
|
+
}
|
|
398
|
+
|
|
352
399
|
/**
|
|
353
400
|
* The image object holding the texture data.
|
|
354
401
|
*
|
|
@@ -376,6 +423,27 @@ class Texture extends EventDispatcher {
|
|
|
376
423
|
|
|
377
424
|
}
|
|
378
425
|
|
|
426
|
+
/**
|
|
427
|
+
* Adds a range of data in the data texture to be updated on the GPU.
|
|
428
|
+
*
|
|
429
|
+
* @param {number} start - Position at which to start update.
|
|
430
|
+
* @param {number} count - The number of components to update.
|
|
431
|
+
*/
|
|
432
|
+
addUpdateRange( start, count ) {
|
|
433
|
+
|
|
434
|
+
this.updateRanges.push( { start, count } );
|
|
435
|
+
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Clears the update ranges.
|
|
440
|
+
*/
|
|
441
|
+
clearUpdateRanges() {
|
|
442
|
+
|
|
443
|
+
this.updateRanges.length = 0;
|
|
444
|
+
|
|
445
|
+
}
|
|
446
|
+
|
|
379
447
|
/**
|
|
380
448
|
* Returns a new texture with copied values from this instance.
|
|
381
449
|
*
|
|
@@ -431,6 +499,7 @@ class Texture extends EventDispatcher {
|
|
|
431
499
|
|
|
432
500
|
this.renderTarget = source.renderTarget;
|
|
433
501
|
this.isRenderTargetTexture = source.isRenderTargetTexture;
|
|
502
|
+
this.isArrayTexture = source.isArrayTexture;
|
|
434
503
|
|
|
435
504
|
this.userData = JSON.parse( JSON.stringify( source.userData ) );
|
|
436
505
|
|
|
@@ -440,6 +509,54 @@ class Texture extends EventDispatcher {
|
|
|
440
509
|
|
|
441
510
|
}
|
|
442
511
|
|
|
512
|
+
/**
|
|
513
|
+
* Sets this texture's properties based on `values`.
|
|
514
|
+
* @param {Object} values - A container with texture parameters.
|
|
515
|
+
*/
|
|
516
|
+
setValues( values ) {
|
|
517
|
+
|
|
518
|
+
for ( const key in values ) {
|
|
519
|
+
|
|
520
|
+
const newValue = values[ key ];
|
|
521
|
+
|
|
522
|
+
if ( newValue === undefined ) {
|
|
523
|
+
|
|
524
|
+
console.warn( `THREE.Texture.setValues(): parameter '${ key }' has value of undefined.` );
|
|
525
|
+
continue;
|
|
526
|
+
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
const currentValue = this[ key ];
|
|
530
|
+
|
|
531
|
+
if ( currentValue === undefined ) {
|
|
532
|
+
|
|
533
|
+
console.warn( `THREE.Texture.setValues(): property '${ key }' does not exist.` );
|
|
534
|
+
continue;
|
|
535
|
+
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
if ( ( currentValue && newValue ) && ( currentValue.isVector2 && newValue.isVector2 ) ) {
|
|
539
|
+
|
|
540
|
+
currentValue.copy( newValue );
|
|
541
|
+
|
|
542
|
+
} else if ( ( currentValue && newValue ) && ( currentValue.isVector3 && newValue.isVector3 ) ) {
|
|
543
|
+
|
|
544
|
+
currentValue.copy( newValue );
|
|
545
|
+
|
|
546
|
+
} else if ( ( currentValue && newValue ) && ( currentValue.isMatrix3 && newValue.isMatrix3 ) ) {
|
|
547
|
+
|
|
548
|
+
currentValue.copy( newValue );
|
|
549
|
+
|
|
550
|
+
} else {
|
|
551
|
+
|
|
552
|
+
this[ key ] = newValue;
|
|
553
|
+
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
}
|
|
559
|
+
|
|
443
560
|
/**
|
|
444
561
|
* Serializes the texture into JSON.
|
|
445
562
|
*
|
|
@@ -460,7 +577,7 @@ class Texture extends EventDispatcher {
|
|
|
460
577
|
const output = {
|
|
461
578
|
|
|
462
579
|
metadata: {
|
|
463
|
-
version: 4.
|
|
580
|
+
version: 4.7,
|
|
464
581
|
type: 'Texture',
|
|
465
582
|
generator: 'Texture.toJSON'
|
|
466
583
|
},
|
|
@@ -20,7 +20,7 @@ class VideoTexture extends Texture {
|
|
|
20
20
|
/**
|
|
21
21
|
* Constructs a new video texture.
|
|
22
22
|
*
|
|
23
|
-
* @param {
|
|
23
|
+
* @param {HTMLVideoElement} video - The video element to use as a data source for the texture.
|
|
24
24
|
* @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.
|
|
25
25
|
* @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
|
|
26
26
|
* @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
|