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
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
DataUtils,
|
|
4
4
|
FloatType,
|
|
5
5
|
HalfFloatType,
|
|
6
|
-
NoColorSpace,
|
|
7
6
|
LinearFilter,
|
|
8
7
|
LinearSRGBColorSpace,
|
|
9
8
|
RedFormat,
|
|
9
|
+
RGFormat,
|
|
10
10
|
RGBAFormat
|
|
11
11
|
} from 'three';
|
|
12
12
|
import * as fflate from '../libs/fflate.module.js';
|
|
@@ -113,6 +113,14 @@ class EXRLoader extends DataTextureLoader {
|
|
|
113
113
|
*/
|
|
114
114
|
this.type = HalfFloatType;
|
|
115
115
|
|
|
116
|
+
/**
|
|
117
|
+
* Texture output format.
|
|
118
|
+
*
|
|
119
|
+
* @type {(RGBAFormat|RGFormat|RedFormat)}
|
|
120
|
+
* @default RGBAFormat
|
|
121
|
+
*/
|
|
122
|
+
this.outputFormat = RGBAFormat;
|
|
123
|
+
|
|
116
124
|
}
|
|
117
125
|
|
|
118
126
|
/**
|
|
@@ -1022,6 +1030,81 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1022
1030
|
|
|
1023
1031
|
}
|
|
1024
1032
|
|
|
1033
|
+
function lossyDctChannelDecode( channelIndex, rowPtrs, channelData, acBuffer, dcBuffer, outBuffer ) {
|
|
1034
|
+
|
|
1035
|
+
const dataView = new DataView( outBuffer.buffer );
|
|
1036
|
+
const cd = channelData[ channelIndex ];
|
|
1037
|
+
const width = cd.width;
|
|
1038
|
+
const height = cd.height;
|
|
1039
|
+
|
|
1040
|
+
const numBlocksX = Math.ceil( width / 8.0 );
|
|
1041
|
+
const numBlocksY = Math.ceil( height / 8.0 );
|
|
1042
|
+
const numFullBlocksX = Math.floor( width / 8.0 );
|
|
1043
|
+
const leftoverX = width - ( numBlocksX - 1 ) * 8;
|
|
1044
|
+
const leftoverY = height - ( numBlocksY - 1 ) * 8;
|
|
1045
|
+
|
|
1046
|
+
const currAcComp = { value: 0 };
|
|
1047
|
+
let currDcComp = 0;
|
|
1048
|
+
const dctData = new Float32Array( 64 );
|
|
1049
|
+
const halfZigBlock = new Uint16Array( 64 );
|
|
1050
|
+
const rowBlock = new Uint16Array( numBlocksX * 64 );
|
|
1051
|
+
|
|
1052
|
+
for ( let blocky = 0; blocky < numBlocksY; ++ blocky ) {
|
|
1053
|
+
|
|
1054
|
+
let maxY = 8;
|
|
1055
|
+
|
|
1056
|
+
if ( blocky == numBlocksY - 1 ) maxY = leftoverY;
|
|
1057
|
+
|
|
1058
|
+
for ( let blockx = 0; blockx < numBlocksX; ++ blockx ) {
|
|
1059
|
+
|
|
1060
|
+
halfZigBlock.fill( 0 );
|
|
1061
|
+
halfZigBlock[ 0 ] = dcBuffer[ currDcComp ++ ];
|
|
1062
|
+
unRleAC( currAcComp, acBuffer, halfZigBlock );
|
|
1063
|
+
unZigZag( halfZigBlock, dctData );
|
|
1064
|
+
dctInverse( dctData );
|
|
1065
|
+
convertToHalf( dctData, rowBlock, blockx * 64 );
|
|
1066
|
+
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
// Write decoded data to output buffer
|
|
1070
|
+
for ( let y = 8 * blocky; y < 8 * blocky + maxY; ++ y ) {
|
|
1071
|
+
|
|
1072
|
+
let offset = rowPtrs[ channelIndex ][ y ];
|
|
1073
|
+
|
|
1074
|
+
for ( let blockx = 0; blockx < numFullBlocksX; ++ blockx ) {
|
|
1075
|
+
|
|
1076
|
+
const src = blockx * 64 + ( ( y & 0x7 ) * 8 );
|
|
1077
|
+
|
|
1078
|
+
for ( let x = 0; x < 8; ++ x ) {
|
|
1079
|
+
|
|
1080
|
+
dataView.setUint16( offset + x * INT16_SIZE * cd.type, rowBlock[ src + x ], true );
|
|
1081
|
+
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
offset += 8 * INT16_SIZE * cd.type;
|
|
1085
|
+
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
if ( numBlocksX != numFullBlocksX ) {
|
|
1089
|
+
|
|
1090
|
+
const src = numFullBlocksX * 64 + ( ( y & 0x7 ) * 8 );
|
|
1091
|
+
|
|
1092
|
+
for ( let x = 0; x < leftoverX; ++ x ) {
|
|
1093
|
+
|
|
1094
|
+
dataView.setUint16( offset + x * INT16_SIZE * cd.type, rowBlock[ src + x ], true );
|
|
1095
|
+
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
cd.decoded = true;
|
|
1105
|
+
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1025
1108
|
function unRleAC( currAcComp, acBuffer, halfZigBlock ) {
|
|
1026
1109
|
|
|
1027
1110
|
let acValue;
|
|
@@ -1634,8 +1717,12 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1634
1717
|
|
|
1635
1718
|
}
|
|
1636
1719
|
|
|
1637
|
-
//
|
|
1638
|
-
|
|
1720
|
+
// Decode lossy DCT data if we have a valid color space conversion set with the first RGB channel present
|
|
1721
|
+
if ( cscSet.idx[ 0 ] !== undefined && channelData[ cscSet.idx[ 0 ] ] ) {
|
|
1722
|
+
|
|
1723
|
+
lossyDctDecode( cscSet, rowOffsets, channelData, acBuffer, dcBuffer, outBuffer );
|
|
1724
|
+
|
|
1725
|
+
}
|
|
1639
1726
|
|
|
1640
1727
|
// Decode other channels
|
|
1641
1728
|
for ( let i = 0; i < channelData.length; ++ i ) {
|
|
@@ -1673,7 +1760,11 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1673
1760
|
|
|
1674
1761
|
break;
|
|
1675
1762
|
|
|
1676
|
-
case LOSSY_DCT:
|
|
1763
|
+
case LOSSY_DCT:
|
|
1764
|
+
|
|
1765
|
+
lossyDctChannelDecode( i, rowOffsets, channelData, acBuffer, dcBuffer, outBuffer );
|
|
1766
|
+
|
|
1767
|
+
break;
|
|
1677
1768
|
|
|
1678
1769
|
default:
|
|
1679
1770
|
throw new Error( 'EXRLoader.parse: unsupported channel compression' );
|
|
@@ -2291,7 +2382,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2291
2382
|
|
|
2292
2383
|
}
|
|
2293
2384
|
|
|
2294
|
-
function setupDecoder( EXRHeader, dataView, uInt8Array, offset, outputType ) {
|
|
2385
|
+
function setupDecoder( EXRHeader, dataView, uInt8Array, offset, outputType, outputFormat ) {
|
|
2295
2386
|
|
|
2296
2387
|
const EXRDecoder = {
|
|
2297
2388
|
size: 0,
|
|
@@ -2302,6 +2393,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2302
2393
|
height: EXRHeader.dataWindow.yMax - EXRHeader.dataWindow.yMin + 1,
|
|
2303
2394
|
inputChannels: EXRHeader.channels,
|
|
2304
2395
|
channelByteOffsets: {},
|
|
2396
|
+
shouldExpand: false,
|
|
2305
2397
|
scanOrder: null,
|
|
2306
2398
|
totalBytes: null,
|
|
2307
2399
|
columns: null,
|
|
@@ -2379,17 +2471,16 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2379
2471
|
|
|
2380
2472
|
// RGB images will be converted to RGBA format, preventing software emulation in select devices.
|
|
2381
2473
|
let fillAlpha = false;
|
|
2474
|
+
let invalidOutput = false;
|
|
2382
2475
|
|
|
2476
|
+
// Validate if input texture contain supported channels
|
|
2383
2477
|
if ( channels.R && channels.G && channels.B ) {
|
|
2384
2478
|
|
|
2385
|
-
fillAlpha = ! channels.A;
|
|
2386
2479
|
EXRDecoder.outputChannels = 4;
|
|
2387
|
-
EXRDecoder.decodeChannels = { R: 0, G: 1, B: 2, A: 3 };
|
|
2388
2480
|
|
|
2389
2481
|
} else if ( channels.Y ) {
|
|
2390
2482
|
|
|
2391
2483
|
EXRDecoder.outputChannels = 1;
|
|
2392
|
-
EXRDecoder.decodeChannels = { Y: 0 };
|
|
2393
2484
|
|
|
2394
2485
|
} else {
|
|
2395
2486
|
|
|
@@ -2397,6 +2488,83 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2397
2488
|
|
|
2398
2489
|
}
|
|
2399
2490
|
|
|
2491
|
+
// Setup output texture configuration
|
|
2492
|
+
switch ( EXRDecoder.outputChannels ) {
|
|
2493
|
+
|
|
2494
|
+
case 4:
|
|
2495
|
+
|
|
2496
|
+
if ( outputFormat == RGBAFormat ) {
|
|
2497
|
+
|
|
2498
|
+
fillAlpha = ! channels.A;
|
|
2499
|
+
EXRDecoder.format = RGBAFormat;
|
|
2500
|
+
EXRDecoder.colorSpace = LinearSRGBColorSpace;
|
|
2501
|
+
EXRDecoder.outputChannels = 4;
|
|
2502
|
+
EXRDecoder.decodeChannels = { R: 0, G: 1, B: 2, A: 3 };
|
|
2503
|
+
|
|
2504
|
+
} else if ( outputFormat == RGFormat ) {
|
|
2505
|
+
|
|
2506
|
+
EXRDecoder.format = RGFormat;
|
|
2507
|
+
EXRDecoder.colorSpace = LinearSRGBColorSpace;
|
|
2508
|
+
EXRDecoder.outputChannels = 2;
|
|
2509
|
+
EXRDecoder.decodeChannels = { R: 0, G: 1 };
|
|
2510
|
+
|
|
2511
|
+
} else if ( outputFormat == RedFormat ) {
|
|
2512
|
+
|
|
2513
|
+
EXRDecoder.format = RedFormat;
|
|
2514
|
+
EXRDecoder.colorSpace = LinearSRGBColorSpace;
|
|
2515
|
+
EXRDecoder.outputChannels = 1;
|
|
2516
|
+
EXRDecoder.decodeChannels = { R: 0 };
|
|
2517
|
+
|
|
2518
|
+
} else {
|
|
2519
|
+
|
|
2520
|
+
invalidOutput = true;
|
|
2521
|
+
|
|
2522
|
+
}
|
|
2523
|
+
|
|
2524
|
+
break;
|
|
2525
|
+
|
|
2526
|
+
case 1:
|
|
2527
|
+
|
|
2528
|
+
if ( outputFormat == RGBAFormat ) {
|
|
2529
|
+
|
|
2530
|
+
fillAlpha = true;
|
|
2531
|
+
EXRDecoder.format = RGBAFormat;
|
|
2532
|
+
EXRDecoder.colorSpace = LinearSRGBColorSpace;
|
|
2533
|
+
EXRDecoder.outputChannels = 4;
|
|
2534
|
+
EXRDecoder.shouldExpand = true;
|
|
2535
|
+
EXRDecoder.decodeChannels = { Y: 0 };
|
|
2536
|
+
|
|
2537
|
+
} else if ( outputFormat == RGFormat ) {
|
|
2538
|
+
|
|
2539
|
+
EXRDecoder.format = RGFormat;
|
|
2540
|
+
EXRDecoder.colorSpace = LinearSRGBColorSpace;
|
|
2541
|
+
EXRDecoder.outputChannels = 2;
|
|
2542
|
+
EXRDecoder.shouldExpand = true;
|
|
2543
|
+
EXRDecoder.decodeChannels = { Y: 0 };
|
|
2544
|
+
|
|
2545
|
+
} else if ( outputFormat == RedFormat ) {
|
|
2546
|
+
|
|
2547
|
+
EXRDecoder.format = RedFormat;
|
|
2548
|
+
EXRDecoder.colorSpace = LinearSRGBColorSpace;
|
|
2549
|
+
EXRDecoder.outputChannels = 1;
|
|
2550
|
+
EXRDecoder.decodeChannels = { Y: 0 };
|
|
2551
|
+
|
|
2552
|
+
} else {
|
|
2553
|
+
|
|
2554
|
+
invalidOutput = true;
|
|
2555
|
+
|
|
2556
|
+
}
|
|
2557
|
+
|
|
2558
|
+
break;
|
|
2559
|
+
|
|
2560
|
+
default:
|
|
2561
|
+
|
|
2562
|
+
invalidOutput = true;
|
|
2563
|
+
|
|
2564
|
+
}
|
|
2565
|
+
|
|
2566
|
+
if ( invalidOutput ) throw new Error( 'EXRLoader.parse: invalid output format for specified file.' );
|
|
2567
|
+
|
|
2400
2568
|
if ( EXRDecoder.type == 1 ) {
|
|
2401
2569
|
|
|
2402
2570
|
// half
|
|
@@ -2486,18 +2654,6 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2486
2654
|
|
|
2487
2655
|
}
|
|
2488
2656
|
|
|
2489
|
-
if ( EXRDecoder.outputChannels == 4 ) {
|
|
2490
|
-
|
|
2491
|
-
EXRDecoder.format = RGBAFormat;
|
|
2492
|
-
EXRDecoder.colorSpace = LinearSRGBColorSpace;
|
|
2493
|
-
|
|
2494
|
-
} else {
|
|
2495
|
-
|
|
2496
|
-
EXRDecoder.format = RedFormat;
|
|
2497
|
-
EXRDecoder.colorSpace = NoColorSpace;
|
|
2498
|
-
|
|
2499
|
-
}
|
|
2500
|
-
|
|
2501
2657
|
if ( EXRHeader.spec.singleTile ) {
|
|
2502
2658
|
|
|
2503
2659
|
EXRDecoder.blockHeight = EXRHeader.tiles.ySize;
|
|
@@ -2543,11 +2699,30 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2543
2699
|
const EXRHeader = parseHeader( bufferDataView, buffer, offset );
|
|
2544
2700
|
|
|
2545
2701
|
// get input compression information and prepare decoding.
|
|
2546
|
-
const EXRDecoder = setupDecoder( EXRHeader, bufferDataView, uInt8Array, offset, this.type );
|
|
2702
|
+
const EXRDecoder = setupDecoder( EXRHeader, bufferDataView, uInt8Array, offset, this.type, this.outputFormat );
|
|
2547
2703
|
|
|
2548
2704
|
// parse input data
|
|
2549
2705
|
EXRDecoder.decode();
|
|
2550
2706
|
|
|
2707
|
+
// output texture post-processing
|
|
2708
|
+
if ( EXRDecoder.shouldExpand ) {
|
|
2709
|
+
|
|
2710
|
+
const byteArray = EXRDecoder.byteArray;
|
|
2711
|
+
|
|
2712
|
+
if ( this.outputFormat == RGBAFormat ) {
|
|
2713
|
+
|
|
2714
|
+
for ( let i = 0; i < byteArray.length; i += 4 )
|
|
2715
|
+
byteArray[ i + 2 ] = ( byteArray[ i + 1 ] = byteArray[ i ] );
|
|
2716
|
+
|
|
2717
|
+
} else if ( this.outputFormat == RGFormat ) {
|
|
2718
|
+
|
|
2719
|
+
for ( let i = 0; i < byteArray.length; i += 2 )
|
|
2720
|
+
byteArray[ i + 1 ] = byteArray[ i ];
|
|
2721
|
+
|
|
2722
|
+
}
|
|
2723
|
+
|
|
2724
|
+
}
|
|
2725
|
+
|
|
2551
2726
|
return {
|
|
2552
2727
|
header: EXRHeader,
|
|
2553
2728
|
width: EXRDecoder.width,
|
|
@@ -2564,7 +2739,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2564
2739
|
* Sets the texture type.
|
|
2565
2740
|
*
|
|
2566
2741
|
* @param {(HalfFloatType|FloatType)} value - The texture type to set.
|
|
2567
|
-
* @return {
|
|
2742
|
+
* @return {EXRLoader} A reference to this loader.
|
|
2568
2743
|
*/
|
|
2569
2744
|
setDataType( value ) {
|
|
2570
2745
|
|
|
@@ -2573,6 +2748,19 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2573
2748
|
|
|
2574
2749
|
}
|
|
2575
2750
|
|
|
2751
|
+
/**
|
|
2752
|
+
* Sets texture output format. Defaults to `RGBAFormat`.
|
|
2753
|
+
*
|
|
2754
|
+
* @param {(RGBAFormat|RGFormat|RedFormat)} value - Texture output format.
|
|
2755
|
+
* @return {EXRLoader} A reference to this loader.
|
|
2756
|
+
*/
|
|
2757
|
+
setOutputFormat( value ) {
|
|
2758
|
+
|
|
2759
|
+
this.outputFormat = value;
|
|
2760
|
+
return this;
|
|
2761
|
+
|
|
2762
|
+
}
|
|
2763
|
+
|
|
2576
2764
|
load( url, onLoad, onProgress, onError ) {
|
|
2577
2765
|
|
|
2578
2766
|
function onLoadCallback( texture, texData ) {
|
|
@@ -61,10 +61,10 @@ let sceneGraph;
|
|
|
61
61
|
* - Morph normals / blend shape normals
|
|
62
62
|
*
|
|
63
63
|
* FBX format references:
|
|
64
|
-
* - [C++ SDK reference]
|
|
64
|
+
* - [C++ SDK reference](https://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_index_html)
|
|
65
65
|
*
|
|
66
66
|
* Binary format specification:
|
|
67
|
-
* - [FBX binary file format specification]
|
|
67
|
+
* - [FBX binary file format specification](https://code.blender.org/2013/08/fbx-binary-file-format-specification/)
|
|
68
68
|
*
|
|
69
69
|
* ```js
|
|
70
70
|
* const loader = new FBXLoader();
|
|
@@ -445,7 +445,7 @@ class FBXTreeParser {
|
|
|
445
445
|
const extension = textureNode.FileName.split( '.' ).pop().toLowerCase();
|
|
446
446
|
|
|
447
447
|
let loader = this.manager.getHandler( `.${extension}` );
|
|
448
|
-
if ( loader === null) loader = this.textureLoader;
|
|
448
|
+
if ( loader === null ) loader = this.textureLoader;
|
|
449
449
|
|
|
450
450
|
const loaderPath = loader.path;
|
|
451
451
|
|
|
@@ -1784,7 +1784,7 @@ class GeometryParser {
|
|
|
1784
1784
|
geoInfo.vertexPositions = ( geoNode.Vertices !== undefined ) ? geoNode.Vertices.a : [];
|
|
1785
1785
|
geoInfo.vertexIndices = ( geoNode.PolygonVertexIndex !== undefined ) ? geoNode.PolygonVertexIndex.a : [];
|
|
1786
1786
|
|
|
1787
|
-
if ( geoNode.LayerElementColor ) {
|
|
1787
|
+
if ( geoNode.LayerElementColor && geoNode.LayerElementColor[ 0 ].Colors ) {
|
|
1788
1788
|
|
|
1789
1789
|
geoInfo.color = this.parseVertexColors( geoNode.LayerElementColor[ 0 ] );
|
|
1790
1790
|
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
/**
|
|
8
8
|
* A loader for loading fonts.
|
|
9
9
|
*
|
|
10
|
-
* You can convert fonts online using [facetype.js]
|
|
10
|
+
* You can convert fonts online using [facetype.js](https://gero3.github.io/facetype.js/).
|
|
11
11
|
*
|
|
12
12
|
* ```js
|
|
13
13
|
* const loader = new FontLoader();
|
|
@@ -109,12 +109,13 @@ class Font {
|
|
|
109
109
|
*
|
|
110
110
|
* @param {string} text - The text.
|
|
111
111
|
* @param {number} [size=100] - The text size.
|
|
112
|
+
* @param {string} [direction='ltr'] - Char direction: ltr(left to right), rtl(right to left) & tb(top bottom).
|
|
112
113
|
* @return {Array<Shape>} An array of shapes representing the text.
|
|
113
114
|
*/
|
|
114
|
-
generateShapes( text, size = 100 ) {
|
|
115
|
+
generateShapes( text, size = 100, direction = 'ltr' ) {
|
|
115
116
|
|
|
116
117
|
const shapes = [];
|
|
117
|
-
const paths = createPaths( text, size, this.data );
|
|
118
|
+
const paths = createPaths( text, size, this.data, direction );
|
|
118
119
|
|
|
119
120
|
for ( let p = 0, pl = paths.length; p < pl; p ++ ) {
|
|
120
121
|
|
|
@@ -128,7 +129,7 @@ class Font {
|
|
|
128
129
|
|
|
129
130
|
}
|
|
130
131
|
|
|
131
|
-
function createPaths( text, size, data ) {
|
|
132
|
+
function createPaths( text, size, data, direction ) {
|
|
132
133
|
|
|
133
134
|
const chars = Array.from( text );
|
|
134
135
|
const scale = size / data.resolution;
|
|
@@ -138,6 +139,12 @@ function createPaths( text, size, data ) {
|
|
|
138
139
|
|
|
139
140
|
let offsetX = 0, offsetY = 0;
|
|
140
141
|
|
|
142
|
+
if ( direction == 'rtl' || direction == 'tb' ) {
|
|
143
|
+
|
|
144
|
+
chars.reverse();
|
|
145
|
+
|
|
146
|
+
}
|
|
147
|
+
|
|
141
148
|
for ( let i = 0; i < chars.length; i ++ ) {
|
|
142
149
|
|
|
143
150
|
const char = chars[ i ];
|
|
@@ -150,7 +157,18 @@ function createPaths( text, size, data ) {
|
|
|
150
157
|
} else {
|
|
151
158
|
|
|
152
159
|
const ret = createPath( char, scale, offsetX, offsetY, data );
|
|
153
|
-
|
|
160
|
+
|
|
161
|
+
if ( direction == 'tb' ) {
|
|
162
|
+
|
|
163
|
+
offsetX = 0;
|
|
164
|
+
offsetY += data.ascender * scale;
|
|
165
|
+
|
|
166
|
+
} else {
|
|
167
|
+
|
|
168
|
+
offsetX += ret.offsetX;
|
|
169
|
+
|
|
170
|
+
}
|
|
171
|
+
|
|
154
172
|
paths.push( ret.path );
|
|
155
173
|
|
|
156
174
|
}
|
|
@@ -70,7 +70,7 @@ import { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';
|
|
|
70
70
|
/**
|
|
71
71
|
* A loader for the glTF 2.0 format.
|
|
72
72
|
*
|
|
73
|
-
* [glTF]
|
|
73
|
+
* [glTF](https://www.khronos.org/gltf/} (GL Transmission Format) is an [open format specification]{@link https://github.com/KhronosGroup/glTF/tree/main/specification/2.0)
|
|
74
74
|
* for efficient delivery and loading of 3D content. Assets may be provided either in JSON (.gltf) or binary (.glb)
|
|
75
75
|
* format. External files store textures (.jpg, .png) and additional binary data (.bin). A glTF asset may deliver
|
|
76
76
|
* one or more scenes, including meshes, materials, textures, skins, skeletons, morph targets, animations, lights,
|
|
@@ -99,8 +99,10 @@ import { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';
|
|
|
99
99
|
* - EXT_mesh_gpu_instancing
|
|
100
100
|
*
|
|
101
101
|
* The following glTF 2.0 extension is supported by an external user plugin:
|
|
102
|
-
* - [KHR_materials_variants]
|
|
103
|
-
* - [MSFT_texture_dds]
|
|
102
|
+
* - [KHR_materials_variants](https://github.com/takahirox/three-gltf-extensions)
|
|
103
|
+
* - [MSFT_texture_dds](https://github.com/takahirox/three-gltf-extensions)
|
|
104
|
+
* - [KHR_animation_pointer](https://github.com/needle-tools/three-animation-pointer)
|
|
105
|
+
* - [NEEDLE_progressive](https://github.com/needle-tools/gltf-progressive)
|
|
104
106
|
*
|
|
105
107
|
* ```js
|
|
106
108
|
* const loader = new GLTFLoader();
|
|
@@ -2376,7 +2378,7 @@ function addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {
|
|
|
2376
2378
|
/**
|
|
2377
2379
|
*
|
|
2378
2380
|
* @private
|
|
2379
|
-
* @param {Object3D|Material|BufferGeometry|Object} object
|
|
2381
|
+
* @param {Object3D|Material|BufferGeometry|Object|AnimationClip} object
|
|
2380
2382
|
* @param {GLTF.definition} gltfDef
|
|
2381
2383
|
*/
|
|
2382
2384
|
function assignExtrasToUserData( object, gltfDef ) {
|
|
@@ -2943,7 +2945,7 @@ class GLTFParser {
|
|
|
2943
2945
|
* @private
|
|
2944
2946
|
* @param {string} type
|
|
2945
2947
|
* @param {number} index
|
|
2946
|
-
* @return {Promise<Object3D|Material|
|
|
2948
|
+
* @return {Promise<Object3D|Material|Texture|AnimationClip|ArrayBuffer|Object>}
|
|
2947
2949
|
*/
|
|
2948
2950
|
getDependency( type, index ) {
|
|
2949
2951
|
|
|
@@ -3283,7 +3285,7 @@ class GLTFParser {
|
|
|
3283
3285
|
*
|
|
3284
3286
|
* @private
|
|
3285
3287
|
* @param {number} textureIndex
|
|
3286
|
-
* @return {Promise
|
|
3288
|
+
* @return {Promise<?Texture>}
|
|
3287
3289
|
*/
|
|
3288
3290
|
loadTexture( textureIndex ) {
|
|
3289
3291
|
|
|
@@ -4020,7 +4022,7 @@ class GLTFParser {
|
|
|
4020
4022
|
*
|
|
4021
4023
|
* @private
|
|
4022
4024
|
* @param {number} cameraIndex
|
|
4023
|
-
* @return {Promise<
|
|
4025
|
+
* @return {Promise<Camera>|undefined}
|
|
4024
4026
|
*/
|
|
4025
4027
|
loadCamera( cameraIndex ) {
|
|
4026
4028
|
|
|
@@ -4213,7 +4215,11 @@ class GLTFParser {
|
|
|
4213
4215
|
|
|
4214
4216
|
}
|
|
4215
4217
|
|
|
4216
|
-
|
|
4218
|
+
const animation = new AnimationClip( animationName, undefined, tracks );
|
|
4219
|
+
|
|
4220
|
+
assignExtrasToUserData( animation, animationDef );
|
|
4221
|
+
|
|
4222
|
+
return animation;
|
|
4217
4223
|
|
|
4218
4224
|
} );
|
|
4219
4225
|
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
LinearSRGBColorSpace,
|
|
9
9
|
Loader
|
|
10
10
|
} from 'three';
|
|
11
|
-
import {
|
|
11
|
+
import { HDRLoader } from '../loaders/HDRLoader.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* A loader for loading HDR cube textures.
|
|
@@ -40,9 +40,9 @@ class HDRCubeTextureLoader extends Loader {
|
|
|
40
40
|
* The internal HDR loader that loads the
|
|
41
41
|
* individual textures for each cube face.
|
|
42
42
|
*
|
|
43
|
-
|
|
43
|
+
* @type {HDRLoader}
|
|
44
44
|
*/
|
|
45
|
-
this.hdrLoader = new
|
|
45
|
+
this.hdrLoader = new HDRLoader();
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
48
|
* The texture type.
|
|
@@ -147,8 +147,8 @@ class HDRCubeTextureLoader extends Loader {
|
|
|
147
147
|
/**
|
|
148
148
|
* Sets the texture type.
|
|
149
149
|
*
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
* @param {(HalfFloatType|FloatType)} value - The texture type to set.
|
|
151
|
+
* @return {HDRCubeTextureLoader} A reference to this loader.
|
|
152
152
|
*/
|
|
153
153
|
setDataType( value ) {
|
|
154
154
|
|