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
package/src/extras/core/Curve.js
CHANGED
|
@@ -2,6 +2,7 @@ import { clamp } from '../../math/MathUtils.js';
|
|
|
2
2
|
import { Vector2 } from '../../math/Vector2.js';
|
|
3
3
|
import { Vector3 } from '../../math/Vector3.js';
|
|
4
4
|
import { Matrix4 } from '../../math/Matrix4.js';
|
|
5
|
+
import { warn } from '../../utils.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* An abstract base class for creating an analytic curve object that contains methods
|
|
@@ -66,7 +67,7 @@ class Curve {
|
|
|
66
67
|
*/
|
|
67
68
|
getPoint( /* t, optionalTarget */ ) {
|
|
68
69
|
|
|
69
|
-
|
|
70
|
+
warn( 'Curve: .getPoint() not implemented.' );
|
|
70
71
|
|
|
71
72
|
}
|
|
72
73
|
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Interpolations contains spline and Bézier functions internally used by concrete curve classes.
|
|
3
|
+
*
|
|
4
|
+
* Bezier Curves formulas obtained from: https://en.wikipedia.org/wiki/B%C3%A9zier_curve
|
|
5
|
+
*
|
|
6
|
+
* @module Interpolations
|
|
7
|
+
*/
|
|
2
8
|
|
|
3
9
|
/**
|
|
4
10
|
* Computes a point on a Catmull-Rom spline.
|
package/src/extras/core/Path.js
CHANGED
|
@@ -190,11 +190,11 @@ class Path extends CurvePath {
|
|
|
190
190
|
* Adds an arc as an instance of {@link EllipseCurve} to the path, positioned relative
|
|
191
191
|
* to the current point.
|
|
192
192
|
*
|
|
193
|
-
* @param {number} aX - The x coordinate of the center of the arc offsetted from the previous curve.
|
|
194
|
-
* @param {number} aY - The y coordinate of the center of the arc offsetted from the previous curve.
|
|
195
|
-
* @param {number} aRadius - The radius of the arc.
|
|
196
|
-
* @param {number} aStartAngle - The start angle in radians.
|
|
197
|
-
* @param {number} aEndAngle - The end angle in radians.
|
|
193
|
+
* @param {number} [aX=0] - The x coordinate of the center of the arc offsetted from the previous curve.
|
|
194
|
+
* @param {number} [aY=0] - The y coordinate of the center of the arc offsetted from the previous curve.
|
|
195
|
+
* @param {number} [aRadius=1] - The radius of the arc.
|
|
196
|
+
* @param {number} [aStartAngle=0] - The start angle in radians.
|
|
197
|
+
* @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.
|
|
198
198
|
* @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.
|
|
199
199
|
* @return {Path} A reference to this path.
|
|
200
200
|
*/
|
|
@@ -213,11 +213,11 @@ class Path extends CurvePath {
|
|
|
213
213
|
/**
|
|
214
214
|
* Adds an absolutely positioned arc as an instance of {@link EllipseCurve} to the path.
|
|
215
215
|
*
|
|
216
|
-
* @param {number} aX - The x coordinate of the center of the arc.
|
|
217
|
-
* @param {number} aY - The y coordinate of the center of the arc.
|
|
218
|
-
* @param {number} aRadius - The radius of the arc.
|
|
219
|
-
* @param {number} aStartAngle - The start angle in radians.
|
|
220
|
-
* @param {number} aEndAngle - The end angle in radians.
|
|
216
|
+
* @param {number} [aX=0] - The x coordinate of the center of the arc.
|
|
217
|
+
* @param {number} [aY=0] - The y coordinate of the center of the arc.
|
|
218
|
+
* @param {number} [aRadius=1] - The radius of the arc.
|
|
219
|
+
* @param {number} [aStartAngle=0] - The start angle in radians.
|
|
220
|
+
* @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.
|
|
221
221
|
* @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.
|
|
222
222
|
* @return {Path} A reference to this path.
|
|
223
223
|
*/
|
|
@@ -233,12 +233,12 @@ class Path extends CurvePath {
|
|
|
233
233
|
* Adds an ellipse as an instance of {@link EllipseCurve} to the path, positioned relative
|
|
234
234
|
* to the current point
|
|
235
235
|
*
|
|
236
|
-
* @param {number} aX - The x coordinate of the center of the ellipse offsetted from the previous curve.
|
|
237
|
-
* @param {number} aY - The y coordinate of the center of the ellipse offsetted from the previous curve.
|
|
238
|
-
* @param {number} xRadius - The radius of the ellipse in the x axis.
|
|
239
|
-
* @param {number} yRadius - The radius of the ellipse in the y axis.
|
|
240
|
-
* @param {number} aStartAngle - The start angle in radians.
|
|
241
|
-
* @param {number} aEndAngle - The end angle in radians.
|
|
236
|
+
* @param {number} [aX=0] - The x coordinate of the center of the ellipse offsetted from the previous curve.
|
|
237
|
+
* @param {number} [aY=0] - The y coordinate of the center of the ellipse offsetted from the previous curve.
|
|
238
|
+
* @param {number} [xRadius=1] - The radius of the ellipse in the x axis.
|
|
239
|
+
* @param {number} [yRadius=1] - The radius of the ellipse in the y axis.
|
|
240
|
+
* @param {number} [aStartAngle=0] - The start angle in radians.
|
|
241
|
+
* @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.
|
|
242
242
|
* @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.
|
|
243
243
|
* @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.
|
|
244
244
|
* @return {Path} A reference to this path.
|
|
@@ -257,12 +257,12 @@ class Path extends CurvePath {
|
|
|
257
257
|
/**
|
|
258
258
|
* Adds an absolutely positioned ellipse as an instance of {@link EllipseCurve} to the path.
|
|
259
259
|
*
|
|
260
|
-
* @param {number} aX - The x coordinate of the absolute center of the ellipse.
|
|
261
|
-
* @param {number} aY - The y coordinate of the absolute center of the ellipse.
|
|
262
|
-
* @param {number} xRadius - The radius of the ellipse in the x axis.
|
|
263
|
-
* @param {number} yRadius - The radius of the ellipse in the y axis.
|
|
264
|
-
* @param {number} aStartAngle - The start angle in radians.
|
|
265
|
-
* @param {number} aEndAngle - The end angle in radians.
|
|
260
|
+
* @param {number} [aX=0] - The x coordinate of the absolute center of the ellipse.
|
|
261
|
+
* @param {number} [aY=0] - The y coordinate of the absolute center of the ellipse.
|
|
262
|
+
* @param {number} [xRadius=1] - The radius of the ellipse in the x axis.
|
|
263
|
+
* @param {number} [yRadius=1] - The radius of the ellipse in the y axis.
|
|
264
|
+
* @param {number} [aStartAngle=0] - The start angle in radians.
|
|
265
|
+
* @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.
|
|
266
266
|
* @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.
|
|
267
267
|
* @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.
|
|
268
268
|
* @return {Path} A reference to this path.
|
|
@@ -236,7 +236,7 @@ class ShapePath {
|
|
|
236
236
|
let holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );
|
|
237
237
|
holesFirst = isCCW ? ! holesFirst : holesFirst;
|
|
238
238
|
|
|
239
|
-
//
|
|
239
|
+
// log("Holes first", holesFirst);
|
|
240
240
|
|
|
241
241
|
const betterShapeHoles = [];
|
|
242
242
|
const newShapes = [];
|
|
@@ -264,13 +264,13 @@ class ShapePath {
|
|
|
264
264
|
if ( holesFirst ) mainIdx ++;
|
|
265
265
|
newShapeHoles[ mainIdx ] = [];
|
|
266
266
|
|
|
267
|
-
//
|
|
267
|
+
//log('cw', i);
|
|
268
268
|
|
|
269
269
|
} else {
|
|
270
270
|
|
|
271
271
|
newShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );
|
|
272
272
|
|
|
273
|
-
//
|
|
273
|
+
//log('ccw', i);
|
|
274
274
|
|
|
275
275
|
}
|
|
276
276
|
|
|
@@ -355,7 +355,7 @@ class ShapePath {
|
|
|
355
355
|
|
|
356
356
|
}
|
|
357
357
|
|
|
358
|
-
//
|
|
358
|
+
//log("shape", shapes);
|
|
359
359
|
|
|
360
360
|
return shapes;
|
|
361
361
|
|
package/src/extras/lib/earcut.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
|
-
// copy of mapbox/earcut version 3.0.
|
|
3
|
-
// https://github.com/mapbox/earcut/tree/v3.0.
|
|
2
|
+
// copy of mapbox/earcut version 3.0.2
|
|
3
|
+
// https://github.com/mapbox/earcut/tree/v3.0.2
|
|
4
4
|
|
|
5
5
|
export default function earcut(data, holeIndices, dim = 2) {
|
|
6
6
|
|
|
@@ -17,10 +17,10 @@ export default function earcut(data, holeIndices, dim = 2) {
|
|
|
17
17
|
|
|
18
18
|
// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox
|
|
19
19
|
if (data.length > 80 * dim) {
|
|
20
|
-
minX =
|
|
21
|
-
minY =
|
|
22
|
-
let maxX =
|
|
23
|
-
let maxY =
|
|
20
|
+
minX = data[0];
|
|
21
|
+
minY = data[1];
|
|
22
|
+
let maxX = minX;
|
|
23
|
+
let maxY = minY;
|
|
24
24
|
|
|
25
25
|
for (let i = dim; i < outerLen; i += dim) {
|
|
26
26
|
const x = data[i];
|
|
@@ -296,7 +296,7 @@ function compareXYSlope(a, b) {
|
|
|
296
296
|
return result;
|
|
297
297
|
}
|
|
298
298
|
|
|
299
|
-
// find a bridge between vertices that connects hole with an outer ring and
|
|
299
|
+
// find a bridge between vertices that connects hole with an outer ring and link it
|
|
300
300
|
function eliminateHole(hole, outerNode) {
|
|
301
301
|
const bridge = findHoleBridge(hole, outerNode);
|
|
302
302
|
if (!bridge) {
|
|
@@ -487,7 +487,7 @@ function pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, px, py) {
|
|
|
487
487
|
|
|
488
488
|
// check if a diagonal between two polygon nodes is valid (lies in polygon interior)
|
|
489
489
|
function isValidDiagonal(a, b) {
|
|
490
|
-
return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && //
|
|
490
|
+
return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // doesn't intersect other edges
|
|
491
491
|
(locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible
|
|
492
492
|
(area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors
|
|
493
493
|
equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case
|
|
@@ -5,6 +5,7 @@ import { Vector2 } from '../math/Vector2.js';
|
|
|
5
5
|
import { Vector3 } from '../math/Vector3.js';
|
|
6
6
|
import { Shape } from '../extras/core/Shape.js';
|
|
7
7
|
import { ShapeUtils } from '../extras/ShapeUtils.js';
|
|
8
|
+
import { error } from '../utils.js';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Creates extruded geometry from a path shape.
|
|
@@ -26,6 +27,7 @@ import { ShapeUtils } from '../extras/ShapeUtils.js';
|
|
|
26
27
|
* ```
|
|
27
28
|
*
|
|
28
29
|
* @augments BufferGeometry
|
|
30
|
+
* @demo scenes/geometry-browser.html#ExtrudeGeometry
|
|
29
31
|
*/
|
|
30
32
|
class ExtrudeGeometry extends BufferGeometry {
|
|
31
33
|
|
|
@@ -114,7 +116,7 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
114
116
|
|
|
115
117
|
splineTube = extrudePath.computeFrenetFrames( steps, false );
|
|
116
118
|
|
|
117
|
-
//
|
|
119
|
+
// log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);
|
|
118
120
|
|
|
119
121
|
binormal = new Vector3();
|
|
120
122
|
normal = new Vector3();
|
|
@@ -219,7 +221,7 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
219
221
|
|
|
220
222
|
function scalePt2( pt, vec, size ) {
|
|
221
223
|
|
|
222
|
-
if ( ! vec )
|
|
224
|
+
if ( ! vec ) error( 'ExtrudeGeometry: vec does not exist' );
|
|
223
225
|
|
|
224
226
|
return pt.clone().addScaledVector( vec, size );
|
|
225
227
|
|
|
@@ -334,14 +336,14 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
334
336
|
|
|
335
337
|
if ( direction_eq ) {
|
|
336
338
|
|
|
337
|
-
//
|
|
339
|
+
// log("Warning: lines are a straight sequence");
|
|
338
340
|
v_trans_x = - v_prev_y;
|
|
339
341
|
v_trans_y = v_prev_x;
|
|
340
342
|
shrink_by = Math.sqrt( v_prev_lensq );
|
|
341
343
|
|
|
342
344
|
} else {
|
|
343
345
|
|
|
344
|
-
//
|
|
346
|
+
// log("Warning: lines are a straight spike");
|
|
345
347
|
v_trans_x = v_prev_x;
|
|
346
348
|
v_trans_y = v_prev_y;
|
|
347
349
|
shrink_by = Math.sqrt( v_prev_lensq / 2 );
|
|
@@ -363,7 +365,7 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
363
365
|
if ( k === il ) k = 0;
|
|
364
366
|
|
|
365
367
|
// (j)---(i)---(k)
|
|
366
|
-
//
|
|
368
|
+
// log('i,j,k', i, j , k)
|
|
367
369
|
|
|
368
370
|
contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );
|
|
369
371
|
|
|
@@ -660,7 +662,7 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
660
662
|
let k = i - 1;
|
|
661
663
|
if ( k < 0 ) k = contour.length - 1;
|
|
662
664
|
|
|
663
|
-
//
|
|
665
|
+
//log('b', i,j, i-1, k,vertices.length);
|
|
664
666
|
|
|
665
667
|
for ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {
|
|
666
668
|
|
|
@@ -5,7 +5,7 @@ import { Color } from '../math/Color.js';
|
|
|
5
5
|
import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
|
|
6
6
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
7
7
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
8
|
-
import { WebGLCoordinateSystem } from '../constants.js';
|
|
8
|
+
import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../constants.js';
|
|
9
9
|
|
|
10
10
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
11
11
|
const _camera = /*@__PURE__*/ new Camera();
|
|
@@ -14,7 +14,7 @@ const _camera = /*@__PURE__*/ new Camera();
|
|
|
14
14
|
* This helps with visualizing what a camera contains in its frustum. It
|
|
15
15
|
* visualizes the frustum of a camera using a line segments.
|
|
16
16
|
*
|
|
17
|
-
* Based on frustum visualization in [lightgl.js shadowmap example]
|
|
17
|
+
* Based on frustum visualization in [lightgl.js shadowmap example](https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html).
|
|
18
18
|
*
|
|
19
19
|
* `CameraHelper` must be a child of the scene.
|
|
20
20
|
*
|
|
@@ -159,6 +159,7 @@ class CameraHelper extends LineSegments {
|
|
|
159
159
|
* @param {Color} up - The up line color.
|
|
160
160
|
* @param {Color} target - The target line color.
|
|
161
161
|
* @param {Color} cross - The cross line color.
|
|
162
|
+
* @return {CameraHelper} A reference to this helper.
|
|
162
163
|
*/
|
|
163
164
|
setColors( frustum, cone, up, target, cross ) {
|
|
164
165
|
|
|
@@ -215,6 +216,8 @@ class CameraHelper extends LineSegments {
|
|
|
215
216
|
|
|
216
217
|
colorAttribute.needsUpdate = true;
|
|
217
218
|
|
|
219
|
+
return this;
|
|
220
|
+
|
|
218
221
|
}
|
|
219
222
|
|
|
220
223
|
/**
|
|
@@ -227,17 +230,44 @@ class CameraHelper extends LineSegments {
|
|
|
227
230
|
|
|
228
231
|
const w = 1, h = 1;
|
|
229
232
|
|
|
233
|
+
let nearZ, farZ;
|
|
234
|
+
|
|
230
235
|
// we need just camera projection matrix inverse
|
|
231
236
|
// world matrix must be identity
|
|
232
237
|
|
|
233
238
|
_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );
|
|
234
239
|
|
|
235
240
|
// Adjust z values based on coordinate system
|
|
236
|
-
|
|
241
|
+
|
|
242
|
+
if ( this.camera.reversedDepth === true ) {
|
|
243
|
+
|
|
244
|
+
nearZ = 1;
|
|
245
|
+
farZ = 0;
|
|
246
|
+
|
|
247
|
+
} else {
|
|
248
|
+
|
|
249
|
+
if ( this.camera.coordinateSystem === WebGLCoordinateSystem ) {
|
|
250
|
+
|
|
251
|
+
nearZ = - 1;
|
|
252
|
+
farZ = 1;
|
|
253
|
+
|
|
254
|
+
} else if ( this.camera.coordinateSystem === WebGPUCoordinateSystem ) {
|
|
255
|
+
|
|
256
|
+
nearZ = 0;
|
|
257
|
+
farZ = 1;
|
|
258
|
+
|
|
259
|
+
} else {
|
|
260
|
+
|
|
261
|
+
throw new Error( 'THREE.CameraHelper.update(): Invalid coordinate system: ' + this.camera.coordinateSystem );
|
|
262
|
+
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
}
|
|
266
|
+
|
|
237
267
|
|
|
238
268
|
// center / target
|
|
239
269
|
setPoint( 'c', pointMap, geometry, _camera, 0, 0, nearZ );
|
|
240
|
-
setPoint( 't', pointMap, geometry, _camera, 0, 0,
|
|
270
|
+
setPoint( 't', pointMap, geometry, _camera, 0, 0, farZ );
|
|
241
271
|
|
|
242
272
|
// near
|
|
243
273
|
|
|
@@ -248,10 +278,10 @@ class CameraHelper extends LineSegments {
|
|
|
248
278
|
|
|
249
279
|
// far
|
|
250
280
|
|
|
251
|
-
setPoint( 'f1', pointMap, geometry, _camera, - w, - h,
|
|
252
|
-
setPoint( 'f2', pointMap, geometry, _camera, w, - h,
|
|
253
|
-
setPoint( 'f3', pointMap, geometry, _camera, - w, h,
|
|
254
|
-
setPoint( 'f4', pointMap, geometry, _camera, w, h,
|
|
281
|
+
setPoint( 'f1', pointMap, geometry, _camera, - w, - h, farZ );
|
|
282
|
+
setPoint( 'f2', pointMap, geometry, _camera, w, - h, farZ );
|
|
283
|
+
setPoint( 'f3', pointMap, geometry, _camera, - w, h, farZ );
|
|
284
|
+
setPoint( 'f4', pointMap, geometry, _camera, w, h, farZ );
|
|
255
285
|
|
|
256
286
|
// up
|
|
257
287
|
|
|
@@ -261,10 +291,10 @@ class CameraHelper extends LineSegments {
|
|
|
261
291
|
|
|
262
292
|
// cross
|
|
263
293
|
|
|
264
|
-
setPoint( 'cf1', pointMap, geometry, _camera, - w, 0,
|
|
265
|
-
setPoint( 'cf2', pointMap, geometry, _camera, w, 0,
|
|
266
|
-
setPoint( 'cf3', pointMap, geometry, _camera, 0, - h,
|
|
267
|
-
setPoint( 'cf4', pointMap, geometry, _camera, 0, h,
|
|
294
|
+
setPoint( 'cf1', pointMap, geometry, _camera, - w, 0, farZ );
|
|
295
|
+
setPoint( 'cf2', pointMap, geometry, _camera, w, 0, farZ );
|
|
296
|
+
setPoint( 'cf3', pointMap, geometry, _camera, 0, - h, farZ );
|
|
297
|
+
setPoint( 'cf4', pointMap, geometry, _camera, 0, h, farZ );
|
|
268
298
|
|
|
269
299
|
setPoint( 'cn1', pointMap, geometry, _camera, - w, 0, nearZ );
|
|
270
300
|
setPoint( 'cn2', pointMap, geometry, _camera, w, 0, nearZ );
|
|
@@ -23,7 +23,7 @@ const _matrixWorldInv = /*@__PURE__*/ new Matrix4();
|
|
|
23
23
|
class SkeletonHelper extends LineSegments {
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
* Constructs a new
|
|
26
|
+
* Constructs a new skeleton helper.
|
|
27
27
|
*
|
|
28
28
|
* @param {Object3D} object - Usually an instance of {@link SkinnedMesh}. However, any 3D object
|
|
29
29
|
* can be used if it represents a hierarchy of bones (see {@link Bone}).
|
|
@@ -37,9 +37,6 @@ class SkeletonHelper extends LineSegments {
|
|
|
37
37
|
const vertices = [];
|
|
38
38
|
const colors = [];
|
|
39
39
|
|
|
40
|
-
const color1 = new Color( 0, 0, 1 );
|
|
41
|
-
const color2 = new Color( 0, 1, 0 );
|
|
42
|
-
|
|
43
40
|
for ( let i = 0; i < bones.length; i ++ ) {
|
|
44
41
|
|
|
45
42
|
const bone = bones[ i ];
|
|
@@ -48,8 +45,8 @@ class SkeletonHelper extends LineSegments {
|
|
|
48
45
|
|
|
49
46
|
vertices.push( 0, 0, 0 );
|
|
50
47
|
vertices.push( 0, 0, 0 );
|
|
51
|
-
colors.push(
|
|
52
|
-
colors.push(
|
|
48
|
+
colors.push( 0, 0, 0 );
|
|
49
|
+
colors.push( 0, 0, 0 );
|
|
53
50
|
|
|
54
51
|
}
|
|
55
52
|
|
|
@@ -90,6 +87,13 @@ class SkeletonHelper extends LineSegments {
|
|
|
90
87
|
this.matrix = object.matrixWorld;
|
|
91
88
|
this.matrixAutoUpdate = false;
|
|
92
89
|
|
|
90
|
+
// colors
|
|
91
|
+
|
|
92
|
+
const color1 = new Color( 0x0000ff );
|
|
93
|
+
const color2 = new Color( 0x00ff00 );
|
|
94
|
+
|
|
95
|
+
this.setColors( color1, color2 );
|
|
96
|
+
|
|
93
97
|
}
|
|
94
98
|
|
|
95
99
|
updateMatrixWorld( force ) {
|
|
@@ -127,6 +131,31 @@ class SkeletonHelper extends LineSegments {
|
|
|
127
131
|
|
|
128
132
|
}
|
|
129
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Defines the colors of the helper.
|
|
136
|
+
*
|
|
137
|
+
* @param {Color} color1 - The first line color for each bone.
|
|
138
|
+
* @param {Color} color2 - The second line color for each bone.
|
|
139
|
+
* @return {SkeletonHelper} A reference to this helper.
|
|
140
|
+
*/
|
|
141
|
+
setColors( color1, color2 ) {
|
|
142
|
+
|
|
143
|
+
const geometry = this.geometry;
|
|
144
|
+
const colorAttribute = geometry.getAttribute( 'color' );
|
|
145
|
+
|
|
146
|
+
for ( let i = 0; i < colorAttribute.count; i += 2 ) {
|
|
147
|
+
|
|
148
|
+
colorAttribute.setXYZ( i, color1.r, color1.g, color1.b );
|
|
149
|
+
colorAttribute.setXYZ( i + 1, color2.r, color2.g, color2.b );
|
|
150
|
+
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
colorAttribute.needsUpdate = true;
|
|
154
|
+
|
|
155
|
+
return this;
|
|
156
|
+
|
|
157
|
+
}
|
|
158
|
+
|
|
130
159
|
/**
|
|
131
160
|
* Frees the GPU-related resources allocated by this instance. Call this
|
|
132
161
|
* method whenever this instance is no longer used in your app.
|
|
@@ -204,14 +204,27 @@ class LightShadow {
|
|
|
204
204
|
shadowCamera.updateMatrixWorld();
|
|
205
205
|
|
|
206
206
|
_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );
|
|
207
|
-
this._frustum.setFromProjectionMatrix( _projScreenMatrix );
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
207
|
+
this._frustum.setFromProjectionMatrix( _projScreenMatrix, shadowCamera.coordinateSystem, shadowCamera.reversedDepth );
|
|
208
|
+
|
|
209
|
+
if ( shadowCamera.reversedDepth ) {
|
|
210
|
+
|
|
211
|
+
shadowMatrix.set(
|
|
212
|
+
0.5, 0.0, 0.0, 0.5,
|
|
213
|
+
0.0, 0.5, 0.0, 0.5,
|
|
214
|
+
0.0, 0.0, 1.0, 0.0,
|
|
215
|
+
0.0, 0.0, 0.0, 1.0
|
|
216
|
+
);
|
|
217
|
+
|
|
218
|
+
} else {
|
|
219
|
+
|
|
220
|
+
shadowMatrix.set(
|
|
221
|
+
0.5, 0.0, 0.0, 0.5,
|
|
222
|
+
0.0, 0.5, 0.0, 0.5,
|
|
223
|
+
0.0, 0.0, 0.5, 0.5,
|
|
224
|
+
0.0, 0.0, 0.0, 1.0
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
}
|
|
215
228
|
|
|
216
229
|
shadowMatrix.multiply( _projScreenMatrix );
|
|
217
230
|
|
|
@@ -108,7 +108,7 @@ class PointLightShadow extends LightShadow {
|
|
|
108
108
|
shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );
|
|
109
109
|
|
|
110
110
|
_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
|
|
111
|
-
this._frustum.setFromProjectionMatrix( _projScreenMatrix );
|
|
111
|
+
this._frustum.setFromProjectionMatrix( _projScreenMatrix, camera.coordinateSystem, camera.reversedDepth );
|
|
112
112
|
|
|
113
113
|
}
|
|
114
114
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AnimationClip } from '../animation/AnimationClip.js';
|
|
2
2
|
import { FileLoader } from './FileLoader.js';
|
|
3
3
|
import { Loader } from './Loader.js';
|
|
4
|
+
import { error } from '../utils.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Class for loading animation clips in the JSON format. The files are internally
|
|
@@ -57,7 +58,7 @@ class AnimationLoader extends Loader {
|
|
|
57
58
|
|
|
58
59
|
} else {
|
|
59
60
|
|
|
60
|
-
|
|
61
|
+
error( e );
|
|
61
62
|
|
|
62
63
|
}
|
|
63
64
|
|