super-three 0.136.1 → 0.144.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 +31 -33
- package/build/three.cjs +36413 -0
- package/build/three.js +5108 -5809
- package/build/three.min.js +2 -2
- package/build/three.module.js +7877 -8586
- package/examples/js/animation/CCDIKSolver.js +3 -2
- package/examples/js/animation/MMDAnimationHelper.js +3 -1
- package/examples/js/animation/MMDPhysics.js +3 -18
- package/examples/js/controls/ArcballControls.js +19 -4
- package/examples/js/controls/FirstPersonControls.js +0 -7
- package/examples/js/controls/FlyControls.js +0 -8
- package/examples/js/controls/OrbitControls.js +0 -4
- package/examples/js/controls/PointerLockControls.js +3 -10
- package/examples/js/controls/TrackballControls.js +1 -6
- package/examples/js/controls/TransformControls.js +25 -22
- package/examples/js/csm/CSMFrustum.js +1 -1
- package/examples/js/csm/CSMShader.js +51 -35
- package/examples/js/curves/CurveExtras.js +14 -18
- package/examples/js/effects/AnaglyphEffect.js +9 -6
- package/examples/js/effects/AsciiEffect.js +10 -29
- package/examples/js/effects/OutlineEffect.js +4 -24
- package/examples/js/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/js/effects/PeppersGhostEffect.js +2 -2
- package/examples/js/effects/StereoEffect.js +2 -2
- package/examples/js/environments/RoomEnvironment.js +22 -0
- package/examples/js/exporters/ColladaExporter.js +33 -20
- package/examples/js/exporters/DRACOExporter.js +0 -12
- package/examples/js/exporters/EXRExporter.js +458 -0
- package/examples/js/exporters/GLTFExporter.js +246 -119
- package/examples/js/exporters/OBJExporter.js +14 -41
- package/examples/js/exporters/PLYExporter.js +27 -44
- package/examples/js/exporters/STLExporter.js +0 -7
- package/examples/js/exporters/USDZExporter.js +19 -0
- package/examples/js/geometries/ConvexGeometry.js +1 -1
- package/examples/js/geometries/DecalGeometry.js +0 -7
- package/examples/js/geometries/LightningStrike.js +2 -2
- package/examples/js/geometries/ParametricGeometries.js +3 -3
- package/examples/js/geometries/ParametricGeometry.js +1 -8
- package/examples/js/geometries/TextGeometry.js +12 -10
- package/examples/js/helpers/OctreeHelper.js +74 -0
- package/examples/js/helpers/VertexNormalsHelper.js +4 -23
- package/examples/js/helpers/VertexTangentsHelper.js +3 -13
- package/examples/js/helpers/ViewHelper.js +266 -0
- package/examples/js/interactive/HTMLMesh.js +249 -42
- package/examples/js/interactive/SelectionHelper.js +3 -1
- package/examples/js/libs/ktx-parse.umd.js +1 -0
- package/examples/js/libs/meshopt_decoder.js +98 -32
- package/examples/js/libs/opentype.min.js +1 -118
- package/examples/js/lines/Line2.js +1 -2
- package/examples/js/lines/LineGeometry.js +10 -21
- package/examples/js/lines/LineMaterial.js +2 -3
- package/examples/js/lines/LineSegments2.js +214 -140
- package/examples/js/lines/LineSegmentsGeometry.js +3 -14
- package/examples/js/lines/Wireframe.js +2 -3
- package/examples/js/lines/WireframeGeometry2.js +1 -2
- package/examples/js/loaders/3MFLoader.js +21 -17
- package/examples/js/loaders/AMFLoader.js +1 -1
- package/examples/js/loaders/ColladaLoader.js +34 -12
- package/examples/js/loaders/DDSLoader.js +23 -30
- package/examples/js/loaders/DRACOLoader.js +2 -25
- package/examples/js/loaders/EXRLoader.js +279 -276
- package/examples/js/loaders/FBXLoader.js +21 -3
- package/examples/js/loaders/FontLoader.js +4 -18
- package/examples/js/loaders/GCodeLoader.js +0 -1
- package/examples/js/loaders/GLTFLoader.js +300 -95
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -11
- package/examples/js/loaders/KMZLoader.js +1 -1
- package/examples/js/loaders/LDrawLoader.js +653 -480
- package/examples/js/loaders/LUT3dlLoader.js +1 -1
- package/examples/js/loaders/LUTCubeLoader.js +1 -1
- package/examples/js/loaders/LWOLoader.js +4 -2
- package/examples/js/loaders/LogLuvLoader.js +1 -2
- package/examples/js/loaders/MD2Loader.js +5 -5
- package/examples/js/loaders/MMDLoader.js +18 -4
- package/examples/js/loaders/MTLLoader.js +10 -3
- package/examples/js/loaders/NRRDLoader.js +1 -1
- package/examples/js/loaders/OBJLoader.js +16 -18
- package/examples/js/loaders/PCDLoader.js +81 -27
- package/examples/js/loaders/PDBLoader.js +11 -11
- package/examples/js/loaders/PLYLoader.js +8 -4
- package/examples/js/loaders/RGBELoader.js +3 -11
- package/examples/js/loaders/RGBMLoader.js +12 -15
- package/examples/js/loaders/STLLoader.js +1 -1
- package/examples/js/loaders/SVGLoader.js +23 -14
- package/examples/js/loaders/TIFFLoader.js +31 -0
- package/examples/js/loaders/VOXLoader.js +3 -4
- package/examples/js/loaders/VRMLLoader.js +33 -24
- package/examples/js/loaders/VTKLoader.js +261 -296
- package/examples/js/loaders/lwo/LWO2Parser.js +12 -11
- package/examples/js/loaders/lwo/LWO3Parser.js +12 -11
- package/examples/js/materials/MeshGouraudMaterial.js +385 -0
- package/examples/js/math/ColorConverter.js +0 -50
- package/examples/js/math/ConvexHull.js +6 -15
- package/examples/js/math/Lut.js +27 -26
- package/examples/js/misc/GPUComputationRenderer.js +23 -0
- package/examples/js/misc/MorphAnimMesh.js +2 -2
- package/examples/js/misc/ProgressiveLightMap.js +1 -1
- package/examples/js/misc/Volume.js +233 -234
- package/examples/js/misc/VolumeSlice.js +108 -106
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -13
- package/examples/js/modifiers/SimplifyModifier.js +2 -19
- package/examples/js/modifiers/TessellateModifier.js +0 -7
- package/examples/js/objects/GroundProjectedEnv.js +193 -0
- package/examples/js/objects/Lensflare.js +4 -4
- package/examples/js/objects/LightningStorm.js +4 -5
- package/examples/js/objects/MarchingCubes.js +6 -11
- package/examples/js/objects/Reflector.js +18 -5
- package/examples/js/objects/ReflectorForSSRPass.js +4 -5
- package/examples/js/objects/Refractor.js +19 -7
- package/examples/js/objects/ShadowMesh.js +6 -3
- package/examples/js/objects/Sky.js +1 -1
- package/examples/js/objects/Water.js +1 -2
- package/examples/js/objects/Water2.js +1 -1
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +6 -10
- package/examples/js/postprocessing/AfterimagePass.js +2 -6
- package/examples/js/postprocessing/BloomPass.js +50 -19
- package/examples/js/postprocessing/DotScreenPass.js +1 -1
- package/examples/js/postprocessing/EffectComposer.js +1 -6
- package/examples/js/postprocessing/LUTPass.js +2 -2
- package/examples/js/postprocessing/OutlinePass.js +13 -20
- package/examples/js/postprocessing/SAOPass.js +2 -7
- package/examples/js/postprocessing/SSAARenderPass.js +1 -6
- package/examples/js/postprocessing/SSRPass.js +3 -8
- package/examples/js/postprocessing/TAARenderPass.js +4 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +3 -12
- package/examples/js/renderers/CSS2DRenderer.js +22 -21
- package/examples/js/renderers/CSS3DRenderer.js +42 -38
- package/examples/js/renderers/Projector.js +99 -147
- package/examples/js/renderers/SVGRenderer.js +3 -4
- package/examples/js/shaders/BlendShader.js +2 -1
- package/examples/js/shaders/CopyShader.js +4 -3
- package/examples/js/shaders/FXAAShader.js +239 -1069
- package/examples/js/shaders/FreiChenShader.js +1 -1
- package/examples/js/shaders/HorizontalBlurShader.js +1 -1
- package/examples/js/shaders/HorizontalTiltShiftShader.js +1 -1
- package/examples/js/shaders/LuminosityShader.js +1 -1
- package/examples/js/shaders/MMDToonShader.js +6 -2
- package/examples/js/shaders/SSRShader.js +3 -3
- package/examples/js/shaders/ToneMapShader.js +2 -2
- package/examples/js/utils/BufferGeometryUtils.js +282 -22
- package/examples/js/utils/GPUStatsPanel.js +1 -1
- package/examples/js/utils/GeometryUtils.js +2 -18
- package/examples/js/utils/LDrawUtils.js +182 -0
- package/examples/js/utils/PackedPhongMaterial.js +1 -1
- package/examples/js/utils/SceneUtils.js +57 -14
- package/examples/js/utils/SkeletonUtils.js +1 -1
- package/examples/js/utils/UVsDebug.js +23 -33
- package/examples/jsm/animation/CCDIKSolver.js +3 -9
- package/examples/jsm/animation/MMDPhysics.js +4 -23
- package/examples/jsm/capabilities/WebGPU.js +6 -0
- package/examples/jsm/controls/ArcballControls.js +19 -2
- package/examples/jsm/controls/FirstPersonControls.js +0 -7
- package/examples/jsm/controls/FlyControls.js +0 -7
- package/examples/jsm/controls/OrbitControls.js +0 -5
- package/examples/jsm/controls/PointerLockControls.js +4 -9
- package/examples/jsm/controls/TrackballControls.js +1 -7
- package/examples/jsm/controls/TransformControls.js +24 -22
- package/examples/jsm/csm/CSMFrustum.js +1 -1
- package/examples/jsm/csm/CSMShader.js +51 -35
- package/examples/jsm/curves/CurveExtras.js +15 -17
- package/examples/jsm/effects/AnaglyphEffect.js +6 -6
- package/examples/jsm/effects/AsciiEffect.js +9 -22
- package/examples/jsm/effects/OutlineEffect.js +4 -25
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
- package/examples/jsm/effects/StereoEffect.js +2 -2
- package/examples/jsm/environments/RoomEnvironment.js +23 -0
- package/examples/jsm/exporters/ColladaExporter.js +35 -19
- package/examples/jsm/exporters/DRACOExporter.js +0 -13
- package/examples/jsm/exporters/EXRExporter.js +507 -0
- package/examples/jsm/exporters/GLTFExporter.js +276 -104
- package/examples/jsm/exporters/KTX2Exporter.js +281 -0
- package/examples/jsm/exporters/OBJExporter.js +11 -36
- package/examples/jsm/exporters/PLYExporter.js +37 -43
- package/examples/jsm/exporters/STLExporter.js +1 -9
- package/examples/jsm/exporters/USDZExporter.js +26 -3
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/DecalGeometry.js +0 -7
- package/examples/jsm/geometries/LightningStrike.js +2 -2
- package/examples/jsm/geometries/ParametricGeometries.js +3 -3
- package/examples/jsm/geometries/ParametricGeometry.js +0 -6
- package/examples/jsm/geometries/TextGeometry.js +13 -13
- package/examples/jsm/helpers/OctreeHelper.js +58 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +4 -25
- package/examples/jsm/helpers/VertexTangentsHelper.js +3 -15
- package/examples/jsm/helpers/ViewHelper.js +295 -0
- package/examples/jsm/interactive/HTMLMesh.js +268 -36
- package/examples/jsm/interactive/SelectionHelper.js +6 -4
- package/examples/jsm/libs/flow.module.js +947 -183
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
- package/examples/jsm/libs/mikktspace.module.js +128 -0
- package/examples/jsm/libs/opentype.module.js +14568 -0
- package/examples/jsm/libs/utif.module.js +1579 -0
- package/examples/jsm/libs/zstddec.module.js +1 -0
- package/examples/jsm/lines/Line2.js +2 -2
- package/examples/jsm/lines/LineGeometry.js +11 -19
- package/examples/jsm/lines/LineMaterial.js +3 -3
- package/examples/jsm/lines/LineSegments2.js +210 -145
- package/examples/jsm/lines/LineSegmentsGeometry.js +3 -12
- package/examples/jsm/lines/Wireframe.js +3 -3
- package/examples/jsm/lines/WireframeGeometry2.js +2 -2
- package/examples/jsm/loaders/3DMLoader.js +3 -2
- package/examples/jsm/loaders/3MFLoader.js +21 -17
- package/examples/jsm/loaders/AMFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +41 -12
- package/examples/jsm/loaders/DDSLoader.js +21 -28
- package/examples/jsm/loaders/DRACOLoader.js +2 -28
- package/examples/jsm/loaders/EXRLoader.js +278 -275
- package/examples/jsm/loaders/FBXLoader.js +21 -3
- package/examples/jsm/loaders/FontLoader.js +5 -18
- package/examples/jsm/loaders/GCodeLoader.js +0 -1
- package/examples/jsm/loaders/GLTFLoader.js +314 -101
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
- package/examples/jsm/loaders/KMZLoader.js +1 -1
- package/examples/jsm/loaders/KTX2Loader.js +193 -40
- package/examples/jsm/loaders/LDrawLoader.js +641 -495
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
- package/examples/jsm/loaders/LWOLoader.js +5 -3
- package/examples/jsm/loaders/LogLuvLoader.js +2 -2
- package/examples/jsm/loaders/MD2Loader.js +5 -5
- package/examples/jsm/loaders/MMDLoader.js +21 -3
- package/examples/jsm/loaders/MTLLoader.js +11 -4
- package/examples/jsm/loaders/NRRDLoader.js +1 -2
- package/examples/jsm/loaders/OBJLoader.js +17 -21
- package/examples/jsm/loaders/PCDLoader.js +82 -28
- package/examples/jsm/loaders/PDBLoader.js +11 -11
- package/examples/jsm/loaders/PLYLoader.js +13 -5
- package/examples/jsm/loaders/RGBELoader.js +4 -12
- package/examples/jsm/loaders/RGBMLoader.js +14 -11
- package/examples/jsm/loaders/STLLoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +24 -13
- package/examples/jsm/loaders/TIFFLoader.js +36 -0
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/USDZLoader.js +393 -0
- package/examples/jsm/loaders/VOXLoader.js +5 -5
- package/examples/jsm/loaders/VRMLLoader.js +23 -26
- package/examples/jsm/loaders/VTKLoader.js +257 -285
- package/examples/jsm/loaders/ifc/web-ifc-api.js +9 -8
- package/examples/jsm/loaders/lwo/LWO2Parser.js +10 -12
- package/examples/jsm/loaders/lwo/LWO3Parser.js +10 -12
- package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
- package/examples/jsm/math/ColorConverter.js +1 -49
- package/examples/jsm/math/ConvexHull.js +6 -15
- package/examples/jsm/math/Lut.js +35 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
- package/examples/jsm/misc/MorphAnimMesh.js +2 -2
- package/examples/jsm/misc/ProgressiveLightMap.js +1 -1
- package/examples/jsm/misc/Volume.js +204 -213
- package/examples/jsm/misc/VolumeSlice.js +96 -98
- package/examples/jsm/modifiers/EdgeSplitModifier.js +0 -13
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -19
- package/examples/jsm/modifiers/TessellateModifier.js +0 -7
- package/examples/jsm/node-editor/NodeEditor.js +505 -182
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +14 -0
- package/examples/jsm/node-editor/accessors/NormalEditor.js +9 -9
- package/examples/jsm/node-editor/accessors/PositionEditor.js +9 -9
- package/examples/jsm/node-editor/accessors/UVEditor.js +7 -8
- package/examples/jsm/node-editor/core/BaseNode.js +89 -0
- package/examples/jsm/node-editor/core/DataFile.js +59 -0
- package/examples/jsm/node-editor/core/FileEditor.js +20 -0
- package/examples/jsm/node-editor/core/FileURLEditor.js +29 -0
- package/examples/jsm/node-editor/display/BlendEditor.js +10 -9
- package/examples/jsm/node-editor/display/NormalMapEditor.js +49 -0
- package/examples/jsm/node-editor/examples/animate-uv.json +1 -1
- package/examples/jsm/node-editor/examples/fake-top-light.json +1 -1
- package/examples/jsm/node-editor/examples/matcap.json +1 -0
- package/examples/jsm/node-editor/examples/oscillator-color.json +1 -1
- package/examples/jsm/node-editor/examples/rim.json +1 -1
- package/examples/jsm/node-editor/inputs/ColorEditor.js +18 -13
- package/examples/jsm/node-editor/inputs/FloatEditor.js +8 -9
- package/examples/jsm/node-editor/inputs/SliderEditor.js +6 -7
- package/examples/jsm/node-editor/inputs/TextureEditor.js +155 -0
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +9 -9
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +11 -11
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +12 -12
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +87 -0
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +102 -0
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +31 -18
- package/examples/jsm/node-editor/math/AngleEditor.js +40 -0
- package/examples/jsm/node-editor/math/DotEditor.js +8 -9
- package/examples/jsm/node-editor/math/InvertEditor.js +8 -7
- package/examples/jsm/node-editor/math/LimiterEditor.js +28 -14
- package/examples/jsm/node-editor/math/NormalizeEditor.js +9 -7
- package/examples/jsm/node-editor/math/OperatorEditor.js +29 -16
- package/examples/jsm/node-editor/math/PowerEditor.js +20 -10
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +15 -9
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +7 -6
- package/examples/jsm/node-editor/scene/MeshEditor.js +99 -0
- package/examples/jsm/node-editor/scene/Object3DEditor.js +160 -0
- package/examples/jsm/node-editor/scene/PointsEditor.js +99 -0
- package/examples/jsm/node-editor/utils/JoinEditor.js +58 -0
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +9 -8
- package/examples/jsm/node-editor/utils/PreviewEditor.js +166 -0
- package/examples/jsm/node-editor/utils/SplitEditor.js +39 -0
- package/examples/jsm/node-editor/utils/TimerEditor.js +7 -6
- package/examples/jsm/nodes/Nodes.js +313 -94
- package/examples/jsm/nodes/accessors/BufferNode.js +24 -0
- package/examples/jsm/nodes/accessors/CameraNode.js +27 -196
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +107 -0
- package/examples/jsm/nodes/accessors/InstanceNode.js +58 -0
- package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialNode.js +49 -11
- package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialReferenceNode.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelNode.js +8 -0
- package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelViewProjectionNode.js +0 -0
- package/examples/jsm/nodes/accessors/NormalNode.js +39 -99
- package/examples/jsm/{renderers/nodes → nodes}/accessors/Object3DNode.js +34 -17
- package/examples/jsm/{renderers/nodes → nodes}/accessors/PointUVNode.js +2 -2
- package/examples/jsm/nodes/accessors/PositionNode.js +41 -110
- package/examples/jsm/nodes/accessors/ReferenceNode.js +65 -0
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
- package/examples/jsm/nodes/accessors/SkinningNode.js +102 -0
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +21 -0
- package/examples/jsm/nodes/accessors/TextureNode.js +100 -0
- package/examples/jsm/nodes/accessors/UVNode.js +17 -43
- package/examples/jsm/nodes/accessors/UserDataNode.js +23 -0
- package/examples/jsm/nodes/core/ArrayUniformNode.js +23 -0
- package/examples/jsm/nodes/core/AttributeNode.js +33 -30
- package/examples/jsm/{renderers/nodes → nodes}/core/BypassNode.js +2 -2
- package/examples/jsm/nodes/core/CodeNode.js +50 -0
- package/examples/jsm/nodes/core/ConstNode.js +10 -106
- package/examples/jsm/{renderers/nodes → nodes}/core/ContextNode.js +17 -3
- package/examples/jsm/nodes/core/ExpressionNode.js +24 -7
- package/examples/jsm/nodes/core/FunctionCallNode.js +33 -59
- package/examples/jsm/nodes/core/FunctionNode.js +43 -216
- package/examples/jsm/nodes/core/InputNode.js +28 -60
- package/examples/jsm/nodes/core/InstanceIndexNode.js +21 -0
- package/examples/jsm/nodes/core/Node.js +230 -94
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeAttribute.js +2 -2
- package/examples/jsm/nodes/core/NodeBuilder.js +388 -560
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeCode.js +0 -0
- package/examples/jsm/nodes/core/NodeFrame.js +30 -23
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunction.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunctionInput.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeKeywords.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeParser.js +0 -0
- package/examples/jsm/nodes/core/NodeUniform.js +8 -6
- package/examples/jsm/nodes/core/NodeUtils.js +90 -36
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeVar.js +2 -2
- package/examples/jsm/{renderers/nodes/core/NodeVary.js → nodes/core/NodeVarying.js} +4 -4
- package/examples/jsm/{renderers/nodes → nodes}/core/PropertyNode.js +0 -0
- package/examples/jsm/nodes/core/TempNode.js +20 -112
- package/examples/jsm/nodes/core/UniformNode.js +46 -0
- package/examples/jsm/nodes/core/VarNode.js +58 -27
- package/examples/jsm/{renderers/nodes/core/VaryNode.js → nodes/core/VaryingNode.js} +7 -7
- package/examples/jsm/{renderers/nodes → nodes}/core/constants.js +0 -0
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +94 -0
- package/examples/jsm/{renderers/nodes → nodes}/display/ColorSpaceNode.js +10 -11
- package/examples/jsm/nodes/display/FrontFacingNode.js +21 -0
- package/examples/jsm/nodes/display/NormalMapNode.js +86 -0
- package/examples/jsm/nodes/display/ToneMappingNode.js +51 -0
- package/examples/jsm/nodes/fog/FogNode.js +31 -0
- package/examples/jsm/nodes/fog/FogRangeNode.js +27 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +33 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
- package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +27 -0
- package/examples/jsm/nodes/functions/BSDF/D_GGX.js +18 -0
- package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +18 -0
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +94 -0
- package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +22 -0
- package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +12 -0
- package/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
- package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +65 -0
- package/examples/jsm/nodes/lighting/AONode.js +25 -0
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +37 -0
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +66 -0
- package/examples/jsm/nodes/lighting/HemisphereLightNode.js +50 -0
- package/examples/jsm/nodes/lighting/LightingContextNode.js +75 -0
- package/examples/jsm/nodes/lighting/LightingNode.js +19 -0
- package/examples/jsm/nodes/lighting/LightsNode.js +120 -0
- package/examples/jsm/nodes/lighting/PunctualLightNode.js +68 -0
- package/examples/jsm/nodes/loaders/NodeLoader.js +107 -0
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +73 -0
- package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
- package/examples/jsm/{renderers/nodes → nodes}/materials/LineBasicNodeMaterial.js +11 -4
- package/examples/jsm/nodes/materials/Materials.js +53 -0
- package/examples/jsm/{renderers/nodes → nodes}/materials/MeshBasicNodeMaterial.js +13 -4
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +159 -22
- package/examples/jsm/nodes/materials/NodeMaterial.js +128 -113
- package/examples/jsm/{renderers/nodes → nodes}/materials/PointsNodeMaterial.js +13 -4
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +95 -16
- package/examples/jsm/nodes/materialx/Disclaimer.md +199 -0
- package/examples/jsm/nodes/materialx/functions/lib/mx_hsv.js +56 -0
- package/examples/jsm/nodes/materialx/functions/lib/mx_noise.js +607 -0
- package/examples/jsm/nodes/math/CondNode.js +26 -95
- package/examples/jsm/nodes/math/MathNode.js +156 -189
- package/examples/jsm/nodes/math/OperatorNode.js +161 -41
- package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeFunction.js +23 -8
- package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeParser.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeFunction.js +20 -5
- package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeParser.js +0 -0
- package/examples/jsm/nodes/procedural/CheckerNode.js +16 -57
- package/examples/jsm/nodes/shadernode/ShaderNode.js +262 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +277 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +120 -0
- package/examples/jsm/{renderers/nodes → nodes}/utils/ArrayElementNode.js +3 -3
- package/examples/jsm/nodes/utils/ConvertNode.js +46 -0
- package/examples/jsm/nodes/utils/JoinNode.js +15 -87
- package/examples/jsm/nodes/utils/MatcapUVNode.js +25 -0
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +33 -0
- package/examples/jsm/{renderers/nodes → nodes}/utils/OscNode.js +18 -2
- package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
- package/examples/jsm/nodes/utils/SplitNode.js +102 -0
- package/examples/jsm/{renderers/nodes → nodes}/utils/SpriteSheetUVNode.js +3 -3
- package/examples/jsm/nodes/utils/TimerNode.js +30 -65
- package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
- package/examples/jsm/objects/Lensflare.js +2 -2
- package/examples/jsm/objects/LightningStorm.js +4 -4
- package/examples/jsm/objects/MarchingCubes.js +5 -9
- package/examples/jsm/objects/Reflector.js +19 -8
- package/examples/jsm/objects/ReflectorForSSRPass.js +5 -7
- package/examples/jsm/objects/Refractor.js +19 -9
- package/examples/jsm/objects/ShadowMesh.js +10 -4
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/Water.js +2 -2
- package/examples/jsm/objects/Water2.js +2 -2
- package/examples/jsm/offscreen/jank.js +5 -5
- package/examples/jsm/offscreen/offscreen.js +1 -1
- package/examples/jsm/offscreen/scene.js +11 -11
- package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +5 -7
- package/examples/jsm/postprocessing/AfterimagePass.js +0 -10
- package/examples/jsm/postprocessing/BloomPass.js +48 -20
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
- package/examples/jsm/postprocessing/EffectComposer.js +1 -9
- package/examples/jsm/postprocessing/LUTPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +13 -18
- package/examples/jsm/postprocessing/SAOPass.js +2 -9
- package/examples/jsm/postprocessing/SSAARenderPass.js +1 -4
- package/examples/jsm/postprocessing/SSRPass.js +3 -9
- package/examples/jsm/postprocessing/TAARenderPass.js +4 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +3 -8
- package/examples/jsm/renderers/CSS2DRenderer.js +23 -21
- package/examples/jsm/renderers/CSS3DRenderer.js +41 -36
- package/examples/jsm/renderers/Projector.js +103 -152
- package/examples/jsm/renderers/SVGRenderer.js +4 -4
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +398 -183
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +19 -4
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +4 -4
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +55 -13
- package/examples/jsm/renderers/webgpu/WebGPUBindings.js +8 -7
- package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +43 -0
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +20 -7
- package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUInfo.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -7
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +37 -39
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +18 -15
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +66 -0
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +103 -95
- package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +14 -14
- package/examples/jsm/renderers/webgpu/WebGPUSampler.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +5 -8
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +25 -20
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +37 -18
- package/examples/jsm/renderers/webgpu/WebGPUUniform.js +14 -14
- package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +5 -32
- package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
- package/examples/jsm/renderers/webgpu/constants.js +3 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +287 -300
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +20 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +24 -14
- package/examples/jsm/shaders/BlendShader.js +2 -1
- package/examples/jsm/shaders/CopyShader.js +4 -3
- package/examples/jsm/shaders/FXAAShader.js +219 -1051
- package/examples/jsm/shaders/FreiChenShader.js +1 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +1 -1
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +1 -1
- package/examples/jsm/shaders/LuminosityShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +2 -2
- package/examples/jsm/shaders/SSRShader.js +3 -3
- package/examples/jsm/shaders/ToneMapShader.js +2 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +293 -22
- package/examples/jsm/utils/GPUStatsPanel.js +1 -1
- package/examples/jsm/utils/GeometryUtils.js +17 -25
- package/examples/jsm/utils/LDrawUtils.js +24 -17
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
- package/examples/jsm/utils/SceneUtils.js +73 -19
- package/examples/jsm/utils/SkeletonUtils.js +1 -1
- package/examples/jsm/utils/UVsDebug.js +23 -32
- package/examples/jsm/webxr/ARButton.js +14 -4
- package/examples/jsm/webxr/OculusHandPointerModel.js +9 -4
- package/examples/jsm/webxr/Text2D.js +1 -1
- package/examples/jsm/webxr/VRButton.js +16 -8
- package/examples/jsm/webxr/XRHandMeshModel.js +3 -7
- package/examples/jsm/webxr/XRHandModelFactory.js +3 -0
- package/package.json +57 -28
- package/src/Three.Legacy.js +164 -1809
- package/src/Three.js +9 -5
- package/src/animation/AnimationAction.js +6 -5
- package/src/animation/AnimationClip.js +2 -2
- package/src/animation/AnimationMixer.js +5 -3
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/AnimationUtils.js +204 -199
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/PropertyBinding.js +32 -23
- package/src/audio/PositionalAudio.js +8 -0
- package/src/cameras/ArrayCamera.js +2 -3
- package/src/cameras/Camera.js +2 -2
- package/src/cameras/CubeCamera.js +6 -8
- package/src/cameras/OrthographicCamera.js +2 -2
- package/src/cameras/PerspectiveCamera.js +2 -2
- package/src/constants.js +7 -6
- package/src/core/BufferAttribute.js +88 -123
- package/src/core/BufferGeometry.js +9 -47
- package/src/core/GLBufferAttribute.js +2 -2
- package/src/core/InstancedBufferAttribute.js +2 -12
- package/src/core/InstancedBufferGeometry.js +2 -2
- package/src/core/InstancedInterleavedBuffer.js +2 -2
- package/src/core/InterleavedBuffer.js +3 -3
- package/src/core/InterleavedBufferAttribute.js +61 -18
- package/src/core/Object3D.js +28 -8
- package/src/core/Raycaster.js +2 -2
- package/src/core/Uniform.js +0 -7
- package/src/core/UniformsGroup.js +92 -0
- package/src/extras/DataUtils.js +144 -41
- package/src/extras/Earcut.js +2 -2
- package/src/extras/PMREMGenerator.js +132 -104
- package/src/extras/core/CurvePath.js +3 -3
- package/src/extras/core/Path.js +1 -0
- package/src/extras/core/ShapePath.js +6 -10
- package/src/extras/curves/ArcCurve.js +2 -2
- package/src/extras/curves/CatmullRomCurve3.js +6 -4
- package/src/extras/curves/CubicBezierCurve.js +2 -2
- package/src/extras/curves/CubicBezierCurve3.js +2 -2
- package/src/extras/curves/EllipseCurve.js +2 -2
- package/src/extras/curves/LineCurve.js +2 -2
- package/src/extras/curves/LineCurve3.js +2 -1
- package/src/extras/curves/QuadraticBezierCurve.js +2 -2
- package/src/extras/curves/QuadraticBezierCurve3.js +2 -2
- package/src/extras/curves/SplineCurve.js +2 -2
- package/src/geometries/BoxGeometry.js +1 -1
- package/src/geometries/CapsuleGeometry.js +33 -0
- package/src/geometries/CircleGeometry.js +1 -1
- package/src/geometries/ConeGeometry.js +1 -1
- package/src/geometries/CylinderGeometry.js +2 -1
- package/src/geometries/DodecahedronGeometry.js +1 -1
- package/src/geometries/EdgesGeometry.js +5 -4
- package/src/geometries/ExtrudeGeometry.js +4 -11
- package/src/geometries/Geometries.js +1 -0
- package/src/geometries/IcosahedronGeometry.js +1 -1
- package/src/geometries/LatheGeometry.js +3 -3
- package/src/geometries/OctahedronGeometry.js +1 -1
- package/src/geometries/PlaneGeometry.js +2 -1
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/RingGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +2 -1
- package/src/geometries/SphereGeometry.js +2 -1
- package/src/geometries/TetrahedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +2 -1
- package/src/geometries/TorusKnotGeometry.js +4 -3
- package/src/geometries/TubeGeometry.js +2 -1
- package/src/geometries/WireframeGeometry.js +4 -2
- package/src/helpers/BoxHelper.js +2 -2
- package/src/helpers/CameraHelper.js +97 -38
- package/src/helpers/DirectionalLightHelper.js +1 -0
- package/src/helpers/HemisphereLightHelper.js +1 -0
- package/src/helpers/PlaneHelper.js +6 -9
- package/src/helpers/PointLightHelper.js +1 -1
- package/src/helpers/PolarGridHelper.js +18 -14
- package/src/helpers/SkeletonHelper.js +3 -2
- package/src/helpers/SpotLightHelper.js +1 -0
- package/src/lights/AmbientLight.js +2 -2
- package/src/lights/AmbientLightProbe.js +2 -2
- package/src/lights/DirectionalLight.js +2 -2
- package/src/lights/DirectionalLightShadow.js +2 -2
- package/src/lights/HemisphereLight.js +4 -4
- package/src/lights/HemisphereLightProbe.js +2 -2
- package/src/lights/Light.js +4 -4
- package/src/lights/LightProbe.js +2 -2
- package/src/lights/PointLight.js +4 -4
- package/src/lights/PointLightShadow.js +2 -2
- package/src/lights/RectAreaLight.js +2 -2
- package/src/lights/SpotLight.js +6 -4
- package/src/lights/SpotLightShadow.js +2 -2
- package/src/loaders/FileLoader.js +35 -5
- package/src/loaders/ImageBitmapLoader.js +2 -2
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/LoaderUtils.js +1 -1
- package/src/loaders/LoadingManager.js +1 -1
- package/src/loaders/MaterialLoader.js +55 -8
- package/src/loaders/ObjectLoader.js +27 -66
- package/src/materials/LineBasicMaterial.js +6 -13
- package/src/materials/LineDashedMaterial.js +2 -15
- package/src/materials/Material.js +26 -24
- package/src/materials/Materials.js +39 -18
- package/src/materials/MeshBasicMaterial.js +6 -31
- package/src/materials/MeshDepthMaterial.js +2 -22
- package/src/materials/MeshDistanceMaterial.js +2 -22
- package/src/materials/MeshLambertMaterial.js +34 -35
- package/src/materials/MeshMatcapMaterial.js +6 -28
- package/src/materials/MeshNormalMaterial.js +2 -26
- package/src/materials/MeshPhongMaterial.js +6 -48
- package/src/materials/MeshPhysicalMaterial.js +32 -35
- package/src/materials/MeshStandardMaterial.js +6 -54
- package/src/materials/MeshToonMaterial.js +6 -38
- package/src/materials/PointsMaterial.js +6 -15
- package/src/materials/RawShaderMaterial.js +2 -2
- package/src/materials/ShaderMaterial.js +6 -24
- package/src/materials/ShadowMaterial.js +6 -8
- package/src/materials/SpriteMaterial.js +6 -12
- package/src/math/Box2.js +2 -2
- package/src/math/Box3.js +29 -15
- package/src/math/Color.js +87 -48
- package/src/math/ColorManagement.js +74 -0
- package/src/math/Euler.js +16 -14
- package/src/math/Interpolant.js +4 -9
- package/src/math/MathUtils.js +77 -14
- package/src/math/Matrix3.js +2 -8
- package/src/math/Matrix4.js +3 -28
- package/src/math/Plane.js +2 -2
- package/src/math/Quaternion.js +12 -23
- package/src/math/Spherical.js +1 -1
- package/src/math/SphericalHarmonics3.js +2 -2
- package/src/math/Vector2.js +5 -25
- package/src/math/Vector3.js +17 -47
- package/src/math/Vector4.js +5 -25
- package/src/math/interpolants/DiscreteInterpolant.js +1 -1
- package/src/objects/Bone.js +2 -2
- package/src/objects/Group.js +2 -2
- package/src/objects/InstancedMesh.js +4 -4
- package/src/objects/Line.js +76 -107
- package/src/objects/LineLoop.js +2 -2
- package/src/objects/LineSegments.js +15 -23
- package/src/objects/Mesh.js +82 -104
- package/src/objects/Points.js +32 -54
- package/src/objects/SkinnedMesh.js +5 -8
- package/src/objects/Sprite.js +4 -4
- package/src/renderers/WebGL3DRenderTarget.js +22 -0
- package/src/renderers/WebGLArrayRenderTarget.js +22 -0
- package/src/renderers/WebGLCubeRenderTarget.js +7 -14
- package/src/renderers/WebGLMultipleRenderTargets.js +8 -5
- package/src/renderers/WebGLRenderTarget.js +19 -18
- package/src/renderers/WebGLRenderer.js +195 -74
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +46 -0
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +7 -5
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +35 -36
- package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -19
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +121 -0
- package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
- package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +48 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +30 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +26 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +56 -6
- package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
- package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +7 -7
- package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +1 -9
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +16 -31
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +10 -2
- package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +3 -3
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +23 -50
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +6 -0
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +10 -0
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib.js +37 -31
- package/src/renderers/shaders/UniformsLib.js +14 -13
- package/src/renderers/shaders/UniformsUtils.js +14 -0
- package/src/renderers/webgl/WebGLAttributes.js +6 -6
- package/src/renderers/webgl/WebGLBackground.js +7 -4
- package/src/renderers/webgl/WebGLBindingStates.js +57 -29
- package/src/renderers/webgl/WebGLGeometries.js +2 -2
- package/src/renderers/webgl/WebGLLights.js +37 -14
- package/src/renderers/webgl/WebGLMaterials.js +72 -187
- package/src/renderers/webgl/WebGLMorphtargets.js +43 -39
- package/src/renderers/webgl/WebGLProgram.js +63 -30
- package/src/renderers/webgl/WebGLPrograms.js +97 -104
- package/src/renderers/webgl/WebGLRenderLists.js +5 -4
- package/src/renderers/webgl/WebGLRenderStates.js +5 -4
- package/src/renderers/webgl/WebGLShaderCache.js +12 -8
- package/src/renderers/webgl/WebGLShadowMap.js +13 -20
- package/src/renderers/webgl/WebGLState.js +49 -2
- package/src/renderers/webgl/WebGLTextures.js +576 -386
- package/src/renderers/webgl/WebGLUniforms.js +81 -82
- package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
- package/src/renderers/webgl/WebGLUtils.js +14 -3
- package/src/renderers/webvr/WebVRManager.js +42 -9
- package/src/renderers/webvr/WebVRUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +45 -37
- package/src/renderers/webxr/WebXRManager.js +110 -68
- package/src/scenes/Fog.js +2 -2
- package/src/scenes/FogExp2.js +2 -2
- package/src/scenes/Scene.js +18 -5
- package/src/textures/CanvasTexture.js +2 -2
- package/src/textures/CompressedTexture.js +2 -2
- package/src/textures/CubeTexture.js +2 -2
- package/src/textures/{DataTexture3D.js → Data3DTexture.js} +4 -4
- package/src/textures/{DataTexture2DArray.js → DataArrayTexture.js} +4 -4
- package/src/textures/DataTexture.js +2 -5
- package/src/textures/DepthTexture.js +5 -5
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +123 -0
- package/src/textures/Texture.js +27 -97
- package/src/textures/VideoTexture.js +2 -2
- package/src/utils.js +15 -1
- package/examples/js/controls/experimental/CameraControls.js +0 -1044
- package/examples/js/csm/Frustum.js +0 -133
- package/examples/js/deprecated/Geometry.js +0 -1656
- package/examples/js/loaders/KTX2Loader.js +0 -566
- package/examples/js/loaders/VRMLoader.js +0 -72
- package/examples/js/objects/ReflectorRTT.js +0 -16
- package/examples/js/postprocessing/SSRrPass.js +0 -494
- package/examples/js/shaders/SSRrShader.js +0 -336
- package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
- package/examples/jsm/deprecated/Geometry.js +0 -1869
- package/examples/jsm/libs/opentype.module.min.js +0 -119
- package/examples/jsm/loaders/NodeMaterialLoader.js +0 -263
- package/examples/jsm/loaders/VRMLoader.js +0 -78
- package/examples/jsm/nodes/accessors/ColorsNode.js +0 -56
- package/examples/jsm/nodes/accessors/LightNode.js +0 -60
- package/examples/jsm/nodes/accessors/ReflectNode.js +0 -157
- package/examples/jsm/nodes/accessors/ResolutionNode.js +0 -64
- package/examples/jsm/nodes/accessors/ScreenUVNode.js +0 -64
- package/examples/jsm/nodes/core/NodeLib.js +0 -64
- package/examples/jsm/nodes/core/StructNode.js +0 -106
- package/examples/jsm/nodes/effects/BlurNode.js +0 -171
- package/examples/jsm/nodes/effects/ColorAdjustmentNode.js +0 -140
- package/examples/jsm/nodes/effects/LuminanceNode.js +0 -75
- package/examples/jsm/nodes/inputs/BoolNode.js +0 -51
- package/examples/jsm/nodes/inputs/ColorNode.js +0 -58
- package/examples/jsm/nodes/inputs/CubeTextureNode.js +0 -108
- package/examples/jsm/nodes/inputs/FloatNode.js +0 -51
- package/examples/jsm/nodes/inputs/IntNode.js +0 -51
- package/examples/jsm/nodes/inputs/Matrix3Node.js +0 -63
- package/examples/jsm/nodes/inputs/Matrix4Node.js +0 -63
- package/examples/jsm/nodes/inputs/PropertyNode.js +0 -47
- package/examples/jsm/nodes/inputs/RTTNode.js +0 -157
- package/examples/jsm/nodes/inputs/ReflectorNode.js +0 -90
- package/examples/jsm/nodes/inputs/ScreenNode.js +0 -28
- package/examples/jsm/nodes/inputs/TextureNode.js +0 -116
- package/examples/jsm/nodes/inputs/Vector2Node.js +0 -57
- package/examples/jsm/nodes/inputs/Vector3Node.js +0 -58
- package/examples/jsm/nodes/inputs/Vector4Node.js +0 -59
- package/examples/jsm/nodes/materials/BasicNodeMaterial.js +0 -26
- package/examples/jsm/nodes/materials/PhongNodeMaterial.js +0 -36
- package/examples/jsm/nodes/materials/StandardNodeMaterial.js +0 -40
- package/examples/jsm/nodes/materials/nodes/BasicNode.js +0 -154
- package/examples/jsm/nodes/materials/nodes/MeshStandardNode.js +0 -116
- package/examples/jsm/nodes/materials/nodes/PhongNode.js +0 -409
- package/examples/jsm/nodes/materials/nodes/RawNode.js +0 -62
- package/examples/jsm/nodes/materials/nodes/SpriteNode.js +0 -236
- package/examples/jsm/nodes/materials/nodes/StandardNode.js +0 -609
- package/examples/jsm/nodes/misc/BumpMapNode.js +0 -163
- package/examples/jsm/nodes/misc/NormalMapNode.js +0 -138
- package/examples/jsm/nodes/misc/TextureCubeNode.js +0 -86
- package/examples/jsm/nodes/misc/TextureCubeUVNode.js +0 -280
- package/examples/jsm/nodes/postprocessing/NodePass.js +0 -93
- package/examples/jsm/nodes/postprocessing/NodePostProcessing.js +0 -148
- package/examples/jsm/nodes/procedural/Fractal3DNode.js +0 -104
- package/examples/jsm/nodes/procedural/Noise2DNode.js +0 -149
- package/examples/jsm/nodes/procedural/Noise3DNode.js +0 -141
- package/examples/jsm/nodes/utils/BypassNode.js +0 -85
- package/examples/jsm/nodes/utils/ColorSpaceNode.js +0 -145
- package/examples/jsm/nodes/utils/MaxMIPLevelNode.js +0 -56
- package/examples/jsm/nodes/utils/RemapNode.js +0 -155
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -101
- package/examples/jsm/nodes/utils/SubSlotNode.js +0 -77
- package/examples/jsm/nodes/utils/SwitchNode.js +0 -103
- package/examples/jsm/nodes/utils/UVTransformNode.js +0 -66
- package/examples/jsm/nodes/utils/VelocityNode.js +0 -170
- package/examples/jsm/objects/ReflectorRTT.js +0 -15
- package/examples/jsm/package.json +0 -3
- package/examples/jsm/postprocessing/SSRrPass.js +0 -579
- package/examples/jsm/renderers/nodes/Nodes.js +0 -166
- package/examples/jsm/renderers/nodes/ShaderNode.js +0 -373
- package/examples/jsm/renderers/nodes/accessors/CameraNode.js +0 -68
- package/examples/jsm/renderers/nodes/accessors/NormalNode.js +0 -63
- package/examples/jsm/renderers/nodes/accessors/PositionNode.js +0 -67
- package/examples/jsm/renderers/nodes/accessors/ReferenceNode.js +0 -91
- package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +0 -107
- package/examples/jsm/renderers/nodes/accessors/UVNode.js +0 -25
- package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +0 -23
- package/examples/jsm/renderers/nodes/core/AttributeNode.js +0 -54
- package/examples/jsm/renderers/nodes/core/CodeNode.js +0 -78
- package/examples/jsm/renderers/nodes/core/ExpressionNode.js +0 -32
- package/examples/jsm/renderers/nodes/core/FunctionCallNode.js +0 -67
- package/examples/jsm/renderers/nodes/core/FunctionNode.js +0 -87
- package/examples/jsm/renderers/nodes/core/InputNode.js +0 -66
- package/examples/jsm/renderers/nodes/core/Node.js +0 -104
- package/examples/jsm/renderers/nodes/core/NodeBuilder.js +0 -633
- package/examples/jsm/renderers/nodes/core/NodeFrame.js +0 -59
- package/examples/jsm/renderers/nodes/core/NodeUniform.js +0 -28
- package/examples/jsm/renderers/nodes/core/TempNode.js +0 -43
- package/examples/jsm/renderers/nodes/core/VarNode.js +0 -51
- package/examples/jsm/renderers/nodes/display/NormalMapNode.js +0 -87
- package/examples/jsm/renderers/nodes/functions/BSDFs.js +0 -122
- package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +0 -27
- package/examples/jsm/renderers/nodes/inputs/BufferNode.js +0 -25
- package/examples/jsm/renderers/nodes/inputs/ColorNode.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/FloatNode.js +0 -17
- package/examples/jsm/renderers/nodes/inputs/IntNode.js +0 -17
- package/examples/jsm/renderers/nodes/inputs/Matrix3Node.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/Matrix4Node.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/TextureNode.js +0 -74
- package/examples/jsm/renderers/nodes/inputs/Vector2Node.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/Vector3Node.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/Vector4Node.js +0 -18
- package/examples/jsm/renderers/nodes/lights/LightContextNode.js +0 -59
- package/examples/jsm/renderers/nodes/lights/LightNode.js +0 -79
- package/examples/jsm/renderers/nodes/lights/LightsNode.js +0 -44
- package/examples/jsm/renderers/nodes/materials/Materials.js +0 -11
- package/examples/jsm/renderers/nodes/materials/MeshStandardNodeMaterial.js +0 -63
- package/examples/jsm/renderers/nodes/math/CondNode.js +0 -60
- package/examples/jsm/renderers/nodes/math/MathNode.js +0 -242
- package/examples/jsm/renderers/nodes/math/OperatorNode.js +0 -174
- package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +0 -36
- package/examples/jsm/renderers/nodes/utils/ConvertNode.js +0 -33
- package/examples/jsm/renderers/nodes/utils/JoinNode.js +0 -42
- package/examples/jsm/renderers/nodes/utils/SplitNode.js +0 -55
- package/examples/jsm/renderers/nodes/utils/TimerNode.js +0 -47
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +0 -20
- package/examples/jsm/shaders/SSRrShader.js +0 -307
- package/src/renderers/WebGLMultisampleRenderTarget.js +0 -33
- package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
|
@@ -109,9 +109,9 @@
|
|
|
109
109
|
|
|
110
110
|
function reverseLutFromBitmap( bitmap, lut ) {
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
let k = 0;
|
|
113
113
|
|
|
114
|
-
for (
|
|
114
|
+
for ( let i = 0; i < USHORT_RANGE; ++ i ) {
|
|
115
115
|
|
|
116
116
|
if ( i == 0 || bitmap[ i >> 3 ] & 1 << ( i & 7 ) ) {
|
|
117
117
|
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
const n = k - 1;
|
|
125
125
|
|
|
126
126
|
while ( k < USHORT_RANGE ) lut[ k ++ ] = 0;
|
|
127
127
|
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
|
|
132
132
|
function hufClearDecTable( hdec ) {
|
|
133
133
|
|
|
134
|
-
for (
|
|
134
|
+
for ( let i = 0; i < HUF_DECSIZE; i ++ ) {
|
|
135
135
|
|
|
136
136
|
hdec[ i ] = {};
|
|
137
137
|
hdec[ i ].len = 0;
|
|
@@ -168,40 +168,40 @@
|
|
|
168
168
|
|
|
169
169
|
function hufCanonicalCodeTable( hcode ) {
|
|
170
170
|
|
|
171
|
-
for (
|
|
171
|
+
for ( let i = 0; i <= 58; ++ i ) hufTableBuffer[ i ] = 0;
|
|
172
172
|
|
|
173
|
-
for (
|
|
173
|
+
for ( let i = 0; i < HUF_ENCSIZE; ++ i ) hufTableBuffer[ hcode[ i ] ] += 1;
|
|
174
174
|
|
|
175
|
-
|
|
175
|
+
let c = 0;
|
|
176
176
|
|
|
177
|
-
for (
|
|
177
|
+
for ( let i = 58; i > 0; -- i ) {
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
const nc = c + hufTableBuffer[ i ] >> 1;
|
|
180
180
|
hufTableBuffer[ i ] = c;
|
|
181
181
|
c = nc;
|
|
182
182
|
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
-
for (
|
|
185
|
+
for ( let i = 0; i < HUF_ENCSIZE; ++ i ) {
|
|
186
186
|
|
|
187
|
-
|
|
187
|
+
const l = hcode[ i ];
|
|
188
188
|
if ( l > 0 ) hcode[ i ] = l | hufTableBuffer[ l ] ++ << 6;
|
|
189
189
|
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
-
function hufUnpackEncTable( uInt8Array,
|
|
194
|
+
function hufUnpackEncTable( uInt8Array, inOffset, ni, im, iM, hcode ) {
|
|
195
195
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
196
|
+
const p = inOffset;
|
|
197
|
+
let c = 0;
|
|
198
|
+
let lc = 0;
|
|
199
199
|
|
|
200
200
|
for ( ; im <= iM; im ++ ) {
|
|
201
201
|
|
|
202
202
|
if ( p.value - inOffset.value > ni ) return false;
|
|
203
203
|
getBits( 6, c, lc, uInt8Array, p );
|
|
204
|
-
|
|
204
|
+
const l = getBitsReturn.l;
|
|
205
205
|
c = getBitsReturn.c;
|
|
206
206
|
lc = getBitsReturn.lc;
|
|
207
207
|
hcode[ im ] = l;
|
|
@@ -215,7 +215,7 @@
|
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
getBits( 8, c, lc, uInt8Array, p );
|
|
218
|
-
|
|
218
|
+
let zerun = getBitsReturn.l + SHORTEST_LONG_RUN;
|
|
219
219
|
c = getBitsReturn.c;
|
|
220
220
|
lc = getBitsReturn.lc;
|
|
221
221
|
|
|
@@ -231,7 +231,7 @@
|
|
|
231
231
|
|
|
232
232
|
} else if ( l >= SHORT_ZEROCODE_RUN ) {
|
|
233
233
|
|
|
234
|
-
|
|
234
|
+
let zerun = l - SHORT_ZEROCODE_RUN + 2;
|
|
235
235
|
|
|
236
236
|
if ( im + zerun > iM + 1 ) {
|
|
237
237
|
|
|
@@ -267,8 +267,8 @@
|
|
|
267
267
|
|
|
268
268
|
for ( ; im <= iM; im ++ ) {
|
|
269
269
|
|
|
270
|
-
|
|
271
|
-
|
|
270
|
+
const c = hufCode( hcode[ im ] );
|
|
271
|
+
const l = hufLength( hcode[ im ] );
|
|
272
272
|
|
|
273
273
|
if ( c >> l ) {
|
|
274
274
|
|
|
@@ -278,7 +278,7 @@
|
|
|
278
278
|
|
|
279
279
|
if ( l > HUF_DECBITS ) {
|
|
280
280
|
|
|
281
|
-
|
|
281
|
+
const pl = hdecod[ c >> l - HUF_DECBITS ];
|
|
282
282
|
|
|
283
283
|
if ( pl.len ) {
|
|
284
284
|
|
|
@@ -290,10 +290,10 @@
|
|
|
290
290
|
|
|
291
291
|
if ( pl.p ) {
|
|
292
292
|
|
|
293
|
-
|
|
293
|
+
const p = pl.p;
|
|
294
294
|
pl.p = new Array( pl.lit );
|
|
295
295
|
|
|
296
|
-
for (
|
|
296
|
+
for ( let i = 0; i < pl.lit - 1; ++ i ) {
|
|
297
297
|
|
|
298
298
|
pl.p[ i ] = p[ i ];
|
|
299
299
|
|
|
@@ -309,11 +309,11 @@
|
|
|
309
309
|
|
|
310
310
|
} else if ( l ) {
|
|
311
311
|
|
|
312
|
-
|
|
312
|
+
let plOffset = 0;
|
|
313
313
|
|
|
314
|
-
for (
|
|
314
|
+
for ( let i = 1 << HUF_DECBITS - l; i > 0; i -- ) {
|
|
315
315
|
|
|
316
|
-
|
|
316
|
+
const pl = hdecod[ ( c << HUF_DECBITS - l ) + plOffset ];
|
|
317
317
|
|
|
318
318
|
if ( pl.len || pl.p ) {
|
|
319
319
|
|
|
@@ -354,7 +354,7 @@
|
|
|
354
354
|
lc: 0
|
|
355
355
|
};
|
|
356
356
|
|
|
357
|
-
function getCode( po, rlc, c, lc, uInt8Array,
|
|
357
|
+
function getCode( po, rlc, c, lc, uInt8Array, inOffset, outBuffer, outBufferOffset, outBufferEndOffset ) {
|
|
358
358
|
|
|
359
359
|
if ( po == rlc ) {
|
|
360
360
|
|
|
@@ -367,8 +367,8 @@
|
|
|
367
367
|
}
|
|
368
368
|
|
|
369
369
|
lc -= 8;
|
|
370
|
-
|
|
371
|
-
|
|
370
|
+
let cs = c >> lc;
|
|
371
|
+
cs = new Uint8Array( [ cs ] )[ 0 ];
|
|
372
372
|
|
|
373
373
|
if ( outBufferOffset.value + cs > outBufferEndOffset ) {
|
|
374
374
|
|
|
@@ -376,7 +376,7 @@
|
|
|
376
376
|
|
|
377
377
|
}
|
|
378
378
|
|
|
379
|
-
|
|
379
|
+
const s = outBuffer[ outBufferOffset.value - 1 ];
|
|
380
380
|
|
|
381
381
|
while ( cs -- > 0 ) {
|
|
382
382
|
|
|
@@ -407,7 +407,7 @@
|
|
|
407
407
|
|
|
408
408
|
function Int16( value ) {
|
|
409
409
|
|
|
410
|
-
|
|
410
|
+
const ref = UInt16( value );
|
|
411
411
|
return ref > 0x7FFF ? ref - 0x10000 : ref;
|
|
412
412
|
|
|
413
413
|
}
|
|
@@ -419,12 +419,12 @@
|
|
|
419
419
|
|
|
420
420
|
function wdec14( l, h ) {
|
|
421
421
|
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
422
|
+
const ls = Int16( l );
|
|
423
|
+
const hs = Int16( h );
|
|
424
|
+
const hi = hs;
|
|
425
|
+
const ai = ls + ( hi & 1 ) + ( hi >> 1 );
|
|
426
|
+
const as = ai;
|
|
427
|
+
const bs = ai - hi;
|
|
428
428
|
wdec14Return.a = as;
|
|
429
429
|
wdec14Return.b = bs;
|
|
430
430
|
|
|
@@ -432,10 +432,10 @@
|
|
|
432
432
|
|
|
433
433
|
function wdec16( l, h ) {
|
|
434
434
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
435
|
+
const m = UInt16( l );
|
|
436
|
+
const d = UInt16( h );
|
|
437
|
+
const bb = m - ( d >> 1 ) & MOD_MASK;
|
|
438
|
+
const aa = d + bb - A_OFFSET & MOD_MASK;
|
|
439
439
|
wdec14Return.a = aa;
|
|
440
440
|
wdec14Return.b = bb;
|
|
441
441
|
|
|
@@ -443,10 +443,11 @@
|
|
|
443
443
|
|
|
444
444
|
function wav2Decode( buffer, j, nx, ox, ny, oy, mx ) {
|
|
445
445
|
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
446
|
+
const w14 = mx < 1 << 14;
|
|
447
|
+
const n = nx > ny ? ny : nx;
|
|
448
|
+
let p = 1;
|
|
449
|
+
let p2;
|
|
450
|
+
let py;
|
|
450
451
|
|
|
451
452
|
while ( p <= n ) p <<= 1;
|
|
452
453
|
|
|
@@ -456,24 +457,24 @@
|
|
|
456
457
|
|
|
457
458
|
while ( p >= 1 ) {
|
|
458
459
|
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
460
|
+
py = 0;
|
|
461
|
+
const ey = py + oy * ( ny - p2 );
|
|
462
|
+
const oy1 = oy * p;
|
|
463
|
+
const oy2 = oy * p2;
|
|
464
|
+
const ox1 = ox * p;
|
|
465
|
+
const ox2 = ox * p2;
|
|
466
|
+
let i00, i01, i10, i11;
|
|
466
467
|
|
|
467
468
|
for ( ; py <= ey; py += oy2 ) {
|
|
468
469
|
|
|
469
|
-
|
|
470
|
-
|
|
470
|
+
let px = py;
|
|
471
|
+
const ex = py + ox * ( nx - p2 );
|
|
471
472
|
|
|
472
473
|
for ( ; px <= ex; px += ox2 ) {
|
|
473
474
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
475
|
+
const p01 = px + ox1;
|
|
476
|
+
const p10 = px + oy1;
|
|
477
|
+
const p11 = p10 + ox1;
|
|
477
478
|
|
|
478
479
|
if ( w14 ) {
|
|
479
480
|
|
|
@@ -511,7 +512,7 @@
|
|
|
511
512
|
|
|
512
513
|
if ( nx & p ) {
|
|
513
514
|
|
|
514
|
-
|
|
515
|
+
const p10 = px + oy1;
|
|
515
516
|
if ( w14 ) wdec14( buffer[ px + j ], buffer[ p10 + j ] ); else wdec16( buffer[ px + j ], buffer[ p10 + j ] );
|
|
516
517
|
i00 = wdec14Return.a;
|
|
517
518
|
buffer[ p10 + j ] = wdec14Return.b;
|
|
@@ -523,12 +524,12 @@
|
|
|
523
524
|
|
|
524
525
|
if ( ny & p ) {
|
|
525
526
|
|
|
526
|
-
|
|
527
|
-
|
|
527
|
+
let px = py;
|
|
528
|
+
const ex = py + ox * ( nx - p2 );
|
|
528
529
|
|
|
529
530
|
for ( ; px <= ex; px += ox2 ) {
|
|
530
531
|
|
|
531
|
-
|
|
532
|
+
const p01 = px + ox1;
|
|
532
533
|
if ( w14 ) wdec14( buffer[ px + j ], buffer[ p01 + j ] ); else wdec16( buffer[ px + j ], buffer[ p01 + j ] );
|
|
533
534
|
i00 = wdec14Return.a;
|
|
534
535
|
buffer[ p01 + j ] = wdec14Return.b;
|
|
@@ -547,12 +548,12 @@
|
|
|
547
548
|
|
|
548
549
|
}
|
|
549
550
|
|
|
550
|
-
function hufDecode( encodingTable, decodingTable, uInt8Array,
|
|
551
|
+
function hufDecode( encodingTable, decodingTable, uInt8Array, inOffset, ni, rlc, no, outBuffer, outOffset ) {
|
|
551
552
|
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
553
|
+
let c = 0;
|
|
554
|
+
let lc = 0;
|
|
555
|
+
const outBufferEndOffset = no;
|
|
556
|
+
const inOffsetEnd = Math.trunc( inOffset.value + ( ni + 7 ) / 8 );
|
|
556
557
|
|
|
557
558
|
while ( inOffset.value < inOffsetEnd ) {
|
|
558
559
|
|
|
@@ -562,13 +563,13 @@
|
|
|
562
563
|
|
|
563
564
|
while ( lc >= HUF_DECBITS ) {
|
|
564
565
|
|
|
565
|
-
|
|
566
|
-
|
|
566
|
+
const index = c >> lc - HUF_DECBITS & HUF_DECMASK;
|
|
567
|
+
const pl = decodingTable[ index ];
|
|
567
568
|
|
|
568
569
|
if ( pl.len ) {
|
|
569
570
|
|
|
570
571
|
lc -= pl.len;
|
|
571
|
-
getCode( pl.lit, rlc, c, lc, uInt8Array,
|
|
572
|
+
getCode( pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset );
|
|
572
573
|
c = getCodeReturn.c;
|
|
573
574
|
lc = getCodeReturn.lc;
|
|
574
575
|
|
|
@@ -580,11 +581,11 @@
|
|
|
580
581
|
|
|
581
582
|
}
|
|
582
583
|
|
|
583
|
-
|
|
584
|
+
let j;
|
|
584
585
|
|
|
585
586
|
for ( j = 0; j < pl.lit; j ++ ) {
|
|
586
587
|
|
|
587
|
-
|
|
588
|
+
const l = hufLength( encodingTable[ pl.p[ j ] ] );
|
|
588
589
|
|
|
589
590
|
while ( lc < l && inOffset.value < inOffsetEnd ) {
|
|
590
591
|
|
|
@@ -599,7 +600,7 @@
|
|
|
599
600
|
if ( hufCode( encodingTable[ pl.p[ j ] ] ) == ( c >> lc - l & ( 1 << l ) - 1 ) ) {
|
|
600
601
|
|
|
601
602
|
lc -= l;
|
|
602
|
-
getCode( pl.p[ j ], rlc, c, lc, uInt8Array,
|
|
603
|
+
getCode( pl.p[ j ], rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset );
|
|
603
604
|
c = getCodeReturn.c;
|
|
604
605
|
lc = getCodeReturn.lc;
|
|
605
606
|
break;
|
|
@@ -622,18 +623,18 @@
|
|
|
622
623
|
|
|
623
624
|
}
|
|
624
625
|
|
|
625
|
-
|
|
626
|
+
const i = 8 - ni & 7;
|
|
626
627
|
c >>= i;
|
|
627
628
|
lc -= i;
|
|
628
629
|
|
|
629
630
|
while ( lc > 0 ) {
|
|
630
631
|
|
|
631
|
-
|
|
632
|
+
const pl = decodingTable[ c << HUF_DECBITS - lc & HUF_DECMASK ];
|
|
632
633
|
|
|
633
634
|
if ( pl.len ) {
|
|
634
635
|
|
|
635
636
|
lc -= pl.len;
|
|
636
|
-
getCode( pl.lit, rlc, c, lc, uInt8Array,
|
|
637
|
+
getCode( pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset );
|
|
637
638
|
c = getCodeReturn.c;
|
|
638
639
|
lc = getCodeReturn.lc;
|
|
639
640
|
|
|
@@ -651,14 +652,14 @@
|
|
|
651
652
|
|
|
652
653
|
function hufUncompress( uInt8Array, inDataView, inOffset, nCompressed, outBuffer, nRaw ) {
|
|
653
654
|
|
|
654
|
-
|
|
655
|
+
const outOffset = {
|
|
655
656
|
value: 0
|
|
656
657
|
};
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
658
|
+
const initialInOffset = inOffset.value;
|
|
659
|
+
const im = parseUint32( inDataView, inOffset );
|
|
660
|
+
const iM = parseUint32( inDataView, inOffset );
|
|
660
661
|
inOffset.value += 4;
|
|
661
|
-
|
|
662
|
+
const nBits = parseUint32( inDataView, inOffset );
|
|
662
663
|
inOffset.value += 4;
|
|
663
664
|
|
|
664
665
|
if ( im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE ) {
|
|
@@ -667,11 +668,11 @@
|
|
|
667
668
|
|
|
668
669
|
}
|
|
669
670
|
|
|
670
|
-
|
|
671
|
-
|
|
671
|
+
const freq = new Array( HUF_ENCSIZE );
|
|
672
|
+
const hdec = new Array( HUF_DECSIZE );
|
|
672
673
|
hufClearDecTable( hdec );
|
|
673
|
-
|
|
674
|
-
hufUnpackEncTable( uInt8Array,
|
|
674
|
+
const ni = nCompressed - ( inOffset.value - initialInOffset );
|
|
675
|
+
hufUnpackEncTable( uInt8Array, inOffset, ni, im, iM, freq );
|
|
675
676
|
|
|
676
677
|
if ( nBits > 8 * ( nCompressed - ( inOffset.value - initialInOffset ) ) ) {
|
|
677
678
|
|
|
@@ -680,13 +681,13 @@
|
|
|
680
681
|
}
|
|
681
682
|
|
|
682
683
|
hufBuildDecTable( freq, im, iM, hdec );
|
|
683
|
-
hufDecode( freq, hdec, uInt8Array,
|
|
684
|
+
hufDecode( freq, hdec, uInt8Array, inOffset, nBits, iM, nRaw, outBuffer, outOffset );
|
|
684
685
|
|
|
685
686
|
}
|
|
686
687
|
|
|
687
688
|
function applyLut( lut, data, nData ) {
|
|
688
689
|
|
|
689
|
-
for (
|
|
690
|
+
for ( let i = 0; i < nData; ++ i ) {
|
|
690
691
|
|
|
691
692
|
data[ i ] = lut[ data[ i ] ];
|
|
692
693
|
|
|
@@ -696,9 +697,9 @@
|
|
|
696
697
|
|
|
697
698
|
function predictor( source ) {
|
|
698
699
|
|
|
699
|
-
for (
|
|
700
|
+
for ( let t = 1; t < source.length; t ++ ) {
|
|
700
701
|
|
|
701
|
-
|
|
702
|
+
const d = source[ t - 1 ] + source[ t ] - 128;
|
|
702
703
|
source[ t ] = d;
|
|
703
704
|
|
|
704
705
|
}
|
|
@@ -707,10 +708,10 @@
|
|
|
707
708
|
|
|
708
709
|
function interleaveScalar( source, out ) {
|
|
709
710
|
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
711
|
+
let t1 = 0;
|
|
712
|
+
let t2 = Math.floor( ( source.length + 1 ) / 2 );
|
|
713
|
+
let s = 0;
|
|
714
|
+
const stop = source.length - 1;
|
|
714
715
|
|
|
715
716
|
while ( true ) {
|
|
716
717
|
|
|
@@ -725,21 +726,21 @@
|
|
|
725
726
|
|
|
726
727
|
function decodeRunLength( source ) {
|
|
727
728
|
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
729
|
+
let size = source.byteLength;
|
|
730
|
+
const out = new Array();
|
|
731
|
+
let p = 0;
|
|
732
|
+
const reader = new DataView( source );
|
|
732
733
|
|
|
733
734
|
while ( size > 0 ) {
|
|
734
735
|
|
|
735
|
-
|
|
736
|
+
const l = reader.getInt8( p ++ );
|
|
736
737
|
|
|
737
738
|
if ( l < 0 ) {
|
|
738
739
|
|
|
739
|
-
|
|
740
|
+
const count = - l;
|
|
740
741
|
size -= count + 1;
|
|
741
742
|
|
|
742
|
-
for (
|
|
743
|
+
for ( let i = 0; i < count; i ++ ) {
|
|
743
744
|
|
|
744
745
|
out.push( reader.getUint8( p ++ ) );
|
|
745
746
|
|
|
@@ -747,11 +748,11 @@
|
|
|
747
748
|
|
|
748
749
|
} else {
|
|
749
750
|
|
|
750
|
-
|
|
751
|
+
const count = l;
|
|
751
752
|
size -= 2;
|
|
752
|
-
|
|
753
|
+
const value = reader.getUint8( p ++ );
|
|
753
754
|
|
|
754
|
-
for (
|
|
755
|
+
for ( let i = 0; i < count + 1; i ++ ) {
|
|
755
756
|
|
|
756
757
|
out.push( value );
|
|
757
758
|
|
|
@@ -767,23 +768,23 @@
|
|
|
767
768
|
|
|
768
769
|
function lossyDctDecode( cscSet, rowPtrs, channelData, acBuffer, dcBuffer, outBuffer ) {
|
|
769
770
|
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
771
|
+
let dataView = new DataView( outBuffer.buffer );
|
|
772
|
+
const width = channelData[ cscSet.idx[ 0 ] ].width;
|
|
773
|
+
const height = channelData[ cscSet.idx[ 0 ] ].height;
|
|
774
|
+
const numComp = 3;
|
|
775
|
+
const numFullBlocksX = Math.floor( width / 8.0 );
|
|
776
|
+
const numBlocksX = Math.ceil( width / 8.0 );
|
|
777
|
+
const numBlocksY = Math.ceil( height / 8.0 );
|
|
778
|
+
const leftoverX = width - ( numBlocksX - 1 ) * 8;
|
|
779
|
+
const leftoverY = height - ( numBlocksY - 1 ) * 8;
|
|
780
|
+
const currAcComp = {
|
|
780
781
|
value: 0
|
|
781
782
|
};
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
783
|
+
const currDcComp = new Array( numComp );
|
|
784
|
+
const dctData = new Array( numComp );
|
|
785
|
+
const halfZigBlock = new Array( numComp );
|
|
786
|
+
const rowBlock = new Array( numComp );
|
|
787
|
+
const rowOffsets = new Array( numComp );
|
|
787
788
|
|
|
788
789
|
for ( let comp = 0; comp < numComp; ++ comp ) {
|
|
789
790
|
|
|
@@ -797,9 +798,9 @@
|
|
|
797
798
|
|
|
798
799
|
for ( let blocky = 0; blocky < numBlocksY; ++ blocky ) {
|
|
799
800
|
|
|
800
|
-
|
|
801
|
+
let maxY = 8;
|
|
801
802
|
if ( blocky == numBlocksY - 1 ) maxY = leftoverY;
|
|
802
|
-
|
|
803
|
+
let maxX = 8;
|
|
803
804
|
|
|
804
805
|
for ( let blockx = 0; blockx < numBlocksX; ++ blockx ) {
|
|
805
806
|
|
|
@@ -884,26 +885,26 @@
|
|
|
884
885
|
} // blocky
|
|
885
886
|
|
|
886
887
|
|
|
887
|
-
|
|
888
|
-
|
|
888
|
+
const halfRow = new Uint16Array( width );
|
|
889
|
+
dataView = new DataView( outBuffer.buffer ); // convert channels back to float, if needed
|
|
889
890
|
|
|
890
|
-
for (
|
|
891
|
+
for ( let comp = 0; comp < numComp; ++ comp ) {
|
|
891
892
|
|
|
892
893
|
channelData[ cscSet.idx[ comp ] ].decoded = true;
|
|
893
|
-
|
|
894
|
+
const type = channelData[ cscSet.idx[ comp ] ].type;
|
|
894
895
|
if ( channelData[ comp ].type != 2 ) continue;
|
|
895
896
|
|
|
896
|
-
for (
|
|
897
|
+
for ( let y = 0; y < height; ++ y ) {
|
|
897
898
|
|
|
898
899
|
const offset = rowOffsets[ comp ][ y ];
|
|
899
900
|
|
|
900
|
-
for (
|
|
901
|
+
for ( let x = 0; x < width; ++ x ) {
|
|
901
902
|
|
|
902
903
|
halfRow[ x ] = dataView.getUint16( offset + x * INT16_SIZE * type, true );
|
|
903
904
|
|
|
904
905
|
}
|
|
905
906
|
|
|
906
|
-
for (
|
|
907
|
+
for ( let x = 0; x < width; ++ x ) {
|
|
907
908
|
|
|
908
909
|
dataView.setFloat32( offset + x * INT16_SIZE * type, decodeFloat16( halfRow[ x ] ), true );
|
|
909
910
|
|
|
@@ -917,8 +918,8 @@
|
|
|
917
918
|
|
|
918
919
|
function unRleAC( currAcComp, acBuffer, halfZigBlock ) {
|
|
919
920
|
|
|
920
|
-
|
|
921
|
-
|
|
921
|
+
let acValue;
|
|
922
|
+
let dctComp = 1;
|
|
922
923
|
|
|
923
924
|
while ( dctComp < 64 ) {
|
|
924
925
|
|
|
@@ -1023,14 +1024,14 @@
|
|
|
1023
1024
|
const e = 0.5 * Math.cos( 5.0 * 3.14159 / 16.0 );
|
|
1024
1025
|
const f = 0.5 * Math.cos( 3.0 * 3.14159 / 8.0 );
|
|
1025
1026
|
const g = 0.5 * Math.cos( 7.0 * 3.14159 / 16.0 );
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1027
|
+
const alpha = new Array( 4 );
|
|
1028
|
+
const beta = new Array( 4 );
|
|
1029
|
+
const theta = new Array( 4 );
|
|
1030
|
+
const gamma = new Array( 4 );
|
|
1030
1031
|
|
|
1031
|
-
for (
|
|
1032
|
+
for ( let row = 0; row < 8; ++ row ) {
|
|
1032
1033
|
|
|
1033
|
-
|
|
1034
|
+
const rowPtr = row * 8;
|
|
1034
1035
|
alpha[ 0 ] = c * data[ rowPtr + 2 ];
|
|
1035
1036
|
alpha[ 1 ] = f * data[ rowPtr + 2 ];
|
|
1036
1037
|
alpha[ 2 ] = c * data[ rowPtr + 6 ];
|
|
@@ -1058,7 +1059,7 @@
|
|
|
1058
1059
|
|
|
1059
1060
|
}
|
|
1060
1061
|
|
|
1061
|
-
for (
|
|
1062
|
+
for ( let column = 0; column < 8; ++ column ) {
|
|
1062
1063
|
|
|
1063
1064
|
alpha[ 0 ] = c * data[ 16 + column ];
|
|
1064
1065
|
alpha[ 1 ] = f * data[ 16 + column ];
|
|
@@ -1091,11 +1092,11 @@
|
|
|
1091
1092
|
|
|
1092
1093
|
function csc709Inverse( data ) {
|
|
1093
1094
|
|
|
1094
|
-
for (
|
|
1095
|
+
for ( let i = 0; i < 64; ++ i ) {
|
|
1095
1096
|
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1097
|
+
const y = data[ 0 ][ i ];
|
|
1098
|
+
const cb = data[ 1 ][ i ];
|
|
1099
|
+
const cr = data[ 2 ][ i ];
|
|
1099
1100
|
data[ 0 ][ i ] = y + 1.5747 * cr;
|
|
1100
1101
|
data[ 1 ][ i ] = y - 0.1873 * cb - 0.4682 * cr;
|
|
1101
1102
|
data[ 2 ][ i ] = y + 1.8556 * cb;
|
|
@@ -1106,7 +1107,7 @@
|
|
|
1106
1107
|
|
|
1107
1108
|
function convertToHalf( src, dst, idx ) {
|
|
1108
1109
|
|
|
1109
|
-
for (
|
|
1110
|
+
for ( let i = 0; i < 64; ++ i ) {
|
|
1110
1111
|
|
|
1111
1112
|
dst[ idx + i ] = THREE.DataUtils.toHalfFloat( toLinear( src[ i ] ) );
|
|
1112
1113
|
|
|
@@ -1136,9 +1137,9 @@
|
|
|
1136
1137
|
|
|
1137
1138
|
function uncompressRLE( info ) {
|
|
1138
1139
|
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1140
|
+
const compressed = info.viewer.buffer.slice( info.offset.value, info.offset.value + info.size );
|
|
1141
|
+
const rawBuffer = new Uint8Array( decodeRunLength( compressed ) );
|
|
1142
|
+
const tmpBuffer = new Uint8Array( rawBuffer.length );
|
|
1142
1143
|
predictor( rawBuffer ); // revert predictor
|
|
1143
1144
|
|
|
1144
1145
|
interleaveScalar( rawBuffer, tmpBuffer ); // interleave pixels
|
|
@@ -1149,7 +1150,7 @@
|
|
|
1149
1150
|
|
|
1150
1151
|
function uncompressZIP( info ) {
|
|
1151
1152
|
|
|
1152
|
-
|
|
1153
|
+
const compressed = info.array.slice( info.offset.value, info.offset.value + info.size );
|
|
1153
1154
|
|
|
1154
1155
|
if ( typeof fflate === 'undefined' ) {
|
|
1155
1156
|
|
|
@@ -1157,9 +1158,9 @@
|
|
|
1157
1158
|
|
|
1158
1159
|
}
|
|
1159
1160
|
|
|
1160
|
-
|
|
1161
|
+
const rawBuffer = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
|
|
1161
1162
|
|
|
1162
|
-
|
|
1163
|
+
const tmpBuffer = new Uint8Array( rawBuffer.length );
|
|
1163
1164
|
predictor( rawBuffer ); // revert predictor
|
|
1164
1165
|
|
|
1165
1166
|
interleaveScalar( rawBuffer, tmpBuffer ); // interleave pixels
|
|
@@ -1170,17 +1171,17 @@
|
|
|
1170
1171
|
|
|
1171
1172
|
function uncompressPIZ( info ) {
|
|
1172
1173
|
|
|
1173
|
-
|
|
1174
|
-
|
|
1174
|
+
const inDataView = info.viewer;
|
|
1175
|
+
const inOffset = {
|
|
1175
1176
|
value: info.offset.value
|
|
1176
1177
|
};
|
|
1177
|
-
|
|
1178
|
-
|
|
1178
|
+
const outBuffer = new Uint16Array( info.width * info.scanlineBlockSize * ( info.channels * info.type ) );
|
|
1179
|
+
const bitmap = new Uint8Array( BITMAP_SIZE ); // Setup channel info
|
|
1179
1180
|
|
|
1180
|
-
|
|
1181
|
-
|
|
1181
|
+
let outBufferEnd = 0;
|
|
1182
|
+
const pizChannelData = new Array( info.channels );
|
|
1182
1183
|
|
|
1183
|
-
for (
|
|
1184
|
+
for ( let i = 0; i < info.channels; i ++ ) {
|
|
1184
1185
|
|
|
1185
1186
|
pizChannelData[ i ] = {};
|
|
1186
1187
|
pizChannelData[ i ][ 'start' ] = outBufferEnd;
|
|
@@ -1193,8 +1194,8 @@
|
|
|
1193
1194
|
} // Read range compression data
|
|
1194
1195
|
|
|
1195
1196
|
|
|
1196
|
-
|
|
1197
|
-
|
|
1197
|
+
const minNonZero = parseUint16( inDataView, inOffset );
|
|
1198
|
+
const maxNonZero = parseUint16( inDataView, inOffset );
|
|
1198
1199
|
|
|
1199
1200
|
if ( maxNonZero >= BITMAP_SIZE ) {
|
|
1200
1201
|
|
|
@@ -1204,7 +1205,7 @@
|
|
|
1204
1205
|
|
|
1205
1206
|
if ( minNonZero <= maxNonZero ) {
|
|
1206
1207
|
|
|
1207
|
-
for (
|
|
1208
|
+
for ( let i = 0; i < maxNonZero - minNonZero + 1; i ++ ) {
|
|
1208
1209
|
|
|
1209
1210
|
bitmap[ i + minNonZero ] = parseUint8( inDataView, inOffset );
|
|
1210
1211
|
|
|
@@ -1213,17 +1214,17 @@
|
|
|
1213
1214
|
} // Reverse LUT
|
|
1214
1215
|
|
|
1215
1216
|
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1217
|
+
const lut = new Uint16Array( USHORT_RANGE );
|
|
1218
|
+
const maxValue = reverseLutFromBitmap( bitmap, lut );
|
|
1219
|
+
const length = parseUint32( inDataView, inOffset ); // Huffman decoding
|
|
1219
1220
|
|
|
1220
1221
|
hufUncompress( info.array, inDataView, inOffset, length, outBuffer, outBufferEnd ); // Wavelet decoding
|
|
1221
1222
|
|
|
1222
|
-
for (
|
|
1223
|
+
for ( let i = 0; i < info.channels; ++ i ) {
|
|
1223
1224
|
|
|
1224
|
-
|
|
1225
|
+
const cd = pizChannelData[ i ];
|
|
1225
1226
|
|
|
1226
|
-
for (
|
|
1227
|
+
for ( let j = 0; j < pizChannelData[ i ].size; ++ j ) {
|
|
1227
1228
|
|
|
1228
1229
|
wav2Decode( outBuffer, cd.start + j, cd.nx, cd.size, cd.ny, cd.nx * cd.size, maxValue );
|
|
1229
1230
|
|
|
@@ -1234,16 +1235,16 @@
|
|
|
1234
1235
|
|
|
1235
1236
|
applyLut( lut, outBuffer, outBufferEnd ); // Rearrange the pixel data into the format expected by the caller.
|
|
1236
1237
|
|
|
1237
|
-
|
|
1238
|
-
|
|
1238
|
+
let tmpOffset = 0;
|
|
1239
|
+
const tmpBuffer = new Uint8Array( outBuffer.buffer.byteLength );
|
|
1239
1240
|
|
|
1240
|
-
for (
|
|
1241
|
+
for ( let y = 0; y < info.lines; y ++ ) {
|
|
1241
1242
|
|
|
1242
|
-
for (
|
|
1243
|
+
for ( let c = 0; c < info.channels; c ++ ) {
|
|
1243
1244
|
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1245
|
+
const cd = pizChannelData[ c ];
|
|
1246
|
+
const n = cd.nx * cd.size;
|
|
1247
|
+
const cp = new Uint8Array( outBuffer.buffer, cd.end * INT16_SIZE, n * INT16_SIZE );
|
|
1247
1248
|
tmpBuffer.set( cp, tmpOffset );
|
|
1248
1249
|
tmpOffset += n * INT16_SIZE;
|
|
1249
1250
|
cd.end += n;
|
|
@@ -1258,7 +1259,7 @@
|
|
|
1258
1259
|
|
|
1259
1260
|
function uncompressPXR( info ) {
|
|
1260
1261
|
|
|
1261
|
-
|
|
1262
|
+
const compressed = info.array.slice( info.offset.value, info.offset.value + info.size );
|
|
1262
1263
|
|
|
1263
1264
|
if ( typeof fflate === 'undefined' ) {
|
|
1264
1265
|
|
|
@@ -1266,7 +1267,7 @@
|
|
|
1266
1267
|
|
|
1267
1268
|
}
|
|
1268
1269
|
|
|
1269
|
-
|
|
1270
|
+
const rawBuffer = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
|
|
1270
1271
|
|
|
1271
1272
|
const sz = info.lines * info.channels * info.width;
|
|
1272
1273
|
const tmpBuffer = info.type == 1 ? new Uint16Array( sz ) : new Uint32Array( sz );
|
|
@@ -1327,13 +1328,13 @@
|
|
|
1327
1328
|
|
|
1328
1329
|
function uncompressDWA( info ) {
|
|
1329
1330
|
|
|
1330
|
-
|
|
1331
|
-
|
|
1331
|
+
const inDataView = info.viewer;
|
|
1332
|
+
const inOffset = {
|
|
1332
1333
|
value: info.offset.value
|
|
1333
1334
|
};
|
|
1334
|
-
|
|
1335
|
+
const outBuffer = new Uint8Array( info.width * info.lines * ( info.channels * info.type * INT16_SIZE ) ); // Read compression header information
|
|
1335
1336
|
|
|
1336
|
-
|
|
1337
|
+
const dwaHeader = {
|
|
1337
1338
|
version: parseInt64( inDataView, inOffset ),
|
|
1338
1339
|
unknownUncompressedSize: parseInt64( inDataView, inOffset ),
|
|
1339
1340
|
unknownCompressedSize: parseInt64( inDataView, inOffset ),
|
|
@@ -1348,17 +1349,17 @@
|
|
|
1348
1349
|
};
|
|
1349
1350
|
if ( dwaHeader.version < 2 ) throw new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' version ' + dwaHeader.version + ' is unsupported' ); // Read channel ruleset information
|
|
1350
1351
|
|
|
1351
|
-
|
|
1352
|
-
|
|
1352
|
+
const channelRules = new Array();
|
|
1353
|
+
let ruleSize = parseUint16( inDataView, inOffset ) - INT16_SIZE;
|
|
1353
1354
|
|
|
1354
1355
|
while ( ruleSize > 0 ) {
|
|
1355
1356
|
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1357
|
+
const name = parseNullTerminatedString( inDataView.buffer, inOffset );
|
|
1358
|
+
const value = parseUint8( inDataView, inOffset );
|
|
1359
|
+
const compression = value >> 2 & 3;
|
|
1360
|
+
const csc = ( value >> 4 ) - 1;
|
|
1361
|
+
const index = new Int8Array( [ csc ] )[ 0 ];
|
|
1362
|
+
const type = parseUint8( inDataView, inOffset );
|
|
1362
1363
|
channelRules.push( {
|
|
1363
1364
|
name: name,
|
|
1364
1365
|
index: index,
|
|
@@ -1370,13 +1371,13 @@
|
|
|
1370
1371
|
} // Classify channels
|
|
1371
1372
|
|
|
1372
1373
|
|
|
1373
|
-
|
|
1374
|
-
|
|
1374
|
+
const channels = EXRHeader.channels;
|
|
1375
|
+
const channelData = new Array( info.channels );
|
|
1375
1376
|
|
|
1376
|
-
for (
|
|
1377
|
+
for ( let i = 0; i < info.channels; ++ i ) {
|
|
1377
1378
|
|
|
1378
|
-
|
|
1379
|
-
|
|
1379
|
+
const cd = channelData[ i ] = {};
|
|
1380
|
+
const channel = channels[ i ];
|
|
1380
1381
|
cd.name = channel.name;
|
|
1381
1382
|
cd.compression = UNKNOWN;
|
|
1382
1383
|
cd.decoded = false;
|
|
@@ -1387,17 +1388,17 @@
|
|
|
1387
1388
|
|
|
1388
1389
|
}
|
|
1389
1390
|
|
|
1390
|
-
|
|
1391
|
+
const cscSet = {
|
|
1391
1392
|
idx: new Array( 3 )
|
|
1392
1393
|
};
|
|
1393
1394
|
|
|
1394
|
-
for (
|
|
1395
|
+
for ( let offset = 0; offset < info.channels; ++ offset ) {
|
|
1395
1396
|
|
|
1396
|
-
|
|
1397
|
+
const cd = channelData[ offset ];
|
|
1397
1398
|
|
|
1398
|
-
for (
|
|
1399
|
+
for ( let i = 0; i < channelRules.length; ++ i ) {
|
|
1399
1400
|
|
|
1400
|
-
|
|
1401
|
+
const rule = channelRules[ i ];
|
|
1401
1402
|
|
|
1402
1403
|
if ( cd.name == rule.name ) {
|
|
1403
1404
|
|
|
@@ -1415,23 +1416,24 @@
|
|
|
1415
1416
|
|
|
1416
1417
|
}
|
|
1417
1418
|
|
|
1418
|
-
}
|
|
1419
|
+
}
|
|
1419
1420
|
|
|
1421
|
+
let acBuffer, dcBuffer, rleBuffer; // Read DCT - AC component data
|
|
1420
1422
|
|
|
1421
1423
|
if ( dwaHeader.acCompressedSize > 0 ) {
|
|
1422
1424
|
|
|
1423
1425
|
switch ( dwaHeader.acCompression ) {
|
|
1424
1426
|
|
|
1425
1427
|
case STATIC_HUFFMAN:
|
|
1426
|
-
|
|
1428
|
+
acBuffer = new Uint16Array( dwaHeader.totalAcUncompressedCount );
|
|
1427
1429
|
hufUncompress( info.array, inDataView, inOffset, dwaHeader.acCompressedSize, acBuffer, dwaHeader.totalAcUncompressedCount );
|
|
1428
1430
|
break;
|
|
1429
1431
|
|
|
1430
1432
|
case DEFLATE:
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
+
const compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.totalAcUncompressedCount );
|
|
1434
|
+
const data = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
|
|
1433
1435
|
|
|
1434
|
-
|
|
1436
|
+
acBuffer = new Uint16Array( data.buffer );
|
|
1435
1437
|
inOffset.value += dwaHeader.totalAcUncompressedCount;
|
|
1436
1438
|
break;
|
|
1437
1439
|
|
|
@@ -1442,12 +1444,12 @@
|
|
|
1442
1444
|
|
|
1443
1445
|
if ( dwaHeader.dcCompressedSize > 0 ) {
|
|
1444
1446
|
|
|
1445
|
-
|
|
1447
|
+
const zlibInfo = {
|
|
1446
1448
|
array: info.array,
|
|
1447
1449
|
offset: inOffset,
|
|
1448
1450
|
size: dwaHeader.dcCompressedSize
|
|
1449
1451
|
};
|
|
1450
|
-
|
|
1452
|
+
dcBuffer = new Uint16Array( uncompressZIP( zlibInfo ).buffer );
|
|
1451
1453
|
inOffset.value += dwaHeader.dcCompressedSize;
|
|
1452
1454
|
|
|
1453
1455
|
} // Read RLE compressed data
|
|
@@ -1455,27 +1457,27 @@
|
|
|
1455
1457
|
|
|
1456
1458
|
if ( dwaHeader.rleRawSize > 0 ) {
|
|
1457
1459
|
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
+
const compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.rleCompressedSize );
|
|
1461
|
+
const data = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
|
|
1460
1462
|
|
|
1461
|
-
|
|
1463
|
+
rleBuffer = decodeRunLength( data.buffer );
|
|
1462
1464
|
inOffset.value += dwaHeader.rleCompressedSize;
|
|
1463
1465
|
|
|
1464
1466
|
} // Prepare outbuffer data offset
|
|
1465
1467
|
|
|
1466
1468
|
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
+
let outBufferEnd = 0;
|
|
1470
|
+
const rowOffsets = new Array( channelData.length );
|
|
1469
1471
|
|
|
1470
|
-
for (
|
|
1472
|
+
for ( let i = 0; i < rowOffsets.length; ++ i ) {
|
|
1471
1473
|
|
|
1472
1474
|
rowOffsets[ i ] = new Array();
|
|
1473
1475
|
|
|
1474
1476
|
}
|
|
1475
1477
|
|
|
1476
|
-
for (
|
|
1478
|
+
for ( let y = 0; y < info.lines; ++ y ) {
|
|
1477
1479
|
|
|
1478
|
-
for (
|
|
1480
|
+
for ( let chan = 0; chan < channelData.length; ++ chan ) {
|
|
1479
1481
|
|
|
1480
1482
|
rowOffsets[ chan ].push( outBufferEnd );
|
|
1481
1483
|
outBufferEnd += channelData[ chan ].width * info.type * INT16_SIZE;
|
|
@@ -1487,24 +1489,24 @@
|
|
|
1487
1489
|
|
|
1488
1490
|
lossyDctDecode( cscSet, rowOffsets, channelData, acBuffer, dcBuffer, outBuffer ); // Decode other channels
|
|
1489
1491
|
|
|
1490
|
-
for (
|
|
1492
|
+
for ( let i = 0; i < channelData.length; ++ i ) {
|
|
1491
1493
|
|
|
1492
|
-
|
|
1494
|
+
const cd = channelData[ i ];
|
|
1493
1495
|
if ( cd.decoded ) continue;
|
|
1494
1496
|
|
|
1495
1497
|
switch ( cd.compression ) {
|
|
1496
1498
|
|
|
1497
1499
|
case RLE:
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
+
let row = 0;
|
|
1501
|
+
let rleOffset = 0;
|
|
1500
1502
|
|
|
1501
|
-
for (
|
|
1503
|
+
for ( let y = 0; y < info.lines; ++ y ) {
|
|
1502
1504
|
|
|
1503
|
-
|
|
1505
|
+
let rowOffsetBytes = rowOffsets[ i ][ row ];
|
|
1504
1506
|
|
|
1505
|
-
for (
|
|
1507
|
+
for ( let x = 0; x < cd.width; ++ x ) {
|
|
1506
1508
|
|
|
1507
|
-
for (
|
|
1509
|
+
for ( let byte = 0; byte < INT16_SIZE * cd.type; ++ byte ) {
|
|
1508
1510
|
|
|
1509
1511
|
outBuffer[ rowOffsetBytes ++ ] = rleBuffer[ rleOffset + byte * cd.width * cd.height ];
|
|
1510
1512
|
|
|
@@ -1535,8 +1537,8 @@
|
|
|
1535
1537
|
|
|
1536
1538
|
function parseNullTerminatedString( buffer, offset ) {
|
|
1537
1539
|
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
+
const uintBuffer = new Uint8Array( buffer );
|
|
1541
|
+
let endOffset = 0;
|
|
1540
1542
|
|
|
1541
1543
|
while ( uintBuffer[ offset.value + endOffset ] != 0 ) {
|
|
1542
1544
|
|
|
@@ -1544,7 +1546,7 @@
|
|
|
1544
1546
|
|
|
1545
1547
|
}
|
|
1546
1548
|
|
|
1547
|
-
|
|
1549
|
+
const stringValue = new TextDecoder().decode( uintBuffer.slice( offset.value, offset.value + endOffset ) );
|
|
1548
1550
|
offset.value = offset.value + endOffset + 1;
|
|
1549
1551
|
return stringValue;
|
|
1550
1552
|
|
|
@@ -1552,7 +1554,7 @@
|
|
|
1552
1554
|
|
|
1553
1555
|
function parseFixedLengthString( buffer, offset, size ) {
|
|
1554
1556
|
|
|
1555
|
-
|
|
1557
|
+
const stringValue = new TextDecoder().decode( new Uint8Array( buffer ).slice( offset.value, offset.value + size ) );
|
|
1556
1558
|
offset.value = offset.value + size;
|
|
1557
1559
|
return stringValue;
|
|
1558
1560
|
|
|
@@ -1560,23 +1562,23 @@
|
|
|
1560
1562
|
|
|
1561
1563
|
function parseRational( dataView, offset ) {
|
|
1562
1564
|
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
+
const x = parseInt32( dataView, offset );
|
|
1566
|
+
const y = parseUint32( dataView, offset );
|
|
1565
1567
|
return [ x, y ];
|
|
1566
1568
|
|
|
1567
1569
|
}
|
|
1568
1570
|
|
|
1569
1571
|
function parseTimecode( dataView, offset ) {
|
|
1570
1572
|
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
+
const x = parseUint32( dataView, offset );
|
|
1574
|
+
const y = parseUint32( dataView, offset );
|
|
1573
1575
|
return [ x, y ];
|
|
1574
1576
|
|
|
1575
1577
|
}
|
|
1576
1578
|
|
|
1577
1579
|
function parseInt32( dataView, offset ) {
|
|
1578
1580
|
|
|
1579
|
-
|
|
1581
|
+
const Int32 = dataView.getInt32( offset.value, true );
|
|
1580
1582
|
offset.value = offset.value + INT32_SIZE;
|
|
1581
1583
|
return Int32;
|
|
1582
1584
|
|
|
@@ -1584,7 +1586,7 @@
|
|
|
1584
1586
|
|
|
1585
1587
|
function parseUint32( dataView, offset ) {
|
|
1586
1588
|
|
|
1587
|
-
|
|
1589
|
+
const Uint32 = dataView.getUint32( offset.value, true );
|
|
1588
1590
|
offset.value = offset.value + INT32_SIZE;
|
|
1589
1591
|
return Uint32;
|
|
1590
1592
|
|
|
@@ -1592,7 +1594,7 @@
|
|
|
1592
1594
|
|
|
1593
1595
|
function parseUint8Array( uInt8Array, offset ) {
|
|
1594
1596
|
|
|
1595
|
-
|
|
1597
|
+
const Uint8 = uInt8Array[ offset.value ];
|
|
1596
1598
|
offset.value = offset.value + INT8_SIZE;
|
|
1597
1599
|
return Uint8;
|
|
1598
1600
|
|
|
@@ -1600,23 +1602,23 @@
|
|
|
1600
1602
|
|
|
1601
1603
|
function parseUint8( dataView, offset ) {
|
|
1602
1604
|
|
|
1603
|
-
|
|
1605
|
+
const Uint8 = dataView.getUint8( offset.value );
|
|
1604
1606
|
offset.value = offset.value + INT8_SIZE;
|
|
1605
1607
|
return Uint8;
|
|
1606
1608
|
|
|
1607
1609
|
}
|
|
1608
1610
|
|
|
1609
|
-
function
|
|
1611
|
+
const parseInt64 = function ( dataView, offset ) {
|
|
1610
1612
|
|
|
1611
|
-
|
|
1613
|
+
const Int64 = Number( dataView.getBigInt64( offset.value, true ) );
|
|
1612
1614
|
offset.value += ULONG_SIZE;
|
|
1613
|
-
return
|
|
1615
|
+
return Int64;
|
|
1614
1616
|
|
|
1615
|
-
}
|
|
1617
|
+
};
|
|
1616
1618
|
|
|
1617
1619
|
function parseFloat32( dataView, offset ) {
|
|
1618
1620
|
|
|
1619
|
-
|
|
1621
|
+
const float = dataView.getFloat32( offset.value, true );
|
|
1620
1622
|
offset.value += FLOAT32_SIZE;
|
|
1621
1623
|
return float;
|
|
1622
1624
|
|
|
@@ -1631,7 +1633,7 @@
|
|
|
1631
1633
|
|
|
1632
1634
|
function decodeFloat16( binary ) {
|
|
1633
1635
|
|
|
1634
|
-
|
|
1636
|
+
const exponent = ( binary & 0x7C00 ) >> 10,
|
|
1635
1637
|
fraction = binary & 0x03FF;
|
|
1636
1638
|
return ( binary >> 15 ? - 1 : 1 ) * ( exponent ? exponent === 0x1F ? fraction ? NaN : Infinity : Math.pow( 2, exponent - 15 ) * ( 1 + fraction / 0x400 ) : 6.103515625e-5 * ( fraction / 0x400 ) );
|
|
1637
1639
|
|
|
@@ -1639,7 +1641,7 @@
|
|
|
1639
1641
|
|
|
1640
1642
|
function parseUint16( dataView, offset ) {
|
|
1641
1643
|
|
|
1642
|
-
|
|
1644
|
+
const Uint16 = dataView.getUint16( offset.value, true );
|
|
1643
1645
|
offset.value += INT16_SIZE;
|
|
1644
1646
|
return Uint16;
|
|
1645
1647
|
|
|
@@ -1653,18 +1655,18 @@
|
|
|
1653
1655
|
|
|
1654
1656
|
function parseChlist( dataView, buffer, offset, size ) {
|
|
1655
1657
|
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
+
const startOffset = offset.value;
|
|
1659
|
+
const channels = [];
|
|
1658
1660
|
|
|
1659
1661
|
while ( offset.value < startOffset + size - 1 ) {
|
|
1660
1662
|
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1663
|
+
const name = parseNullTerminatedString( buffer, offset );
|
|
1664
|
+
const pixelType = parseInt32( dataView, offset );
|
|
1665
|
+
const pLinear = parseUint8( dataView, offset );
|
|
1664
1666
|
offset.value += 3; // reserved, three chars
|
|
1665
1667
|
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
+
const xSampling = parseInt32( dataView, offset );
|
|
1669
|
+
const ySampling = parseInt32( dataView, offset );
|
|
1668
1670
|
channels.push( {
|
|
1669
1671
|
name: name,
|
|
1670
1672
|
pixelType: pixelType,
|
|
@@ -1682,14 +1684,14 @@
|
|
|
1682
1684
|
|
|
1683
1685
|
function parseChromaticities( dataView, offset ) {
|
|
1684
1686
|
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1687
|
+
const redX = parseFloat32( dataView, offset );
|
|
1688
|
+
const redY = parseFloat32( dataView, offset );
|
|
1689
|
+
const greenX = parseFloat32( dataView, offset );
|
|
1690
|
+
const greenY = parseFloat32( dataView, offset );
|
|
1691
|
+
const blueX = parseFloat32( dataView, offset );
|
|
1692
|
+
const blueY = parseFloat32( dataView, offset );
|
|
1693
|
+
const whiteX = parseFloat32( dataView, offset );
|
|
1694
|
+
const whiteY = parseFloat32( dataView, offset );
|
|
1693
1695
|
return {
|
|
1694
1696
|
redX: redX,
|
|
1695
1697
|
redY: redY,
|
|
@@ -1705,18 +1707,18 @@
|
|
|
1705
1707
|
|
|
1706
1708
|
function parseCompression( dataView, offset ) {
|
|
1707
1709
|
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
+
const compressionCodes = [ 'NO_COMPRESSION', 'RLE_COMPRESSION', 'ZIPS_COMPRESSION', 'ZIP_COMPRESSION', 'PIZ_COMPRESSION', 'PXR24_COMPRESSION', 'B44_COMPRESSION', 'B44A_COMPRESSION', 'DWAA_COMPRESSION', 'DWAB_COMPRESSION' ];
|
|
1711
|
+
const compression = parseUint8( dataView, offset );
|
|
1710
1712
|
return compressionCodes[ compression ];
|
|
1711
1713
|
|
|
1712
1714
|
}
|
|
1713
1715
|
|
|
1714
1716
|
function parseBox2i( dataView, offset ) {
|
|
1715
1717
|
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1718
|
+
const xMin = parseUint32( dataView, offset );
|
|
1719
|
+
const yMin = parseUint32( dataView, offset );
|
|
1720
|
+
const xMax = parseUint32( dataView, offset );
|
|
1721
|
+
const yMax = parseUint32( dataView, offset );
|
|
1720
1722
|
return {
|
|
1721
1723
|
xMin: xMin,
|
|
1722
1724
|
yMin: yMin,
|
|
@@ -1728,25 +1730,25 @@
|
|
|
1728
1730
|
|
|
1729
1731
|
function parseLineOrder( dataView, offset ) {
|
|
1730
1732
|
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
+
const lineOrders = [ 'INCREASING_Y' ];
|
|
1734
|
+
const lineOrder = parseUint8( dataView, offset );
|
|
1733
1735
|
return lineOrders[ lineOrder ];
|
|
1734
1736
|
|
|
1735
1737
|
}
|
|
1736
1738
|
|
|
1737
1739
|
function parseV2f( dataView, offset ) {
|
|
1738
1740
|
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
+
const x = parseFloat32( dataView, offset );
|
|
1742
|
+
const y = parseFloat32( dataView, offset );
|
|
1741
1743
|
return [ x, y ];
|
|
1742
1744
|
|
|
1743
1745
|
}
|
|
1744
1746
|
|
|
1745
1747
|
function parseV3f( dataView, offset ) {
|
|
1746
1748
|
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1749
|
+
const x = parseFloat32( dataView, offset );
|
|
1750
|
+
const y = parseFloat32( dataView, offset );
|
|
1751
|
+
const z = parseFloat32( dataView, offset );
|
|
1750
1752
|
return [ x, y, z ];
|
|
1751
1753
|
|
|
1752
1754
|
}
|
|
@@ -1826,23 +1828,23 @@
|
|
|
1826
1828
|
|
|
1827
1829
|
}
|
|
1828
1830
|
|
|
1829
|
-
EXRHeader.version = dataView.getUint8( 4
|
|
1830
|
-
const spec = dataView.getUint8( 5
|
|
1831
|
+
EXRHeader.version = dataView.getUint8( 4 );
|
|
1832
|
+
const spec = dataView.getUint8( 5 ); // fullMask
|
|
1831
1833
|
|
|
1832
1834
|
EXRHeader.spec = {
|
|
1833
|
-
singleTile: !! ( spec &
|
|
1834
|
-
longName: !! ( spec &
|
|
1835
|
-
deepFormat: !! ( spec &
|
|
1836
|
-
multiPart: !! ( spec &
|
|
1835
|
+
singleTile: !! ( spec & 2 ),
|
|
1836
|
+
longName: !! ( spec & 4 ),
|
|
1837
|
+
deepFormat: !! ( spec & 8 ),
|
|
1838
|
+
multiPart: !! ( spec & 16 )
|
|
1837
1839
|
}; // start of header
|
|
1838
1840
|
|
|
1839
1841
|
offset.value = 8; // start at 8 - after pre-amble
|
|
1840
1842
|
|
|
1841
|
-
|
|
1843
|
+
let keepReading = true;
|
|
1842
1844
|
|
|
1843
1845
|
while ( keepReading ) {
|
|
1844
1846
|
|
|
1845
|
-
|
|
1847
|
+
const attributeName = parseNullTerminatedString( buffer, offset );
|
|
1846
1848
|
|
|
1847
1849
|
if ( attributeName == 0 ) {
|
|
1848
1850
|
|
|
@@ -1850,9 +1852,9 @@
|
|
|
1850
1852
|
|
|
1851
1853
|
} else {
|
|
1852
1854
|
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1855
|
+
const attributeType = parseNullTerminatedString( buffer, offset );
|
|
1856
|
+
const attributeSize = parseUint32( dataView, offset );
|
|
1857
|
+
const attributeValue = parseValue( dataView, buffer, offset, attributeType, attributeSize );
|
|
1856
1858
|
|
|
1857
1859
|
if ( attributeValue === undefined ) {
|
|
1858
1860
|
|
|
@@ -1868,8 +1870,9 @@
|
|
|
1868
1870
|
|
|
1869
1871
|
}
|
|
1870
1872
|
|
|
1871
|
-
if ( spec != 0 ) {
|
|
1873
|
+
if ( ( spec & ~ 0x04 ) != 0 ) {
|
|
1872
1874
|
|
|
1875
|
+
// unsupported tiled, deep-image, multi-part
|
|
1873
1876
|
console.error( 'EXRHeader:', EXRHeader );
|
|
1874
1877
|
throw new Error( 'THREE.EXRLoader: provided file is currently unsupported.' );
|
|
1875
1878
|
|
|
@@ -1989,7 +1992,7 @@
|
|
|
1989
1992
|
|
|
1990
1993
|
EXRDecoder.blockCount = ( EXRHeader.dataWindow.yMax + 1 ) / EXRDecoder.scanlineBlockSize;
|
|
1991
1994
|
|
|
1992
|
-
for (
|
|
1995
|
+
for ( let i = 0; i < EXRDecoder.blockCount; i ++ ) parseInt64( dataView, offset ); // scanlineOffset
|
|
1993
1996
|
// we should be passed the scanline offset table, ready to start reading pixel data.
|
|
1994
1997
|
// RGB images will be converted to RGBA format, preventing software emulation in select devices.
|
|
1995
1998
|
|