@plastic-software/three 0.175.14 → 0.179.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/build/three.cjs +8402 -6787
- package/build/three.core.js +8007 -6688
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +397 -102
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +84 -27
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +6831 -2838
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +6648 -2838
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -3
- package/examples/jsm/animation/AnimationClipCreator.js +1 -0
- package/examples/jsm/animation/CCDIKSolver.js +6 -3
- package/examples/jsm/capabilities/WebGL.js +1 -27
- package/examples/jsm/capabilities/WebGPU.js +2 -1
- package/examples/jsm/controls/ArcballControls.js +15 -4
- package/examples/jsm/controls/DragControls.js +1 -0
- package/examples/jsm/controls/FirstPersonControls.js +1 -0
- package/examples/jsm/controls/FlyControls.js +1 -0
- package/examples/jsm/controls/MapControls.js +1 -0
- package/examples/jsm/controls/OrbitControls.js +1 -0
- package/examples/jsm/controls/PointerLockControls.js +5 -3
- package/examples/jsm/controls/TrackballControls.js +1 -0
- package/examples/jsm/controls/TransformControls.js +62 -14
- package/examples/jsm/csm/CSM.js +2 -0
- package/examples/jsm/csm/CSMFrustum.js +2 -0
- package/examples/jsm/csm/CSMHelper.js +1 -0
- package/examples/jsm/csm/CSMShader.js +4 -1
- package/examples/jsm/csm/CSMShadowNode.js +22 -8
- package/examples/jsm/curves/CurveExtras.js +14 -0
- package/examples/jsm/curves/NURBSCurve.js +1 -0
- package/examples/jsm/curves/NURBSSurface.js +2 -0
- package/examples/jsm/curves/NURBSUtils.js +4 -1
- package/examples/jsm/curves/NURBSVolume.js +2 -0
- package/examples/jsm/effects/AnaglyphEffect.js +2 -0
- package/examples/jsm/effects/AsciiEffect.js +2 -0
- package/examples/jsm/effects/OutlineEffect.js +2 -0
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -0
- package/examples/jsm/effects/StereoEffect.js +2 -0
- package/examples/jsm/environments/DebugEnvironment.js +1 -0
- package/examples/jsm/environments/RoomEnvironment.js +57 -38
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -0
- package/examples/jsm/exporters/GLTFExporter.js +7 -4
- package/examples/jsm/exporters/KTX2Exporter.js +2 -0
- package/examples/jsm/exporters/OBJExporter.js +3 -1
- package/examples/jsm/exporters/PLYExporter.js +4 -2
- package/examples/jsm/exporters/STLExporter.js +2 -0
- package/examples/jsm/exporters/USDZExporter.js +679 -300
- package/examples/jsm/geometries/BoxLineGeometry.js +1 -0
- package/examples/jsm/geometries/ConvexGeometry.js +1 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -0
- package/examples/jsm/geometries/ParametricFunctions.js +4 -1
- package/examples/jsm/geometries/ParametricGeometry.js +1 -0
- package/examples/jsm/geometries/RoundedBoxGeometry.js +48 -8
- package/examples/jsm/geometries/TeapotGeometry.js +1 -0
- package/examples/jsm/geometries/TextGeometry.js +1 -0
- package/examples/jsm/helpers/LightProbeHelper.js +1 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -0
- package/examples/jsm/helpers/OctreeHelper.js +1 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +1 -0
- package/examples/jsm/helpers/RapierHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +5 -4
- package/examples/jsm/helpers/VertexNormalsHelper.js +1 -0
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -0
- package/examples/jsm/helpers/ViewHelper.js +1 -0
- package/examples/jsm/interactive/HTMLMesh.js +11 -2
- package/examples/jsm/interactive/InteractiveGroup.js +1 -0
- package/examples/jsm/interactive/SelectionBox.js +2 -0
- package/examples/jsm/interactive/SelectionHelper.js +2 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lighting/TiledLighting.js +1 -0
- package/examples/jsm/lights/LightProbeGenerator.js +15 -3
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
- package/examples/jsm/lines/Line2.js +1 -0
- package/examples/jsm/lines/LineGeometry.js +1 -0
- package/examples/jsm/lines/LineMaterial.js +4 -4
- package/examples/jsm/lines/LineSegments2.js +1 -0
- package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
- package/examples/jsm/lines/Wireframe.js +1 -0
- package/examples/jsm/lines/WireframeGeometry2.js +1 -0
- package/examples/jsm/lines/webgpu/Line2.js +1 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +1 -0
- package/examples/jsm/loaders/AMFLoader.js +1 -0
- package/examples/jsm/loaders/BVHLoader.js +1 -0
- package/examples/jsm/loaders/ColladaLoader.js +6 -5
- package/examples/jsm/loaders/DDSLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -1
- package/examples/jsm/loaders/EXRLoader.js +211 -22
- package/examples/jsm/loaders/FBXLoader.js +25 -23
- package/examples/jsm/loaders/FontLoader.js +1 -0
- package/examples/jsm/loaders/GCodeLoader.js +1 -0
- package/examples/jsm/loaders/GLTFLoader.js +10 -82
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
- package/examples/jsm/loaders/IESLoader.js +1 -0
- package/examples/jsm/loaders/KMZLoader.js +1 -0
- package/examples/jsm/loaders/KTX2Loader.js +67 -26
- package/examples/jsm/loaders/KTXLoader.js +1 -0
- package/examples/jsm/loaders/LDrawLoader.js +55 -3
- package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
- package/examples/jsm/loaders/LUTImageLoader.js +1 -0
- package/examples/jsm/loaders/LWOLoader.js +1 -13
- package/examples/jsm/loaders/LottieLoader.js +15 -0
- package/examples/jsm/loaders/MD2Loader.js +1 -0
- package/examples/jsm/loaders/MDDLoader.js +1 -0
- package/examples/jsm/loaders/MTLLoader.js +4 -3
- package/examples/jsm/loaders/MaterialXLoader.js +213 -30
- package/examples/jsm/loaders/NRRDLoader.js +1 -0
- package/examples/jsm/loaders/OBJLoader.js +1 -0
- package/examples/jsm/loaders/PCDLoader.js +122 -19
- package/examples/jsm/loaders/PDBLoader.js +1 -0
- package/examples/jsm/loaders/PLYLoader.js +1 -0
- package/examples/jsm/loaders/PVRLoader.js +1 -0
- package/examples/jsm/loaders/RGBELoader.js +1 -0
- package/examples/jsm/loaders/RGBMLoader.js +1 -0
- package/examples/jsm/loaders/STLLoader.js +1 -0
- package/examples/jsm/loaders/SVGLoader.js +1 -0
- package/examples/jsm/loaders/TDSLoader.js +1 -0
- package/examples/jsm/loaders/TGALoader.js +1 -0
- package/examples/jsm/loaders/TIFFLoader.js +1 -0
- package/examples/jsm/loaders/TTFLoader.js +14 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -891
- package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +3 -2
- package/examples/jsm/loaders/VTKLoader.js +1 -0
- package/examples/jsm/loaders/XYZLoader.js +1 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
- package/examples/jsm/math/Capsule.js +2 -0
- package/examples/jsm/math/ColorConverter.js +1 -0
- package/examples/jsm/math/ConvexHull.js +2 -0
- package/examples/jsm/math/ImprovedNoise.js +19 -14
- package/examples/jsm/math/Lut.js +2 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
- package/examples/jsm/math/OBB.js +2 -0
- package/examples/jsm/math/Octree.js +20 -1
- package/examples/jsm/math/SimplexNoise.js +2 -0
- package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/Gyroscope.js +1 -0
- package/examples/jsm/misc/MD2Character.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
- package/examples/jsm/misc/MorphAnimMesh.js +1 -0
- package/examples/jsm/misc/MorphBlendMesh.js +1 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +5 -0
- package/examples/jsm/misc/TubePainter.js +1 -0
- package/examples/jsm/misc/Volume.js +2 -0
- package/examples/jsm/misc/VolumeSlice.js +1 -0
- package/examples/jsm/modifiers/CurveModifier.js +3 -0
- package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
- package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
- package/examples/jsm/modifiers/TessellateModifier.js +2 -0
- package/examples/jsm/objects/GroundedSkybox.js +1 -0
- package/examples/jsm/objects/Lensflare.js +3 -0
- package/examples/jsm/objects/LensflareMesh.js +4 -3
- package/examples/jsm/objects/MarchingCubes.js +2 -0
- package/examples/jsm/objects/Reflector.js +1 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Refractor.js +1 -0
- package/examples/jsm/objects/ShadowMesh.js +1 -0
- package/examples/jsm/objects/Sky.js +2 -1
- package/examples/jsm/objects/SkyMesh.js +22 -19
- package/examples/jsm/objects/Water.js +1 -0
- package/examples/jsm/objects/Water2.js +1 -0
- package/examples/jsm/objects/Water2Mesh.js +3 -1
- package/examples/jsm/objects/WaterMesh.js +2 -1
- package/examples/jsm/physics/AmmoPhysics.js +1 -0
- package/examples/jsm/physics/JoltPhysics.js +1 -0
- package/examples/jsm/physics/RapierPhysics.js +149 -13
- package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
- package/examples/jsm/postprocessing/BloomPass.js +2 -1
- package/examples/jsm/postprocessing/BokehPass.js +2 -1
- package/examples/jsm/postprocessing/ClearPass.js +1 -0
- package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
- package/examples/jsm/postprocessing/EffectComposer.js +4 -2
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +1 -0
- package/examples/jsm/postprocessing/GTAOPass.js +14 -12
- package/examples/jsm/postprocessing/GlitchPass.js +2 -1
- package/examples/jsm/postprocessing/HalftonePass.js +2 -1
- package/examples/jsm/postprocessing/LUTPass.js +1 -0
- package/examples/jsm/postprocessing/MaskPass.js +1 -0
- package/examples/jsm/postprocessing/OutlinePass.js +22 -19
- package/examples/jsm/postprocessing/OutputPass.js +1 -0
- package/examples/jsm/postprocessing/Pass.js +3 -1
- package/examples/jsm/postprocessing/RenderPass.js +1 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
- package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
- package/examples/jsm/postprocessing/SAOPass.js +3 -2
- package/examples/jsm/postprocessing/SMAAPass.js +3 -2
- package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
- package/examples/jsm/postprocessing/SSAOPass.js +12 -10
- package/examples/jsm/postprocessing/SSRPass.js +4 -3
- package/examples/jsm/postprocessing/SavePass.js +2 -1
- package/examples/jsm/postprocessing/ShaderPass.js +1 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
- package/examples/jsm/postprocessing/TexturePass.js +1 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
- package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
- package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
- package/examples/jsm/renderers/Projector.js +2 -0
- package/examples/jsm/renderers/SVGRenderer.js +3 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
- package/examples/jsm/shaders/AfterimageShader.js +4 -1
- package/examples/jsm/shaders/BasicShader.js +4 -1
- package/examples/jsm/shaders/BleachBypassShader.js +4 -1
- package/examples/jsm/shaders/BlendShader.js +4 -1
- package/examples/jsm/shaders/BokehShader.js +4 -1
- package/examples/jsm/shaders/BokehShader2.js +4 -1
- package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
- package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
- package/examples/jsm/shaders/ColorifyShader.js +4 -1
- package/examples/jsm/shaders/ConvolutionShader.js +4 -1
- package/examples/jsm/shaders/CopyShader.js +4 -1
- package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
- package/examples/jsm/shaders/DigitalGlitch.js +4 -1
- package/examples/jsm/shaders/DotScreenShader.js +4 -1
- package/examples/jsm/shaders/ExposureShader.js +4 -1
- package/examples/jsm/shaders/FXAAShader.js +4 -1
- package/examples/jsm/shaders/FilmShader.js +4 -1
- package/examples/jsm/shaders/FocusShader.js +4 -1
- package/examples/jsm/shaders/FreiChenShader.js +4 -1
- package/examples/jsm/shaders/GTAOShader.js +4 -1
- package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
- package/examples/jsm/shaders/GodRaysShader.js +4 -1
- package/examples/jsm/shaders/HalftoneShader.js +4 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/HueSaturationShader.js +4 -1
- package/examples/jsm/shaders/KaleidoShader.js +4 -1
- package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
- package/examples/jsm/shaders/LuminosityShader.js +4 -1
- package/examples/jsm/shaders/MirrorShader.js +4 -1
- package/examples/jsm/shaders/NormalMapShader.js +4 -1
- package/examples/jsm/shaders/OutputShader.js +4 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
- package/examples/jsm/shaders/RGBShiftShader.js +4 -1
- package/examples/jsm/shaders/SAOShader.js +4 -1
- package/examples/jsm/shaders/SMAAShader.js +1 -0
- package/examples/jsm/shaders/SSAOShader.js +4 -1
- package/examples/jsm/shaders/SSRShader.js +1 -0
- package/examples/jsm/shaders/SepiaShader.js +4 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
- package/examples/jsm/shaders/TechnicolorShader.js +4 -1
- package/examples/jsm/shaders/ToonShader.js +2 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +15 -3
- package/examples/jsm/shaders/VelocityShader.js +4 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/VignetteShader.js +4 -1
- package/examples/jsm/shaders/VolumeShader.js +5 -2
- package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
- package/examples/jsm/textures/FlakesTexture.js +2 -0
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +227 -88
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +234 -85
- package/examples/jsm/transpiler/Transpiler.js +19 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +788 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
- package/examples/jsm/tsl/display/BloomNode.js +9 -7
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
- package/examples/jsm/tsl/display/FXAANode.js +3 -2
- package/examples/jsm/tsl/display/FilmNode.js +1 -0
- package/examples/jsm/tsl/display/GTAONode.js +1 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +9 -36
- package/examples/jsm/tsl/display/LensflareNode.js +1 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
- package/examples/jsm/tsl/display/OutlineNode.js +1 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
- package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
- package/examples/jsm/tsl/display/SMAANode.js +9 -8
- package/examples/jsm/tsl/display/SSAAPassNode.js +5 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
- package/examples/jsm/tsl/display/{TRAAPassNode.js → TRAANode.js} +184 -174
- package/examples/jsm/tsl/display/TransitionNode.js +1 -0
- package/examples/jsm/tsl/display/hashBlur.js +28 -6
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +5 -4
- package/examples/jsm/tsl/math/Bayer.js +4 -1
- package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/examples/jsm/tsl/utils/Raymarching.js +6 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +4 -1
- package/examples/jsm/utils/LDrawUtils.js +2 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -0
- package/examples/jsm/utils/SceneUtils.js +4 -1
- package/examples/jsm/utils/ShadowMapViewer.js +2 -0
- package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
- package/examples/jsm/utils/SkeletonUtils.js +4 -1
- package/examples/jsm/utils/SortUtils.js +4 -1
- package/examples/jsm/utils/UVsDebug.js +4 -1
- package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
- package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
- package/examples/jsm/utils/WorkerPool.js +2 -0
- package/examples/jsm/webxr/ARButton.js +1 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
- package/examples/jsm/webxr/Text2D.js +4 -1
- package/examples/jsm/webxr/VRButton.js +1 -0
- package/examples/jsm/webxr/XRButton.js +1 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
- package/examples/jsm/webxr/XREstimatedLight.js +1 -0
- package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
- package/examples/jsm/webxr/XRPlanes.js +1 -0
- package/package.json +6 -4
- package/src/Three.Core.js +2 -1
- package/src/Three.TSL.js +83 -26
- package/src/Three.WebGPU.Nodes.js +1 -0
- package/src/Three.WebGPU.js +3 -0
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/AudioListener.js +13 -10
- package/src/cameras/ArrayCamera.js +9 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/constants.js +47 -20
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +2 -5
- package/src/core/Clock.js +2 -8
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/Object3D.js +23 -22
- package/src/core/RenderTarget.js +65 -21
- package/src/core/RenderTarget3D.js +1 -0
- package/{examples/jsm/misc → src/core}/Timer.js +4 -40
- package/src/extras/PMREMGenerator.js +11 -0
- package/src/extras/TextureUtils.js +1 -5
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +22 -22
- package/src/geometries/CapsuleGeometry.js +167 -17
- package/src/geometries/ExtrudeGeometry.js +39 -29
- package/src/helpers/ArrowHelper.js +2 -2
- package/src/helpers/CameraHelper.js +41 -11
- package/src/helpers/SkeletonHelper.js +36 -7
- package/src/lights/LightShadow.js +34 -7
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/SpotLightShadow.js +9 -1
- package/src/lights/webgpu/ProjectorLight.js +46 -0
- package/src/loaders/BufferGeometryLoader.js +1 -10
- package/src/loaders/FileLoader.js +27 -4
- package/src/loaders/ImageBitmapLoader.js +48 -9
- package/src/loaders/ImageLoader.js +55 -8
- package/src/loaders/Loader.js +14 -0
- package/src/loaders/LoadingManager.js +23 -0
- package/src/loaders/ObjectLoader.js +44 -16
- package/src/loaders/nodes/NodeObjectLoader.js +2 -2
- package/src/materials/Material.js +1 -7
- package/src/materials/MeshBasicMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +0 -8
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +106 -20
- package/src/materials/nodes/PointsNodeMaterial.js +5 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +107 -4
- package/src/math/Box3.js +28 -0
- package/src/math/Color.js +7 -7
- package/src/math/ColorManagement.js +22 -3
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +258 -0
- package/src/math/Line3.js +129 -2
- package/src/math/Matrix4.js +48 -27
- package/src/math/Quaternion.js +1 -1
- package/src/math/Ray.js +2 -0
- package/src/math/Sphere.js +28 -0
- package/src/math/Spherical.js +2 -2
- package/src/nodes/Nodes.js +3 -3
- package/src/nodes/TSL.js +6 -3
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +54 -26
- package/src/nodes/accessors/Camera.js +40 -13
- package/src/nodes/accessors/CubeTextureNode.js +50 -2
- package/src/nodes/accessors/InstanceNode.js +5 -4
- package/src/nodes/accessors/Lights.js +2 -2
- package/src/nodes/accessors/MaterialNode.js +4 -0
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +110 -24
- package/src/nodes/accessors/Object3DNode.js +7 -8
- package/src/nodes/accessors/Position.js +14 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +19 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +25 -0
- package/src/nodes/accessors/StorageTextureNode.js +15 -4
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +71 -8
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/accessors/VelocityNode.js +1 -0
- package/src/nodes/accessors/VertexColorNode.js +4 -4
- package/src/nodes/code/CodeNode.js +8 -11
- package/src/nodes/core/ArrayNode.js +12 -0
- package/src/nodes/core/AssignNode.js +30 -5
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/ContextNode.js +27 -4
- package/src/nodes/core/Node.js +83 -22
- package/src/nodes/core/NodeBuilder.js +273 -49
- package/src/nodes/core/NodeUtils.js +46 -1
- package/src/nodes/core/NodeVarying.js +19 -1
- package/src/nodes/core/PropertyNode.js +8 -12
- package/src/nodes/core/StackNode.js +171 -26
- package/src/nodes/core/StructTypeNode.js +26 -4
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +63 -5
- package/src/nodes/core/VarNode.js +102 -4
- package/src/nodes/core/VaryingNode.js +45 -24
- package/src/nodes/display/BlendModes.js +42 -1
- package/src/nodes/display/ColorSpaceNode.js +4 -27
- package/src/nodes/display/FrontFacingNode.js +34 -2
- package/src/nodes/display/NormalMapNode.js +19 -50
- package/src/nodes/display/PassNode.js +165 -20
- package/src/nodes/display/ScreenNode.js +0 -26
- package/src/nodes/display/ViewportTextureNode.js +67 -7
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +16 -16
- package/src/nodes/functions/ShadowMaskModel.js +5 -1
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
- package/src/nodes/gpgpu/BarrierNode.js +3 -3
- package/src/nodes/gpgpu/ComputeNode.js +68 -24
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +28 -3
- package/src/nodes/lighting/AnalyticLightNode.js +7 -13
- package/src/nodes/lighting/EnvironmentNode.js +5 -5
- package/src/nodes/lighting/HemisphereLightNode.js +2 -2
- package/src/nodes/lighting/IESSpotLightNode.js +2 -1
- package/src/nodes/lighting/LightsNode.js +29 -11
- package/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/src/nodes/lighting/ShadowBaseNode.js +1 -12
- package/src/nodes/lighting/ShadowFilterNode.js +274 -0
- package/src/nodes/lighting/ShadowNode.js +174 -242
- package/src/nodes/lighting/SpotLightNode.js +44 -7
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +166 -2
- package/src/nodes/math/ConditionalNode.js +1 -20
- package/src/nodes/math/MathNode.js +146 -75
- package/src/nodes/math/OperatorNode.js +129 -119
- package/src/nodes/shapes/Shapes.js +5 -4
- package/src/nodes/tsl/TSLBase.js +1 -0
- package/src/nodes/tsl/TSLCore.js +222 -72
- package/src/nodes/utils/DebugNode.js +16 -4
- package/src/nodes/utils/Discard.js +2 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +83 -0
- package/src/nodes/utils/LoopNode.js +64 -34
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/RTTNode.js +22 -5
- package/src/nodes/utils/ReflectorNode.js +77 -7
- package/src/nodes/utils/SampleNode.js +81 -0
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +20 -6
- package/src/objects/Mesh.js +9 -0
- package/src/objects/Skeleton.js +1 -1
- package/src/objects/Sprite.js +9 -0
- package/src/renderers/WebGL3DRenderTarget.js +1 -0
- package/src/renderers/WebGLArrayRenderTarget.js +1 -0
- package/src/renderers/WebGLCubeRenderTarget.js +2 -4
- package/src/renderers/WebGLRenderer.js +45 -32
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Background.js +13 -2
- package/src/renderers/common/Bindings.js +19 -18
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/PostProcessing.js +60 -5
- package/src/renderers/common/RenderList.js +0 -4
- package/src/renderers/common/RenderObject.js +80 -4
- package/src/renderers/common/Renderer.js +133 -22
- package/src/renderers/common/SampledTexture.js +3 -71
- package/src/renderers/common/Sampler.js +79 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +19 -0
- package/src/renderers/common/Textures.js +34 -24
- package/src/renderers/common/TimestampQueryPool.js +1 -0
- package/src/renderers/common/Uniform.js +1 -1
- package/src/renderers/common/UniformsGroup.js +14 -18
- package/src/renderers/common/XRManager.js +183 -35
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +30 -23
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/common/nodes/Nodes.js +13 -3
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +20 -2
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl/WebGLMaterials.js +6 -6
- package/src/renderers/webgl/WebGLProgram.js +22 -16
- package/src/renderers/webgl/WebGLPrograms.js +8 -6
- package/src/renderers/webgl/WebGLShadowMap.js +14 -3
- package/src/renderers/webgl/WebGLState.js +4 -4
- package/src/renderers/webgl/WebGLTextures.js +163 -11
- package/src/renderers/webgl/WebGLUtils.js +1 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +261 -94
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -9
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
- package/src/renderers/webgpu/WebGPUBackend.js +505 -143
- package/src/renderers/webgpu/WebGPURenderer.js +7 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +129 -96
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +58 -31
- package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +50 -108
- package/src/renderers/webgpu/utils/WebGPUUtils.js +2 -17
- package/src/renderers/webxr/WebXRController.js +1 -1
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +70 -9
- package/src/textures/DepthTexture.js +6 -10
- package/src/textures/ExternalTexture.js +45 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +32 -0
- package/src/textures/Texture.js +118 -1
- package/src/textures/VideoTexture.js +31 -3
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
- package/src/core/RenderTargetArray.js +0 -40
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -1,35 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
2
|
+
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
3
|
+
import { Vector3 } from '../math/Vector3.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
|
-
* A geometry class for a capsule
|
|
6
|
+
* A geometry class for representing a capsule.
|
|
6
7
|
*
|
|
7
8
|
* ```js
|
|
8
|
-
* const geometry = new THREE.CapsuleGeometry( 1, 1, 4, 8 );
|
|
9
|
+
* const geometry = new THREE.CapsuleGeometry( 1, 1, 4, 8, 1 );
|
|
9
10
|
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
|
|
10
11
|
* const capsule = new THREE.Mesh( geometry, material );
|
|
11
12
|
* scene.add( capsule );
|
|
12
13
|
* ```
|
|
13
14
|
*
|
|
14
|
-
* @augments
|
|
15
|
+
* @augments BufferGeometry
|
|
15
16
|
*/
|
|
16
|
-
class CapsuleGeometry extends
|
|
17
|
+
class CapsuleGeometry extends BufferGeometry {
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* Constructs a new capsule geometry.
|
|
20
21
|
*
|
|
21
22
|
* @param {number} [radius=1] - Radius of the capsule.
|
|
22
|
-
* @param {number} [
|
|
23
|
-
* @param {number} [capSegments=4] - Number of curve segments used to build
|
|
24
|
-
* @param {number} [radialSegments=8] - Number of segmented faces around the circumference of the capsule.
|
|
23
|
+
* @param {number} [height=1] - Height of the middle section.
|
|
24
|
+
* @param {number} [capSegments=4] - Number of curve segments used to build each cap.
|
|
25
|
+
* @param {number} [radialSegments=8] - Number of segmented faces around the circumference of the capsule. Must be an integer >= 3.
|
|
26
|
+
* @param {number} [heightSegments=1] - Number of rows of faces along the height of the middle section. Must be an integer >= 1.
|
|
25
27
|
*/
|
|
26
|
-
constructor( radius = 1,
|
|
28
|
+
constructor( radius = 1, height = 1, capSegments = 4, radialSegments = 8, heightSegments = 1 ) {
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
path.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );
|
|
30
|
-
path.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );
|
|
31
|
-
|
|
32
|
-
super( path.getPoints( capSegments ), radialSegments );
|
|
30
|
+
super();
|
|
33
31
|
|
|
34
32
|
this.type = 'CapsuleGeometry';
|
|
35
33
|
|
|
@@ -42,11 +40,163 @@ class CapsuleGeometry extends LatheGeometry {
|
|
|
42
40
|
*/
|
|
43
41
|
this.parameters = {
|
|
44
42
|
radius: radius,
|
|
45
|
-
|
|
43
|
+
height: height,
|
|
46
44
|
capSegments: capSegments,
|
|
47
45
|
radialSegments: radialSegments,
|
|
46
|
+
heightSegments: heightSegments,
|
|
48
47
|
};
|
|
49
48
|
|
|
49
|
+
height = Math.max( 0, height );
|
|
50
|
+
capSegments = Math.max( 1, Math.floor( capSegments ) );
|
|
51
|
+
radialSegments = Math.max( 3, Math.floor( radialSegments ) );
|
|
52
|
+
heightSegments = Math.max( 1, Math.floor( heightSegments ) );
|
|
53
|
+
|
|
54
|
+
// buffers
|
|
55
|
+
|
|
56
|
+
const indices = [];
|
|
57
|
+
const vertices = [];
|
|
58
|
+
const normals = [];
|
|
59
|
+
const uvs = [];
|
|
60
|
+
|
|
61
|
+
// helper variables
|
|
62
|
+
|
|
63
|
+
const halfHeight = height / 2;
|
|
64
|
+
const capArcLength = ( Math.PI / 2 ) * radius;
|
|
65
|
+
const cylinderPartLength = height;
|
|
66
|
+
const totalArcLength = 2 * capArcLength + cylinderPartLength;
|
|
67
|
+
|
|
68
|
+
const numVerticalSegments = capSegments * 2 + heightSegments;
|
|
69
|
+
const verticesPerRow = radialSegments + 1;
|
|
70
|
+
|
|
71
|
+
const normal = new Vector3();
|
|
72
|
+
const vertex = new Vector3();
|
|
73
|
+
|
|
74
|
+
// generate vertices, normals, and uvs
|
|
75
|
+
|
|
76
|
+
for ( let iy = 0; iy <= numVerticalSegments; iy ++ ) {
|
|
77
|
+
|
|
78
|
+
let currentArcLength = 0;
|
|
79
|
+
let profileY = 0;
|
|
80
|
+
let profileRadius = 0;
|
|
81
|
+
let normalYComponent = 0;
|
|
82
|
+
|
|
83
|
+
if ( iy <= capSegments ) {
|
|
84
|
+
|
|
85
|
+
// bottom cap
|
|
86
|
+
const segmentProgress = iy / capSegments;
|
|
87
|
+
const angle = ( segmentProgress * Math.PI ) / 2;
|
|
88
|
+
profileY = - halfHeight - radius * Math.cos( angle );
|
|
89
|
+
profileRadius = radius * Math.sin( angle );
|
|
90
|
+
normalYComponent = - radius * Math.cos( angle );
|
|
91
|
+
currentArcLength = segmentProgress * capArcLength;
|
|
92
|
+
|
|
93
|
+
} else if ( iy <= capSegments + heightSegments ) {
|
|
94
|
+
|
|
95
|
+
// middle section
|
|
96
|
+
const segmentProgress = ( iy - capSegments ) / heightSegments;
|
|
97
|
+
profileY = - halfHeight + segmentProgress * height;
|
|
98
|
+
profileRadius = radius;
|
|
99
|
+
normalYComponent = 0;
|
|
100
|
+
currentArcLength = capArcLength + segmentProgress * cylinderPartLength;
|
|
101
|
+
|
|
102
|
+
} else {
|
|
103
|
+
|
|
104
|
+
// top cap
|
|
105
|
+
const segmentProgress =
|
|
106
|
+
( iy - capSegments - heightSegments ) / capSegments;
|
|
107
|
+
const angle = ( segmentProgress * Math.PI ) / 2;
|
|
108
|
+
profileY = halfHeight + radius * Math.sin( angle );
|
|
109
|
+
profileRadius = radius * Math.cos( angle );
|
|
110
|
+
normalYComponent = radius * Math.sin( angle );
|
|
111
|
+
currentArcLength =
|
|
112
|
+
capArcLength + cylinderPartLength + segmentProgress * capArcLength;
|
|
113
|
+
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const v = Math.max( 0, Math.min( 1, currentArcLength / totalArcLength ) );
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
// special case for the poles
|
|
120
|
+
|
|
121
|
+
let uOffset = 0;
|
|
122
|
+
|
|
123
|
+
if ( iy === 0 ) {
|
|
124
|
+
|
|
125
|
+
uOffset = 0.5 / radialSegments;
|
|
126
|
+
|
|
127
|
+
} else if ( iy === numVerticalSegments ) {
|
|
128
|
+
|
|
129
|
+
uOffset = - 0.5 / radialSegments;
|
|
130
|
+
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
for ( let ix = 0; ix <= radialSegments; ix ++ ) {
|
|
134
|
+
|
|
135
|
+
const u = ix / radialSegments;
|
|
136
|
+
const theta = u * Math.PI * 2;
|
|
137
|
+
|
|
138
|
+
const sinTheta = Math.sin( theta );
|
|
139
|
+
const cosTheta = Math.cos( theta );
|
|
140
|
+
|
|
141
|
+
// vertex
|
|
142
|
+
|
|
143
|
+
vertex.x = - profileRadius * cosTheta;
|
|
144
|
+
vertex.y = profileY;
|
|
145
|
+
vertex.z = profileRadius * sinTheta;
|
|
146
|
+
vertices.push( vertex.x, vertex.y, vertex.z );
|
|
147
|
+
|
|
148
|
+
// normal
|
|
149
|
+
|
|
150
|
+
normal.set(
|
|
151
|
+
- profileRadius * cosTheta,
|
|
152
|
+
normalYComponent,
|
|
153
|
+
profileRadius * sinTheta
|
|
154
|
+
);
|
|
155
|
+
normal.normalize();
|
|
156
|
+
normals.push( normal.x, normal.y, normal.z );
|
|
157
|
+
|
|
158
|
+
// uv
|
|
159
|
+
|
|
160
|
+
uvs.push( u + uOffset, v );
|
|
161
|
+
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if ( iy > 0 ) {
|
|
165
|
+
|
|
166
|
+
const prevIndexRow = ( iy - 1 ) * verticesPerRow;
|
|
167
|
+
for ( let ix = 0; ix < radialSegments; ix ++ ) {
|
|
168
|
+
|
|
169
|
+
const i1 = prevIndexRow + ix;
|
|
170
|
+
const i2 = prevIndexRow + ix + 1;
|
|
171
|
+
const i3 = iy * verticesPerRow + ix;
|
|
172
|
+
const i4 = iy * verticesPerRow + ix + 1;
|
|
173
|
+
|
|
174
|
+
indices.push( i1, i2, i3 );
|
|
175
|
+
indices.push( i2, i4, i3 );
|
|
176
|
+
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// build geometry
|
|
184
|
+
|
|
185
|
+
this.setIndex( indices );
|
|
186
|
+
this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );
|
|
187
|
+
this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );
|
|
188
|
+
this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );
|
|
189
|
+
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
copy( source ) {
|
|
193
|
+
|
|
194
|
+
super.copy( source );
|
|
195
|
+
|
|
196
|
+
this.parameters = Object.assign( {}, source.parameters );
|
|
197
|
+
|
|
198
|
+
return this;
|
|
199
|
+
|
|
50
200
|
}
|
|
51
201
|
|
|
52
202
|
/**
|
|
@@ -58,7 +208,7 @@ class CapsuleGeometry extends LatheGeometry {
|
|
|
58
208
|
*/
|
|
59
209
|
static fromJSON( data ) {
|
|
60
210
|
|
|
61
|
-
return new CapsuleGeometry( data.radius, data.
|
|
211
|
+
return new CapsuleGeometry( data.radius, data.height, data.capSegments, data.radialSegments, data.heightSegments );
|
|
62
212
|
|
|
63
213
|
}
|
|
64
214
|
|
|
@@ -184,8 +184,8 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
184
184
|
Math.abs( prevPos.x ),
|
|
185
185
|
Math.abs( prevPos.y )
|
|
186
186
|
);
|
|
187
|
-
const
|
|
188
|
-
if ( distSq <=
|
|
187
|
+
const thresholdSqScaled = THRESHOLD_SQ * scalingFactorSqrt * scalingFactorSqrt;
|
|
188
|
+
if ( distSq <= thresholdSqScaled ) {
|
|
189
189
|
|
|
190
190
|
points.splice( currentIndex, 1 );
|
|
191
191
|
i --;
|
|
@@ -393,53 +393,63 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
393
393
|
|
|
394
394
|
}
|
|
395
395
|
|
|
396
|
-
|
|
397
|
-
const expandedHoleVertices = [];
|
|
396
|
+
let faces;
|
|
398
397
|
|
|
399
|
-
|
|
398
|
+
if ( bevelSegments === 0 ) {
|
|
400
399
|
|
|
401
|
-
|
|
400
|
+
faces = ShapeUtils.triangulateShape( contour, holes );
|
|
402
401
|
|
|
403
|
-
|
|
402
|
+
} else {
|
|
404
403
|
|
|
405
|
-
const
|
|
406
|
-
const
|
|
407
|
-
const bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;
|
|
404
|
+
const contractedContourVertices = [];
|
|
405
|
+
const expandedHoleVertices = [];
|
|
408
406
|
|
|
409
|
-
//
|
|
407
|
+
// Loop bevelSegments, 1 for the front, 1 for the back
|
|
410
408
|
|
|
411
|
-
for ( let
|
|
409
|
+
for ( let b = 0; b < bevelSegments; b ++ ) {
|
|
412
410
|
|
|
413
|
-
|
|
411
|
+
//for ( b = bevelSegments; b > 0; b -- ) {
|
|
414
412
|
|
|
415
|
-
|
|
416
|
-
|
|
413
|
+
const t = b / bevelSegments;
|
|
414
|
+
const z = bevelThickness * Math.cos( t * Math.PI / 2 );
|
|
415
|
+
const bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;
|
|
417
416
|
|
|
418
|
-
|
|
417
|
+
// contract shape
|
|
419
418
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
for ( let h = 0, hl = numHoles; h < hl; h ++ ) {
|
|
419
|
+
for ( let i = 0, il = contour.length; i < il; i ++ ) {
|
|
423
420
|
|
|
424
|
-
|
|
425
|
-
oneHoleMovements = holesMovements[ h ];
|
|
426
|
-
const oneHoleVertices = [];
|
|
427
|
-
for ( let i = 0, il = ahole.length; i < il; i ++ ) {
|
|
428
|
-
|
|
429
|
-
const vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );
|
|
421
|
+
const vert = scalePt2( contour[ i ], contourMovements[ i ], bs );
|
|
430
422
|
|
|
431
423
|
v( vert.x, vert.y, - z );
|
|
432
|
-
if ( t
|
|
424
|
+
if ( t === 0 ) contractedContourVertices.push( vert );
|
|
433
425
|
|
|
434
426
|
}
|
|
435
427
|
|
|
436
|
-
|
|
428
|
+
// expand holes
|
|
429
|
+
|
|
430
|
+
for ( let h = 0, hl = numHoles; h < hl; h ++ ) {
|
|
431
|
+
|
|
432
|
+
const ahole = holes[ h ];
|
|
433
|
+
oneHoleMovements = holesMovements[ h ];
|
|
434
|
+
const oneHoleVertices = [];
|
|
435
|
+
for ( let i = 0, il = ahole.length; i < il; i ++ ) {
|
|
436
|
+
|
|
437
|
+
const vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );
|
|
438
|
+
|
|
439
|
+
v( vert.x, vert.y, - z );
|
|
440
|
+
if ( t === 0 ) oneHoleVertices.push( vert );
|
|
441
|
+
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
if ( t === 0 ) expandedHoleVertices.push( oneHoleVertices );
|
|
445
|
+
|
|
446
|
+
}
|
|
437
447
|
|
|
438
448
|
}
|
|
439
449
|
|
|
440
|
-
|
|
450
|
+
faces = ShapeUtils.triangulateShape( contractedContourVertices, expandedHoleVertices );
|
|
441
451
|
|
|
442
|
-
|
|
452
|
+
}
|
|
443
453
|
|
|
444
454
|
const flen = faces.length;
|
|
445
455
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
2
2
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
3
3
|
import { Object3D } from '../core/Object3D.js';
|
|
4
|
-
import {
|
|
4
|
+
import { ConeGeometry } from '../geometries/ConeGeometry.js';
|
|
5
5
|
import { MeshBasicMaterial } from '../materials/MeshBasicMaterial.js';
|
|
6
6
|
import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
|
|
7
7
|
import { Mesh } from '../objects/Mesh.js';
|
|
@@ -53,7 +53,7 @@ class ArrowHelper extends Object3D {
|
|
|
53
53
|
_lineGeometry = new BufferGeometry();
|
|
54
54
|
_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );
|
|
55
55
|
|
|
56
|
-
_coneGeometry = new
|
|
56
|
+
_coneGeometry = new ConeGeometry( 0.5, 1, 5, 1 );
|
|
57
57
|
_coneGeometry.translate( 0, - 0.5, 0 );
|
|
58
58
|
|
|
59
59
|
}
|
|
@@ -5,7 +5,7 @@ import { Color } from '../math/Color.js';
|
|
|
5
5
|
import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
|
|
6
6
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
7
7
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
8
|
-
import { WebGLCoordinateSystem } from '../constants.js';
|
|
8
|
+
import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../constants.js';
|
|
9
9
|
|
|
10
10
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
11
11
|
const _camera = /*@__PURE__*/ new Camera();
|
|
@@ -159,6 +159,7 @@ class CameraHelper extends LineSegments {
|
|
|
159
159
|
* @param {Color} up - The up line color.
|
|
160
160
|
* @param {Color} target - The target line color.
|
|
161
161
|
* @param {Color} cross - The cross line color.
|
|
162
|
+
* @return {CameraHelper} A reference to this helper.
|
|
162
163
|
*/
|
|
163
164
|
setColors( frustum, cone, up, target, cross ) {
|
|
164
165
|
|
|
@@ -215,6 +216,8 @@ class CameraHelper extends LineSegments {
|
|
|
215
216
|
|
|
216
217
|
colorAttribute.needsUpdate = true;
|
|
217
218
|
|
|
219
|
+
return this;
|
|
220
|
+
|
|
218
221
|
}
|
|
219
222
|
|
|
220
223
|
/**
|
|
@@ -227,17 +230,44 @@ class CameraHelper extends LineSegments {
|
|
|
227
230
|
|
|
228
231
|
const w = 1, h = 1;
|
|
229
232
|
|
|
233
|
+
let nearZ, farZ;
|
|
234
|
+
|
|
230
235
|
// we need just camera projection matrix inverse
|
|
231
236
|
// world matrix must be identity
|
|
232
237
|
|
|
233
238
|
_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );
|
|
234
239
|
|
|
235
240
|
// Adjust z values based on coordinate system
|
|
236
|
-
|
|
241
|
+
|
|
242
|
+
if ( this.camera.reversedDepth === true ) {
|
|
243
|
+
|
|
244
|
+
nearZ = 1;
|
|
245
|
+
farZ = 0;
|
|
246
|
+
|
|
247
|
+
} else {
|
|
248
|
+
|
|
249
|
+
if ( this.camera.coordinateSystem === WebGLCoordinateSystem ) {
|
|
250
|
+
|
|
251
|
+
nearZ = - 1;
|
|
252
|
+
farZ = 1;
|
|
253
|
+
|
|
254
|
+
} else if ( this.camera.coordinateSystem === WebGPUCoordinateSystem ) {
|
|
255
|
+
|
|
256
|
+
nearZ = 0;
|
|
257
|
+
farZ = 1;
|
|
258
|
+
|
|
259
|
+
} else {
|
|
260
|
+
|
|
261
|
+
throw new Error( 'THREE.CameraHelper.update(): Invalid coordinate system: ' + this.camera.coordinateSystem );
|
|
262
|
+
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
}
|
|
266
|
+
|
|
237
267
|
|
|
238
268
|
// center / target
|
|
239
269
|
setPoint( 'c', pointMap, geometry, _camera, 0, 0, nearZ );
|
|
240
|
-
setPoint( 't', pointMap, geometry, _camera, 0, 0,
|
|
270
|
+
setPoint( 't', pointMap, geometry, _camera, 0, 0, farZ );
|
|
241
271
|
|
|
242
272
|
// near
|
|
243
273
|
|
|
@@ -248,10 +278,10 @@ class CameraHelper extends LineSegments {
|
|
|
248
278
|
|
|
249
279
|
// far
|
|
250
280
|
|
|
251
|
-
setPoint( 'f1', pointMap, geometry, _camera, - w, - h,
|
|
252
|
-
setPoint( 'f2', pointMap, geometry, _camera, w, - h,
|
|
253
|
-
setPoint( 'f3', pointMap, geometry, _camera, - w, h,
|
|
254
|
-
setPoint( 'f4', pointMap, geometry, _camera, w, h,
|
|
281
|
+
setPoint( 'f1', pointMap, geometry, _camera, - w, - h, farZ );
|
|
282
|
+
setPoint( 'f2', pointMap, geometry, _camera, w, - h, farZ );
|
|
283
|
+
setPoint( 'f3', pointMap, geometry, _camera, - w, h, farZ );
|
|
284
|
+
setPoint( 'f4', pointMap, geometry, _camera, w, h, farZ );
|
|
255
285
|
|
|
256
286
|
// up
|
|
257
287
|
|
|
@@ -261,10 +291,10 @@ class CameraHelper extends LineSegments {
|
|
|
261
291
|
|
|
262
292
|
// cross
|
|
263
293
|
|
|
264
|
-
setPoint( 'cf1', pointMap, geometry, _camera, - w, 0,
|
|
265
|
-
setPoint( 'cf2', pointMap, geometry, _camera, w, 0,
|
|
266
|
-
setPoint( 'cf3', pointMap, geometry, _camera, 0, - h,
|
|
267
|
-
setPoint( 'cf4', pointMap, geometry, _camera, 0, h,
|
|
294
|
+
setPoint( 'cf1', pointMap, geometry, _camera, - w, 0, farZ );
|
|
295
|
+
setPoint( 'cf2', pointMap, geometry, _camera, w, 0, farZ );
|
|
296
|
+
setPoint( 'cf3', pointMap, geometry, _camera, 0, - h, farZ );
|
|
297
|
+
setPoint( 'cf4', pointMap, geometry, _camera, 0, h, farZ );
|
|
268
298
|
|
|
269
299
|
setPoint( 'cn1', pointMap, geometry, _camera, - w, 0, nearZ );
|
|
270
300
|
setPoint( 'cn2', pointMap, geometry, _camera, w, 0, nearZ );
|
|
@@ -23,7 +23,7 @@ const _matrixWorldInv = /*@__PURE__*/ new Matrix4();
|
|
|
23
23
|
class SkeletonHelper extends LineSegments {
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
* Constructs a new
|
|
26
|
+
* Constructs a new skeleton helper.
|
|
27
27
|
*
|
|
28
28
|
* @param {Object3D} object - Usually an instance of {@link SkinnedMesh}. However, any 3D object
|
|
29
29
|
* can be used if it represents a hierarchy of bones (see {@link Bone}).
|
|
@@ -37,9 +37,6 @@ class SkeletonHelper extends LineSegments {
|
|
|
37
37
|
const vertices = [];
|
|
38
38
|
const colors = [];
|
|
39
39
|
|
|
40
|
-
const color1 = new Color( 0, 0, 1 );
|
|
41
|
-
const color2 = new Color( 0, 1, 0 );
|
|
42
|
-
|
|
43
40
|
for ( let i = 0; i < bones.length; i ++ ) {
|
|
44
41
|
|
|
45
42
|
const bone = bones[ i ];
|
|
@@ -48,8 +45,8 @@ class SkeletonHelper extends LineSegments {
|
|
|
48
45
|
|
|
49
46
|
vertices.push( 0, 0, 0 );
|
|
50
47
|
vertices.push( 0, 0, 0 );
|
|
51
|
-
colors.push(
|
|
52
|
-
colors.push(
|
|
48
|
+
colors.push( 0, 0, 0 );
|
|
49
|
+
colors.push( 0, 0, 0 );
|
|
53
50
|
|
|
54
51
|
}
|
|
55
52
|
|
|
@@ -81,7 +78,7 @@ class SkeletonHelper extends LineSegments {
|
|
|
81
78
|
this.root = object;
|
|
82
79
|
|
|
83
80
|
/**
|
|
84
|
-
*
|
|
81
|
+
* The list of bones that the helper visualizes.
|
|
85
82
|
*
|
|
86
83
|
* @type {Array<Bone>}
|
|
87
84
|
*/
|
|
@@ -90,6 +87,13 @@ class SkeletonHelper extends LineSegments {
|
|
|
90
87
|
this.matrix = object.matrixWorld;
|
|
91
88
|
this.matrixAutoUpdate = false;
|
|
92
89
|
|
|
90
|
+
// colors
|
|
91
|
+
|
|
92
|
+
const color1 = new Color( 0x0000ff );
|
|
93
|
+
const color2 = new Color( 0x00ff00 );
|
|
94
|
+
|
|
95
|
+
this.setColors( color1, color2 );
|
|
96
|
+
|
|
93
97
|
}
|
|
94
98
|
|
|
95
99
|
updateMatrixWorld( force ) {
|
|
@@ -127,6 +131,31 @@ class SkeletonHelper extends LineSegments {
|
|
|
127
131
|
|
|
128
132
|
}
|
|
129
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Defines the colors of the helper.
|
|
136
|
+
*
|
|
137
|
+
* @param {Color} color1 - The first line color for each bone.
|
|
138
|
+
* @param {Color} color2 - The second line color for each bone.
|
|
139
|
+
* @return {SkeletonHelper} A reference to this helper.
|
|
140
|
+
*/
|
|
141
|
+
setColors( color1, color2 ) {
|
|
142
|
+
|
|
143
|
+
const geometry = this.geometry;
|
|
144
|
+
const colorAttribute = geometry.getAttribute( 'color' );
|
|
145
|
+
|
|
146
|
+
for ( let i = 0; i < colorAttribute.count; i += 2 ) {
|
|
147
|
+
|
|
148
|
+
colorAttribute.setXYZ( i, color1.r, color1.g, color1.b );
|
|
149
|
+
colorAttribute.setXYZ( i + 1, color2.r, color2.g, color2.b );
|
|
150
|
+
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
colorAttribute.needsUpdate = true;
|
|
154
|
+
|
|
155
|
+
return this;
|
|
156
|
+
|
|
157
|
+
}
|
|
158
|
+
|
|
130
159
|
/**
|
|
131
160
|
* Frees the GPU-related resources allocated by this instance. Call this
|
|
132
161
|
* method whenever this instance is no longer used in your app.
|
|
@@ -3,6 +3,7 @@ import { Vector2 } from '../math/Vector2.js';
|
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
import { Vector4 } from '../math/Vector4.js';
|
|
5
5
|
import { Frustum } from '../math/Frustum.js';
|
|
6
|
+
import { UnsignedByteType } from '../constants.js';
|
|
6
7
|
|
|
7
8
|
const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
|
|
8
9
|
const _lightPositionWorld = /*@__PURE__*/ new Vector3();
|
|
@@ -95,6 +96,14 @@ class LightShadow {
|
|
|
95
96
|
*/
|
|
96
97
|
this.mapSize = new Vector2( 512, 512 );
|
|
97
98
|
|
|
99
|
+
/**
|
|
100
|
+
* The type of shadow texture. The default is `UnsignedByteType`.
|
|
101
|
+
*
|
|
102
|
+
* @type {number}
|
|
103
|
+
* @default UnsignedByteType
|
|
104
|
+
*/
|
|
105
|
+
this.mapType = UnsignedByteType;
|
|
106
|
+
|
|
98
107
|
/**
|
|
99
108
|
* The depth map generated using the internal camera; a location beyond a
|
|
100
109
|
* pixel's depth is in shadow. Computed internally during rendering.
|
|
@@ -195,14 +204,27 @@ class LightShadow {
|
|
|
195
204
|
shadowCamera.updateMatrixWorld();
|
|
196
205
|
|
|
197
206
|
_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );
|
|
198
|
-
this._frustum.setFromProjectionMatrix( _projScreenMatrix );
|
|
207
|
+
this._frustum.setFromProjectionMatrix( _projScreenMatrix, shadowCamera.coordinateSystem, shadowCamera.reversedDepth );
|
|
208
|
+
|
|
209
|
+
if ( shadowCamera.reversedDepth ) {
|
|
199
210
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
211
|
+
shadowMatrix.set(
|
|
212
|
+
0.5, 0.0, 0.0, 0.5,
|
|
213
|
+
0.0, 0.5, 0.0, 0.5,
|
|
214
|
+
0.0, 0.0, 1.0, 0.0,
|
|
215
|
+
0.0, 0.0, 0.0, 1.0
|
|
216
|
+
);
|
|
217
|
+
|
|
218
|
+
} else {
|
|
219
|
+
|
|
220
|
+
shadowMatrix.set(
|
|
221
|
+
0.5, 0.0, 0.0, 0.5,
|
|
222
|
+
0.0, 0.5, 0.0, 0.5,
|
|
223
|
+
0.0, 0.0, 0.5, 0.5,
|
|
224
|
+
0.0, 0.0, 0.0, 1.0
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
}
|
|
206
228
|
|
|
207
229
|
shadowMatrix.multiply( _projScreenMatrix );
|
|
208
230
|
|
|
@@ -266,6 +288,11 @@ class LightShadow {
|
|
|
266
288
|
this.bias = source.bias;
|
|
267
289
|
this.radius = source.radius;
|
|
268
290
|
|
|
291
|
+
this.autoUpdate = source.autoUpdate;
|
|
292
|
+
this.needsUpdate = source.needsUpdate;
|
|
293
|
+
this.normalBias = source.normalBias;
|
|
294
|
+
this.blurSamples = source.blurSamples;
|
|
295
|
+
|
|
269
296
|
this.mapSize.copy( source.mapSize );
|
|
270
297
|
|
|
271
298
|
return this;
|
|
@@ -108,7 +108,7 @@ class PointLightShadow extends LightShadow {
|
|
|
108
108
|
shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );
|
|
109
109
|
|
|
110
110
|
_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
|
|
111
|
-
this._frustum.setFromProjectionMatrix( _projScreenMatrix );
|
|
111
|
+
this._frustum.setFromProjectionMatrix( _projScreenMatrix, camera.coordinateSystem, camera.reversedDepth );
|
|
112
112
|
|
|
113
113
|
}
|
|
114
114
|
|
|
@@ -34,6 +34,14 @@ class SpotLightShadow extends LightShadow {
|
|
|
34
34
|
*/
|
|
35
35
|
this.focus = 1;
|
|
36
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Texture aspect ratio.
|
|
39
|
+
*
|
|
40
|
+
* @type {number}
|
|
41
|
+
* @default 1
|
|
42
|
+
*/
|
|
43
|
+
this.aspect = 1;
|
|
44
|
+
|
|
37
45
|
}
|
|
38
46
|
|
|
39
47
|
updateMatrices( light ) {
|
|
@@ -41,7 +49,7 @@ class SpotLightShadow extends LightShadow {
|
|
|
41
49
|
const camera = this.camera;
|
|
42
50
|
|
|
43
51
|
const fov = RAD2DEG * 2 * light.angle * this.focus;
|
|
44
|
-
const aspect = this.mapSize.width / this.mapSize.height;
|
|
52
|
+
const aspect = ( this.mapSize.width / this.mapSize.height ) * this.aspect;
|
|
45
53
|
const far = light.distance || camera.far;
|
|
46
54
|
|
|
47
55
|
if ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { SpotLight } from '../SpotLight.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A projector light version of {@link SpotLight}. Can only be used with {@link WebGPURenderer}.
|
|
5
|
+
*
|
|
6
|
+
* @augments SpotLight
|
|
7
|
+
*/
|
|
8
|
+
class ProjectorLight extends SpotLight {
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Constructs a new projector light.
|
|
12
|
+
*
|
|
13
|
+
* @param {(number|Color|string)} [color=0xffffff] - The light's color.
|
|
14
|
+
* @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd).
|
|
15
|
+
* @param {number} [distance=0] - Maximum range of the light. `0` means no limit.
|
|
16
|
+
* @param {number} [angle=Math.PI/3] - Maximum angle of light dispersion from its direction whose upper bound is `Math.PI/2`.
|
|
17
|
+
* @param {number} [penumbra=0] - Percent of the spotlight cone that is attenuated due to penumbra. Value range is `[0,1]`.
|
|
18
|
+
* @param {number} [decay=2] - The amount the light dims along the distance of the light.
|
|
19
|
+
*/
|
|
20
|
+
constructor( color, intensity, distance, angle, penumbra, decay ) {
|
|
21
|
+
|
|
22
|
+
super( color, intensity, distance, angle, penumbra, decay );
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Aspect ratio of the light. Set to `null` to use the texture aspect ratio.
|
|
26
|
+
*
|
|
27
|
+
* @type {number}
|
|
28
|
+
* @default null
|
|
29
|
+
*/
|
|
30
|
+
this.aspect = null;
|
|
31
|
+
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
copy( source, recursive ) {
|
|
35
|
+
|
|
36
|
+
super.copy( source, recursive );
|
|
37
|
+
|
|
38
|
+
this.aspect = source.aspect;
|
|
39
|
+
|
|
40
|
+
return this;
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export default ProjectorLight;
|