@unikia/upe-renderer 0.186.110 → 0.187.11
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 +5 -7
- package/UPSTREAM.md +4 -4
- package/build/three.core.js +853 -277
- package/build/three.module.js +1098 -1280
- package/build/three.tsl.js +41938 -686
- package/build/three.webgpu.js +10604 -49055
- package/build/three.webgpu.nodes.js +9249 -5788
- package/examples/jsm/Addons.js +2 -0
- package/examples/jsm/animation/CCDIKSolver.js +17 -5
- package/examples/jsm/controls/FirstPersonControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +27 -14
- package/examples/jsm/csm/CSMShader.js +74 -3
- package/examples/jsm/curves/CurveExtras.js +4 -4
- package/examples/jsm/curves/NURBSCurve.js +14 -0
- package/examples/jsm/exporters/EXRExporter.js +673 -16
- package/examples/jsm/exporters/GLTFExporter.js +4 -4
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/OBJExporter.js +48 -5
- package/examples/jsm/exporters/PLYExporter.js +22 -11
- package/examples/jsm/generators/CityGenerator.js +3 -2
- package/examples/jsm/generators/city/SkyscraperGenerator.js +63 -21
- package/examples/jsm/gpgpu/BitonicSort.js +30 -23
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -1
- package/examples/jsm/inspector/Extension.js +1 -1
- package/examples/jsm/inspector/Inspector.js +6 -46
- package/examples/jsm/inspector/RendererInspector.js +43 -8
- package/examples/jsm/inspector/Storage.js +49 -0
- package/examples/jsm/inspector/extensions/color-grading/ColorGrading.js +32 -27
- package/examples/jsm/inspector/tabs/Parameters.js +5 -1
- package/examples/jsm/inspector/tabs/Performance.js +22 -7
- package/examples/jsm/inspector/tabs/Settings.js +1 -1
- package/examples/jsm/inspector/tabs/Timeline.js +83 -7
- package/examples/jsm/inspector/tabs/Viewer.js +25 -10
- package/examples/jsm/inspector/ui/Profiler.js +1 -1
- package/examples/jsm/inspector/ui/Style.js +21 -53
- package/examples/jsm/inspector/ui/Values.js +28 -3
- package/examples/jsm/libs/fflate.module.js +83 -56
- package/examples/jsm/libs/mikktspace.README.md +27 -0
- package/examples/jsm/libs/mikktspace.module.js +721 -109
- package/examples/jsm/lighting/ClusteredLighting.js +100 -2
- package/examples/jsm/lighting/LightMapper.js +295 -0
- package/examples/jsm/lighting/LightProbeGrid.js +242 -139
- package/examples/jsm/lighting/LightProbeGridWebGL.js +30 -14
- package/examples/jsm/lighting/vxgi/VXGIConeTracer.js +54 -5
- package/examples/jsm/lighting/vxgi/VXGIIrradiance.js +43 -0
- package/examples/jsm/lighting/vxgi/VXGINode.js +13 -56
- package/examples/jsm/lighting/vxgi/VXGISceneCollector.js +316 -1
- package/examples/jsm/lighting/vxgi/VXGIVolume.js +69 -59
- package/examples/jsm/lights/SunLight.js +9 -4
- package/examples/jsm/lights/SunLightNode.js +3 -3
- package/examples/jsm/lines/LineMaterial.js +26 -10
- package/examples/jsm/loaders/3DMLoader.js +10 -1
- package/examples/jsm/loaders/3MFLoader.js +5 -1
- package/examples/jsm/loaders/AMFLoader.js +2 -0
- package/examples/jsm/loaders/BVHLoader.js +2 -0
- package/examples/jsm/loaders/ColladaLoader.js +8 -0
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +5 -1
- package/examples/jsm/loaders/EXRLoader.js +120 -104
- package/examples/jsm/loaders/FBXLoader.js +4 -0
- package/examples/jsm/loaders/FontLoader.js +2 -0
- package/examples/jsm/loaders/GCodeLoader.js +5 -9
- package/examples/jsm/loaders/GLTFLoader.js +112 -31
- package/examples/jsm/loaders/GaussianSplatPLYLoader.js +2 -0
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +3 -0
- package/examples/jsm/loaders/IESLoader.js +46 -12
- package/examples/jsm/loaders/JXLLoader.js +159 -0
- package/examples/jsm/loaders/KMZLoader.js +6 -0
- package/examples/jsm/loaders/KSPLATLoader.js +2 -0
- package/examples/jsm/loaders/KTX2Loader.js +49 -4
- package/examples/jsm/loaders/KTXLoader.js +5 -3
- package/examples/jsm/loaders/LDrawLoader.js +15 -22
- package/examples/jsm/loaders/LUT3dlLoader.js +5 -1
- package/examples/jsm/loaders/LUTCubeLoader.js +6 -2
- package/examples/jsm/loaders/LUTImageLoader.js +2 -0
- package/examples/jsm/loaders/LWOLoader.js +6 -0
- package/examples/jsm/loaders/MD2Loader.js +2 -0
- package/examples/jsm/loaders/MDDLoader.js +4 -0
- package/examples/jsm/loaders/MTLLoader.js +8 -0
- package/examples/jsm/loaders/MaterialXLoader.js +57 -5
- package/examples/jsm/loaders/NRRDLoader.js +4 -2
- package/examples/jsm/loaders/OBJLoader.js +10 -4
- package/examples/jsm/loaders/PCDLoader.js +6 -2
- package/examples/jsm/loaders/PDBLoader.js +5 -3
- package/examples/jsm/loaders/PLYLoader.js +39 -15
- package/examples/jsm/loaders/PVRLoader.js +2 -2
- package/examples/jsm/loaders/SPLATLoader.js +2 -0
- package/examples/jsm/loaders/SPZLoader.js +2 -0
- package/examples/jsm/loaders/STLLoader.js +3 -1
- package/examples/jsm/loaders/SVGLoader.js +27 -49
- package/examples/jsm/loaders/TDSLoader.js +4 -0
- package/examples/jsm/loaders/TGALoader.js +6 -5
- package/examples/jsm/loaders/TTFLoader.js +2 -0
- package/examples/jsm/loaders/USDLoader.js +14 -0
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -0
- package/examples/jsm/loaders/VOXLoader.js +3 -0
- package/examples/jsm/loaders/VRMLLoader.js +4 -0
- package/examples/jsm/loaders/VTKLoader.js +2 -0
- package/examples/jsm/loaders/XYZLoader.js +2 -0
- package/examples/jsm/loaders/collada/ColladaComposer.js +15 -8
- package/examples/jsm/loaders/materialx/MaterialXDocument.js +610 -138
- package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.js +12 -95
- package/examples/jsm/loaders/materialx/MaterialXLog.js +4 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeDefs.js +99 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js +760 -1
- package/examples/jsm/loaders/materialx/MaterialXNodeLibrary.js +222 -372
- package/examples/jsm/loaders/materialx/MaterialXSurfaceMappings.js +163 -259
- package/examples/jsm/loaders/materialx/MaterialXUtils.js +25 -0
- package/examples/jsm/loaders/materialx/compile/MaterialXCompileRegistry.js +161 -159
- package/examples/jsm/loaders/usd/USDAParser.js +56 -47
- package/examples/jsm/loaders/usd/USDComposer.js +25 -30
- package/examples/jsm/math/ColorConverter.js +7 -3
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/OBB.js +3 -3
- package/examples/jsm/math/Octree.js +20 -17
- package/examples/jsm/objects/GaussianSplat.js +5 -4
- package/examples/jsm/objects/Reflector.js +5 -0
- package/examples/jsm/objects/SkyMesh.js +14 -7
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/physics/RapierPhysics.js +2 -2
- package/examples/jsm/pipelines/MeshletDrawingPipeline.js +5571 -0
- package/examples/jsm/pipelines/VisibilityBufferDrawingPipeline.js +954 -0
- package/examples/jsm/postprocessing/BokehPass.js +1 -1
- package/examples/jsm/postprocessing/GTAOPass.js +26 -18
- package/examples/jsm/renderers/SVGRenderer.js +3 -2
- package/examples/jsm/shaders/GTAOShader.js +7 -4
- package/examples/jsm/shaders/PoissonDenoiseShader.js +1 -10
- package/examples/jsm/tsl/WebGLNodesHandler.js +21 -9
- package/examples/jsm/tsl/display/AfterImageNode.js +3 -3
- package/examples/jsm/tsl/display/BilateralBlurNode.js +3 -3
- package/examples/jsm/tsl/display/BloomNode.js +3 -3
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +8 -19
- package/examples/jsm/tsl/display/DenoiseNode.js +5 -5
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
- package/examples/jsm/tsl/display/DotScreenNode.js +3 -3
- package/examples/jsm/tsl/display/FSR1Node.js +3 -3
- package/examples/jsm/tsl/display/FXAANode.js +3 -10
- package/examples/jsm/tsl/display/FilmNode.js +3 -3
- package/examples/jsm/tsl/display/GTAONode.js +33 -25
- package/examples/jsm/tsl/display/GaussianBlurNode.js +3 -3
- package/examples/jsm/tsl/display/GodraysNode.js +5 -19
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +8 -4
- package/examples/jsm/tsl/display/LensflareNode.js +3 -3
- package/examples/jsm/tsl/display/Lut3DNode.js +3 -3
- package/examples/jsm/tsl/display/OITPassNode.js +0 -11
- package/examples/jsm/tsl/display/OutlineNode.js +107 -5
- package/examples/jsm/tsl/display/PixelationPassNode.js +85 -193
- package/examples/jsm/tsl/display/RGBShiftNode.js +3 -3
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +23 -126
- package/examples/jsm/tsl/display/SMAANode.js +3 -3
- package/examples/jsm/tsl/display/SSAONode.js +6 -20
- package/examples/jsm/tsl/display/SSGINode.js +36 -29
- package/examples/jsm/tsl/display/SSRNode.js +135 -63
- package/examples/jsm/tsl/display/SSSNode.js +6 -20
- package/examples/jsm/tsl/display/SharpenNode.js +3 -3
- package/examples/jsm/tsl/display/SobelOperatorNode.js +3 -3
- package/examples/jsm/tsl/display/TAAUNode.js +10 -42
- package/examples/jsm/tsl/display/TRAANode.js +11 -43
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +42 -47
- package/examples/jsm/tsl/display/TransitionNode.js +3 -3
- package/examples/jsm/tsl/display/lensDirt.js +30 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +482 -121
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +41 -140
- package/examples/jsm/tsl/lighting/LightProbeGridNode.js +72 -25
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +6 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +102 -14
- package/examples/jsm/tsl/utils/Raymarching.js +1 -1
- package/examples/jsm/tsl/utils/SoftParticles.js +5 -12
- package/examples/jsm/tsl/utils/SpecularHelpers.js +47 -70
- package/examples/jsm/tsl/utils/TAAUtils.js +6 -17
- package/examples/jsm/utils/BufferGeometryUtils.js +110 -88
- package/examples/jsm/utils/MeshletGeometryUtils.js +417 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -1
- package/examples/jsm/utils/SceneUtils.js +1 -1
- package/examples/jsm/utils/unwrapUVs.js +865 -0
- package/examples/jsm/webxr/XREstimatedLight.js +11 -4
- package/package.json +3 -3
- package/src/Three.TSL.js +2 -683
- package/src/Three.WebGPU.Nodes.js +2 -1
- package/src/Three.WebGPU.js +2 -1
- package/src/animation/AnimationAction.js +1 -1
- package/src/animation/AnimationUtils.js +1 -3
- package/src/animation/KeyframeTrack.js +19 -0
- package/src/cameras/ArrayCamera.js +12 -0
- package/src/cameras/CubeCamera.js +3 -3
- package/src/constants.js +1 -9
- package/src/core/BufferAttribute.js +57 -21
- package/src/core/BufferGeometry.js +5 -13
- package/src/core/Clock.js +1 -1
- package/src/core/InterleavedBuffer.js +28 -18
- package/src/core/InterleavedBufferAttribute.js +54 -20
- package/src/core/Object3D.js +19 -9
- package/src/core/Raycaster.js +2 -0
- package/src/core/RenderTarget.js +11 -5
- package/src/core/UniformsGroup.js +7 -3
- package/src/extras/PMREMGenerator.js +392 -685
- package/src/extras/core/Curve.js +4 -0
- package/src/extras/core/CurvePath.js +13 -0
- package/src/extras/core/ShapePath.js +1 -1
- package/src/geometries/EdgesGeometry.js +12 -10
- package/src/geometries/LatheGeometry.js +2 -0
- package/src/helpers/PolarGridHelper.js +1 -1
- package/src/lights/Light.js +11 -0
- package/src/lights/LightProbe.js +2 -0
- package/src/lights/LightShadow.js +2 -0
- package/src/loaders/AnimationLoader.js +2 -0
- package/src/loaders/AudioLoader.js +2 -0
- package/src/loaders/BufferGeometryLoader.js +2 -0
- package/src/loaders/CompressedTextureLoader.js +2 -0
- package/src/loaders/CubeTextureLoader.js +2 -0
- package/src/loaders/DataTextureLoader.js +2 -0
- package/src/loaders/FileLoader.js +2 -0
- package/src/loaders/ImageBitmapLoader.js +3 -1
- package/src/loaders/ImageLoader.js +1 -0
- package/src/loaders/Loader.js +47 -0
- package/src/loaders/MaterialLoader.js +2 -0
- package/src/loaders/ObjectLoader.js +27 -8
- package/src/loaders/TextureLoader.js +5 -3
- package/src/loaders/nodes/NodeLoader.js +2 -0
- package/src/materials/Material.js +21 -2
- package/src/materials/MeshDepthMaterial.js +1 -1
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +1 -1
- package/src/materials/MeshMatcapMaterial.js +1 -1
- package/src/materials/MeshNormalMaterial.js +1 -1
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +90 -11
- package/src/materials/MeshStandardMaterial.js +1 -1
- package/src/materials/MeshToonMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +32 -10
- package/src/materials/nodes/MeshLambertNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +40 -5
- package/src/materials/nodes/MeshToonNodeMaterial.js +13 -0
- package/src/materials/nodes/NodeMaterial.js +36 -16
- package/src/materials/nodes/NodeMaterialInstance.js +193 -0
- package/src/materials/nodes/NodeMaterials.js +1 -0
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -3
- package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -22
- package/src/math/Box3.js +2 -2
- package/src/math/Color.js +8 -8
- package/src/math/ColorManagement.js +2 -21
- package/src/math/FrustumArray.js +12 -0
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +2 -4
- package/src/math/MathUtils.js +33 -46
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +1 -1
- package/src/math/Matrix4.js +1 -1
- package/src/math/Triangle.js +2 -1
- package/src/math/Vector2.js +1 -1
- package/src/math/Vector3.js +1 -1
- package/src/math/Vector4.js +1 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +2 -0
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/Batch.js +29 -23
- package/src/nodes/accessors/BufferAttributeNode.js +21 -1
- package/src/nodes/accessors/BuiltinNode.js +6 -0
- package/src/nodes/accessors/Camera.js +100 -93
- package/src/nodes/accessors/ClippingNode.js +17 -6
- package/src/nodes/accessors/CubeTextureNode.js +12 -24
- package/src/nodes/accessors/Instance.js +198 -160
- package/src/nodes/accessors/Lights.js +19 -6
- package/src/nodes/accessors/MaterialNode.js +33 -4
- package/src/nodes/accessors/Morph.js +81 -22
- package/src/nodes/accessors/Normal.js +0 -42
- package/src/nodes/accessors/Object3DNode.js +6 -0
- package/src/nodes/accessors/PointUVNode.js +6 -0
- package/src/nodes/accessors/ReferenceAttributeNode.js +279 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -0
- package/src/nodes/accessors/ReferenceNode.js +6 -0
- package/src/nodes/accessors/Skinning.js +57 -52
- package/src/nodes/accessors/StorageBufferNode.js +3 -12
- package/src/nodes/accessors/TextureBicubic.js +30 -27
- package/src/nodes/accessors/TextureNode.js +164 -78
- package/src/nodes/accessors/TextureSizeNode.js +6 -0
- package/src/nodes/accessors/UniformArrayNode.js +8 -15
- package/src/nodes/accessors/VelocityNode.js +13 -8
- package/src/nodes/code/CodeNode.js +6 -0
- package/src/nodes/code/ExpressionNode.js +6 -0
- package/src/nodes/code/FunctionCallNode.js +3 -3
- package/src/nodes/code/FunctionNode.js +15 -13
- package/src/nodes/core/ArrayNode.js +3 -3
- package/src/nodes/core/AssignNode.js +10 -9
- package/src/nodes/core/AttributeNode.js +39 -0
- package/src/nodes/core/BypassNode.js +6 -0
- package/src/nodes/core/ConstNode.js +31 -1
- package/src/nodes/core/ContextNode.js +11 -6
- package/src/nodes/core/IndexNode.js +6 -0
- package/src/nodes/core/InputNode.js +6 -0
- package/src/nodes/core/InspectorNode.js +17 -31
- package/src/nodes/core/IsolateNode.js +8 -0
- package/src/nodes/core/Node.js +367 -67
- package/src/nodes/core/NodeBuilder.js +664 -222
- package/src/nodes/core/NodeUtils.js +25 -0
- package/src/nodes/core/NodeVar.js +10 -1
- package/src/nodes/core/OutputStructNode.js +6 -0
- package/src/nodes/core/OverrideContextNode.js +38 -37
- package/src/nodes/core/PropertyNode.js +14 -0
- package/src/nodes/core/StackNode.js +33 -21
- package/src/nodes/core/StructNode.js +6 -0
- package/src/nodes/core/StructTypeNode.js +6 -0
- package/src/nodes/core/SubBuildNode.js +8 -0
- package/src/nodes/core/TempNode.js +10 -35
- package/src/nodes/core/UniformGroupNode.js +6 -0
- package/src/nodes/core/VarNode.js +43 -135
- package/src/nodes/core/VaryingNode.js +33 -2
- package/src/nodes/display/BlendModes.js +5 -40
- package/src/nodes/display/BumpMapNode.js +17 -7
- package/src/nodes/display/ColorAdjustment.js +22 -10
- package/src/nodes/display/ColorSpaceFunctions.js +2 -14
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +6 -0
- package/src/nodes/display/NormalMapNode.js +3 -3
- package/src/nodes/display/PassNode.js +75 -16
- package/src/nodes/display/RenderOutputNode.js +22 -5
- package/src/nodes/display/ScreenNode.js +6 -0
- package/src/nodes/display/ToneMappingFunctions.js +9 -51
- package/src/nodes/display/ToneMappingNode.js +3 -3
- package/src/nodes/display/ToonOutlinePassNode.js +66 -2
- package/src/nodes/display/ViewportDepthNode.js +34 -4
- package/src/nodes/functions/BSDF/BRDF_EON.js +65 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +5 -3
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +2 -16
- package/src/nodes/functions/BSDF/D_GGX.js +1 -8
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +7 -10
- package/src/nodes/functions/BSDF/LTC.js +20 -47
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +10 -13
- package/src/nodes/functions/PhysicalLightingModel.js +84 -51
- package/src/nodes/functions/VolumetricLightingModel.js +1 -1
- package/src/nodes/functions/material/getAlphaHashThreshold.js +3 -9
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +10 -11
- package/src/nodes/functions/material/getRoughness.js +3 -1
- package/src/nodes/geometry/RangeNode.js +52 -69
- package/src/nodes/gpgpu/AtomicFunctionNode.js +11 -6
- package/src/nodes/gpgpu/BarrierNode.js +6 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +6 -0
- package/src/nodes/gpgpu/ComputeNode.js +6 -0
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +38 -29
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +6 -0
- package/src/nodes/lighting/AnalyticLightNode.js +7 -14
- package/src/nodes/lighting/BasicEnvironmentNode.js +5 -1
- package/src/nodes/lighting/EnvironmentNode.js +58 -8
- package/src/nodes/lighting/IESSpotLightNode.js +19 -4
- package/src/nodes/lighting/LightProbeNode.js +2 -1
- package/src/nodes/lighting/LightUtils.js +2 -2
- package/src/nodes/lighting/LightingNode.js +6 -0
- package/src/nodes/lighting/LightsNode.js +26 -32
- package/src/nodes/lighting/PointShadowNode.js +92 -48
- package/src/nodes/lighting/ProjectorLightNode.js +1 -1
- package/src/nodes/lighting/RectAreaLightNode.js +13 -14
- package/src/nodes/lighting/ShadowBaseNode.js +9 -17
- package/src/nodes/lighting/ShadowFilterNode.js +26 -3
- package/src/nodes/lighting/ShadowNode.js +13 -11
- package/src/nodes/materialx/MaterialXColor.js +2 -14
- package/src/nodes/materialx/MaterialXColorTransform.js +1 -7
- package/src/nodes/materialx/MaterialXNodes.js +8 -11
- package/src/nodes/materialx/MaterialXNoise.js +195 -454
- package/src/nodes/math/BitcastNode.js +5 -5
- package/src/nodes/math/BitcountNode.js +18 -46
- package/src/nodes/math/ConditionalNode.js +92 -22
- package/src/nodes/math/Hash.js +1 -1
- package/src/nodes/math/MathNode.js +86 -64
- package/src/nodes/math/MathUtils.js +2 -2
- package/src/nodes/math/OperatorNode.js +42 -59
- package/src/nodes/math/PackFloatNode.js +9 -9
- package/src/nodes/math/Packed4x8IntegerNode.js +20 -52
- package/src/nodes/math/TriNoise3D.js +3 -23
- package/src/nodes/math/UnpackFloatNode.js +9 -9
- package/src/nodes/pmrem/PMREMNode.js +38 -75
- package/src/nodes/pmrem/PMREMUtils.js +108 -272
- package/src/nodes/procedural/Checker.js +1 -1
- package/src/nodes/tsl/TSLCore.js +199 -74
- package/src/nodes/utils/ArrayElementNode.js +19 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +2 -2
- package/src/nodes/utils/EventNode.js +6 -0
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +7 -1
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +14 -9
- package/src/nodes/utils/MemberNode.js +18 -0
- package/src/nodes/utils/PostProcessingUtils.js +20 -25
- package/src/nodes/utils/RTTNode.js +2 -0
- package/src/nodes/utils/ReflectorNode.js +24 -0
- package/src/nodes/utils/RotateNode.js +3 -3
- package/src/nodes/utils/SampleNode.js +6 -0
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +6 -0
- package/src/nodes/utils/UVUtils.js +2 -2
- package/src/objects/BatchedMesh.js +146 -15
- package/src/objects/InstancedMesh.js +12 -4
- package/src/objects/Line.js +20 -0
- package/src/objects/Mesh.js +8 -0
- package/src/objects/Points.js +20 -0
- package/src/objects/Skeleton.js +26 -0
- package/src/objects/SkinnedMesh.js +3 -3
- package/src/objects/Sprite.js +10 -0
- package/src/renderers/WebGLRenderer.js +104 -70
- package/src/renderers/common/Animation.js +5 -1
- package/src/renderers/common/Attributes.js +67 -57
- package/src/renderers/common/Backend.js +78 -3
- package/src/renderers/common/BindGroup.js +11 -0
- package/src/renderers/common/Binding.js +0 -11
- package/src/renderers/common/Bindings.js +116 -10
- package/src/renderers/common/Buffer.js +1 -1
- package/src/renderers/common/ClippingContext.js +12 -1
- package/src/renderers/common/ComputePipeline.js +17 -1
- package/src/renderers/common/DirectRenderPipeline.js +7 -3
- package/src/renderers/common/Geometries.js +170 -132
- package/src/renderers/common/Info.js +1 -1
- package/src/renderers/common/InspectorBase.js +5 -5
- package/src/renderers/common/Lighting.js +59 -0
- package/src/renderers/common/Pipelines.js +26 -12
- package/src/renderers/common/ProgrammableStage.js +1 -17
- package/src/renderers/common/RenderContext.js +21 -0
- package/src/renderers/common/RenderContexts.js +13 -4
- package/src/renderers/common/RenderObject.js +111 -35
- package/src/renderers/common/RenderObjects.js +37 -19
- package/src/renderers/common/Renderer.js +537 -295
- package/src/renderers/common/RendererUtils.js +15 -0
- package/src/renderers/common/StandardDrawingPipeline.js +343 -0
- package/src/renderers/common/Storage3DTexture.js +11 -0
- package/src/renderers/common/StorageArrayTexture.js +10 -0
- package/src/renderers/common/StorageTexture.js +0 -9
- package/src/renderers/common/Textures.js +144 -37
- package/src/renderers/common/UniformsGroup.js +19 -0
- package/src/renderers/common/XRManager.js +10 -91
- package/src/renderers/common/extras/PMREMGenerator.js +298 -576
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -5
- package/src/renderers/common/nodes/NodeLibrary.js +11 -35
- package/src/renderers/common/nodes/NodeManager.js +80 -31
- package/src/renderers/common/nodes/NodeSampledTexture.js +14 -0
- package/src/renderers/common/nodes/NodeSampler.js +14 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniformBuffer.js +1 -14
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +8 -8
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +23 -11
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +21 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +18 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +104 -7
- package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +11 -2
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +36 -20
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk.js +0 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +4 -18
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +8 -1
- package/src/renderers/shaders/ShaderLib.js +3 -0
- package/src/renderers/shaders/UniformsLib.js +4 -5
- package/src/renderers/webgl/WebGLBackground.js +3 -3
- package/src/renderers/webgl/WebGLBindingStates.js +4 -2
- package/src/renderers/webgl/WebGLCapabilities.js +7 -1
- package/src/renderers/webgl/WebGLEnvironments.js +2 -2
- package/src/renderers/webgl/WebGLGeometries.js +42 -14
- package/src/renderers/webgl/WebGLMaterials.js +15 -2
- package/src/renderers/webgl/WebGLOutput.js +37 -1
- package/src/renderers/webgl/WebGLProgram.js +13 -54
- package/src/renderers/webgl/WebGLPrograms.js +22 -8
- package/src/renderers/webgl/WebGLRenderStates.js +11 -8
- package/src/renderers/webgl/WebGLShadowMap.js +6 -4
- package/src/renderers/webgl/WebGLState.js +10 -6
- package/src/renderers/webgl/WebGLTextures.js +129 -77
- package/src/renderers/webgl/WebGLUniforms.js +44 -6
- package/src/renderers/webgl/WebGLUniformsGroups.js +75 -69
- package/src/renderers/webgl-fallback/WebGLBackend.js +206 -278
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +154 -20
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +45 -42
- package/src/renderers/webgl-fallback/utils/WebGLState.js +29 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +129 -49
- package/src/renderers/webgl-fallback/utils/WebGLVertexArrayUtils.js +346 -0
- package/src/renderers/webgpu/WebGPUBackend.js +140 -82
- package/src/renderers/webgpu/WebGPURenderer.js +1 -1
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +135 -60
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +128 -55
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +15 -12
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +55 -19
- package/src/renderers/webgpu/utils/WebGPUUtils.js +20 -3
- package/src/renderers/webxr/WebXRController.js +3 -3
- package/src/renderers/webxr/WebXRManager.js +5 -90
- package/src/scenes/Scene.js +4 -4
- package/src/textures/CompressedTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -2
- package/src/textures/FramebufferTexture.js +11 -0
- package/src/textures/Texture.js +29 -1
- package/src/textures/TextureSource.js +1 -1
- package/src/upe.js +1 -1
- package/src/utils.js +4 -4
- package/examples/jsm/libs/surfaceNet.js +0 -201
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -186
|
@@ -173,6 +173,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
173
173
|
const logBase = Math.pow( 2.7182818, 2.2 );
|
|
174
174
|
|
|
175
175
|
let b44LogTable = null; // lazily initialized for pLinear B44 channels
|
|
176
|
+
let dwaToLinearTable = null; // lazily initialized for DWA lossy DCT channels
|
|
176
177
|
|
|
177
178
|
function reverseLutFromBitmap( bitmap, lut ) {
|
|
178
179
|
|
|
@@ -1030,7 +1031,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1030
1031
|
|
|
1031
1032
|
for ( let x = 0; x < width; ++ x ) {
|
|
1032
1033
|
|
|
1033
|
-
dataView.setFloat32( offset + x * INT16_SIZE * type,
|
|
1034
|
+
dataView.setFloat32( offset + x * INT16_SIZE * type, DataUtils.fromHalfFloat( halfRow[ x ] ), true );
|
|
1034
1035
|
|
|
1035
1036
|
}
|
|
1036
1037
|
|
|
@@ -1147,76 +1148,76 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1147
1148
|
|
|
1148
1149
|
function unZigZag( src, dst ) {
|
|
1149
1150
|
|
|
1150
|
-
dst[ 0 ] =
|
|
1151
|
-
dst[ 1 ] =
|
|
1152
|
-
dst[ 2 ] =
|
|
1153
|
-
dst[ 3 ] =
|
|
1154
|
-
dst[ 4 ] =
|
|
1155
|
-
dst[ 5 ] =
|
|
1156
|
-
dst[ 6 ] =
|
|
1157
|
-
dst[ 7 ] =
|
|
1158
|
-
dst[ 8 ] =
|
|
1159
|
-
dst[ 9 ] =
|
|
1160
|
-
|
|
1161
|
-
dst[ 10 ] =
|
|
1162
|
-
dst[ 11 ] =
|
|
1163
|
-
dst[ 12 ] =
|
|
1164
|
-
dst[ 13 ] =
|
|
1165
|
-
dst[ 14 ] =
|
|
1166
|
-
dst[ 15 ] =
|
|
1167
|
-
dst[ 16 ] =
|
|
1168
|
-
dst[ 17 ] =
|
|
1169
|
-
dst[ 18 ] =
|
|
1170
|
-
dst[ 19 ] =
|
|
1171
|
-
|
|
1172
|
-
dst[ 20 ] =
|
|
1173
|
-
dst[ 21 ] =
|
|
1174
|
-
dst[ 22 ] =
|
|
1175
|
-
dst[ 23 ] =
|
|
1176
|
-
dst[ 24 ] =
|
|
1177
|
-
dst[ 25 ] =
|
|
1178
|
-
dst[ 26 ] =
|
|
1179
|
-
dst[ 27 ] =
|
|
1180
|
-
dst[ 28 ] =
|
|
1181
|
-
dst[ 29 ] =
|
|
1182
|
-
|
|
1183
|
-
dst[ 30 ] =
|
|
1184
|
-
dst[ 31 ] =
|
|
1185
|
-
dst[ 32 ] =
|
|
1186
|
-
dst[ 33 ] =
|
|
1187
|
-
dst[ 34 ] =
|
|
1188
|
-
dst[ 35 ] =
|
|
1189
|
-
dst[ 36 ] =
|
|
1190
|
-
dst[ 37 ] =
|
|
1191
|
-
dst[ 38 ] =
|
|
1192
|
-
dst[ 39 ] =
|
|
1193
|
-
|
|
1194
|
-
dst[ 40 ] =
|
|
1195
|
-
dst[ 41 ] =
|
|
1196
|
-
dst[ 42 ] =
|
|
1197
|
-
dst[ 43 ] =
|
|
1198
|
-
dst[ 44 ] =
|
|
1199
|
-
dst[ 45 ] =
|
|
1200
|
-
dst[ 46 ] =
|
|
1201
|
-
dst[ 47 ] =
|
|
1202
|
-
dst[ 48 ] =
|
|
1203
|
-
dst[ 49 ] =
|
|
1204
|
-
|
|
1205
|
-
dst[ 50 ] =
|
|
1206
|
-
dst[ 51 ] =
|
|
1207
|
-
dst[ 52 ] =
|
|
1208
|
-
dst[ 53 ] =
|
|
1209
|
-
dst[ 54 ] =
|
|
1210
|
-
dst[ 55 ] =
|
|
1211
|
-
dst[ 56 ] =
|
|
1212
|
-
dst[ 57 ] =
|
|
1213
|
-
dst[ 58 ] =
|
|
1214
|
-
dst[ 59 ] =
|
|
1215
|
-
|
|
1216
|
-
dst[ 60 ] =
|
|
1217
|
-
dst[ 61 ] =
|
|
1218
|
-
dst[ 62 ] =
|
|
1219
|
-
dst[ 63 ] =
|
|
1151
|
+
dst[ 0 ] = DataUtils.fromHalfFloat( src[ 0 ] );
|
|
1152
|
+
dst[ 1 ] = DataUtils.fromHalfFloat( src[ 1 ] );
|
|
1153
|
+
dst[ 2 ] = DataUtils.fromHalfFloat( src[ 5 ] );
|
|
1154
|
+
dst[ 3 ] = DataUtils.fromHalfFloat( src[ 6 ] );
|
|
1155
|
+
dst[ 4 ] = DataUtils.fromHalfFloat( src[ 14 ] );
|
|
1156
|
+
dst[ 5 ] = DataUtils.fromHalfFloat( src[ 15 ] );
|
|
1157
|
+
dst[ 6 ] = DataUtils.fromHalfFloat( src[ 27 ] );
|
|
1158
|
+
dst[ 7 ] = DataUtils.fromHalfFloat( src[ 28 ] );
|
|
1159
|
+
dst[ 8 ] = DataUtils.fromHalfFloat( src[ 2 ] );
|
|
1160
|
+
dst[ 9 ] = DataUtils.fromHalfFloat( src[ 4 ] );
|
|
1161
|
+
|
|
1162
|
+
dst[ 10 ] = DataUtils.fromHalfFloat( src[ 7 ] );
|
|
1163
|
+
dst[ 11 ] = DataUtils.fromHalfFloat( src[ 13 ] );
|
|
1164
|
+
dst[ 12 ] = DataUtils.fromHalfFloat( src[ 16 ] );
|
|
1165
|
+
dst[ 13 ] = DataUtils.fromHalfFloat( src[ 26 ] );
|
|
1166
|
+
dst[ 14 ] = DataUtils.fromHalfFloat( src[ 29 ] );
|
|
1167
|
+
dst[ 15 ] = DataUtils.fromHalfFloat( src[ 42 ] );
|
|
1168
|
+
dst[ 16 ] = DataUtils.fromHalfFloat( src[ 3 ] );
|
|
1169
|
+
dst[ 17 ] = DataUtils.fromHalfFloat( src[ 8 ] );
|
|
1170
|
+
dst[ 18 ] = DataUtils.fromHalfFloat( src[ 12 ] );
|
|
1171
|
+
dst[ 19 ] = DataUtils.fromHalfFloat( src[ 17 ] );
|
|
1172
|
+
|
|
1173
|
+
dst[ 20 ] = DataUtils.fromHalfFloat( src[ 25 ] );
|
|
1174
|
+
dst[ 21 ] = DataUtils.fromHalfFloat( src[ 30 ] );
|
|
1175
|
+
dst[ 22 ] = DataUtils.fromHalfFloat( src[ 41 ] );
|
|
1176
|
+
dst[ 23 ] = DataUtils.fromHalfFloat( src[ 43 ] );
|
|
1177
|
+
dst[ 24 ] = DataUtils.fromHalfFloat( src[ 9 ] );
|
|
1178
|
+
dst[ 25 ] = DataUtils.fromHalfFloat( src[ 11 ] );
|
|
1179
|
+
dst[ 26 ] = DataUtils.fromHalfFloat( src[ 18 ] );
|
|
1180
|
+
dst[ 27 ] = DataUtils.fromHalfFloat( src[ 24 ] );
|
|
1181
|
+
dst[ 28 ] = DataUtils.fromHalfFloat( src[ 31 ] );
|
|
1182
|
+
dst[ 29 ] = DataUtils.fromHalfFloat( src[ 40 ] );
|
|
1183
|
+
|
|
1184
|
+
dst[ 30 ] = DataUtils.fromHalfFloat( src[ 44 ] );
|
|
1185
|
+
dst[ 31 ] = DataUtils.fromHalfFloat( src[ 53 ] );
|
|
1186
|
+
dst[ 32 ] = DataUtils.fromHalfFloat( src[ 10 ] );
|
|
1187
|
+
dst[ 33 ] = DataUtils.fromHalfFloat( src[ 19 ] );
|
|
1188
|
+
dst[ 34 ] = DataUtils.fromHalfFloat( src[ 23 ] );
|
|
1189
|
+
dst[ 35 ] = DataUtils.fromHalfFloat( src[ 32 ] );
|
|
1190
|
+
dst[ 36 ] = DataUtils.fromHalfFloat( src[ 39 ] );
|
|
1191
|
+
dst[ 37 ] = DataUtils.fromHalfFloat( src[ 45 ] );
|
|
1192
|
+
dst[ 38 ] = DataUtils.fromHalfFloat( src[ 52 ] );
|
|
1193
|
+
dst[ 39 ] = DataUtils.fromHalfFloat( src[ 54 ] );
|
|
1194
|
+
|
|
1195
|
+
dst[ 40 ] = DataUtils.fromHalfFloat( src[ 20 ] );
|
|
1196
|
+
dst[ 41 ] = DataUtils.fromHalfFloat( src[ 22 ] );
|
|
1197
|
+
dst[ 42 ] = DataUtils.fromHalfFloat( src[ 33 ] );
|
|
1198
|
+
dst[ 43 ] = DataUtils.fromHalfFloat( src[ 38 ] );
|
|
1199
|
+
dst[ 44 ] = DataUtils.fromHalfFloat( src[ 46 ] );
|
|
1200
|
+
dst[ 45 ] = DataUtils.fromHalfFloat( src[ 51 ] );
|
|
1201
|
+
dst[ 46 ] = DataUtils.fromHalfFloat( src[ 55 ] );
|
|
1202
|
+
dst[ 47 ] = DataUtils.fromHalfFloat( src[ 60 ] );
|
|
1203
|
+
dst[ 48 ] = DataUtils.fromHalfFloat( src[ 21 ] );
|
|
1204
|
+
dst[ 49 ] = DataUtils.fromHalfFloat( src[ 34 ] );
|
|
1205
|
+
|
|
1206
|
+
dst[ 50 ] = DataUtils.fromHalfFloat( src[ 37 ] );
|
|
1207
|
+
dst[ 51 ] = DataUtils.fromHalfFloat( src[ 47 ] );
|
|
1208
|
+
dst[ 52 ] = DataUtils.fromHalfFloat( src[ 50 ] );
|
|
1209
|
+
dst[ 53 ] = DataUtils.fromHalfFloat( src[ 56 ] );
|
|
1210
|
+
dst[ 54 ] = DataUtils.fromHalfFloat( src[ 59 ] );
|
|
1211
|
+
dst[ 55 ] = DataUtils.fromHalfFloat( src[ 61 ] );
|
|
1212
|
+
dst[ 56 ] = DataUtils.fromHalfFloat( src[ 35 ] );
|
|
1213
|
+
dst[ 57 ] = DataUtils.fromHalfFloat( src[ 36 ] );
|
|
1214
|
+
dst[ 58 ] = DataUtils.fromHalfFloat( src[ 48 ] );
|
|
1215
|
+
dst[ 59 ] = DataUtils.fromHalfFloat( src[ 49 ] );
|
|
1216
|
+
|
|
1217
|
+
dst[ 60 ] = DataUtils.fromHalfFloat( src[ 57 ] );
|
|
1218
|
+
dst[ 61 ] = DataUtils.fromHalfFloat( src[ 58 ] );
|
|
1219
|
+
dst[ 62 ] = DataUtils.fromHalfFloat( src[ 62 ] );
|
|
1220
|
+
dst[ 63 ] = DataUtils.fromHalfFloat( src[ 63 ] );
|
|
1220
1221
|
|
|
1221
1222
|
}
|
|
1222
1223
|
|
|
@@ -1324,25 +1325,58 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1324
1325
|
|
|
1325
1326
|
}
|
|
1326
1327
|
|
|
1327
|
-
|
|
1328
|
+
const _f32 = new Float32Array( 1 );
|
|
1329
|
+
const _u32 = new Uint32Array( _f32.buffer );
|
|
1328
1330
|
|
|
1329
|
-
|
|
1331
|
+
// float -> half bits with round-to-nearest-even, like Imath's float_to_half
|
|
1332
|
+
// (DataUtils.toHalfFloat truncates, which is what put DWA output 1-5 ulp off OpenEXR).
|
|
1333
|
+
function floatToHalfBits( f ) {
|
|
1334
|
+
|
|
1335
|
+
_f32[ 0 ] = f;
|
|
1336
|
+
const x = _u32[ 0 ];
|
|
1337
|
+
const sign = ( x >>> 16 ) & 0x8000;
|
|
1338
|
+
const a = x & 0x7fffffff;
|
|
1330
1339
|
|
|
1331
|
-
|
|
1340
|
+
if ( a >= 0x47800000 ) return sign | ( a > 0x7f800000 ? 0x7e00 : 0x7c00 ); // overflow, Inf, NaN
|
|
1341
|
+
|
|
1342
|
+
if ( a < 0x38800000 ) { // subnormal or zero in half
|
|
1343
|
+
|
|
1344
|
+
_f32[ 0 ] = Math.abs( f ) + 0.5; // 0.5 = 2^-1: forces rounding to a 2^-24 grid
|
|
1345
|
+
return sign | ( _u32[ 0 ] - 0x3f000000 );
|
|
1332
1346
|
|
|
1333
1347
|
}
|
|
1334
1348
|
|
|
1349
|
+
const r = a + 0xfff + ( ( a >>> 13 ) & 1 );
|
|
1350
|
+
return sign | ( ( r - 0x38000000 ) >>> 13 );
|
|
1351
|
+
|
|
1335
1352
|
}
|
|
1336
1353
|
|
|
1337
|
-
function
|
|
1354
|
+
function convertToHalf( src, dst, idx ) {
|
|
1338
1355
|
|
|
1339
|
-
if (
|
|
1356
|
+
if ( dwaToLinearTable === null ) {
|
|
1340
1357
|
|
|
1341
|
-
|
|
1358
|
+
// Mirrors OpenEXR dwaLookups.cpp: gamma 2.2 below 1, log curve above,
|
|
1359
|
+
// applied to the half bits after rounding so results match bit for bit.
|
|
1342
1360
|
|
|
1343
|
-
|
|
1361
|
+
dwaToLinearTable = new Uint16Array( 65536 );
|
|
1362
|
+
|
|
1363
|
+
for ( let i = 1; i < 65536; ++ i ) {
|
|
1364
|
+
|
|
1365
|
+
if ( ( i & 0x7c00 ) === 0x7c00 ) continue; // NaN / Inf -> 0
|
|
1366
|
+
|
|
1367
|
+
const h = DataUtils.fromHalfFloat( i );
|
|
1368
|
+
const v = Math.abs( h );
|
|
1369
|
+
const linear = v <= 1 ? Math.pow( v, 2.2 ) : Math.pow( logBase, v - 1 );
|
|
1370
|
+
|
|
1371
|
+
dwaToLinearTable[ i ] = floatToHalfBits( h < 0 ? - linear : linear );
|
|
1344
1372
|
|
|
1345
|
-
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1377
|
+
for ( let i = 0; i < 64; ++ i ) {
|
|
1378
|
+
|
|
1379
|
+
dst[ idx + i ] = dwaToLinearTable[ floatToHalfBits( src[ i ] ) ];
|
|
1346
1380
|
|
|
1347
1381
|
}
|
|
1348
1382
|
|
|
@@ -1694,7 +1728,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1694
1728
|
|
|
1695
1729
|
} else {
|
|
1696
1730
|
|
|
1697
|
-
const f =
|
|
1731
|
+
const f = DataUtils.fromHalfFloat( i );
|
|
1698
1732
|
b44LogTable[ i ] = ( f <= 0 ) ? 0 : DataUtils.toHalfFloat( 8 * Math.log( f ) );
|
|
1699
1733
|
|
|
1700
1734
|
}
|
|
@@ -2106,24 +2140,6 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2106
2140
|
|
|
2107
2141
|
}
|
|
2108
2142
|
|
|
2109
|
-
// https://stackoverflow.com/questions/5678432/decompressing-half-precision-floats-in-javascript
|
|
2110
|
-
function decodeFloat16( binary ) {
|
|
2111
|
-
|
|
2112
|
-
const exponent = ( binary & 0x7C00 ) >> 10,
|
|
2113
|
-
fraction = binary & 0x03FF;
|
|
2114
|
-
|
|
2115
|
-
return ( binary >> 15 ? - 1 : 1 ) * (
|
|
2116
|
-
exponent ?
|
|
2117
|
-
(
|
|
2118
|
-
exponent === 0x1F ?
|
|
2119
|
-
fraction ? NaN : Infinity :
|
|
2120
|
-
Math.pow( 2, exponent - 15 ) * ( 1 + fraction / 0x400 )
|
|
2121
|
-
) :
|
|
2122
|
-
6.103515625e-5 * ( fraction / 0x400 )
|
|
2123
|
-
);
|
|
2124
|
-
|
|
2125
|
-
}
|
|
2126
|
-
|
|
2127
2143
|
function parseUint16( dataView, offset ) {
|
|
2128
2144
|
|
|
2129
2145
|
const Uint16 = dataView.getUint16( offset.value, true );
|
|
@@ -2136,7 +2152,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2136
2152
|
|
|
2137
2153
|
function parseFloat16( buffer, offset ) {
|
|
2138
2154
|
|
|
2139
|
-
return
|
|
2155
|
+
return DataUtils.fromHalfFloat( parseUint16( buffer, offset ) );
|
|
2140
2156
|
|
|
2141
2157
|
}
|
|
2142
2158
|
|
|
@@ -2724,7 +2740,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2724
2740
|
const aOff = channelOffsets[ alphaChannelIdx ] + sampleIdx * aBps;
|
|
2725
2741
|
|
|
2726
2742
|
sampleAlpha = aBps === 2
|
|
2727
|
-
?
|
|
2743
|
+
? DataUtils.fromHalfFloat( pixelView.getUint16( aOff, true ) )
|
|
2728
2744
|
: pixelView.getFloat32( aOff, true );
|
|
2729
2745
|
|
|
2730
2746
|
}
|
|
@@ -2741,7 +2757,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2741
2757
|
const dataOff = channelOffsets[ ci ] + sampleIdx * bps;
|
|
2742
2758
|
|
|
2743
2759
|
const value = bps === 2
|
|
2744
|
-
?
|
|
2760
|
+
? DataUtils.fromHalfFloat( pixelView.getUint16( dataOff, true ) )
|
|
2745
2761
|
: pixelView.getFloat32( dataOff, true );
|
|
2746
2762
|
|
|
2747
2763
|
composited[ cOff ] += value * factor;
|
|
@@ -3303,9 +3319,9 @@ class EXRLoader extends DataTextureLoader {
|
|
|
3303
3319
|
for ( let i = 0; i < nPixels; i ++ ) {
|
|
3304
3320
|
|
|
3305
3321
|
const base = i * 4;
|
|
3306
|
-
const Y =
|
|
3307
|
-
const RY =
|
|
3308
|
-
const BY =
|
|
3322
|
+
const Y = DataUtils.fromHalfFloat( byteArray[ base ] );
|
|
3323
|
+
const RY = DataUtils.fromHalfFloat( byteArray[ base + 1 ] );
|
|
3324
|
+
const BY = DataUtils.fromHalfFloat( byteArray[ base + 2 ] );
|
|
3309
3325
|
const R = ( 1 + RY ) * Y;
|
|
3310
3326
|
const B = ( 1 + BY ) * Y;
|
|
3311
3327
|
const G = ( Y - R * 0.2126 - B * 0.0722 ) / 0.7152;
|
|
@@ -114,6 +114,8 @@ class FBXLoader extends Loader {
|
|
|
114
114
|
const path = ( scope.path === '' ) ? LoaderUtils.extractUrlBase( url ) : scope.path;
|
|
115
115
|
|
|
116
116
|
const loader = new FileLoader( this.manager );
|
|
117
|
+
loader.setPriority( this.priority );
|
|
118
|
+
loader.setCache( this.cache );
|
|
117
119
|
loader.setPath( scope.path );
|
|
118
120
|
loader.setResponseType( 'arraybuffer' );
|
|
119
121
|
loader.setRequestHeader( scope.requestHeader );
|
|
@@ -181,6 +183,8 @@ class FBXLoader extends Loader {
|
|
|
181
183
|
// console.log( fbxTree );
|
|
182
184
|
|
|
183
185
|
const textureLoader = new TextureLoader( this.manager ).setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );
|
|
186
|
+
textureLoader.setPriority( this.priority );
|
|
187
|
+
textureLoader.setCache( this.cache );
|
|
184
188
|
|
|
185
189
|
return new FBXTreeParser( textureLoader, this.manager, this.trimAnimationClips ).parse( fbxTree );
|
|
186
190
|
|
|
@@ -44,6 +44,8 @@ class FontLoader extends Loader {
|
|
|
44
44
|
const scope = this;
|
|
45
45
|
|
|
46
46
|
const loader = new FileLoader( this.manager );
|
|
47
|
+
loader.setPriority( this.priority );
|
|
48
|
+
loader.setCache( this.cache );
|
|
47
49
|
loader.setPath( this.path );
|
|
48
50
|
loader.setRequestHeader( this.requestHeader );
|
|
49
51
|
loader.setWithCredentials( this.withCredentials );
|
|
@@ -57,6 +57,8 @@ class GCodeLoader extends Loader {
|
|
|
57
57
|
const scope = this;
|
|
58
58
|
|
|
59
59
|
const loader = new FileLoader( scope.manager );
|
|
60
|
+
loader.setPriority( scope.priority );
|
|
61
|
+
loader.setCache( scope.cache );
|
|
60
62
|
loader.setPath( scope.path );
|
|
61
63
|
loader.setRequestHeader( scope.requestHeader );
|
|
62
64
|
loader.setWithCredentials( scope.withCredentials );
|
|
@@ -135,12 +137,6 @@ class GCodeLoader extends Loader {
|
|
|
135
137
|
|
|
136
138
|
}
|
|
137
139
|
|
|
138
|
-
function delta( v1, v2 ) {
|
|
139
|
-
|
|
140
|
-
return state.relative ? v2 : v2 - v1;
|
|
141
|
-
|
|
142
|
-
}
|
|
143
|
-
|
|
144
140
|
function absolute( v1, v2 ) {
|
|
145
141
|
|
|
146
142
|
return state.relative ? v1 + v2 : v2;
|
|
@@ -159,7 +155,7 @@ class GCodeLoader extends Loader {
|
|
|
159
155
|
|
|
160
156
|
for ( let i = 0; i < lines.length; i ++ ) {
|
|
161
157
|
|
|
162
|
-
const tokens = lines[ i ].split(
|
|
158
|
+
const tokens = lines[ i ].trim().split( /\s+/ );
|
|
163
159
|
const cmd = tokens[ 0 ].toUpperCase();
|
|
164
160
|
|
|
165
161
|
//Arguments
|
|
@@ -189,9 +185,9 @@ class GCodeLoader extends Loader {
|
|
|
189
185
|
if ( args.f !== undefined ) line.f = absolute( state.f, args.f );
|
|
190
186
|
|
|
191
187
|
//Layer change detection is or made by watching Z, it's made by watching when we extrude at a new Z position
|
|
192
|
-
if (
|
|
188
|
+
if ( line.e > state.e ) {
|
|
193
189
|
|
|
194
|
-
state.extruding =
|
|
190
|
+
state.extruding = true;
|
|
195
191
|
|
|
196
192
|
if ( currentLayer == undefined || line.z != currentLayer.z ) {
|
|
197
193
|
|
|
@@ -86,6 +86,7 @@ import { clone } from '../utils/SkeletonUtils.js';
|
|
|
86
86
|
* - KHR_lights_punctual
|
|
87
87
|
* - KHR_materials_anisotropy
|
|
88
88
|
* - KHR_materials_clearcoat
|
|
89
|
+
* - KHR_materials_diffuse_roughness
|
|
89
90
|
* - KHR_materials_dispersion
|
|
90
91
|
* - KHR_materials_emissive_strength
|
|
91
92
|
* - KHR_materials_ior
|
|
@@ -149,6 +150,12 @@ class GLTFLoader extends Loader {
|
|
|
149
150
|
|
|
150
151
|
} );
|
|
151
152
|
|
|
153
|
+
this.register( function ( parser ) {
|
|
154
|
+
|
|
155
|
+
return new GLTFMaterialsDiffuseRoughnessExtension( parser );
|
|
156
|
+
|
|
157
|
+
} );
|
|
158
|
+
|
|
152
159
|
this.register( function ( parser ) {
|
|
153
160
|
|
|
154
161
|
return new GLTFMaterialsDispersionExtension( parser );
|
|
@@ -311,6 +318,8 @@ class GLTFLoader extends Loader {
|
|
|
311
318
|
};
|
|
312
319
|
|
|
313
320
|
const loader = new FileLoader( this.manager );
|
|
321
|
+
loader.setPriority( this.priority );
|
|
322
|
+
loader.setCache( this.cache );
|
|
314
323
|
|
|
315
324
|
loader.setPath( this.path );
|
|
316
325
|
loader.setResponseType( 'arraybuffer' );
|
|
@@ -480,6 +489,9 @@ class GLTFLoader extends Loader {
|
|
|
480
489
|
|
|
481
490
|
path: path || this.resourcePath || '',
|
|
482
491
|
crossOrigin: this.crossOrigin,
|
|
492
|
+
priority: this.priority,
|
|
493
|
+
cache: this.cache,
|
|
494
|
+
withCredentials: this.withCredentials,
|
|
483
495
|
requestHeader: this.requestHeader,
|
|
484
496
|
manager: this.manager,
|
|
485
497
|
ktx2Loader: this.ktx2Loader,
|
|
@@ -631,6 +643,7 @@ const EXTENSIONS = {
|
|
|
631
643
|
KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',
|
|
632
644
|
KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',
|
|
633
645
|
KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',
|
|
646
|
+
KHR_MATERIALS_DIFFUSE_ROUGHNESS: 'KHR_materials_diffuse_roughness',
|
|
634
647
|
KHR_MATERIALS_DISPERSION: 'KHR_materials_dispersion',
|
|
635
648
|
KHR_MATERIALS_IOR: 'KHR_materials_ior',
|
|
636
649
|
KHR_MATERIALS_SHEEN: 'KHR_materials_sheen',
|
|
@@ -955,6 +968,52 @@ class GLTFMaterialsClearcoatExtension {
|
|
|
955
968
|
|
|
956
969
|
}
|
|
957
970
|
|
|
971
|
+
/**
|
|
972
|
+
* Diffuse Roughness Materials Extension
|
|
973
|
+
*
|
|
974
|
+
* Specification: https://github.com/MiiBond/glTF/tree/mbond/EXT_materials_diffuse_roughness/extensions/2.0/Khronos/KHR_materials_diffuse_roughness
|
|
975
|
+
*
|
|
976
|
+
* @private
|
|
977
|
+
*/
|
|
978
|
+
class GLTFMaterialsDiffuseRoughnessExtension {
|
|
979
|
+
|
|
980
|
+
constructor( parser ) {
|
|
981
|
+
|
|
982
|
+
this.parser = parser;
|
|
983
|
+
this.name = EXTENSIONS.KHR_MATERIALS_DIFFUSE_ROUGHNESS;
|
|
984
|
+
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
getMaterialType( materialIndex ) {
|
|
988
|
+
|
|
989
|
+
const extension = getMaterialExtension( this.parser, materialIndex, this.name );
|
|
990
|
+
|
|
991
|
+
return extension !== null ? MeshPhysicalMaterial : null;
|
|
992
|
+
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
extendMaterialParams( materialIndex, materialParams ) {
|
|
996
|
+
|
|
997
|
+
const extension = getMaterialExtension( this.parser, materialIndex, this.name );
|
|
998
|
+
|
|
999
|
+
if ( extension === null ) return Promise.resolve();
|
|
1000
|
+
|
|
1001
|
+
const pending = [];
|
|
1002
|
+
|
|
1003
|
+
materialParams.diffuseRoughness = extension.diffuseRoughnessFactor !== undefined ? extension.diffuseRoughnessFactor : 0;
|
|
1004
|
+
|
|
1005
|
+
if ( extension.diffuseRoughnessTexture !== undefined ) {
|
|
1006
|
+
|
|
1007
|
+
pending.push( this.parser.assignTexture( materialParams, 'diffuseRoughnessMap', extension.diffuseRoughnessTexture ) );
|
|
1008
|
+
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
return Promise.all( pending );
|
|
1012
|
+
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
}
|
|
1016
|
+
|
|
958
1017
|
/**
|
|
959
1018
|
* Materials dispersion Extension
|
|
960
1019
|
*
|
|
@@ -1043,21 +1102,15 @@ class GLTFMaterialsIridescenceExtension {
|
|
|
1043
1102
|
|
|
1044
1103
|
}
|
|
1045
1104
|
|
|
1046
|
-
if ( materialParams.iridescenceThicknessRange === undefined ) {
|
|
1047
|
-
|
|
1048
|
-
materialParams.iridescenceThicknessRange = [ 100, 400 ];
|
|
1049
|
-
|
|
1050
|
-
}
|
|
1051
|
-
|
|
1052
1105
|
if ( extension.iridescenceThicknessMinimum !== undefined ) {
|
|
1053
1106
|
|
|
1054
|
-
materialParams.
|
|
1107
|
+
materialParams.iridescenceThicknessMinimum = extension.iridescenceThicknessMinimum;
|
|
1055
1108
|
|
|
1056
1109
|
}
|
|
1057
1110
|
|
|
1058
1111
|
if ( extension.iridescenceThicknessMaximum !== undefined ) {
|
|
1059
1112
|
|
|
1060
|
-
materialParams.
|
|
1113
|
+
materialParams.iridescenceThicknessMaximum = extension.iridescenceThicknessMaximum;
|
|
1061
1114
|
|
|
1062
1115
|
}
|
|
1063
1116
|
|
|
@@ -2654,20 +2707,27 @@ class GLTFParser {
|
|
|
2654
2707
|
if ( typeof createImageBitmap === 'undefined' || ( isSafari && safariVersion < 17 ) || ( isFirefox && firefoxVersion < 98 ) ) {
|
|
2655
2708
|
|
|
2656
2709
|
this.textureLoader = new TextureLoader( this.options.manager );
|
|
2710
|
+
this.textureLoader.setPriority( this.options.priority );
|
|
2711
|
+
this.textureLoader.setCache( this.options.cache );
|
|
2657
2712
|
|
|
2658
2713
|
} else {
|
|
2659
2714
|
|
|
2660
2715
|
this.textureLoader = new ImageBitmapLoader( this.options.manager );
|
|
2716
|
+
this.textureLoader.setPriority( this.options.priority );
|
|
2717
|
+
this.textureLoader.setCache( this.options.cache );
|
|
2661
2718
|
|
|
2662
2719
|
}
|
|
2663
2720
|
|
|
2664
2721
|
this.textureLoader.setCrossOrigin( this.options.crossOrigin );
|
|
2722
|
+
this.textureLoader.setWithCredentials( this.options.withCredentials );
|
|
2665
2723
|
this.textureLoader.setRequestHeader( this.options.requestHeader );
|
|
2666
2724
|
|
|
2667
2725
|
this.fileLoader = new FileLoader( this.options.manager );
|
|
2726
|
+
this.fileLoader.setPriority( this.options.priority );
|
|
2727
|
+
this.fileLoader.setCache( this.options.cache );
|
|
2668
2728
|
this.fileLoader.setResponseType( 'arraybuffer' );
|
|
2669
2729
|
|
|
2670
|
-
if ( this.options.crossOrigin === 'use-credentials' ) {
|
|
2730
|
+
if ( this.options.withCredentials || this.options.crossOrigin === 'use-credentials' ) {
|
|
2671
2731
|
|
|
2672
2732
|
this.fileLoader.setWithCredentials( true );
|
|
2673
2733
|
|
|
@@ -3356,50 +3416,71 @@ class GLTFParser {
|
|
|
3356
3416
|
|
|
3357
3417
|
let sourceURI = sourceDef.uri || '';
|
|
3358
3418
|
let isObjectURL = false;
|
|
3419
|
+
let pending;
|
|
3420
|
+
|
|
3421
|
+
if ( loader.isKTX2Loader === true && sourceDef.bufferView !== undefined ) {
|
|
3359
3422
|
|
|
3360
|
-
|
|
3423
|
+
// KTX2Loader parses the binary image data from bufferView directly (see #35193).
|
|
3361
3424
|
|
|
3362
|
-
|
|
3425
|
+
pending = parser.getDependency( 'bufferView', sourceDef.bufferView ).then( function ( bufferView ) {
|
|
3363
3426
|
|
|
3364
|
-
|
|
3427
|
+
return new Promise( function ( resolve, reject ) {
|
|
3365
3428
|
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
return sourceURI;
|
|
3429
|
+
loader.parse( bufferView, resolve, reject );
|
|
3430
|
+
|
|
3431
|
+
} );
|
|
3370
3432
|
|
|
3371
3433
|
} );
|
|
3372
3434
|
|
|
3373
|
-
} else
|
|
3435
|
+
} else {
|
|
3374
3436
|
|
|
3375
|
-
|
|
3437
|
+
if ( sourceDef.bufferView !== undefined ) {
|
|
3376
3438
|
|
|
3377
|
-
|
|
3439
|
+
// Load binary image data from bufferView, if provided.
|
|
3378
3440
|
|
|
3379
|
-
|
|
3441
|
+
sourceURI = parser.getDependency( 'bufferView', sourceDef.bufferView ).then( function ( bufferView ) {
|
|
3380
3442
|
|
|
3381
|
-
|
|
3443
|
+
isObjectURL = true;
|
|
3444
|
+
const blob = new Blob( [ bufferView ], { type: sourceDef.mimeType } );
|
|
3445
|
+
sourceURI = URL.createObjectURL( blob );
|
|
3446
|
+
return sourceURI;
|
|
3382
3447
|
|
|
3383
|
-
|
|
3448
|
+
} );
|
|
3384
3449
|
|
|
3385
|
-
|
|
3450
|
+
} else if ( sourceDef.uri === undefined ) {
|
|
3386
3451
|
|
|
3387
|
-
|
|
3452
|
+
throw new Error( 'THREE.GLTFLoader: Image ' + sourceIndex + ' is missing URI and bufferView' );
|
|
3388
3453
|
|
|
3389
|
-
|
|
3390
|
-
texture.needsUpdate = true;
|
|
3454
|
+
}
|
|
3391
3455
|
|
|
3392
|
-
|
|
3456
|
+
pending = Promise.resolve( sourceURI ).then( function ( sourceURI ) {
|
|
3393
3457
|
|
|
3394
|
-
|
|
3458
|
+
return new Promise( function ( resolve, reject ) {
|
|
3395
3459
|
|
|
3396
|
-
|
|
3460
|
+
let onLoad = resolve;
|
|
3461
|
+
|
|
3462
|
+
if ( loader.isImageBitmapLoader === true ) {
|
|
3463
|
+
|
|
3464
|
+
onLoad = function ( imageBitmap ) {
|
|
3465
|
+
|
|
3466
|
+
const texture = new Texture( imageBitmap );
|
|
3467
|
+
texture.needsUpdate = true;
|
|
3397
3468
|
|
|
3398
|
-
|
|
3469
|
+
resolve( texture );
|
|
3470
|
+
|
|
3471
|
+
};
|
|
3472
|
+
|
|
3473
|
+
}
|
|
3474
|
+
|
|
3475
|
+
loader.load( LoaderUtils.resolveURL( sourceURI, options.path ), onLoad, undefined, reject );
|
|
3476
|
+
|
|
3477
|
+
} );
|
|
3399
3478
|
|
|
3400
3479
|
} );
|
|
3401
3480
|
|
|
3402
|
-
}
|
|
3481
|
+
}
|
|
3482
|
+
|
|
3483
|
+
const promise = pending.then( function ( texture ) {
|
|
3403
3484
|
|
|
3404
3485
|
// Clean up resources and configure Texture.
|
|
3405
3486
|
|
|
@@ -89,6 +89,8 @@ class GaussianSplatPLYLoader extends Loader {
|
|
|
89
89
|
const scope = this;
|
|
90
90
|
|
|
91
91
|
const loader = new FileLoader( this.manager );
|
|
92
|
+
loader.setPriority( this.priority );
|
|
93
|
+
loader.setCache( this.cache );
|
|
92
94
|
loader.setPath( this.path );
|
|
93
95
|
loader.setResponseType( 'arraybuffer' );
|
|
94
96
|
loader.setRequestHeader( this.requestHeader );
|
|
@@ -97,8 +97,11 @@ class HDRCubeTextureLoader extends Loader {
|
|
|
97
97
|
function loadHDRData( i, onLoad, onProgress, onError ) {
|
|
98
98
|
|
|
99
99
|
new FileLoader( scope.manager )
|
|
100
|
+
.setPriority( scope.priority )
|
|
101
|
+
.setCache( scope.cache )
|
|
100
102
|
.setPath( scope.path )
|
|
101
103
|
.setResponseType( 'arraybuffer' )
|
|
104
|
+
.setRequestHeader( scope.requestHeader )
|
|
102
105
|
.setWithCredentials( scope.withCredentials )
|
|
103
106
|
.load( urls[ i ], function ( buffer ) {
|
|
104
107
|
|