@plastic-software/three 0.174.0 → 0.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +10655 -1446
- package/build/three.core.js +9626 -1094
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +834 -157
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -13,8 +13,35 @@ import {
|
|
|
13
13
|
SRGBColorSpace
|
|
14
14
|
} from 'three';
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* A loader for the VOX format.
|
|
18
|
+
*
|
|
19
|
+
* ```js
|
|
20
|
+
* const loader = new VOXLoader();
|
|
21
|
+
* const chunks = await loader.loadAsync( 'models/vox/monu10.vox' );
|
|
22
|
+
*
|
|
23
|
+
* for ( let i = 0; i < chunks.length; i ++ ) {
|
|
24
|
+
*
|
|
25
|
+
* const chunk = chunks[ i ];
|
|
26
|
+
* const mesh = new VOXMesh( chunk );
|
|
27
|
+
* mesh.scale.setScalar( 0.0015 );
|
|
28
|
+
* scene.add( mesh );
|
|
29
|
+
*
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
* @augments Loader
|
|
33
|
+
*/
|
|
16
34
|
class VOXLoader extends Loader {
|
|
17
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Starts loading from the given URL and passes the loaded VOX asset
|
|
38
|
+
* to the `onLoad()` callback.
|
|
39
|
+
*
|
|
40
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
41
|
+
* @param {function(Array<Object>)} onLoad - Executed when the loading process has been finished.
|
|
42
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
43
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
44
|
+
*/
|
|
18
45
|
load( url, onLoad, onProgress, onError ) {
|
|
19
46
|
|
|
20
47
|
const scope = this;
|
|
@@ -49,6 +76,12 @@ class VOXLoader extends Loader {
|
|
|
49
76
|
|
|
50
77
|
}
|
|
51
78
|
|
|
79
|
+
/**
|
|
80
|
+
* Parses the given VOX data and returns the resulting chunks.
|
|
81
|
+
*
|
|
82
|
+
* @param {ArrayBuffer} buffer - The raw VOX data as an array buffer.
|
|
83
|
+
* @return {Array<Object>} The parsed chunks.
|
|
84
|
+
*/
|
|
52
85
|
parse( buffer ) {
|
|
53
86
|
|
|
54
87
|
const data = new DataView( buffer );
|
|
@@ -173,8 +206,20 @@ class VOXLoader extends Loader {
|
|
|
173
206
|
|
|
174
207
|
}
|
|
175
208
|
|
|
209
|
+
/**
|
|
210
|
+
* A VOX mesh.
|
|
211
|
+
*
|
|
212
|
+
* Instances of this class are created from the loaded chunks of {@link VOXLoader}.
|
|
213
|
+
*
|
|
214
|
+
* @augments Mesh
|
|
215
|
+
*/
|
|
176
216
|
class VOXMesh extends Mesh {
|
|
177
217
|
|
|
218
|
+
/**
|
|
219
|
+
* Constructs a new VOX mesh.
|
|
220
|
+
*
|
|
221
|
+
* @param {Object} chunk - A VOX chunk loaded via {@link VOXLoader}.
|
|
222
|
+
*/
|
|
178
223
|
constructor( chunk ) {
|
|
179
224
|
|
|
180
225
|
const data = chunk.data;
|
|
@@ -279,8 +324,20 @@ class VOXMesh extends Mesh {
|
|
|
279
324
|
|
|
280
325
|
}
|
|
281
326
|
|
|
327
|
+
/**
|
|
328
|
+
* A VOX 3D texture.
|
|
329
|
+
*
|
|
330
|
+
* Instances of this class are created from the loaded chunks of {@link VOXLoader}.
|
|
331
|
+
*
|
|
332
|
+
* @augments Data3DTexture
|
|
333
|
+
*/
|
|
282
334
|
class VOXData3DTexture extends Data3DTexture {
|
|
283
335
|
|
|
336
|
+
/**
|
|
337
|
+
* Constructs a new VOX 3D texture.
|
|
338
|
+
*
|
|
339
|
+
* @param {Object} chunk - A VOX chunk loaded via {@link VOXLoader}.
|
|
340
|
+
*/
|
|
284
341
|
constructor( chunk ) {
|
|
285
342
|
|
|
286
343
|
const data = chunk.data;
|
|
@@ -36,15 +36,39 @@ import {
|
|
|
36
36
|
} from 'three';
|
|
37
37
|
import chevrotain from '../libs/chevrotain.module.min.js';
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
/**
|
|
40
|
+
* A loader for the VRML format.
|
|
41
|
+
*
|
|
42
|
+
* ```js
|
|
43
|
+
* const loader = new VRMLLoader();
|
|
44
|
+
* const object = await loader.loadAsync( 'models/vrml/house.wrl' );
|
|
45
|
+
* scene.add( object );
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @augments Loader
|
|
49
|
+
*/
|
|
40
50
|
class VRMLLoader extends Loader {
|
|
41
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Constructs a new VRML loader.
|
|
54
|
+
*
|
|
55
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
56
|
+
*/
|
|
42
57
|
constructor( manager ) {
|
|
43
58
|
|
|
44
59
|
super( manager );
|
|
45
60
|
|
|
46
61
|
}
|
|
47
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Starts loading from the given URL and passes the loaded VRML asset
|
|
65
|
+
* to the `onLoad()` callback.
|
|
66
|
+
*
|
|
67
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
68
|
+
* @param {function(Scene)} onLoad - Executed when the loading process has been finished.
|
|
69
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
70
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
71
|
+
*/
|
|
48
72
|
load( url, onLoad, onProgress, onError ) {
|
|
49
73
|
|
|
50
74
|
const scope = this;
|
|
@@ -81,6 +105,13 @@ class VRMLLoader extends Loader {
|
|
|
81
105
|
|
|
82
106
|
}
|
|
83
107
|
|
|
108
|
+
/**
|
|
109
|
+
* Parses the given VRML data and returns the resulting scene.
|
|
110
|
+
*
|
|
111
|
+
* @param {string} data - The raw VRML data as a string.
|
|
112
|
+
* @param {string} path - The URL base path.
|
|
113
|
+
* @return {Scene} The parsed scene.
|
|
114
|
+
*/
|
|
84
115
|
parse( data, path ) {
|
|
85
116
|
|
|
86
117
|
const nodeMap = {};
|
|
@@ -9,14 +9,46 @@ import {
|
|
|
9
9
|
} from 'three';
|
|
10
10
|
import * as fflate from '../libs/fflate.module.js';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* A loader for the VTK format.
|
|
14
|
+
*
|
|
15
|
+
* This loader only supports the `POLYDATA` dataset format so far. Other formats
|
|
16
|
+
* (structured points, structured grid, rectilinear grid, unstructured grid, appended)
|
|
17
|
+
* are not supported.
|
|
18
|
+
*
|
|
19
|
+
* ```js
|
|
20
|
+
* const loader = new VTKLoader();
|
|
21
|
+
* const geometry = await loader.loadAsync( 'models/vtk/liver.vtk' );
|
|
22
|
+
* geometry.computeVertexNormals();
|
|
23
|
+
*
|
|
24
|
+
* const mesh = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial() );
|
|
25
|
+
* scene.add( mesh );
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @augments Loader
|
|
29
|
+
*/
|
|
12
30
|
class VTKLoader extends Loader {
|
|
13
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Constructs a new VTK loader.
|
|
34
|
+
*
|
|
35
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
36
|
+
*/
|
|
14
37
|
constructor( manager ) {
|
|
15
38
|
|
|
16
39
|
super( manager );
|
|
17
40
|
|
|
18
41
|
}
|
|
19
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Starts loading from the given URL and passes the loaded VRML asset
|
|
45
|
+
* to the `onLoad()` callback.
|
|
46
|
+
*
|
|
47
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
48
|
+
* @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.
|
|
49
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
50
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
51
|
+
*/
|
|
20
52
|
load( url, onLoad, onProgress, onError ) {
|
|
21
53
|
|
|
22
54
|
const scope = this;
|
|
@@ -52,6 +84,12 @@ class VTKLoader extends Loader {
|
|
|
52
84
|
|
|
53
85
|
}
|
|
54
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Parses the given VTK data and returns the resulting geometry.
|
|
89
|
+
*
|
|
90
|
+
* @param {ArrayBuffer} data - The raw VTK data as an array buffer
|
|
91
|
+
* @return {BufferGeometry} The parsed geometry.
|
|
92
|
+
*/
|
|
55
93
|
parse( data ) {
|
|
56
94
|
|
|
57
95
|
function parseASCII( data ) {
|
|
@@ -7,8 +7,37 @@ import {
|
|
|
7
7
|
SRGBColorSpace
|
|
8
8
|
} from 'three';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* A loader for the XYZ format.
|
|
12
|
+
*
|
|
13
|
+
* XYZ is a very simple format for storing point clouds. The layouts
|
|
14
|
+
* `XYZ` (points) and `XYZRGB` (points + colors) are supported.
|
|
15
|
+
*
|
|
16
|
+
* ```js
|
|
17
|
+
* const loader = new XYZLoader();
|
|
18
|
+
* const geometry = await loader.loadAsync( 'models/xyz/helix_201.xyz' );
|
|
19
|
+
* geometry.center();
|
|
20
|
+
*
|
|
21
|
+
* const vertexColors = ( geometry.hasAttribute( 'color' ) === true );
|
|
22
|
+
* const material = new THREE.PointsMaterial( { size: 0.1, vertexColors: vertexColors } );
|
|
23
|
+
*
|
|
24
|
+
* const points = new THREE.Points( geometry, material );
|
|
25
|
+
* scene.add( points );
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @augments Loader
|
|
29
|
+
*/
|
|
10
30
|
class XYZLoader extends Loader {
|
|
11
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Starts loading from the given URL and passes the loaded XYZ asset
|
|
34
|
+
* to the `onLoad()` callback.
|
|
35
|
+
*
|
|
36
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
37
|
+
* @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.
|
|
38
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
39
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
40
|
+
*/
|
|
12
41
|
load( url, onLoad, onProgress, onError ) {
|
|
13
42
|
|
|
14
43
|
const scope = this;
|
|
@@ -43,6 +72,12 @@ class XYZLoader extends Loader {
|
|
|
43
72
|
|
|
44
73
|
}
|
|
45
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Parses the given XYZ data and returns the resulting geometry.
|
|
77
|
+
*
|
|
78
|
+
* @param {string} text - The raw XYZ data as a string.
|
|
79
|
+
* @return {BufferGeometry} The geometry representing the point cloud.
|
|
80
|
+
*/
|
|
46
81
|
parse( text ) {
|
|
47
82
|
|
|
48
83
|
const lines = text.split( '\n' );
|
|
@@ -5,6 +5,14 @@ import {
|
|
|
5
5
|
UniformsUtils,
|
|
6
6
|
} from 'three';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* A special line material for meshes loaded via {@link LDrawLoader}.
|
|
10
|
+
*
|
|
11
|
+
* This module can only be used with {@link WebGLRenderer}. When using {@link WebGPURenderer},
|
|
12
|
+
* import the class from `LDrawConditionalLineNodeMaterial.js`.
|
|
13
|
+
*
|
|
14
|
+
* @augments ShaderMaterial
|
|
15
|
+
*/
|
|
8
16
|
class LDrawConditionalLineMaterial extends ShaderMaterial {
|
|
9
17
|
|
|
10
18
|
static get type() {
|
|
@@ -13,6 +21,15 @@ class LDrawConditionalLineMaterial extends ShaderMaterial {
|
|
|
13
21
|
|
|
14
22
|
}
|
|
15
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Constructs a new conditional line material.
|
|
26
|
+
*
|
|
27
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
28
|
+
* defining the material's appearance. Any property of the material
|
|
29
|
+
* (including any property from inherited materials) can be passed
|
|
30
|
+
* in here. Color values can be passed any type of value accepted
|
|
31
|
+
* by {@link Color#set}.
|
|
32
|
+
*/
|
|
16
33
|
constructor( parameters ) {
|
|
17
34
|
|
|
18
35
|
super( {
|
|
@@ -109,6 +126,13 @@ class LDrawConditionalLineMaterial extends ShaderMaterial {
|
|
|
109
126
|
|
|
110
127
|
Object.defineProperties( this, {
|
|
111
128
|
|
|
129
|
+
/**
|
|
130
|
+
* The material's opacity.
|
|
131
|
+
*
|
|
132
|
+
* @name LDrawConditionalLineMaterial#opacity
|
|
133
|
+
* @type {number}
|
|
134
|
+
* @default 1
|
|
135
|
+
*/
|
|
112
136
|
opacity: {
|
|
113
137
|
get: function () {
|
|
114
138
|
|
|
@@ -123,6 +147,13 @@ class LDrawConditionalLineMaterial extends ShaderMaterial {
|
|
|
123
147
|
}
|
|
124
148
|
},
|
|
125
149
|
|
|
150
|
+
/**
|
|
151
|
+
* The material's color.
|
|
152
|
+
*
|
|
153
|
+
* @name LDrawConditionalLineMaterial#color
|
|
154
|
+
* @type {Color}
|
|
155
|
+
* @default (1,1,1)
|
|
156
|
+
*/
|
|
126
157
|
color: {
|
|
127
158
|
get: function () {
|
|
128
159
|
|
|
@@ -134,6 +165,14 @@ class LDrawConditionalLineMaterial extends ShaderMaterial {
|
|
|
134
165
|
} );
|
|
135
166
|
|
|
136
167
|
this.setValues( parameters );
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* This flag can be used for type testing.
|
|
171
|
+
*
|
|
172
|
+
* @type {boolean}
|
|
173
|
+
* @readonly
|
|
174
|
+
* @default true
|
|
175
|
+
*/
|
|
137
176
|
this.isLDrawConditionalLineMaterial = true;
|
|
138
177
|
|
|
139
178
|
}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { Color } from 'three';
|
|
2
2
|
import { attribute, cameraProjectionMatrix, dot, float, Fn, modelViewMatrix, modelViewProjection, NodeMaterial, normalize, positionGeometry, sign, uniform, varyingProperty, vec2, vec4 } from 'three/tsl';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A special line material for meshes loaded via {@link LDrawLoader}.
|
|
6
|
+
*
|
|
7
|
+
* This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
|
|
8
|
+
* import the class from `LDrawConditionalLineMaterial.js`.
|
|
9
|
+
*
|
|
10
|
+
* @augments NodeMaterial
|
|
11
|
+
*/
|
|
4
12
|
class LDrawConditionalLineMaterial extends NodeMaterial {
|
|
5
13
|
|
|
6
14
|
static get type() {
|
|
@@ -9,6 +17,15 @@ class LDrawConditionalLineMaterial extends NodeMaterial {
|
|
|
9
17
|
|
|
10
18
|
}
|
|
11
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new conditional line material.
|
|
22
|
+
*
|
|
23
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
24
|
+
* defining the material's appearance. Any property of the material
|
|
25
|
+
* (including any property from inherited materials) can be passed
|
|
26
|
+
* in here. Color values can be passed any type of value accepted
|
|
27
|
+
* by {@link Color#set}.
|
|
28
|
+
*/
|
|
12
29
|
constructor( parameters ) {
|
|
13
30
|
|
|
14
31
|
super();
|
|
@@ -74,6 +91,13 @@ class LDrawConditionalLineMaterial extends NodeMaterial {
|
|
|
74
91
|
|
|
75
92
|
Object.defineProperties( this, {
|
|
76
93
|
|
|
94
|
+
/**
|
|
95
|
+
* The material's opacity.
|
|
96
|
+
*
|
|
97
|
+
* @name LDrawConditionalLineMaterial#opacity
|
|
98
|
+
* @type {number}
|
|
99
|
+
* @default 1
|
|
100
|
+
*/
|
|
77
101
|
opacity: {
|
|
78
102
|
get: function () {
|
|
79
103
|
|
|
@@ -88,6 +112,13 @@ class LDrawConditionalLineMaterial extends NodeMaterial {
|
|
|
88
112
|
}
|
|
89
113
|
},
|
|
90
114
|
|
|
115
|
+
/**
|
|
116
|
+
* The material's color.
|
|
117
|
+
*
|
|
118
|
+
* @name LDrawConditionalLineMaterial#color
|
|
119
|
+
* @type {Color}
|
|
120
|
+
* @default (1,1,1)
|
|
121
|
+
*/
|
|
91
122
|
color: {
|
|
92
123
|
get: function () {
|
|
93
124
|
|
|
@@ -105,6 +136,14 @@ class LDrawConditionalLineMaterial extends NodeMaterial {
|
|
|
105
136
|
} );
|
|
106
137
|
|
|
107
138
|
this.setValues( parameters );
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* This flag can be used for type testing.
|
|
142
|
+
*
|
|
143
|
+
* @type {boolean}
|
|
144
|
+
* @readonly
|
|
145
|
+
* @default true
|
|
146
|
+
*/
|
|
108
147
|
this.isLDrawConditionalLineMaterial = true;
|
|
109
148
|
|
|
110
149
|
}
|
|
@@ -21,10 +21,20 @@ import { MeshPhysicalMaterial } from 'three';
|
|
|
21
21
|
*
|
|
22
22
|
* Further extension work might be to use the output of an SSR pass or an HBIL pass from a previous frame.
|
|
23
23
|
* This would then create the possibility of SSR and IR depending on material properties such as `roughness`, `metalness` and `reflectivity`.
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
*
|
|
25
|
+
* @augments MeshPhysicalMaterial
|
|
26
|
+
*/
|
|
26
27
|
class MeshPostProcessingMaterial extends MeshPhysicalMaterial {
|
|
27
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Constructs a new conditional line material.
|
|
31
|
+
*
|
|
32
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
33
|
+
* defining the material's appearance. Any property of the material
|
|
34
|
+
* (including any property from inherited materials) can be passed
|
|
35
|
+
* in here. Color values can be passed any type of value accepted
|
|
36
|
+
* by {@link Color#set}.
|
|
37
|
+
*/
|
|
28
38
|
constructor( parameters ) {
|
|
29
39
|
|
|
30
40
|
const aoPassMap = parameters.aoPassMap;
|
|
@@ -37,11 +47,23 @@ class MeshPostProcessingMaterial extends MeshPhysicalMaterial {
|
|
|
37
47
|
this.onBeforeCompile = this._onBeforeCompile;
|
|
38
48
|
this.customProgramCacheKey = this._customProgramCacheKey;
|
|
39
49
|
this._aoPassMap = aoPassMap;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The scale of the AO pass.
|
|
53
|
+
*
|
|
54
|
+
* @type {number}
|
|
55
|
+
* @default 1
|
|
56
|
+
*/
|
|
40
57
|
this.aoPassMapScale = aoPassMapScale;
|
|
41
58
|
this._shader = null;
|
|
42
59
|
|
|
43
60
|
}
|
|
44
61
|
|
|
62
|
+
/**
|
|
63
|
+
* A texture representing the AO pass.
|
|
64
|
+
*
|
|
65
|
+
* @type {Texture}
|
|
66
|
+
*/
|
|
45
67
|
get aoPassMap() {
|
|
46
68
|
|
|
47
69
|
return this._aoPassMap;
|
|
@@ -2,74 +2,138 @@ import {
|
|
|
2
2
|
Vector3
|
|
3
3
|
} from 'three';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A capsule is essentially a cylinder with hemispherical caps at both ends.
|
|
7
|
+
* It can be thought of as a swept sphere, where a sphere is moved along a line segment.
|
|
8
|
+
*
|
|
9
|
+
* Capsules are often used as bounding volumes (next to AABBs and bounding spheres).
|
|
10
|
+
*/
|
|
5
11
|
class Capsule {
|
|
6
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new capsule.
|
|
15
|
+
*
|
|
16
|
+
* @param {Vector3} [start] - The start vector.
|
|
17
|
+
* @param {Vector3} [end] - The end vector.
|
|
18
|
+
* @param {number} [radius=1] - The capsule's radius.
|
|
19
|
+
*/
|
|
7
20
|
constructor( start = new Vector3( 0, 0, 0 ), end = new Vector3( 0, 1, 0 ), radius = 1 ) {
|
|
8
21
|
|
|
22
|
+
/**
|
|
23
|
+
* The start vector.
|
|
24
|
+
*
|
|
25
|
+
* @type {Vector3}
|
|
26
|
+
*/
|
|
9
27
|
this.start = start;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The end vector.
|
|
31
|
+
*
|
|
32
|
+
* @type {Vector3}
|
|
33
|
+
*/
|
|
10
34
|
this.end = end;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The capsule's radius.
|
|
38
|
+
*
|
|
39
|
+
* @type {number}
|
|
40
|
+
* @default 1
|
|
41
|
+
*/
|
|
11
42
|
this.radius = radius;
|
|
12
43
|
|
|
13
44
|
}
|
|
14
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Returns a new capsule with copied values from this instance.
|
|
48
|
+
*
|
|
49
|
+
* @return {Capsule} A clone of this instance.
|
|
50
|
+
*/
|
|
15
51
|
clone() {
|
|
16
52
|
|
|
17
|
-
return new
|
|
53
|
+
return new this.constructor().copy( this );
|
|
18
54
|
|
|
19
55
|
}
|
|
20
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Sets the capsule components to the given values.
|
|
59
|
+
* Please note that this method only copies the values from the given objects.
|
|
60
|
+
*
|
|
61
|
+
* @param {Vector3} start - The start vector.
|
|
62
|
+
* @param {Vector3} end - The end vector
|
|
63
|
+
* @param {number} radius - The capsule's radius.
|
|
64
|
+
* @return {Capsule} A reference to this capsule.
|
|
65
|
+
*/
|
|
21
66
|
set( start, end, radius ) {
|
|
22
67
|
|
|
23
68
|
this.start.copy( start );
|
|
24
69
|
this.end.copy( end );
|
|
25
70
|
this.radius = radius;
|
|
26
71
|
|
|
72
|
+
return this;
|
|
73
|
+
|
|
27
74
|
}
|
|
28
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Copies the values of the given capsule to this instance.
|
|
78
|
+
*
|
|
79
|
+
* @param {Capsule} capsule - The capsule to copy.
|
|
80
|
+
* @return {Capsule} A reference to this capsule.
|
|
81
|
+
*/
|
|
29
82
|
copy( capsule ) {
|
|
30
83
|
|
|
31
84
|
this.start.copy( capsule.start );
|
|
32
85
|
this.end.copy( capsule.end );
|
|
33
86
|
this.radius = capsule.radius;
|
|
34
87
|
|
|
88
|
+
return this;
|
|
89
|
+
|
|
35
90
|
}
|
|
36
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Returns the center point of this capsule.
|
|
94
|
+
*
|
|
95
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
96
|
+
* @return {Vector3} The center point.
|
|
97
|
+
*/
|
|
37
98
|
getCenter( target ) {
|
|
38
99
|
|
|
39
100
|
return target.copy( this.end ).add( this.start ).multiplyScalar( 0.5 );
|
|
40
101
|
|
|
41
102
|
}
|
|
42
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Adds the given offset to this capsule, effectively moving it in 3D space.
|
|
106
|
+
*
|
|
107
|
+
* @param {Vector3} v - The offset that should be used to translate the capsule.
|
|
108
|
+
* @return {Capsule} A reference to this capsule.
|
|
109
|
+
*/
|
|
43
110
|
translate( v ) {
|
|
44
111
|
|
|
45
112
|
this.start.add( v );
|
|
46
113
|
this.end.add( v );
|
|
47
114
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
checkAABBAxis( p1x, p1y, p2x, p2y, minx, maxx, miny, maxy, radius ) {
|
|
51
|
-
|
|
52
|
-
return (
|
|
53
|
-
( minx - p1x < radius || minx - p2x < radius ) &&
|
|
54
|
-
( p1x - maxx < radius || p2x - maxx < radius ) &&
|
|
55
|
-
( miny - p1y < radius || miny - p2y < radius ) &&
|
|
56
|
-
( p1y - maxy < radius || p2y - maxy < radius )
|
|
57
|
-
);
|
|
115
|
+
return this;
|
|
58
116
|
|
|
59
117
|
}
|
|
60
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Returns `true` if the given bounding box intersects with this capsule.
|
|
121
|
+
*
|
|
122
|
+
* @param {Box3} box - The bounding box to test.
|
|
123
|
+
* @return {boolean} Whether the given bounding box intersects with this capsule.
|
|
124
|
+
*/
|
|
61
125
|
intersectsBox( box ) {
|
|
62
126
|
|
|
63
127
|
return (
|
|
64
|
-
|
|
128
|
+
checkAABBAxis(
|
|
65
129
|
this.start.x, this.start.y, this.end.x, this.end.y,
|
|
66
130
|
box.min.x, box.max.x, box.min.y, box.max.y,
|
|
67
131
|
this.radius ) &&
|
|
68
|
-
|
|
132
|
+
checkAABBAxis(
|
|
69
133
|
this.start.x, this.start.z, this.end.x, this.end.z,
|
|
70
134
|
box.min.x, box.max.x, box.min.z, box.max.z,
|
|
71
135
|
this.radius ) &&
|
|
72
|
-
|
|
136
|
+
checkAABBAxis(
|
|
73
137
|
this.start.y, this.start.z, this.end.y, this.end.z,
|
|
74
138
|
box.min.y, box.max.y, box.min.z, box.max.z,
|
|
75
139
|
this.radius )
|
|
@@ -79,4 +143,15 @@ class Capsule {
|
|
|
79
143
|
|
|
80
144
|
}
|
|
81
145
|
|
|
146
|
+
function checkAABBAxis( p1x, p1y, p2x, p2y, minx, maxx, miny, maxy, radius ) {
|
|
147
|
+
|
|
148
|
+
return (
|
|
149
|
+
( minx - p1x < radius || minx - p2x < radius ) &&
|
|
150
|
+
( p1x - maxx < radius || p2x - maxx < radius ) &&
|
|
151
|
+
( miny - p1y < radius || miny - p2y < radius ) &&
|
|
152
|
+
( p1y - maxy < radius || p2y - maxy < radius )
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
}
|
|
156
|
+
|
|
82
157
|
export { Capsule };
|
|
@@ -2,8 +2,22 @@ import { MathUtils } from 'three';
|
|
|
2
2
|
|
|
3
3
|
const _hsl = {};
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A utility class with helper functions for color conversion.
|
|
7
|
+
*
|
|
8
|
+
* @hideconstructor
|
|
9
|
+
*/
|
|
5
10
|
class ColorConverter {
|
|
6
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Sets the given HSV color definition to the given color object.
|
|
14
|
+
*
|
|
15
|
+
* @param {Color} color - The color to set.
|
|
16
|
+
* @param {number} h - The hue.
|
|
17
|
+
* @param {number} s - The saturation.
|
|
18
|
+
* @param {number} v - The value.
|
|
19
|
+
* @return {Color} The update color.
|
|
20
|
+
*/
|
|
7
21
|
static setHSV( color, h, s, v ) {
|
|
8
22
|
|
|
9
23
|
// https://gist.github.com/xpansive/1337890#file-index-js
|
|
@@ -16,6 +30,13 @@ class ColorConverter {
|
|
|
16
30
|
|
|
17
31
|
}
|
|
18
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Returns a HSV color representation of the given color object.
|
|
35
|
+
*
|
|
36
|
+
* @param {Color} color - The color to get HSV values from.
|
|
37
|
+
* @param {{h:number,s:number,v:number}} target - The target object that is used to store the method's result.
|
|
38
|
+
* @return {{h:number,s:number,v:number}} The HSV color.
|
|
39
|
+
*/
|
|
19
40
|
static getHSV( color, target ) {
|
|
20
41
|
|
|
21
42
|
color.getHSL( _hsl );
|