super-three 0.177.0 → 0.181.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 +1 -1
- package/build/three.cjs +1994 -749
- package/build/three.core.js +1358 -506
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +631 -247
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +113 -33
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +9571 -3424
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +9397 -3426
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +2 -3
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +0 -27
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +9 -9
- package/examples/jsm/controls/DragControls.js +7 -57
- package/examples/jsm/controls/FirstPersonControls.js +3 -3
- package/examples/jsm/controls/FlyControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +62 -15
- package/examples/jsm/csm/CSMShadowNode.js +4 -4
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/RoomEnvironment.js +8 -3
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +33 -25
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +683 -299
- package/examples/jsm/geometries/DecalGeometry.js +2 -2
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +3 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/ViewHelper.js +43 -5
- package/examples/jsm/inspector/Inspector.js +427 -0
- package/examples/jsm/inspector/RendererInspector.js +415 -0
- package/examples/jsm/inspector/tabs/Console.js +204 -0
- package/examples/jsm/inspector/tabs/Parameters.js +332 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +170 -0
- package/examples/jsm/inspector/ui/Style.js +654 -0
- package/examples/jsm/inspector/ui/Tab.js +46 -0
- package/examples/jsm/inspector/ui/Values.js +423 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +11 -13
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lights/LightProbeGenerator.js +14 -3
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3MFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +4 -4
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +210 -22
- package/examples/jsm/loaders/FBXLoader.js +4 -4
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GLTFLoader.js +14 -8
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +486 -0
- package/examples/jsm/loaders/KTX2Loader.js +136 -49
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +2 -2
- package/examples/jsm/loaders/MaterialXLoader.js +233 -34
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TTFLoader.js +13 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -892
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +3 -3
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water.js +3 -3
- package/examples/jsm/objects/WaterMesh.js +6 -6
- package/examples/jsm/physics/RapierPhysics.js +95 -16
- package/examples/jsm/postprocessing/GTAOPass.js +10 -9
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +17 -17
- package/examples/jsm/postprocessing/SSAOPass.js +10 -9
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
- package/examples/jsm/renderers/SVGRenderer.js +1 -1
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +2 -2
- package/examples/jsm/shaders/GodRaysShader.js +1 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
- package/examples/jsm/shaders/SSRShader.js +1 -1
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +11 -2
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +247 -104
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +196 -92
- package/examples/jsm/transpiler/Transpiler.js +17 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +812 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
- package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
- package/examples/jsm/tsl/display/BloomNode.js +11 -6
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/GTAONode.js +53 -5
- package/examples/jsm/tsl/display/GaussianBlurNode.js +55 -43
- package/examples/jsm/tsl/display/OutlineNode.js +13 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/examples/jsm/tsl/display/SSRNode.js +182 -65
- package/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/examples/jsm/tsl/display/TRAANode.js +578 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/hashBlur.js +18 -20
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +22 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
- package/package.json +5 -10
- package/src/Three.Core.js +5 -2
- package/src/Three.TSL.js +112 -32
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +4 -0
- package/src/animation/AnimationClip.js +20 -4
- package/src/animation/AnimationMixer.js +3 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/KeyframeTrack.js +8 -7
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +10 -9
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +2 -2
- package/src/cameras/PerspectiveCamera.js +2 -2
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +13 -5
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +10 -10
- package/src/core/Clock.js +2 -8
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +4 -3
- package/src/core/Raycaster.js +2 -1
- package/src/core/RenderTarget.js +10 -1
- package/{examples/jsm/misc → src/core}/Timer.js +4 -42
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +279 -55
- package/src/extras/TextureUtils.js +2 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/Path.js +22 -22
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +8 -6
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +1 -0
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +42 -12
- package/src/helpers/SkeletonHelper.js +35 -6
- package/src/lights/LightShadow.js +21 -8
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +2 -1
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +2 -2
- package/src/loaders/DataTextureLoader.js +1 -1
- package/src/loaders/FileLoader.js +29 -5
- package/src/loaders/ImageBitmapLoader.js +32 -8
- package/src/loaders/ImageLoader.js +56 -9
- package/src/loaders/Loader.js +17 -3
- package/src/loaders/LoadingManager.js +45 -0
- package/src/loaders/MaterialLoader.js +3 -2
- package/src/loaders/ObjectLoader.js +13 -13
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +3 -2
- package/src/materials/Material.js +16 -3
- package/src/materials/MeshBasicMaterial.js +2 -1
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +2 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +2 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +1 -0
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +2 -2
- package/src/materials/nodes/Line2NodeMaterial.js +2 -10
- 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 +3 -3
- package/src/materials/nodes/NodeMaterial.js +90 -27
- package/src/materials/nodes/PointsNodeMaterial.js +86 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +89 -3
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +10 -5
- package/src/math/Line3.js +129 -2
- package/src/math/MathUtils.js +13 -11
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +55 -34
- package/src/math/Plane.js +1 -1
- package/src/math/Quaternion.js +69 -67
- package/src/math/Spherical.js +3 -3
- package/src/nodes/Nodes.js +6 -4
- package/src/nodes/TSL.js +9 -4
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +31 -25
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +142 -16
- package/src/nodes/accessors/ClippingNode.js +6 -5
- package/src/nodes/accessors/CubeTextureNode.js +5 -4
- package/src/nodes/accessors/InstanceNode.js +25 -5
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/Normal.js +97 -30
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +25 -9
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +20 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +2 -1
- package/src/nodes/accessors/StorageTextureNode.js +23 -1
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +14 -1
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +142 -44
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/code/FunctionCallNode.js +24 -4
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/ArrayNode.js +13 -0
- package/src/nodes/core/AssignNode.js +6 -2
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +48 -10
- package/src/nodes/core/IndexNode.js +2 -2
- package/src/nodes/core/InputNode.js +2 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +36 -17
- package/src/nodes/core/Node.js +167 -34
- package/src/nodes/core/NodeBuilder.js +404 -120
- package/src/nodes/core/NodeFrame.js +21 -21
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +17 -88
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +77 -30
- package/src/nodes/core/StructNode.js +5 -5
- package/src/nodes/core/StructTypeNode.js +1 -0
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +80 -14
- package/src/nodes/core/VarNode.js +142 -16
- package/src/nodes/core/VaryingNode.js +9 -6
- package/src/nodes/display/BlendModes.js +7 -6
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/FrontFacingNode.js +35 -7
- package/src/nodes/display/NormalMapNode.js +20 -50
- package/src/nodes/display/PassNode.js +206 -17
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +44 -40
- package/src/nodes/display/ToneMappingNode.js +31 -4
- package/src/nodes/display/ToonOutlinePassNode.js +8 -0
- package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +94 -4
- package/src/nodes/fog/Fog.js +3 -2
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +19 -18
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/geometry/RangeNode.js +40 -4
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
- package/src/nodes/gpgpu/ComputeNode.js +81 -25
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +29 -3
- package/src/nodes/lighting/EnvironmentNode.js +11 -11
- package/src/nodes/lighting/LightsNode.js +7 -8
- package/src/nodes/lighting/PointShadowNode.js +6 -0
- package/src/nodes/lighting/ProjectorLightNode.js +19 -6
- package/src/nodes/lighting/ShadowFilterNode.js +3 -1
- package/src/nodes/lighting/ShadowNode.js +77 -10
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +165 -1
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +25 -27
- package/src/nodes/math/MathNode.js +106 -65
- package/src/nodes/math/OperatorNode.js +28 -43
- package/src/nodes/pmrem/PMREMUtils.js +117 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -2
- package/src/nodes/tsl/TSLCore.js +546 -186
- package/src/nodes/utils/DebugNode.js +3 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +119 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +20 -41
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MemberNode.js +59 -7
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +33 -6
- package/src/nodes/utils/ReflectorNode.js +68 -10
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SplitNode.js +11 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +6 -4
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +2 -1
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Skeleton.js +3 -2
- package/src/objects/SkinnedMesh.js +3 -1
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +77 -66
- package/src/renderers/common/Animation.js +13 -1
- package/src/renderers/common/Attributes.js +1 -1
- package/src/renderers/common/Backend.js +108 -27
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/Bindings.js +76 -19
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +1 -1
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +26 -0
- package/src/renderers/common/Info.js +4 -2
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Pipelines.js +1 -1
- package/src/renderers/common/PostProcessing.js +61 -25
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/RenderContext.js +2 -2
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderObject.js +84 -5
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +486 -255
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +8 -68
- package/src/renderers/common/Sampler.js +117 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +27 -0
- package/src/renderers/common/Textures.js +138 -46
- package/src/renderers/common/TimestampQueryPool.js +65 -3
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +63 -24
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +161 -66
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/Nodes.js +38 -16
- package/src/renderers/shaders/DFGLUTData.js +64 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +21 -11
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +25 -4
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +4 -3
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +25 -18
- package/src/renderers/webgl/WebGLPrograms.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +13 -2
- package/src/renderers/webgl/WebGLState.js +17 -16
- package/src/renderers/webgl/WebGLTextures.js +38 -21
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +245 -182
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +184 -30
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +9 -8
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +171 -19
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
- package/src/renderers/webgpu/WebGPUBackend.js +205 -128
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +198 -121
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +8 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +49 -33
- package/src/renderers/webgpu/utils/WebGPUConstants.js +14 -3
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -37
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +266 -158
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +24 -19
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +89 -13
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +14 -3
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +29 -2
- package/src/utils.js +67 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/tsl/display/TRAAPassNode.js +0 -452
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -34,7 +34,7 @@ function createColorManagement() {
|
|
|
34
34
|
* - luminanceCoefficients: RGB luminance coefficients
|
|
35
35
|
*
|
|
36
36
|
* Optional:
|
|
37
|
-
* - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace }
|
|
37
|
+
* - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace, toneMappingMode: 'extended' | 'standard' }
|
|
38
38
|
* - workingColorSpaceConfig: { unpackColorSpace: ColorSpace }
|
|
39
39
|
*
|
|
40
40
|
* Reference:
|
|
@@ -103,6 +103,12 @@ function createColorManagement() {
|
|
|
103
103
|
|
|
104
104
|
},
|
|
105
105
|
|
|
106
|
+
getToneMappingMode: function ( colorSpace ) {
|
|
107
|
+
|
|
108
|
+
return this.spaces[ colorSpace ].outputColorSpaceConfig.toneMappingMode || 'standard';
|
|
109
|
+
|
|
110
|
+
},
|
|
111
|
+
|
|
106
112
|
getLuminanceCoefficients: function ( target, colorSpace = this.workingColorSpace ) {
|
|
107
113
|
|
|
108
114
|
return target.fromArray( this.spaces[ colorSpace ].luminanceCoefficients );
|
|
@@ -141,7 +147,7 @@ function createColorManagement() {
|
|
|
141
147
|
|
|
142
148
|
fromWorkingColorSpace: function ( color, targetColorSpace ) {
|
|
143
149
|
|
|
144
|
-
warnOnce( '
|
|
150
|
+
warnOnce( 'ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace().' ); // @deprecated, r177
|
|
145
151
|
|
|
146
152
|
return ColorManagement.workingToColorSpace( color, targetColorSpace );
|
|
147
153
|
|
|
@@ -149,7 +155,7 @@ function createColorManagement() {
|
|
|
149
155
|
|
|
150
156
|
toWorkingColorSpace: function ( color, sourceColorSpace ) {
|
|
151
157
|
|
|
152
|
-
warnOnce( '
|
|
158
|
+
warnOnce( 'ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking().' ); // @deprecated, r177
|
|
153
159
|
|
|
154
160
|
return ColorManagement.colorSpaceToWorking( color, sourceColorSpace );
|
|
155
161
|
|
package/src/math/Cylindrical.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* This class can be used to represent points in 3D space as
|
|
3
|
-
* [Cylindrical coordinates]
|
|
3
|
+
* [Cylindrical coordinates](https://en.wikipedia.org/wiki/Cylindrical_coordinate_system).
|
|
4
4
|
*/
|
|
5
5
|
class Cylindrical {
|
|
6
6
|
|
package/src/math/Euler.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Quaternion } from './Quaternion.js';
|
|
2
2
|
import { Matrix4 } from './Matrix4.js';
|
|
3
3
|
import { clamp } from './MathUtils.js';
|
|
4
|
+
import { warn } from '../utils.js';
|
|
4
5
|
|
|
5
6
|
const _matrix = /*@__PURE__*/ new Matrix4();
|
|
6
7
|
const _quaternion = /*@__PURE__*/ new Quaternion();
|
|
@@ -304,7 +305,7 @@ class Euler {
|
|
|
304
305
|
|
|
305
306
|
default:
|
|
306
307
|
|
|
307
|
-
|
|
308
|
+
warn( 'Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );
|
|
308
309
|
|
|
309
310
|
}
|
|
310
311
|
|
package/src/math/Frustum.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../constants.js';
|
|
2
|
+
import { Vector2 } from './Vector2.js';
|
|
2
3
|
import { Vector3 } from './Vector3.js';
|
|
3
4
|
import { Sphere } from './Sphere.js';
|
|
4
5
|
import { Plane } from './Plane.js';
|
|
5
6
|
|
|
6
7
|
const _sphere = /*@__PURE__*/ new Sphere();
|
|
8
|
+
const _defaultSpriteCenter = /*@__PURE__*/ new Vector2( 0.5, 0.5 );
|
|
7
9
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
8
10
|
|
|
9
11
|
/**
|
|
@@ -87,9 +89,10 @@ class Frustum {
|
|
|
87
89
|
*
|
|
88
90
|
* @param {Matrix4} m - The projection matrix.
|
|
89
91
|
* @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} coordinateSystem - The coordinate system.
|
|
92
|
+
* @param {boolean} [reversedDepth=false] - Whether to use a reversed depth.
|
|
90
93
|
* @return {Frustum} A reference to this frustum.
|
|
91
94
|
*/
|
|
92
|
-
setFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {
|
|
95
|
+
setFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem, reversedDepth = false ) {
|
|
93
96
|
|
|
94
97
|
const planes = this.planes;
|
|
95
98
|
const me = m.elements;
|
|
@@ -102,19 +105,29 @@ class Frustum {
|
|
|
102
105
|
planes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();
|
|
103
106
|
planes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();
|
|
104
107
|
planes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();
|
|
105
|
-
planes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();
|
|
106
108
|
|
|
107
|
-
if (
|
|
109
|
+
if ( reversedDepth ) {
|
|
108
110
|
|
|
109
|
-
planes[
|
|
111
|
+
planes[ 4 ].setComponents( me2, me6, me10, me14 ).normalize(); // far
|
|
112
|
+
planes[ 5 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); // near
|
|
110
113
|
|
|
111
|
-
} else
|
|
114
|
+
} else {
|
|
112
115
|
|
|
113
|
-
planes[
|
|
116
|
+
planes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); // far
|
|
114
117
|
|
|
115
|
-
|
|
118
|
+
if ( coordinateSystem === WebGLCoordinateSystem ) {
|
|
119
|
+
|
|
120
|
+
planes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize(); // near
|
|
121
|
+
|
|
122
|
+
} else if ( coordinateSystem === WebGPUCoordinateSystem ) {
|
|
123
|
+
|
|
124
|
+
planes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize(); // near
|
|
116
125
|
|
|
117
|
-
|
|
126
|
+
} else {
|
|
127
|
+
|
|
128
|
+
throw new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );
|
|
129
|
+
|
|
130
|
+
}
|
|
118
131
|
|
|
119
132
|
}
|
|
120
133
|
|
|
@@ -161,7 +174,10 @@ class Frustum {
|
|
|
161
174
|
intersectsSprite( sprite ) {
|
|
162
175
|
|
|
163
176
|
_sphere.center.set( 0, 0, 0 );
|
|
164
|
-
|
|
177
|
+
|
|
178
|
+
const offset = _defaultSpriteCenter.distanceTo( sprite.center );
|
|
179
|
+
|
|
180
|
+
_sphere.radius = 0.7071067811865476 + offset;
|
|
165
181
|
_sphere.applyMatrix4( sprite.matrixWorld );
|
|
166
182
|
|
|
167
183
|
return this.intersectsSphere( _sphere );
|
package/src/math/FrustumArray.js
CHANGED
|
@@ -54,7 +54,8 @@ class FrustumArray {
|
|
|
54
54
|
|
|
55
55
|
_frustum.setFromProjectionMatrix(
|
|
56
56
|
_projScreenMatrix,
|
|
57
|
-
|
|
57
|
+
camera.coordinateSystem,
|
|
58
|
+
camera.reversedDepth
|
|
58
59
|
);
|
|
59
60
|
|
|
60
61
|
if ( _frustum.intersectsObject( object ) ) {
|
|
@@ -96,7 +97,8 @@ class FrustumArray {
|
|
|
96
97
|
|
|
97
98
|
_frustum.setFromProjectionMatrix(
|
|
98
99
|
_projScreenMatrix,
|
|
99
|
-
|
|
100
|
+
camera.coordinateSystem,
|
|
101
|
+
camera.reversedDepth
|
|
100
102
|
);
|
|
101
103
|
|
|
102
104
|
if ( _frustum.intersectsSprite( sprite ) ) {
|
|
@@ -138,7 +140,8 @@ class FrustumArray {
|
|
|
138
140
|
|
|
139
141
|
_frustum.setFromProjectionMatrix(
|
|
140
142
|
_projScreenMatrix,
|
|
141
|
-
|
|
143
|
+
camera.coordinateSystem,
|
|
144
|
+
camera.reversedDepth
|
|
142
145
|
);
|
|
143
146
|
|
|
144
147
|
if ( _frustum.intersectsSphere( sphere ) ) {
|
|
@@ -180,7 +183,8 @@ class FrustumArray {
|
|
|
180
183
|
|
|
181
184
|
_frustum.setFromProjectionMatrix(
|
|
182
185
|
_projScreenMatrix,
|
|
183
|
-
|
|
186
|
+
camera.coordinateSystem,
|
|
187
|
+
camera.reversedDepth
|
|
184
188
|
);
|
|
185
189
|
|
|
186
190
|
if ( _frustum.intersectsBox( box ) ) {
|
|
@@ -222,7 +226,8 @@ class FrustumArray {
|
|
|
222
226
|
|
|
223
227
|
_frustum.setFromProjectionMatrix(
|
|
224
228
|
_projScreenMatrix,
|
|
225
|
-
|
|
229
|
+
camera.coordinateSystem,
|
|
230
|
+
camera.reversedDepth
|
|
226
231
|
);
|
|
227
232
|
|
|
228
233
|
if ( _frustum.containsPoint( point ) ) {
|
package/src/math/Line3.js
CHANGED
|
@@ -4,6 +4,12 @@ import { clamp } from './MathUtils.js';
|
|
|
4
4
|
const _startP = /*@__PURE__*/ new Vector3();
|
|
5
5
|
const _startEnd = /*@__PURE__*/ new Vector3();
|
|
6
6
|
|
|
7
|
+
const _d1 = /*@__PURE__*/ new Vector3();
|
|
8
|
+
const _d2 = /*@__PURE__*/ new Vector3();
|
|
9
|
+
const _r = /*@__PURE__*/ new Vector3();
|
|
10
|
+
const _c1 = /*@__PURE__*/ new Vector3();
|
|
11
|
+
const _c2 = /*@__PURE__*/ new Vector3();
|
|
12
|
+
|
|
7
13
|
/**
|
|
8
14
|
* An analytical line segment in 3D space represented by a start and end point.
|
|
9
15
|
*/
|
|
@@ -151,11 +157,11 @@ class Line3 {
|
|
|
151
157
|
}
|
|
152
158
|
|
|
153
159
|
/**
|
|
154
|
-
* Returns the
|
|
160
|
+
* Returns the closest point on the line for a given point.
|
|
155
161
|
*
|
|
156
162
|
* @param {Vector3} point - The point to compute the closest point on the line for.
|
|
157
163
|
* @param {boolean} clampToLine - Whether to clamp the result to the range `[0,1]` or not.
|
|
158
|
-
* @param {Vector3} target -
|
|
164
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
159
165
|
* @return {Vector3} The closest point on the line.
|
|
160
166
|
*/
|
|
161
167
|
closestPointToPoint( point, clampToLine, target ) {
|
|
@@ -166,6 +172,127 @@ class Line3 {
|
|
|
166
172
|
|
|
167
173
|
}
|
|
168
174
|
|
|
175
|
+
/**
|
|
176
|
+
* Returns the closest squared distance between this line segment and the given one.
|
|
177
|
+
*
|
|
178
|
+
* @param {Line3} line - The line segment to compute the closest squared distance to.
|
|
179
|
+
* @param {Vector3} [c1] - The closest point on this line segment.
|
|
180
|
+
* @param {Vector3} [c2] - The closest point on the given line segment.
|
|
181
|
+
* @return {number} The squared distance between this line segment and the given one.
|
|
182
|
+
*/
|
|
183
|
+
distanceSqToLine3( line, c1 = _c1, c2 = _c2 ) {
|
|
184
|
+
|
|
185
|
+
// from Real-Time Collision Detection by Christer Ericson, chapter 5.1.9
|
|
186
|
+
|
|
187
|
+
// Computes closest points C1 and C2 of S1(s)=P1+s*(Q1-P1) and
|
|
188
|
+
// S2(t)=P2+t*(Q2-P2), returning s and t. Function result is squared
|
|
189
|
+
// distance between between S1(s) and S2(t)
|
|
190
|
+
|
|
191
|
+
const EPSILON = 1e-8 * 1e-8; // must be squared since we compare squared length
|
|
192
|
+
let s, t;
|
|
193
|
+
|
|
194
|
+
const p1 = this.start;
|
|
195
|
+
const p2 = line.start;
|
|
196
|
+
const q1 = this.end;
|
|
197
|
+
const q2 = line.end;
|
|
198
|
+
|
|
199
|
+
_d1.subVectors( q1, p1 ); // Direction vector of segment S1
|
|
200
|
+
_d2.subVectors( q2, p2 ); // Direction vector of segment S2
|
|
201
|
+
_r.subVectors( p1, p2 );
|
|
202
|
+
|
|
203
|
+
const a = _d1.dot( _d1 ); // Squared length of segment S1, always nonnegative
|
|
204
|
+
const e = _d2.dot( _d2 ); // Squared length of segment S2, always nonnegative
|
|
205
|
+
const f = _d2.dot( _r );
|
|
206
|
+
|
|
207
|
+
// Check if either or both segments degenerate into points
|
|
208
|
+
|
|
209
|
+
if ( a <= EPSILON && e <= EPSILON ) {
|
|
210
|
+
|
|
211
|
+
// Both segments degenerate into points
|
|
212
|
+
|
|
213
|
+
c1.copy( p1 );
|
|
214
|
+
c2.copy( p2 );
|
|
215
|
+
|
|
216
|
+
c1.sub( c2 );
|
|
217
|
+
|
|
218
|
+
return c1.dot( c1 );
|
|
219
|
+
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
if ( a <= EPSILON ) {
|
|
223
|
+
|
|
224
|
+
// First segment degenerates into a point
|
|
225
|
+
|
|
226
|
+
s = 0;
|
|
227
|
+
t = f / e; // s = 0 => t = (b*s + f) / e = f / e
|
|
228
|
+
t = clamp( t, 0, 1 );
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
} else {
|
|
232
|
+
|
|
233
|
+
const c = _d1.dot( _r );
|
|
234
|
+
|
|
235
|
+
if ( e <= EPSILON ) {
|
|
236
|
+
|
|
237
|
+
// Second segment degenerates into a point
|
|
238
|
+
|
|
239
|
+
t = 0;
|
|
240
|
+
s = clamp( - c / a, 0, 1 ); // t = 0 => s = (b*t - c) / a = -c / a
|
|
241
|
+
|
|
242
|
+
} else {
|
|
243
|
+
|
|
244
|
+
// The general nondegenerate case starts here
|
|
245
|
+
|
|
246
|
+
const b = _d1.dot( _d2 );
|
|
247
|
+
const denom = a * e - b * b; // Always nonnegative
|
|
248
|
+
|
|
249
|
+
// If segments not parallel, compute closest point on L1 to L2 and
|
|
250
|
+
// clamp to segment S1. Else pick arbitrary s (here 0)
|
|
251
|
+
|
|
252
|
+
if ( denom !== 0 ) {
|
|
253
|
+
|
|
254
|
+
s = clamp( ( b * f - c * e ) / denom, 0, 1 );
|
|
255
|
+
|
|
256
|
+
} else {
|
|
257
|
+
|
|
258
|
+
s = 0;
|
|
259
|
+
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Compute point on L2 closest to S1(s) using
|
|
263
|
+
// t = Dot((P1 + D1*s) - P2,D2) / Dot(D2,D2) = (b*s + f) / e
|
|
264
|
+
|
|
265
|
+
t = ( b * s + f ) / e;
|
|
266
|
+
|
|
267
|
+
// If t in [0,1] done. Else clamp t, recompute s for the new value
|
|
268
|
+
// of t using s = Dot((P2 + D2*t) - P1,D1) / Dot(D1,D1)= (t*b - c) / a
|
|
269
|
+
// and clamp s to [0, 1]
|
|
270
|
+
|
|
271
|
+
if ( t < 0 ) {
|
|
272
|
+
|
|
273
|
+
t = 0.;
|
|
274
|
+
s = clamp( - c / a, 0, 1 );
|
|
275
|
+
|
|
276
|
+
} else if ( t > 1 ) {
|
|
277
|
+
|
|
278
|
+
t = 1;
|
|
279
|
+
s = clamp( ( b - c ) / a, 0, 1 );
|
|
280
|
+
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
c1.copy( p1 ).add( _d1.multiplyScalar( s ) );
|
|
288
|
+
c2.copy( p2 ).add( _d2.multiplyScalar( t ) );
|
|
289
|
+
|
|
290
|
+
c1.sub( c2 );
|
|
291
|
+
|
|
292
|
+
return c1.dot( c1 );
|
|
293
|
+
|
|
294
|
+
}
|
|
295
|
+
|
|
169
296
|
/**
|
|
170
297
|
* Applies a 4x4 transformation matrix to this line segment.
|
|
171
298
|
*
|
package/src/math/MathUtils.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { warn } from '../utils.js';
|
|
2
|
+
|
|
1
3
|
const _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];
|
|
2
4
|
|
|
3
5
|
let _seed = 1234567;
|
|
@@ -7,7 +9,7 @@ const DEG2RAD = Math.PI / 180;
|
|
|
7
9
|
const RAD2DEG = 180 / Math.PI;
|
|
8
10
|
|
|
9
11
|
/**
|
|
10
|
-
* Generate a [UUID]
|
|
12
|
+
* Generate a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)
|
|
11
13
|
* (universally unique identifier).
|
|
12
14
|
*
|
|
13
15
|
* @return {string} The UUID.
|
|
@@ -120,7 +122,7 @@ function lerp( x, y, t ) {
|
|
|
120
122
|
/**
|
|
121
123
|
* Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta
|
|
122
124
|
* time to maintain frame rate independent movement. For details, see
|
|
123
|
-
* [Frame rate independent damping using lerp]
|
|
125
|
+
* [Frame rate independent damping using lerp](http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/).
|
|
124
126
|
*
|
|
125
127
|
* @param {number} x - The current point.
|
|
126
128
|
* @param {number} y - The target point.
|
|
@@ -155,7 +157,7 @@ function pingpong( x, length = 1 ) {
|
|
|
155
157
|
* moved between `min` and `max`, but smoothed or slowed down the closer `x` is to
|
|
156
158
|
* the `min` and `max`.
|
|
157
159
|
*
|
|
158
|
-
* See [Smoothstep]
|
|
160
|
+
* See [Smoothstep](http://en.wikipedia.org/wiki/Smoothstep) for more details.
|
|
159
161
|
*
|
|
160
162
|
* @param {number} x - The value to evaluate based on its position between min and max.
|
|
161
163
|
* @param {number} min - The min value. Any x value below min will be `0`.
|
|
@@ -174,7 +176,7 @@ function smoothstep( x, min, max ) {
|
|
|
174
176
|
}
|
|
175
177
|
|
|
176
178
|
/**
|
|
177
|
-
* A [variation on smoothstep]
|
|
179
|
+
* A [variation on smoothstep](https://en.wikipedia.org/wiki/Smoothstep#Variations)
|
|
178
180
|
* that has zero 1st and 2nd order derivatives at x=0 and x=1.
|
|
179
181
|
*
|
|
180
182
|
* @param {number} x - The value to evaluate based on its position between min and max.
|
|
@@ -314,7 +316,7 @@ function floorPowerOfTwo( value ) {
|
|
|
314
316
|
}
|
|
315
317
|
|
|
316
318
|
/**
|
|
317
|
-
* Sets the given quaternion from the [Intrinsic Proper Euler Angles]
|
|
319
|
+
* Sets the given quaternion from the [Intrinsic Proper Euler Angles](https://en.wikipedia.org/wiki/Euler_angles)
|
|
318
320
|
* defined by the given angles and order.
|
|
319
321
|
*
|
|
320
322
|
* Rotations are applied to the axes in the order specified by order:
|
|
@@ -370,7 +372,7 @@ function setQuaternionFromProperEuler( q, a, b, c, order ) {
|
|
|
370
372
|
break;
|
|
371
373
|
|
|
372
374
|
default:
|
|
373
|
-
|
|
375
|
+
warn( 'MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );
|
|
374
376
|
|
|
375
377
|
}
|
|
376
378
|
|
|
@@ -479,7 +481,7 @@ const MathUtils = {
|
|
|
479
481
|
DEG2RAD: DEG2RAD,
|
|
480
482
|
RAD2DEG: RAD2DEG,
|
|
481
483
|
/**
|
|
482
|
-
* Generate a [UUID]
|
|
484
|
+
* Generate a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)
|
|
483
485
|
* (universally unique identifier).
|
|
484
486
|
*
|
|
485
487
|
* @static
|
|
@@ -550,7 +552,7 @@ const MathUtils = {
|
|
|
550
552
|
/**
|
|
551
553
|
* Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta
|
|
552
554
|
* time to maintain frame rate independent movement. For details, see
|
|
553
|
-
* [Frame rate independent damping using lerp]
|
|
555
|
+
* [Frame rate independent damping using lerp](http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/).
|
|
554
556
|
*
|
|
555
557
|
* @static
|
|
556
558
|
* @method
|
|
@@ -577,7 +579,7 @@ const MathUtils = {
|
|
|
577
579
|
* moved between `min` and `max`, but smoothed or slowed down the closer `x` is to
|
|
578
580
|
* the `min` and `max`.
|
|
579
581
|
*
|
|
580
|
-
* See [Smoothstep]
|
|
582
|
+
* See [Smoothstep](http://en.wikipedia.org/wiki/Smoothstep) for more details.
|
|
581
583
|
*
|
|
582
584
|
* @static
|
|
583
585
|
* @method
|
|
@@ -588,7 +590,7 @@ const MathUtils = {
|
|
|
588
590
|
*/
|
|
589
591
|
smoothstep: smoothstep,
|
|
590
592
|
/**
|
|
591
|
-
* A [variation on smoothstep]
|
|
593
|
+
* A [variation on smoothstep](https://en.wikipedia.org/wiki/Smoothstep#Variations)
|
|
592
594
|
* that has zero 1st and 2nd order derivatives at x=0 and x=1.
|
|
593
595
|
*
|
|
594
596
|
* @static
|
|
@@ -683,7 +685,7 @@ const MathUtils = {
|
|
|
683
685
|
*/
|
|
684
686
|
floorPowerOfTwo: floorPowerOfTwo,
|
|
685
687
|
/**
|
|
686
|
-
* Sets the given quaternion from the [Intrinsic Proper Euler Angles]
|
|
688
|
+
* Sets the given quaternion from the [Intrinsic Proper Euler Angles](https://en.wikipedia.org/wiki/Euler_angles)
|
|
687
689
|
* defined by the given angles and order.
|
|
688
690
|
*
|
|
689
691
|
* Rotations are applied to the axes in the order specified by order:
|
package/src/math/Matrix2.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* A Note on Row-Major and Column-Major Ordering:
|
|
5
5
|
*
|
|
6
6
|
* The constructor and {@link Matrix2#set} method take arguments in
|
|
7
|
-
* [row-major]
|
|
7
|
+
* [row-major](https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order)
|
|
8
8
|
* order, while internally they are stored in the {@link Matrix2#elements} array in column-major order.
|
|
9
9
|
* This means that calling:
|
|
10
10
|
* ```js
|
package/src/math/Matrix3.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* A Note on Row-Major and Column-Major Ordering:
|
|
5
5
|
*
|
|
6
6
|
* The constructor and {@link Matrix3#set} method take arguments in
|
|
7
|
-
* [row-major]
|
|
7
|
+
* [row-major](https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order)
|
|
8
8
|
* order, while internally they are stored in the {@link Matrix3#elements} array in column-major order.
|
|
9
9
|
* This means that calling:
|
|
10
10
|
* ```js
|
|
@@ -278,7 +278,7 @@ class Matrix3 {
|
|
|
278
278
|
}
|
|
279
279
|
|
|
280
280
|
/**
|
|
281
|
-
* Inverts this matrix, using the [analytic method]
|
|
281
|
+
* Inverts this matrix, using the [analytic method](https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution).
|
|
282
282
|
* You can not invert with a determinant of zero. If you attempt this, the method produces
|
|
283
283
|
* a zero matrix instead.
|
|
284
284
|
*
|
package/src/math/Matrix4.js
CHANGED
|
@@ -5,7 +5,7 @@ import { Vector3 } from './Vector3.js';
|
|
|
5
5
|
* Represents a 4x4 matrix.
|
|
6
6
|
*
|
|
7
7
|
* The most common use of a 4x4 matrix in 3D computer graphics is as a transformation matrix.
|
|
8
|
-
* For an introduction to transformation matrices as used in WebGL, check out [this tutorial]
|
|
8
|
+
* For an introduction to transformation matrices as used in WebGL, check out [this tutorial](https://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices)
|
|
9
9
|
*
|
|
10
10
|
* This allows a 3D vector representing a point in 3D space to undergo
|
|
11
11
|
* transformations such as translation, rotation, shear, scale, reflection,
|
|
@@ -15,7 +15,7 @@ import { Vector3 } from './Vector3.js';
|
|
|
15
15
|
* A Note on Row-Major and Column-Major Ordering:
|
|
16
16
|
*
|
|
17
17
|
* The constructor and {@link Matrix3#set} method take arguments in
|
|
18
|
-
* [row-major]
|
|
18
|
+
* [row-major](https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order)
|
|
19
19
|
* order, while internally they are stored in the {@link Matrix3#elements} array in column-major order.
|
|
20
20
|
* This means that calling:
|
|
21
21
|
* ```js
|
|
@@ -309,7 +309,7 @@ class Matrix4 {
|
|
|
309
309
|
* Sets the rotation component (the upper left 3x3 matrix) of this matrix to
|
|
310
310
|
* the rotation specified by the given Euler angles. The rest of
|
|
311
311
|
* the matrix is set to the identity. Depending on the {@link Euler#order},
|
|
312
|
-
* there are six possible outcomes. See [this page]
|
|
312
|
+
* there are six possible outcomes. See [this page](https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix)
|
|
313
313
|
* for a complete list.
|
|
314
314
|
*
|
|
315
315
|
* @param {Euler} euler - The Euler angles.
|
|
@@ -439,7 +439,7 @@ class Matrix4 {
|
|
|
439
439
|
|
|
440
440
|
/**
|
|
441
441
|
* Sets the rotation component of this matrix to the rotation specified by
|
|
442
|
-
* the given Quaternion as outlined [here]
|
|
442
|
+
* the given Quaternion as outlined [here](https://en.wikipedia.org/wiki/Rotation_matrix#Quaternion)
|
|
443
443
|
* The rest of the matrix is set to the identity.
|
|
444
444
|
*
|
|
445
445
|
* @param {Quaternion} q - The Quaternion.
|
|
@@ -601,7 +601,7 @@ class Matrix4 {
|
|
|
601
601
|
/**
|
|
602
602
|
* Computes and returns the determinant of this matrix.
|
|
603
603
|
*
|
|
604
|
-
* Based on the method outlined [here]
|
|
604
|
+
* Based on the method outlined [here](http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.html).
|
|
605
605
|
*
|
|
606
606
|
* @return {number} The determinant.
|
|
607
607
|
*/
|
|
@@ -708,7 +708,7 @@ class Matrix4 {
|
|
|
708
708
|
}
|
|
709
709
|
|
|
710
710
|
/**
|
|
711
|
-
* Inverts this matrix, using the [analytic method]
|
|
711
|
+
* Inverts this matrix, using the [analytic method](https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution).
|
|
712
712
|
* You can not invert with a determinant of zero. If you attempt this, the method produces
|
|
713
713
|
* a zero matrix instead.
|
|
714
714
|
*
|
|
@@ -911,7 +911,7 @@ class Matrix4 {
|
|
|
911
911
|
* the given angle.
|
|
912
912
|
*
|
|
913
913
|
* This is a somewhat controversial but mathematically sound alternative to
|
|
914
|
-
* rotating via Quaternions. See the discussion [here]
|
|
914
|
+
* rotating via Quaternions. See the discussion [here](https://www.gamedev.net/articles/programming/math-and-physics/do-we-really-need-quaternions-r1199).
|
|
915
915
|
*
|
|
916
916
|
* @param {Vector3} axis - The normalized rotation axis.
|
|
917
917
|
* @param {number} angle - The rotation in radians.
|
|
@@ -1103,11 +1103,13 @@ class Matrix4 {
|
|
|
1103
1103
|
* @param {number} near - The distance from the camera to the near plane.
|
|
1104
1104
|
* @param {number} far - The distance from the camera to the far plane.
|
|
1105
1105
|
* @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system.
|
|
1106
|
+
* @param {boolean} [reversedDepth=false] - Whether to use a reversed depth.
|
|
1106
1107
|
* @return {Matrix4} A reference to this matrix.
|
|
1107
1108
|
*/
|
|
1108
|
-
makePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {
|
|
1109
|
+
makePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem, reversedDepth = false ) {
|
|
1109
1110
|
|
|
1110
1111
|
const te = this.elements;
|
|
1112
|
+
|
|
1111
1113
|
const x = 2 * near / ( right - left );
|
|
1112
1114
|
const y = 2 * near / ( top - bottom );
|
|
1113
1115
|
|
|
@@ -1116,19 +1118,28 @@ class Matrix4 {
|
|
|
1116
1118
|
|
|
1117
1119
|
let c, d;
|
|
1118
1120
|
|
|
1119
|
-
if (
|
|
1121
|
+
if ( reversedDepth ) {
|
|
1120
1122
|
|
|
1121
|
-
c =
|
|
1122
|
-
d = (
|
|
1123
|
+
c = near / ( far - near );
|
|
1124
|
+
d = ( far * near ) / ( far - near );
|
|
1123
1125
|
|
|
1124
|
-
} else
|
|
1126
|
+
} else {
|
|
1125
1127
|
|
|
1126
|
-
|
|
1127
|
-
d = ( - far * near ) / ( far - near );
|
|
1128
|
+
if ( coordinateSystem === WebGLCoordinateSystem ) {
|
|
1128
1129
|
|
|
1129
|
-
|
|
1130
|
+
c = - ( far + near ) / ( far - near );
|
|
1131
|
+
d = ( - 2 * far * near ) / ( far - near );
|
|
1132
|
+
|
|
1133
|
+
} else if ( coordinateSystem === WebGPUCoordinateSystem ) {
|
|
1134
|
+
|
|
1135
|
+
c = - far / ( far - near );
|
|
1136
|
+
d = ( - far * near ) / ( far - near );
|
|
1130
1137
|
|
|
1131
|
-
|
|
1138
|
+
} else {
|
|
1139
|
+
|
|
1140
|
+
throw new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );
|
|
1141
|
+
|
|
1142
|
+
}
|
|
1132
1143
|
|
|
1133
1144
|
}
|
|
1134
1145
|
|
|
@@ -1152,39 +1163,49 @@ class Matrix4 {
|
|
|
1152
1163
|
* @param {number} near - The distance from the camera to the near plane.
|
|
1153
1164
|
* @param {number} far - The distance from the camera to the far plane.
|
|
1154
1165
|
* @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system.
|
|
1166
|
+
* @param {boolean} [reversedDepth=false] - Whether to use a reversed depth.
|
|
1155
1167
|
* @return {Matrix4} A reference to this matrix.
|
|
1156
1168
|
*/
|
|
1157
|
-
makeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {
|
|
1169
|
+
makeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem, reversedDepth = false ) {
|
|
1158
1170
|
|
|
1159
1171
|
const te = this.elements;
|
|
1160
|
-
const w = 1.0 / ( right - left );
|
|
1161
|
-
const h = 1.0 / ( top - bottom );
|
|
1162
|
-
const p = 1.0 / ( far - near );
|
|
1163
|
-
|
|
1164
|
-
const x = ( right + left ) * w;
|
|
1165
|
-
const y = ( top + bottom ) * h;
|
|
1166
1172
|
|
|
1167
|
-
|
|
1173
|
+
const x = 2 / ( right - left );
|
|
1174
|
+
const y = 2 / ( top - bottom );
|
|
1168
1175
|
|
|
1169
|
-
|
|
1176
|
+
const a = - ( right + left ) / ( right - left );
|
|
1177
|
+
const b = - ( top + bottom ) / ( top - bottom );
|
|
1170
1178
|
|
|
1171
|
-
|
|
1172
|
-
zInv = - 2 * p;
|
|
1179
|
+
let c, d;
|
|
1173
1180
|
|
|
1174
|
-
|
|
1181
|
+
if ( reversedDepth ) {
|
|
1175
1182
|
|
|
1176
|
-
|
|
1177
|
-
|
|
1183
|
+
c = 1 / ( far - near );
|
|
1184
|
+
d = far / ( far - near );
|
|
1178
1185
|
|
|
1179
1186
|
} else {
|
|
1180
1187
|
|
|
1181
|
-
|
|
1188
|
+
if ( coordinateSystem === WebGLCoordinateSystem ) {
|
|
1189
|
+
|
|
1190
|
+
c = - 2 / ( far - near );
|
|
1191
|
+
d = - ( far + near ) / ( far - near );
|
|
1192
|
+
|
|
1193
|
+
} else if ( coordinateSystem === WebGPUCoordinateSystem ) {
|
|
1194
|
+
|
|
1195
|
+
c = - 1 / ( far - near );
|
|
1196
|
+
d = - near / ( far - near );
|
|
1197
|
+
|
|
1198
|
+
} else {
|
|
1199
|
+
|
|
1200
|
+
throw new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );
|
|
1201
|
+
|
|
1202
|
+
}
|
|
1182
1203
|
|
|
1183
1204
|
}
|
|
1184
1205
|
|
|
1185
|
-
te[ 0 ] =
|
|
1186
|
-
te[ 1 ] = 0; te[ 5 ] =
|
|
1187
|
-
te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] =
|
|
1206
|
+
te[ 0 ] = x; te[ 4 ] = 0; te[ 8 ] = 0; te[ 12 ] = a;
|
|
1207
|
+
te[ 1 ] = 0; te[ 5 ] = y; te[ 9 ] = 0; te[ 13 ] = b;
|
|
1208
|
+
te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = c; te[ 14 ] = d;
|
|
1188
1209
|
te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = 0; te[ 15 ] = 1;
|
|
1189
1210
|
|
|
1190
1211
|
return this;
|
package/src/math/Plane.js
CHANGED
|
@@ -7,7 +7,7 @@ const _normalMatrix = /*@__PURE__*/ new Matrix3();
|
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* A two dimensional surface that extends infinitely in 3D space, represented
|
|
10
|
-
* in [Hessian normal form]
|
|
10
|
+
* in [Hessian normal form](http://mathworld.wolfram.com/HessianNormalForm.html)
|
|
11
11
|
* by a unit length normal vector and a constant.
|
|
12
12
|
*/
|
|
13
13
|
class Plane {
|