@plastic-software/three 0.180.0 → 0.181.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +943 -486
- package/build/three.core.js +506 -327
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +435 -163
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +3753 -1177
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +3752 -1176
- 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/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +1 -1
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +1 -1
- package/examples/jsm/controls/FlyControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/PointerLockControls.js +2 -2
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +1 -1
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +3 -3
- package/examples/jsm/exporters/USDZExporter.js +9 -2
- package/examples/jsm/geometries/DecalGeometry.js +2 -2
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- 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 +6 -10
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/loaders/3MFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +2 -2
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/FBXLoader.js +2 -2
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GLTFLoader.js +5 -3
- package/examples/jsm/loaders/KTX2Loader.js +28 -21
- 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 +22 -5
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/UltraHDRLoader.js +1 -1
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/SimplexNoise.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/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/SkyMesh.js +1 -1
- package/examples/jsm/objects/Water.js +3 -3
- package/examples/jsm/objects/WaterMesh.js +6 -6
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- 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/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/TSLEncoder.js +7 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
- package/examples/jsm/tsl/display/AnamorphicNode.js +2 -1
- package/examples/jsm/tsl/display/BloomNode.js +4 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +7 -0
- package/examples/jsm/tsl/display/GTAONode.js +45 -5
- package/examples/jsm/tsl/display/GaussianBlurNode.js +5 -3
- package/examples/jsm/tsl/display/OutlineNode.js +11 -0
- package/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/examples/jsm/tsl/display/SSRNode.js +2 -0
- package/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/examples/jsm/tsl/display/TRAANode.js +123 -6
- package/examples/jsm/tsl/display/boxBlur.js +1 -0
- package/examples/jsm/tsl/display/hashBlur.js +1 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -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 +3 -2
- package/src/Three.TSL.js +7 -1
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +2 -0
- package/src/animation/AnimationClip.js +3 -2
- package/src/animation/AnimationMixer.js +3 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/KeyframeTrack.js +7 -6
- package/src/animation/PropertyBinding.js +12 -11
- package/src/audio/Audio.js +10 -9
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +1 -1
- package/src/core/BufferGeometry.js +8 -8
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +3 -2
- package/src/core/Raycaster.js +2 -1
- package/src/core/RenderTarget.js +10 -1
- 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 +268 -55
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/lib/earcut.js +7 -7
- 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 +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 +3 -2
- package/src/loaders/ImageBitmapLoader.js +5 -4
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/Loader.js +3 -3
- package/src/loaders/LoadingManager.js +25 -3
- 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 +4 -3
- package/src/materials/MeshBasicMaterial.js +1 -0
- package/src/materials/MeshDepthMaterial.js +1 -0
- 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 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/NodeMaterial.js +62 -22
- package/src/materials/nodes/manager/NodeMaterialObserver.js +2 -1
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +2 -2
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- 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 +7 -7
- package/src/math/Plane.js +1 -1
- package/src/math/Quaternion.js +68 -66
- package/src/math/Spherical.js +1 -1
- package/src/nodes/Nodes.js +1 -1
- package/src/nodes/TSL.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +3 -2
- package/src/nodes/accessors/InstanceNode.js +22 -4
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/Normal.js +5 -4
- package/src/nodes/accessors/Position.js +18 -2
- package/src/nodes/accessors/ReferenceNode.js +2 -1
- package/src/nodes/accessors/SceneNode.js +2 -1
- package/src/nodes/accessors/StorageBufferNode.js +2 -1
- package/src/nodes/accessors/StorageTextureNode.js +22 -0
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +61 -27
- package/src/nodes/code/FunctionCallNode.js +5 -4
- package/src/nodes/core/ArrayNode.js +1 -0
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +5 -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} +40 -7
- package/src/nodes/core/Node.js +137 -12
- package/src/nodes/core/NodeBuilder.js +135 -21
- package/src/nodes/core/NodeFrame.js +20 -20
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUtils.js +17 -90
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +16 -14
- package/src/nodes/core/UniformNode.js +2 -1
- package/src/nodes/core/VarNode.js +70 -12
- package/src/nodes/core/VaryingNode.js +3 -2
- package/src/nodes/display/BlendModes.js +5 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/NormalMapNode.js +2 -1
- package/src/nodes/display/PassNode.js +51 -10
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +2 -1
- package/src/nodes/display/ToneMappingNode.js +31 -4
- package/src/nodes/display/ToonOutlinePassNode.js +8 -0
- package/src/nodes/fog/Fog.js +3 -2
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhysicalLightingModel.js +3 -2
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/geometry/RangeNode.js +40 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
- package/src/nodes/gpgpu/ComputeNode.js +17 -5
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +25 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
- package/src/nodes/lighting/EnvironmentNode.js +6 -6
- package/src/nodes/lighting/LightsNode.js +2 -3
- package/src/nodes/lighting/PointShadowNode.js +6 -0
- package/src/nodes/lighting/ShadowFilterNode.js +2 -0
- package/src/nodes/lighting/ShadowNode.js +75 -8
- package/src/nodes/math/ConditionalNode.js +6 -5
- package/src/nodes/math/MathNode.js +22 -4
- package/src/nodes/math/OperatorNode.js +3 -2
- package/src/nodes/pmrem/PMREMUtils.js +117 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +5 -2
- package/src/nodes/tsl/TSLCore.js +36 -15
- package/src/nodes/utils/DebugNode.js +2 -1
- package/src/nodes/utils/EventNode.js +36 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +3 -2
- package/src/nodes/utils/LoopNode.js +20 -24
- package/src/nodes/utils/MemberNode.js +2 -1
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +12 -2
- package/src/nodes/utils/ReflectorNode.js +10 -3
- 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 +2 -1
- package/src/renderers/WebGLRenderer.js +48 -32
- package/src/renderers/common/Animation.js +13 -1
- package/src/renderers/common/Backend.js +93 -30
- package/src/renderers/common/Background.js +2 -1
- package/src/renderers/common/Bindings.js +56 -2
- package/src/renderers/common/CanvasTarget.js +341 -0
- 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/PostProcessing.js +6 -25
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderObject.js +3 -1
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +436 -228
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +8 -0
- package/src/renderers/common/Sampler.js +37 -11
- package/src/renderers/common/StorageTexture.js +9 -1
- package/src/renderers/common/Textures.js +89 -35
- package/src/renderers/common/TimestampQueryPool.js +63 -1
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +7 -3
- package/src/renderers/common/extras/PMREMGenerator.js +160 -65
- package/src/renderers/common/nodes/NodeLibrary.js +4 -2
- 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/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +25 -4
- package/src/renderers/webgl/WebGLCapabilities.js +2 -1
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +11 -10
- package/src/renderers/webgl/WebGLPrograms.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +2 -1
- package/src/renderers/webgl/WebGLState.js +15 -14
- package/src/renderers/webgl/WebGLTextures.js +18 -14
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +22 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +74 -11
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +6 -5
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +117 -16
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +42 -12
- package/src/renderers/webgpu/WebGPUBackend.js +134 -108
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +21 -19
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +5 -0
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +44 -16
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +146 -74
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +29 -6
- package/src/renderers/webgpu/utils/WebGPUUtils.js +22 -2
- package/src/renderers/webxr/WebXRManager.js +3 -2
- package/src/textures/Source.js +2 -1
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +2 -0
- package/src/utils.js +67 -3
package/src/math/Color.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { clamp, euclideanModulo, lerp } from './MathUtils.js';
|
|
2
2
|
import { ColorManagement, SRGBToLinear, LinearToSRGB } from './ColorManagement.js';
|
|
3
3
|
import { SRGBColorSpace } from '../constants.js';
|
|
4
|
+
import { warn } from '../utils.js';
|
|
4
5
|
|
|
5
6
|
const _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,
|
|
6
7
|
'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,
|
|
@@ -275,7 +276,7 @@ class Color {
|
|
|
275
276
|
/**
|
|
276
277
|
* Sets this color from a CSS-style string. For example, `rgb(250, 0,0)`,
|
|
277
278
|
* `rgb(100%, 0%, 0%)`, `hsl(0, 100%, 50%)`, `#ff0000`, `#f00`, or `red` ( or
|
|
278
|
-
* any [X11 color name]
|
|
279
|
+
* any [X11 color name](https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart) -
|
|
279
280
|
* all 140 color names are supported).
|
|
280
281
|
*
|
|
281
282
|
* @param {string} style - Color as a CSS-style string.
|
|
@@ -290,7 +291,7 @@ class Color {
|
|
|
290
291
|
|
|
291
292
|
if ( parseFloat( string ) < 1 ) {
|
|
292
293
|
|
|
293
|
-
|
|
294
|
+
warn( 'Color: Alpha component of ' + style + ' will be ignored.' );
|
|
294
295
|
|
|
295
296
|
}
|
|
296
297
|
|
|
@@ -366,7 +367,7 @@ class Color {
|
|
|
366
367
|
|
|
367
368
|
default:
|
|
368
369
|
|
|
369
|
-
|
|
370
|
+
warn( 'Color: Unknown color model ' + style );
|
|
370
371
|
|
|
371
372
|
}
|
|
372
373
|
|
|
@@ -394,7 +395,7 @@ class Color {
|
|
|
394
395
|
|
|
395
396
|
} else {
|
|
396
397
|
|
|
397
|
-
|
|
398
|
+
warn( 'Color: Invalid hex color ' + style );
|
|
398
399
|
|
|
399
400
|
}
|
|
400
401
|
|
|
@@ -434,7 +435,7 @@ class Color {
|
|
|
434
435
|
} else {
|
|
435
436
|
|
|
436
437
|
// unknown color
|
|
437
|
-
|
|
438
|
+
warn( 'Color: Unknown color ' + style );
|
|
438
439
|
|
|
439
440
|
}
|
|
440
441
|
|
|
@@ -147,7 +147,7 @@ function createColorManagement() {
|
|
|
147
147
|
|
|
148
148
|
fromWorkingColorSpace: function ( color, targetColorSpace ) {
|
|
149
149
|
|
|
150
|
-
warnOnce( '
|
|
150
|
+
warnOnce( 'ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace().' ); // @deprecated, r177
|
|
151
151
|
|
|
152
152
|
return ColorManagement.workingToColorSpace( color, targetColorSpace );
|
|
153
153
|
|
|
@@ -155,7 +155,7 @@ function createColorManagement() {
|
|
|
155
155
|
|
|
156
156
|
toWorkingColorSpace: function ( color, sourceColorSpace ) {
|
|
157
157
|
|
|
158
|
-
warnOnce( '
|
|
158
|
+
warnOnce( 'ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking().' ); // @deprecated, r177
|
|
159
159
|
|
|
160
160
|
return ColorManagement.colorSpaceToWorking( color, sourceColorSpace );
|
|
161
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/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.
|
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 {
|
package/src/math/Quaternion.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { clamp } from './MathUtils.js';
|
|
2
|
+
import { warn } from '../utils.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Class for representing a Quaternion. Quaternions are used in three.js to represent rotations.
|
|
@@ -45,7 +46,7 @@ class Quaternion {
|
|
|
45
46
|
|
|
46
47
|
/**
|
|
47
48
|
* Interpolates between two quaternions via SLERP. This implementation assumes the
|
|
48
|
-
* quaternion data are managed
|
|
49
|
+
* quaternion data are managed in flat arrays.
|
|
49
50
|
*
|
|
50
51
|
* @param {Array<number>} dst - The destination array.
|
|
51
52
|
* @param {number} dstOffset - An offset into the destination array.
|
|
@@ -58,65 +59,78 @@ class Quaternion {
|
|
|
58
59
|
*/
|
|
59
60
|
static slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {
|
|
60
61
|
|
|
61
|
-
// fuzz-free, array-based Quaternion SLERP operation
|
|
62
|
-
|
|
63
62
|
let x0 = src0[ srcOffset0 + 0 ],
|
|
64
63
|
y0 = src0[ srcOffset0 + 1 ],
|
|
65
64
|
z0 = src0[ srcOffset0 + 2 ],
|
|
66
65
|
w0 = src0[ srcOffset0 + 3 ];
|
|
67
66
|
|
|
68
|
-
|
|
67
|
+
let x1 = src1[ srcOffset1 + 0 ],
|
|
69
68
|
y1 = src1[ srcOffset1 + 1 ],
|
|
70
69
|
z1 = src1[ srcOffset1 + 2 ],
|
|
71
70
|
w1 = src1[ srcOffset1 + 3 ];
|
|
72
71
|
|
|
73
|
-
if ( t
|
|
72
|
+
if ( t <= 0 ) {
|
|
74
73
|
|
|
75
74
|
dst[ dstOffset + 0 ] = x0;
|
|
76
75
|
dst[ dstOffset + 1 ] = y0;
|
|
77
76
|
dst[ dstOffset + 2 ] = z0;
|
|
78
77
|
dst[ dstOffset + 3 ] = w0;
|
|
78
|
+
|
|
79
79
|
return;
|
|
80
80
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
if ( t
|
|
83
|
+
if ( t >= 1 ) {
|
|
84
84
|
|
|
85
85
|
dst[ dstOffset + 0 ] = x1;
|
|
86
86
|
dst[ dstOffset + 1 ] = y1;
|
|
87
87
|
dst[ dstOffset + 2 ] = z1;
|
|
88
88
|
dst[ dstOffset + 3 ] = w1;
|
|
89
|
+
|
|
89
90
|
return;
|
|
90
91
|
|
|
91
92
|
}
|
|
92
93
|
|
|
93
94
|
if ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {
|
|
94
95
|
|
|
95
|
-
let
|
|
96
|
-
const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,
|
|
97
|
-
dir = ( cos >= 0 ? 1 : - 1 ),
|
|
98
|
-
sqrSin = 1 - cos * cos;
|
|
96
|
+
let dot = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1;
|
|
99
97
|
|
|
100
|
-
|
|
101
|
-
if ( sqrSin > Number.EPSILON ) {
|
|
98
|
+
if ( dot < 0 ) {
|
|
102
99
|
|
|
103
|
-
|
|
104
|
-
|
|
100
|
+
x1 = - x1;
|
|
101
|
+
y1 = - y1;
|
|
102
|
+
z1 = - z1;
|
|
103
|
+
w1 = - w1;
|
|
105
104
|
|
|
106
|
-
|
|
107
|
-
t = Math.sin( t * len ) / sin;
|
|
105
|
+
dot = - dot;
|
|
108
106
|
|
|
109
107
|
}
|
|
110
108
|
|
|
111
|
-
|
|
109
|
+
let s = 1 - t;
|
|
110
|
+
|
|
111
|
+
if ( dot < 0.9995 ) {
|
|
112
|
+
|
|
113
|
+
// slerp
|
|
114
|
+
|
|
115
|
+
const theta = Math.acos( dot );
|
|
116
|
+
const sin = Math.sin( theta );
|
|
117
|
+
|
|
118
|
+
s = Math.sin( s * theta ) / sin;
|
|
119
|
+
t = Math.sin( t * theta ) / sin;
|
|
120
|
+
|
|
121
|
+
x0 = x0 * s + x1 * t;
|
|
122
|
+
y0 = y0 * s + y1 * t;
|
|
123
|
+
z0 = z0 * s + z1 * t;
|
|
124
|
+
w0 = w0 * s + w1 * t;
|
|
125
|
+
|
|
126
|
+
} else {
|
|
112
127
|
|
|
113
|
-
|
|
114
|
-
y0 = y0 * s + y1 * tDir;
|
|
115
|
-
z0 = z0 * s + z1 * tDir;
|
|
116
|
-
w0 = w0 * s + w1 * tDir;
|
|
128
|
+
// for small angles, lerp then normalize
|
|
117
129
|
|
|
118
|
-
|
|
119
|
-
|
|
130
|
+
x0 = x0 * s + x1 * t;
|
|
131
|
+
y0 = y0 * s + y1 * t;
|
|
132
|
+
z0 = z0 * s + z1 * t;
|
|
133
|
+
w0 = w0 * s + w1 * t;
|
|
120
134
|
|
|
121
135
|
const f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );
|
|
122
136
|
|
|
@@ -370,7 +384,7 @@ class Quaternion {
|
|
|
370
384
|
break;
|
|
371
385
|
|
|
372
386
|
default:
|
|
373
|
-
|
|
387
|
+
warn( 'Quaternion: .setFromEuler() encountered an unknown order: ' + order );
|
|
374
388
|
|
|
375
389
|
}
|
|
376
390
|
|
|
@@ -726,68 +740,56 @@ class Quaternion {
|
|
|
726
740
|
*/
|
|
727
741
|
slerp( qb, t ) {
|
|
728
742
|
|
|
729
|
-
if ( t
|
|
730
|
-
if ( t === 1 ) return this.copy( qb );
|
|
743
|
+
if ( t <= 0 ) return this;
|
|
731
744
|
|
|
732
|
-
|
|
745
|
+
if ( t >= 1 ) return this.copy( qb ); // copy calls _onChangeCallback()
|
|
733
746
|
|
|
734
|
-
|
|
747
|
+
let x = qb._x, y = qb._y, z = qb._z, w = qb._w;
|
|
735
748
|
|
|
736
|
-
let
|
|
749
|
+
let dot = this.dot( qb );
|
|
737
750
|
|
|
738
|
-
if (
|
|
751
|
+
if ( dot < 0 ) {
|
|
739
752
|
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
753
|
+
x = - x;
|
|
754
|
+
y = - y;
|
|
755
|
+
z = - z;
|
|
756
|
+
w = - w;
|
|
744
757
|
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
} else {
|
|
748
|
-
|
|
749
|
-
this.copy( qb );
|
|
758
|
+
dot = - dot;
|
|
750
759
|
|
|
751
760
|
}
|
|
752
761
|
|
|
753
|
-
|
|
762
|
+
let s = 1 - t;
|
|
754
763
|
|
|
755
|
-
|
|
756
|
-
this._x = x;
|
|
757
|
-
this._y = y;
|
|
758
|
-
this._z = z;
|
|
764
|
+
if ( dot < 0.9995 ) {
|
|
759
765
|
|
|
760
|
-
|
|
766
|
+
// slerp
|
|
761
767
|
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
const sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;
|
|
768
|
+
const theta = Math.acos( dot );
|
|
769
|
+
const sin = Math.sin( theta );
|
|
765
770
|
|
|
766
|
-
|
|
771
|
+
s = Math.sin( s * theta ) / sin;
|
|
772
|
+
t = Math.sin( t * theta ) / sin;
|
|
767
773
|
|
|
768
|
-
|
|
769
|
-
this.
|
|
770
|
-
this.
|
|
771
|
-
this.
|
|
772
|
-
this._z = s * z + t * this._z;
|
|
774
|
+
this._x = this._x * s + x * t;
|
|
775
|
+
this._y = this._y * s + y * t;
|
|
776
|
+
this._z = this._z * s + z * t;
|
|
777
|
+
this._w = this._w * s + w * t;
|
|
773
778
|
|
|
774
|
-
this.
|
|
779
|
+
this._onChangeCallback();
|
|
775
780
|
|
|
776
|
-
|
|
781
|
+
} else {
|
|
777
782
|
|
|
778
|
-
|
|
783
|
+
// for small angles, lerp then normalize
|
|
779
784
|
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
785
|
+
this._x = this._x * s + x * t;
|
|
786
|
+
this._y = this._y * s + y * t;
|
|
787
|
+
this._z = this._z * s + z * t;
|
|
788
|
+
this._w = this._w * s + w * t;
|
|
784
789
|
|
|
785
|
-
|
|
786
|
-
this._x = ( x * ratioA + this._x * ratioB );
|
|
787
|
-
this._y = ( y * ratioA + this._y * ratioB );
|
|
788
|
-
this._z = ( z * ratioA + this._z * ratioB );
|
|
790
|
+
this.normalize(); // normalize calls _onChangeCallback()
|
|
789
791
|
|
|
790
|
-
|
|
792
|
+
}
|
|
791
793
|
|
|
792
794
|
return this;
|
|
793
795
|
|
package/src/math/Spherical.js
CHANGED
|
@@ -2,7 +2,7 @@ import { clamp } from './MathUtils.js';
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* This class can be used to represent points in 3D space as
|
|
5
|
-
* [Spherical coordinates]
|
|
5
|
+
* [Spherical coordinates](https://en.wikipedia.org/wiki/Spherical_coordinate_system).
|
|
6
6
|
*/
|
|
7
7
|
class Spherical {
|
|
8
8
|
|
package/src/nodes/Nodes.js
CHANGED
|
@@ -6,7 +6,7 @@ export { default as ArrayNode } from './core/ArrayNode.js';
|
|
|
6
6
|
export { default as AssignNode } from './core/AssignNode.js';
|
|
7
7
|
export { default as AttributeNode } from './core/AttributeNode.js';
|
|
8
8
|
export { default as BypassNode } from './core/BypassNode.js';
|
|
9
|
-
export { default as
|
|
9
|
+
export { default as IsolateNode } from './core/IsolateNode.js';
|
|
10
10
|
export { default as ConstNode } from './core/ConstNode.js';
|
|
11
11
|
export { default as ContextNode } from './core/ContextNode.js';
|
|
12
12
|
export { default as IndexNode } from './core/IndexNode.js';
|
package/src/nodes/TSL.js
CHANGED
|
@@ -5,7 +5,7 @@ export * from './core/constants.js';
|
|
|
5
5
|
export * from './core/AssignNode.js';
|
|
6
6
|
export * from './core/AttributeNode.js';
|
|
7
7
|
export * from './core/BypassNode.js';
|
|
8
|
-
export * from './core/
|
|
8
|
+
export * from './core/IsolateNode.js';
|
|
9
9
|
export * from './core/ContextNode.js';
|
|
10
10
|
export * from './core/IndexNode.js';
|
|
11
11
|
export * from './core/ParameterNode.js';
|
|
@@ -6,6 +6,7 @@ import { CubeReflectionMapping, CubeRefractionMapping, WebGPUCoordinateSystem }
|
|
|
6
6
|
import { materialEnvRotation } from './MaterialProperties.js';
|
|
7
7
|
|
|
8
8
|
import { CubeTexture } from '../../textures/CubeTexture.js';
|
|
9
|
+
import { error } from '../../utils.js';
|
|
9
10
|
|
|
10
11
|
const EmptyTexture = /*@__PURE__*/ new CubeTexture();
|
|
11
12
|
|
|
@@ -76,7 +77,7 @@ class CubeTextureNode extends TextureNode {
|
|
|
76
77
|
|
|
77
78
|
} else {
|
|
78
79
|
|
|
79
|
-
|
|
80
|
+
error( 'CubeTextureNode: Mapping "%s" not supported.', texture.mapping );
|
|
80
81
|
|
|
81
82
|
return vec3( 0, 0, 0 );
|
|
82
83
|
|
|
@@ -123,7 +124,7 @@ class CubeTextureNode extends TextureNode {
|
|
|
123
124
|
*/
|
|
124
125
|
generateUV( builder, cubeUV ) {
|
|
125
126
|
|
|
126
|
-
return cubeUV.build( builder, 'vec3' );
|
|
127
|
+
return cubeUV.build( builder, this.sampler === true ? 'vec3' : 'ivec3' );
|
|
127
128
|
|
|
128
129
|
}
|
|
129
130
|
|
|
@@ -195,15 +195,33 @@ class InstanceNode extends Node {
|
|
|
195
195
|
*/
|
|
196
196
|
update( /*frame*/ ) {
|
|
197
197
|
|
|
198
|
-
if ( this.
|
|
198
|
+
if ( this.buffer !== null ) {
|
|
199
199
|
|
|
200
|
-
|
|
200
|
+
// keep update ranges in sync
|
|
201
|
+
|
|
202
|
+
this.buffer.clearUpdateRanges();
|
|
203
|
+
this.buffer.updateRanges.push( ... this.instanceMatrix.updateRanges );
|
|
204
|
+
|
|
205
|
+
// update version if necessary
|
|
206
|
+
|
|
207
|
+
if ( this.instanceMatrix.usage !== DynamicDrawUsage && this.instanceMatrix.version !== this.buffer.version ) {
|
|
208
|
+
|
|
209
|
+
this.buffer.version = this.instanceMatrix.version;
|
|
210
|
+
|
|
211
|
+
}
|
|
201
212
|
|
|
202
213
|
}
|
|
203
214
|
|
|
204
|
-
if ( this.instanceColor && this.
|
|
215
|
+
if ( this.instanceColor && this.bufferColor !== null ) {
|
|
216
|
+
|
|
217
|
+
this.bufferColor.clearUpdateRanges();
|
|
218
|
+
this.bufferColor.updateRanges.push( ... this.instanceColor.updateRanges );
|
|
219
|
+
|
|
220
|
+
if ( this.instanceColor.usage !== DynamicDrawUsage && this.instanceColor.version !== this.bufferColor.version ) {
|
|
205
221
|
|
|
206
|
-
|
|
222
|
+
this.bufferColor.version = this.instanceColor.version;
|
|
223
|
+
|
|
224
|
+
}
|
|
207
225
|
|
|
208
226
|
}
|
|
209
227
|
|
|
@@ -32,8 +32,18 @@ export function lightShadowMatrix( light ) {
|
|
|
32
32
|
|
|
33
33
|
return data.shadowMatrix || ( data.shadowMatrix = uniform( 'mat4' ).setGroup( renderGroup ).onRenderUpdate( ( frame ) => {
|
|
34
34
|
|
|
35
|
+
// normally, shadow matrices are updated in ShadowNode. However, if the shadow matrix is used outside
|
|
36
|
+
// of shadow rendering (like in ProjectorLightNode), the shadow matrix still requires an update
|
|
37
|
+
|
|
35
38
|
if ( light.castShadow !== true || frame.renderer.shadowMap.enabled === false ) {
|
|
36
39
|
|
|
40
|
+
if ( light.shadow.camera.coordinateSystem !== frame.camera.coordinateSystem ) {
|
|
41
|
+
|
|
42
|
+
light.shadow.camera.coordinateSystem = frame.camera.coordinateSystem;
|
|
43
|
+
light.shadow.camera.updateProjectionMatrix();
|
|
44
|
+
|
|
45
|
+
}
|
|
46
|
+
|
|
37
47
|
light.shadow.updateMatrices( light );
|
|
38
48
|
|
|
39
49
|
}
|