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
|
@@ -130,9 +130,9 @@ class EXRLoader extends DataTextureLoader {
|
|
|
130
130
|
|
|
131
131
|
function reverseLutFromBitmap( bitmap, lut ) {
|
|
132
132
|
|
|
133
|
-
|
|
133
|
+
let k = 0;
|
|
134
134
|
|
|
135
|
-
for (
|
|
135
|
+
for ( let i = 0; i < USHORT_RANGE; ++ i ) {
|
|
136
136
|
|
|
137
137
|
if ( ( i == 0 ) || ( bitmap[ i >> 3 ] & ( 1 << ( i & 7 ) ) ) ) {
|
|
138
138
|
|
|
@@ -142,7 +142,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
142
142
|
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
|
|
145
|
+
const n = k - 1;
|
|
146
146
|
|
|
147
147
|
while ( k < USHORT_RANGE ) lut[ k ++ ] = 0;
|
|
148
148
|
|
|
@@ -152,7 +152,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
152
152
|
|
|
153
153
|
function hufClearDecTable( hdec ) {
|
|
154
154
|
|
|
155
|
-
for (
|
|
155
|
+
for ( let i = 0; i < HUF_DECSIZE; i ++ ) {
|
|
156
156
|
|
|
157
157
|
hdec[ i ] = {};
|
|
158
158
|
hdec[ i ].len = 0;
|
|
@@ -186,33 +186,33 @@ class EXRLoader extends DataTextureLoader {
|
|
|
186
186
|
|
|
187
187
|
function hufCanonicalCodeTable( hcode ) {
|
|
188
188
|
|
|
189
|
-
for (
|
|
190
|
-
for (
|
|
189
|
+
for ( let i = 0; i <= 58; ++ i ) hufTableBuffer[ i ] = 0;
|
|
190
|
+
for ( let i = 0; i < HUF_ENCSIZE; ++ i ) hufTableBuffer[ hcode[ i ] ] += 1;
|
|
191
191
|
|
|
192
|
-
|
|
192
|
+
let c = 0;
|
|
193
193
|
|
|
194
|
-
for (
|
|
194
|
+
for ( let i = 58; i > 0; -- i ) {
|
|
195
195
|
|
|
196
|
-
|
|
196
|
+
const nc = ( ( c + hufTableBuffer[ i ] ) >> 1 );
|
|
197
197
|
hufTableBuffer[ i ] = c;
|
|
198
198
|
c = nc;
|
|
199
199
|
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
for (
|
|
202
|
+
for ( let i = 0; i < HUF_ENCSIZE; ++ i ) {
|
|
203
203
|
|
|
204
|
-
|
|
204
|
+
const l = hcode[ i ];
|
|
205
205
|
if ( l > 0 ) hcode[ i ] = l | ( hufTableBuffer[ l ] ++ << 6 );
|
|
206
206
|
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
-
function hufUnpackEncTable( uInt8Array,
|
|
211
|
+
function hufUnpackEncTable( uInt8Array, inOffset, ni, im, iM, hcode ) {
|
|
212
212
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
213
|
+
const p = inOffset;
|
|
214
|
+
let c = 0;
|
|
215
|
+
let lc = 0;
|
|
216
216
|
|
|
217
217
|
for ( ; im <= iM; im ++ ) {
|
|
218
218
|
|
|
@@ -220,7 +220,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
220
220
|
|
|
221
221
|
getBits( 6, c, lc, uInt8Array, p );
|
|
222
222
|
|
|
223
|
-
|
|
223
|
+
const l = getBitsReturn.l;
|
|
224
224
|
c = getBitsReturn.c;
|
|
225
225
|
lc = getBitsReturn.lc;
|
|
226
226
|
|
|
@@ -236,7 +236,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
236
236
|
|
|
237
237
|
getBits( 8, c, lc, uInt8Array, p );
|
|
238
238
|
|
|
239
|
-
|
|
239
|
+
let zerun = getBitsReturn.l + SHORTEST_LONG_RUN;
|
|
240
240
|
c = getBitsReturn.c;
|
|
241
241
|
lc = getBitsReturn.lc;
|
|
242
242
|
|
|
@@ -252,7 +252,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
252
252
|
|
|
253
253
|
} else if ( l >= SHORT_ZEROCODE_RUN ) {
|
|
254
254
|
|
|
255
|
-
|
|
255
|
+
let zerun = l - SHORT_ZEROCODE_RUN + 2;
|
|
256
256
|
|
|
257
257
|
if ( im + zerun > iM + 1 ) {
|
|
258
258
|
|
|
@@ -288,8 +288,8 @@ class EXRLoader extends DataTextureLoader {
|
|
|
288
288
|
|
|
289
289
|
for ( ; im <= iM; im ++ ) {
|
|
290
290
|
|
|
291
|
-
|
|
292
|
-
|
|
291
|
+
const c = hufCode( hcode[ im ] );
|
|
292
|
+
const l = hufLength( hcode[ im ] );
|
|
293
293
|
|
|
294
294
|
if ( c >> l ) {
|
|
295
295
|
|
|
@@ -299,7 +299,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
299
299
|
|
|
300
300
|
if ( l > HUF_DECBITS ) {
|
|
301
301
|
|
|
302
|
-
|
|
302
|
+
const pl = hdecod[ ( c >> ( l - HUF_DECBITS ) ) ];
|
|
303
303
|
|
|
304
304
|
if ( pl.len ) {
|
|
305
305
|
|
|
@@ -311,10 +311,10 @@ class EXRLoader extends DataTextureLoader {
|
|
|
311
311
|
|
|
312
312
|
if ( pl.p ) {
|
|
313
313
|
|
|
314
|
-
|
|
314
|
+
const p = pl.p;
|
|
315
315
|
pl.p = new Array( pl.lit );
|
|
316
316
|
|
|
317
|
-
for (
|
|
317
|
+
for ( let i = 0; i < pl.lit - 1; ++ i ) {
|
|
318
318
|
|
|
319
319
|
pl.p[ i ] = p[ i ];
|
|
320
320
|
|
|
@@ -330,11 +330,11 @@ class EXRLoader extends DataTextureLoader {
|
|
|
330
330
|
|
|
331
331
|
} else if ( l ) {
|
|
332
332
|
|
|
333
|
-
|
|
333
|
+
let plOffset = 0;
|
|
334
334
|
|
|
335
|
-
for (
|
|
335
|
+
for ( let i = 1 << ( HUF_DECBITS - l ); i > 0; i -- ) {
|
|
336
336
|
|
|
337
|
-
|
|
337
|
+
const pl = hdecod[ ( c << ( HUF_DECBITS - l ) ) + plOffset ];
|
|
338
338
|
|
|
339
339
|
if ( pl.len || pl.p ) {
|
|
340
340
|
|
|
@@ -371,7 +371,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
371
371
|
|
|
372
372
|
const getCodeReturn = { c: 0, lc: 0 };
|
|
373
373
|
|
|
374
|
-
function getCode( po, rlc, c, lc, uInt8Array,
|
|
374
|
+
function getCode( po, rlc, c, lc, uInt8Array, inOffset, outBuffer, outBufferOffset, outBufferEndOffset ) {
|
|
375
375
|
|
|
376
376
|
if ( po == rlc ) {
|
|
377
377
|
|
|
@@ -385,8 +385,8 @@ class EXRLoader extends DataTextureLoader {
|
|
|
385
385
|
|
|
386
386
|
lc -= 8;
|
|
387
387
|
|
|
388
|
-
|
|
389
|
-
|
|
388
|
+
let cs = ( c >> lc );
|
|
389
|
+
cs = new Uint8Array( [ cs ] )[ 0 ];
|
|
390
390
|
|
|
391
391
|
if ( outBufferOffset.value + cs > outBufferEndOffset ) {
|
|
392
392
|
|
|
@@ -394,7 +394,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
394
394
|
|
|
395
395
|
}
|
|
396
396
|
|
|
397
|
-
|
|
397
|
+
const s = outBuffer[ outBufferOffset.value - 1 ];
|
|
398
398
|
|
|
399
399
|
while ( cs -- > 0 ) {
|
|
400
400
|
|
|
@@ -425,7 +425,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
425
425
|
|
|
426
426
|
function Int16( value ) {
|
|
427
427
|
|
|
428
|
-
|
|
428
|
+
const ref = UInt16( value );
|
|
429
429
|
return ( ref > 0x7FFF ) ? ref - 0x10000 : ref;
|
|
430
430
|
|
|
431
431
|
}
|
|
@@ -434,14 +434,14 @@ class EXRLoader extends DataTextureLoader {
|
|
|
434
434
|
|
|
435
435
|
function wdec14( l, h ) {
|
|
436
436
|
|
|
437
|
-
|
|
438
|
-
|
|
437
|
+
const ls = Int16( l );
|
|
438
|
+
const hs = Int16( h );
|
|
439
439
|
|
|
440
|
-
|
|
441
|
-
|
|
440
|
+
const hi = hs;
|
|
441
|
+
const ai = ls + ( hi & 1 ) + ( hi >> 1 );
|
|
442
442
|
|
|
443
|
-
|
|
444
|
-
|
|
443
|
+
const as = ai;
|
|
444
|
+
const bs = ai - hi;
|
|
445
445
|
|
|
446
446
|
wdec14Return.a = as;
|
|
447
447
|
wdec14Return.b = bs;
|
|
@@ -450,11 +450,11 @@ class EXRLoader extends DataTextureLoader {
|
|
|
450
450
|
|
|
451
451
|
function wdec16( l, h ) {
|
|
452
452
|
|
|
453
|
-
|
|
454
|
-
|
|
453
|
+
const m = UInt16( l );
|
|
454
|
+
const d = UInt16( h );
|
|
455
455
|
|
|
456
|
-
|
|
457
|
-
|
|
456
|
+
const bb = ( m - ( d >> 1 ) ) & MOD_MASK;
|
|
457
|
+
const aa = ( d + bb - A_OFFSET ) & MOD_MASK;
|
|
458
458
|
|
|
459
459
|
wdec14Return.a = aa;
|
|
460
460
|
wdec14Return.b = bb;
|
|
@@ -463,10 +463,11 @@ class EXRLoader extends DataTextureLoader {
|
|
|
463
463
|
|
|
464
464
|
function wav2Decode( buffer, j, nx, ox, ny, oy, mx ) {
|
|
465
465
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
466
|
+
const w14 = mx < ( 1 << 14 );
|
|
467
|
+
const n = ( nx > ny ) ? ny : nx;
|
|
468
|
+
let p = 1;
|
|
469
|
+
let p2;
|
|
470
|
+
let py;
|
|
470
471
|
|
|
471
472
|
while ( p <= n ) p <<= 1;
|
|
472
473
|
|
|
@@ -476,24 +477,24 @@ class EXRLoader extends DataTextureLoader {
|
|
|
476
477
|
|
|
477
478
|
while ( p >= 1 ) {
|
|
478
479
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
480
|
+
py = 0;
|
|
481
|
+
const ey = py + oy * ( ny - p2 );
|
|
482
|
+
const oy1 = oy * p;
|
|
483
|
+
const oy2 = oy * p2;
|
|
484
|
+
const ox1 = ox * p;
|
|
485
|
+
const ox2 = ox * p2;
|
|
486
|
+
let i00, i01, i10, i11;
|
|
486
487
|
|
|
487
488
|
for ( ; py <= ey; py += oy2 ) {
|
|
488
489
|
|
|
489
|
-
|
|
490
|
-
|
|
490
|
+
let px = py;
|
|
491
|
+
const ex = py + ox * ( nx - p2 );
|
|
491
492
|
|
|
492
493
|
for ( ; px <= ex; px += ox2 ) {
|
|
493
494
|
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
495
|
+
const p01 = px + ox1;
|
|
496
|
+
const p10 = px + oy1;
|
|
497
|
+
const p11 = p10 + ox1;
|
|
497
498
|
|
|
498
499
|
if ( w14 ) {
|
|
499
500
|
|
|
@@ -546,7 +547,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
546
547
|
|
|
547
548
|
if ( nx & p ) {
|
|
548
549
|
|
|
549
|
-
|
|
550
|
+
const p10 = px + oy1;
|
|
550
551
|
|
|
551
552
|
if ( w14 )
|
|
552
553
|
wdec14( buffer[ px + j ], buffer[ p10 + j ] );
|
|
@@ -564,12 +565,12 @@ class EXRLoader extends DataTextureLoader {
|
|
|
564
565
|
|
|
565
566
|
if ( ny & p ) {
|
|
566
567
|
|
|
567
|
-
|
|
568
|
-
|
|
568
|
+
let px = py;
|
|
569
|
+
const ex = py + ox * ( nx - p2 );
|
|
569
570
|
|
|
570
571
|
for ( ; px <= ex; px += ox2 ) {
|
|
571
572
|
|
|
572
|
-
|
|
573
|
+
const p01 = px + ox1;
|
|
573
574
|
|
|
574
575
|
if ( w14 )
|
|
575
576
|
wdec14( buffer[ px + j ], buffer[ p01 + j ] );
|
|
@@ -594,12 +595,12 @@ class EXRLoader extends DataTextureLoader {
|
|
|
594
595
|
|
|
595
596
|
}
|
|
596
597
|
|
|
597
|
-
function hufDecode( encodingTable, decodingTable, uInt8Array,
|
|
598
|
+
function hufDecode( encodingTable, decodingTable, uInt8Array, inOffset, ni, rlc, no, outBuffer, outOffset ) {
|
|
598
599
|
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
600
|
+
let c = 0;
|
|
601
|
+
let lc = 0;
|
|
602
|
+
const outBufferEndOffset = no;
|
|
603
|
+
const inOffsetEnd = Math.trunc( inOffset.value + ( ni + 7 ) / 8 );
|
|
603
604
|
|
|
604
605
|
while ( inOffset.value < inOffsetEnd ) {
|
|
605
606
|
|
|
@@ -610,14 +611,14 @@ class EXRLoader extends DataTextureLoader {
|
|
|
610
611
|
|
|
611
612
|
while ( lc >= HUF_DECBITS ) {
|
|
612
613
|
|
|
613
|
-
|
|
614
|
-
|
|
614
|
+
const index = ( c >> ( lc - HUF_DECBITS ) ) & HUF_DECMASK;
|
|
615
|
+
const pl = decodingTable[ index ];
|
|
615
616
|
|
|
616
617
|
if ( pl.len ) {
|
|
617
618
|
|
|
618
619
|
lc -= pl.len;
|
|
619
620
|
|
|
620
|
-
getCode( pl.lit, rlc, c, lc, uInt8Array,
|
|
621
|
+
getCode( pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset );
|
|
621
622
|
|
|
622
623
|
c = getCodeReturn.c;
|
|
623
624
|
lc = getCodeReturn.lc;
|
|
@@ -630,11 +631,11 @@ class EXRLoader extends DataTextureLoader {
|
|
|
630
631
|
|
|
631
632
|
}
|
|
632
633
|
|
|
633
|
-
|
|
634
|
+
let j;
|
|
634
635
|
|
|
635
636
|
for ( j = 0; j < pl.lit; j ++ ) {
|
|
636
637
|
|
|
637
|
-
|
|
638
|
+
const l = hufLength( encodingTable[ pl.p[ j ] ] );
|
|
638
639
|
|
|
639
640
|
while ( lc < l && inOffset.value < inOffsetEnd ) {
|
|
640
641
|
|
|
@@ -651,7 +652,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
651
652
|
|
|
652
653
|
lc -= l;
|
|
653
654
|
|
|
654
|
-
getCode( pl.p[ j ], rlc, c, lc, uInt8Array,
|
|
655
|
+
getCode( pl.p[ j ], rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset );
|
|
655
656
|
|
|
656
657
|
c = getCodeReturn.c;
|
|
657
658
|
lc = getCodeReturn.lc;
|
|
@@ -676,20 +677,20 @@ class EXRLoader extends DataTextureLoader {
|
|
|
676
677
|
|
|
677
678
|
}
|
|
678
679
|
|
|
679
|
-
|
|
680
|
+
const i = ( 8 - ni ) & 7;
|
|
680
681
|
|
|
681
682
|
c >>= i;
|
|
682
683
|
lc -= i;
|
|
683
684
|
|
|
684
685
|
while ( lc > 0 ) {
|
|
685
686
|
|
|
686
|
-
|
|
687
|
+
const pl = decodingTable[ ( c << ( HUF_DECBITS - lc ) ) & HUF_DECMASK ];
|
|
687
688
|
|
|
688
689
|
if ( pl.len ) {
|
|
689
690
|
|
|
690
691
|
lc -= pl.len;
|
|
691
692
|
|
|
692
|
-
getCode( pl.lit, rlc, c, lc, uInt8Array,
|
|
693
|
+
getCode( pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset );
|
|
693
694
|
|
|
694
695
|
c = getCodeReturn.c;
|
|
695
696
|
lc = getCodeReturn.lc;
|
|
@@ -708,15 +709,15 @@ class EXRLoader extends DataTextureLoader {
|
|
|
708
709
|
|
|
709
710
|
function hufUncompress( uInt8Array, inDataView, inOffset, nCompressed, outBuffer, nRaw ) {
|
|
710
711
|
|
|
711
|
-
|
|
712
|
-
|
|
712
|
+
const outOffset = { value: 0 };
|
|
713
|
+
const initialInOffset = inOffset.value;
|
|
713
714
|
|
|
714
|
-
|
|
715
|
-
|
|
715
|
+
const im = parseUint32( inDataView, inOffset );
|
|
716
|
+
const iM = parseUint32( inDataView, inOffset );
|
|
716
717
|
|
|
717
718
|
inOffset.value += 4;
|
|
718
719
|
|
|
719
|
-
|
|
720
|
+
const nBits = parseUint32( inDataView, inOffset );
|
|
720
721
|
|
|
721
722
|
inOffset.value += 4;
|
|
722
723
|
|
|
@@ -726,14 +727,14 @@ class EXRLoader extends DataTextureLoader {
|
|
|
726
727
|
|
|
727
728
|
}
|
|
728
729
|
|
|
729
|
-
|
|
730
|
-
|
|
730
|
+
const freq = new Array( HUF_ENCSIZE );
|
|
731
|
+
const hdec = new Array( HUF_DECSIZE );
|
|
731
732
|
|
|
732
733
|
hufClearDecTable( hdec );
|
|
733
734
|
|
|
734
|
-
|
|
735
|
+
const ni = nCompressed - ( inOffset.value - initialInOffset );
|
|
735
736
|
|
|
736
|
-
hufUnpackEncTable( uInt8Array,
|
|
737
|
+
hufUnpackEncTable( uInt8Array, inOffset, ni, im, iM, freq );
|
|
737
738
|
|
|
738
739
|
if ( nBits > 8 * ( nCompressed - ( inOffset.value - initialInOffset ) ) ) {
|
|
739
740
|
|
|
@@ -743,13 +744,13 @@ class EXRLoader extends DataTextureLoader {
|
|
|
743
744
|
|
|
744
745
|
hufBuildDecTable( freq, im, iM, hdec );
|
|
745
746
|
|
|
746
|
-
hufDecode( freq, hdec, uInt8Array,
|
|
747
|
+
hufDecode( freq, hdec, uInt8Array, inOffset, nBits, iM, nRaw, outBuffer, outOffset );
|
|
747
748
|
|
|
748
749
|
}
|
|
749
750
|
|
|
750
751
|
function applyLut( lut, data, nData ) {
|
|
751
752
|
|
|
752
|
-
for (
|
|
753
|
+
for ( let i = 0; i < nData; ++ i ) {
|
|
753
754
|
|
|
754
755
|
data[ i ] = lut[ data[ i ] ];
|
|
755
756
|
|
|
@@ -759,9 +760,9 @@ class EXRLoader extends DataTextureLoader {
|
|
|
759
760
|
|
|
760
761
|
function predictor( source ) {
|
|
761
762
|
|
|
762
|
-
for (
|
|
763
|
+
for ( let t = 1; t < source.length; t ++ ) {
|
|
763
764
|
|
|
764
|
-
|
|
765
|
+
const d = source[ t - 1 ] + source[ t ] - 128;
|
|
765
766
|
source[ t ] = d;
|
|
766
767
|
|
|
767
768
|
}
|
|
@@ -770,10 +771,10 @@ class EXRLoader extends DataTextureLoader {
|
|
|
770
771
|
|
|
771
772
|
function interleaveScalar( source, out ) {
|
|
772
773
|
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
774
|
+
let t1 = 0;
|
|
775
|
+
let t2 = Math.floor( ( source.length + 1 ) / 2 );
|
|
776
|
+
let s = 0;
|
|
777
|
+
const stop = source.length - 1;
|
|
777
778
|
|
|
778
779
|
while ( true ) {
|
|
779
780
|
|
|
@@ -789,22 +790,22 @@ class EXRLoader extends DataTextureLoader {
|
|
|
789
790
|
|
|
790
791
|
function decodeRunLength( source ) {
|
|
791
792
|
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
793
|
+
let size = source.byteLength;
|
|
794
|
+
const out = new Array();
|
|
795
|
+
let p = 0;
|
|
795
796
|
|
|
796
|
-
|
|
797
|
+
const reader = new DataView( source );
|
|
797
798
|
|
|
798
799
|
while ( size > 0 ) {
|
|
799
800
|
|
|
800
|
-
|
|
801
|
+
const l = reader.getInt8( p ++ );
|
|
801
802
|
|
|
802
803
|
if ( l < 0 ) {
|
|
803
804
|
|
|
804
|
-
|
|
805
|
+
const count = - l;
|
|
805
806
|
size -= count + 1;
|
|
806
807
|
|
|
807
|
-
for (
|
|
808
|
+
for ( let i = 0; i < count; i ++ ) {
|
|
808
809
|
|
|
809
810
|
out.push( reader.getUint8( p ++ ) );
|
|
810
811
|
|
|
@@ -813,12 +814,12 @@ class EXRLoader extends DataTextureLoader {
|
|
|
813
814
|
|
|
814
815
|
} else {
|
|
815
816
|
|
|
816
|
-
|
|
817
|
+
const count = l;
|
|
817
818
|
size -= 2;
|
|
818
819
|
|
|
819
|
-
|
|
820
|
+
const value = reader.getUint8( p ++ );
|
|
820
821
|
|
|
821
|
-
for (
|
|
822
|
+
for ( let i = 0; i < count + 1; i ++ ) {
|
|
822
823
|
|
|
823
824
|
out.push( value );
|
|
824
825
|
|
|
@@ -834,25 +835,25 @@ class EXRLoader extends DataTextureLoader {
|
|
|
834
835
|
|
|
835
836
|
function lossyDctDecode( cscSet, rowPtrs, channelData, acBuffer, dcBuffer, outBuffer ) {
|
|
836
837
|
|
|
837
|
-
|
|
838
|
+
let dataView = new DataView( outBuffer.buffer );
|
|
838
839
|
|
|
839
|
-
|
|
840
|
-
|
|
840
|
+
const width = channelData[ cscSet.idx[ 0 ] ].width;
|
|
841
|
+
const height = channelData[ cscSet.idx[ 0 ] ].height;
|
|
841
842
|
|
|
842
|
-
|
|
843
|
+
const numComp = 3;
|
|
843
844
|
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
845
|
+
const numFullBlocksX = Math.floor( width / 8.0 );
|
|
846
|
+
const numBlocksX = Math.ceil( width / 8.0 );
|
|
847
|
+
const numBlocksY = Math.ceil( height / 8.0 );
|
|
848
|
+
const leftoverX = width - ( numBlocksX - 1 ) * 8;
|
|
849
|
+
const leftoverY = height - ( numBlocksY - 1 ) * 8;
|
|
849
850
|
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
851
|
+
const currAcComp = { value: 0 };
|
|
852
|
+
const currDcComp = new Array( numComp );
|
|
853
|
+
const dctData = new Array( numComp );
|
|
854
|
+
const halfZigBlock = new Array( numComp );
|
|
855
|
+
const rowBlock = new Array( numComp );
|
|
856
|
+
const rowOffsets = new Array( numComp );
|
|
856
857
|
|
|
857
858
|
for ( let comp = 0; comp < numComp; ++ comp ) {
|
|
858
859
|
|
|
@@ -866,12 +867,12 @@ class EXRLoader extends DataTextureLoader {
|
|
|
866
867
|
|
|
867
868
|
for ( let blocky = 0; blocky < numBlocksY; ++ blocky ) {
|
|
868
869
|
|
|
869
|
-
|
|
870
|
+
let maxY = 8;
|
|
870
871
|
|
|
871
872
|
if ( blocky == numBlocksY - 1 )
|
|
872
873
|
maxY = leftoverY;
|
|
873
874
|
|
|
874
|
-
|
|
875
|
+
let maxX = 8;
|
|
875
876
|
|
|
876
877
|
for ( let blockx = 0; blockx < numBlocksX; ++ blockx ) {
|
|
877
878
|
|
|
@@ -960,28 +961,28 @@ class EXRLoader extends DataTextureLoader {
|
|
|
960
961
|
|
|
961
962
|
} // blocky
|
|
962
963
|
|
|
963
|
-
|
|
964
|
-
|
|
964
|
+
const halfRow = new Uint16Array( width );
|
|
965
|
+
dataView = new DataView( outBuffer.buffer );
|
|
965
966
|
|
|
966
967
|
// convert channels back to float, if needed
|
|
967
|
-
for (
|
|
968
|
+
for ( let comp = 0; comp < numComp; ++ comp ) {
|
|
968
969
|
|
|
969
970
|
channelData[ cscSet.idx[ comp ] ].decoded = true;
|
|
970
|
-
|
|
971
|
+
const type = channelData[ cscSet.idx[ comp ] ].type;
|
|
971
972
|
|
|
972
973
|
if ( channelData[ comp ].type != 2 ) continue;
|
|
973
974
|
|
|
974
|
-
for (
|
|
975
|
+
for ( let y = 0; y < height; ++ y ) {
|
|
975
976
|
|
|
976
977
|
const offset = rowOffsets[ comp ][ y ];
|
|
977
978
|
|
|
978
|
-
for (
|
|
979
|
+
for ( let x = 0; x < width; ++ x ) {
|
|
979
980
|
|
|
980
981
|
halfRow[ x ] = dataView.getUint16( offset + x * INT16_SIZE * type, true );
|
|
981
982
|
|
|
982
983
|
}
|
|
983
984
|
|
|
984
|
-
for (
|
|
985
|
+
for ( let x = 0; x < width; ++ x ) {
|
|
985
986
|
|
|
986
987
|
dataView.setFloat32( offset + x * INT16_SIZE * type, decodeFloat16( halfRow[ x ] ), true );
|
|
987
988
|
|
|
@@ -995,8 +996,8 @@ class EXRLoader extends DataTextureLoader {
|
|
|
995
996
|
|
|
996
997
|
function unRleAC( currAcComp, acBuffer, halfZigBlock ) {
|
|
997
998
|
|
|
998
|
-
|
|
999
|
-
|
|
999
|
+
let acValue;
|
|
1000
|
+
let dctComp = 1;
|
|
1000
1001
|
|
|
1001
1002
|
while ( dctComp < 64 ) {
|
|
1002
1003
|
|
|
@@ -1108,14 +1109,14 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1108
1109
|
const f = 0.5 * Math.cos( 3.0 * 3.14159 / 8.0 );
|
|
1109
1110
|
const g = 0.5 * Math.cos( 7.0 * 3.14159 / 16.0 );
|
|
1110
1111
|
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1112
|
+
const alpha = new Array( 4 );
|
|
1113
|
+
const beta = new Array( 4 );
|
|
1114
|
+
const theta = new Array( 4 );
|
|
1115
|
+
const gamma = new Array( 4 );
|
|
1115
1116
|
|
|
1116
|
-
for (
|
|
1117
|
+
for ( let row = 0; row < 8; ++ row ) {
|
|
1117
1118
|
|
|
1118
|
-
|
|
1119
|
+
const rowPtr = row * 8;
|
|
1119
1120
|
|
|
1120
1121
|
alpha[ 0 ] = c * data[ rowPtr + 2 ];
|
|
1121
1122
|
alpha[ 1 ] = f * data[ rowPtr + 2 ];
|
|
@@ -1149,7 +1150,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1149
1150
|
|
|
1150
1151
|
}
|
|
1151
1152
|
|
|
1152
|
-
for (
|
|
1153
|
+
for ( let column = 0; column < 8; ++ column ) {
|
|
1153
1154
|
|
|
1154
1155
|
alpha[ 0 ] = c * data[ 16 + column ];
|
|
1155
1156
|
alpha[ 1 ] = f * data[ 16 + column ];
|
|
@@ -1188,11 +1189,11 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1188
1189
|
|
|
1189
1190
|
function csc709Inverse( data ) {
|
|
1190
1191
|
|
|
1191
|
-
for (
|
|
1192
|
+
for ( let i = 0; i < 64; ++ i ) {
|
|
1192
1193
|
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1194
|
+
const y = data[ 0 ][ i ];
|
|
1195
|
+
const cb = data[ 1 ][ i ];
|
|
1196
|
+
const cr = data[ 2 ][ i ];
|
|
1196
1197
|
|
|
1197
1198
|
data[ 0 ][ i ] = y + 1.5747 * cr;
|
|
1198
1199
|
data[ 1 ][ i ] = y - 0.1873 * cb - 0.4682 * cr;
|
|
@@ -1204,7 +1205,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1204
1205
|
|
|
1205
1206
|
function convertToHalf( src, dst, idx ) {
|
|
1206
1207
|
|
|
1207
|
-
for (
|
|
1208
|
+
for ( let i = 0; i < 64; ++ i ) {
|
|
1208
1209
|
|
|
1209
1210
|
dst[ idx + i ] = DataUtils.toHalfFloat( toLinear( src[ i ] ) );
|
|
1210
1211
|
|
|
@@ -1234,10 +1235,10 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1234
1235
|
|
|
1235
1236
|
function uncompressRLE( info ) {
|
|
1236
1237
|
|
|
1237
|
-
|
|
1238
|
+
const compressed = info.viewer.buffer.slice( info.offset.value, info.offset.value + info.size );
|
|
1238
1239
|
|
|
1239
|
-
|
|
1240
|
-
|
|
1240
|
+
const rawBuffer = new Uint8Array( decodeRunLength( compressed ) );
|
|
1241
|
+
const tmpBuffer = new Uint8Array( rawBuffer.length );
|
|
1241
1242
|
|
|
1242
1243
|
predictor( rawBuffer ); // revert predictor
|
|
1243
1244
|
|
|
@@ -1249,7 +1250,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1249
1250
|
|
|
1250
1251
|
function uncompressZIP( info ) {
|
|
1251
1252
|
|
|
1252
|
-
|
|
1253
|
+
const compressed = info.array.slice( info.offset.value, info.offset.value + info.size );
|
|
1253
1254
|
|
|
1254
1255
|
if ( typeof fflate === 'undefined' ) {
|
|
1255
1256
|
|
|
@@ -1257,8 +1258,8 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1257
1258
|
|
|
1258
1259
|
}
|
|
1259
1260
|
|
|
1260
|
-
|
|
1261
|
-
|
|
1261
|
+
const rawBuffer = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
|
|
1262
|
+
const tmpBuffer = new Uint8Array( rawBuffer.length );
|
|
1262
1263
|
|
|
1263
1264
|
predictor( rawBuffer ); // revert predictor
|
|
1264
1265
|
|
|
@@ -1270,16 +1271,16 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1270
1271
|
|
|
1271
1272
|
function uncompressPIZ( info ) {
|
|
1272
1273
|
|
|
1273
|
-
|
|
1274
|
-
|
|
1274
|
+
const inDataView = info.viewer;
|
|
1275
|
+
const inOffset = { value: info.offset.value };
|
|
1275
1276
|
|
|
1276
|
-
|
|
1277
|
-
|
|
1277
|
+
const outBuffer = new Uint16Array( info.width * info.scanlineBlockSize * ( info.channels * info.type ) );
|
|
1278
|
+
const bitmap = new Uint8Array( BITMAP_SIZE );
|
|
1278
1279
|
|
|
1279
1280
|
// Setup channel info
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
for (
|
|
1281
|
+
let outBufferEnd = 0;
|
|
1282
|
+
const pizChannelData = new Array( info.channels );
|
|
1283
|
+
for ( let i = 0; i < info.channels; i ++ ) {
|
|
1283
1284
|
|
|
1284
1285
|
pizChannelData[ i ] = {};
|
|
1285
1286
|
pizChannelData[ i ][ 'start' ] = outBufferEnd;
|
|
@@ -1294,8 +1295,8 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1294
1295
|
|
|
1295
1296
|
// Read range compression data
|
|
1296
1297
|
|
|
1297
|
-
|
|
1298
|
-
|
|
1298
|
+
const minNonZero = parseUint16( inDataView, inOffset );
|
|
1299
|
+
const maxNonZero = parseUint16( inDataView, inOffset );
|
|
1299
1300
|
|
|
1300
1301
|
if ( maxNonZero >= BITMAP_SIZE ) {
|
|
1301
1302
|
|
|
@@ -1305,7 +1306,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1305
1306
|
|
|
1306
1307
|
if ( minNonZero <= maxNonZero ) {
|
|
1307
1308
|
|
|
1308
|
-
for (
|
|
1309
|
+
for ( let i = 0; i < maxNonZero - minNonZero + 1; i ++ ) {
|
|
1309
1310
|
|
|
1310
1311
|
bitmap[ i + minNonZero ] = parseUint8( inDataView, inOffset );
|
|
1311
1312
|
|
|
@@ -1314,20 +1315,20 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1314
1315
|
}
|
|
1315
1316
|
|
|
1316
1317
|
// Reverse LUT
|
|
1317
|
-
|
|
1318
|
-
|
|
1318
|
+
const lut = new Uint16Array( USHORT_RANGE );
|
|
1319
|
+
const maxValue = reverseLutFromBitmap( bitmap, lut );
|
|
1319
1320
|
|
|
1320
|
-
|
|
1321
|
+
const length = parseUint32( inDataView, inOffset );
|
|
1321
1322
|
|
|
1322
1323
|
// Huffman decoding
|
|
1323
1324
|
hufUncompress( info.array, inDataView, inOffset, length, outBuffer, outBufferEnd );
|
|
1324
1325
|
|
|
1325
1326
|
// Wavelet decoding
|
|
1326
|
-
for (
|
|
1327
|
+
for ( let i = 0; i < info.channels; ++ i ) {
|
|
1327
1328
|
|
|
1328
|
-
|
|
1329
|
+
const cd = pizChannelData[ i ];
|
|
1329
1330
|
|
|
1330
|
-
for (
|
|
1331
|
+
for ( let j = 0; j < pizChannelData[ i ].size; ++ j ) {
|
|
1331
1332
|
|
|
1332
1333
|
wav2Decode(
|
|
1333
1334
|
outBuffer,
|
|
@@ -1347,16 +1348,16 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1347
1348
|
applyLut( lut, outBuffer, outBufferEnd );
|
|
1348
1349
|
|
|
1349
1350
|
// Rearrange the pixel data into the format expected by the caller.
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
for (
|
|
1351
|
+
let tmpOffset = 0;
|
|
1352
|
+
const tmpBuffer = new Uint8Array( outBuffer.buffer.byteLength );
|
|
1353
|
+
for ( let y = 0; y < info.lines; y ++ ) {
|
|
1353
1354
|
|
|
1354
|
-
for (
|
|
1355
|
+
for ( let c = 0; c < info.channels; c ++ ) {
|
|
1355
1356
|
|
|
1356
|
-
|
|
1357
|
+
const cd = pizChannelData[ c ];
|
|
1357
1358
|
|
|
1358
|
-
|
|
1359
|
-
|
|
1359
|
+
const n = cd.nx * cd.size;
|
|
1360
|
+
const cp = new Uint8Array( outBuffer.buffer, cd.end * INT16_SIZE, n * INT16_SIZE );
|
|
1360
1361
|
|
|
1361
1362
|
tmpBuffer.set( cp, tmpOffset );
|
|
1362
1363
|
tmpOffset += n * INT16_SIZE;
|
|
@@ -1372,7 +1373,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1372
1373
|
|
|
1373
1374
|
function uncompressPXR( info ) {
|
|
1374
1375
|
|
|
1375
|
-
|
|
1376
|
+
const compressed = info.array.slice( info.offset.value, info.offset.value + info.size );
|
|
1376
1377
|
|
|
1377
1378
|
if ( typeof fflate === 'undefined' ) {
|
|
1378
1379
|
|
|
@@ -1380,7 +1381,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1380
1381
|
|
|
1381
1382
|
}
|
|
1382
1383
|
|
|
1383
|
-
|
|
1384
|
+
const rawBuffer = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
|
|
1384
1385
|
|
|
1385
1386
|
const sz = info.lines * info.channels * info.width;
|
|
1386
1387
|
const tmpBuffer = ( info.type == 1 ) ? new Uint16Array( sz ) : new Uint32Array( sz );
|
|
@@ -1448,12 +1449,12 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1448
1449
|
|
|
1449
1450
|
function uncompressDWA( info ) {
|
|
1450
1451
|
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1452
|
+
const inDataView = info.viewer;
|
|
1453
|
+
const inOffset = { value: info.offset.value };
|
|
1454
|
+
const outBuffer = new Uint8Array( info.width * info.lines * ( info.channels * info.type * INT16_SIZE ) );
|
|
1454
1455
|
|
|
1455
1456
|
// Read compression header information
|
|
1456
|
-
|
|
1457
|
+
const dwaHeader = {
|
|
1457
1458
|
|
|
1458
1459
|
version: parseInt64( inDataView, inOffset ),
|
|
1459
1460
|
unknownUncompressedSize: parseInt64( inDataView, inOffset ),
|
|
@@ -1473,17 +1474,17 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1473
1474
|
throw new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' version ' + dwaHeader.version + ' is unsupported' );
|
|
1474
1475
|
|
|
1475
1476
|
// Read channel ruleset information
|
|
1476
|
-
|
|
1477
|
-
|
|
1477
|
+
const channelRules = new Array();
|
|
1478
|
+
let ruleSize = parseUint16( inDataView, inOffset ) - INT16_SIZE;
|
|
1478
1479
|
|
|
1479
1480
|
while ( ruleSize > 0 ) {
|
|
1480
1481
|
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1482
|
+
const name = parseNullTerminatedString( inDataView.buffer, inOffset );
|
|
1483
|
+
const value = parseUint8( inDataView, inOffset );
|
|
1484
|
+
const compression = ( value >> 2 ) & 3;
|
|
1485
|
+
const csc = ( value >> 4 ) - 1;
|
|
1486
|
+
const index = new Int8Array( [ csc ] )[ 0 ];
|
|
1487
|
+
const type = parseUint8( inDataView, inOffset );
|
|
1487
1488
|
|
|
1488
1489
|
channelRules.push( {
|
|
1489
1490
|
name: name,
|
|
@@ -1497,13 +1498,13 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1497
1498
|
}
|
|
1498
1499
|
|
|
1499
1500
|
// Classify channels
|
|
1500
|
-
|
|
1501
|
-
|
|
1501
|
+
const channels = EXRHeader.channels;
|
|
1502
|
+
const channelData = new Array( info.channels );
|
|
1502
1503
|
|
|
1503
|
-
for (
|
|
1504
|
+
for ( let i = 0; i < info.channels; ++ i ) {
|
|
1504
1505
|
|
|
1505
|
-
|
|
1506
|
-
|
|
1506
|
+
const cd = channelData[ i ] = {};
|
|
1507
|
+
const channel = channels[ i ];
|
|
1507
1508
|
|
|
1508
1509
|
cd.name = channel.name;
|
|
1509
1510
|
cd.compression = UNKNOWN;
|
|
@@ -1515,17 +1516,17 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1515
1516
|
|
|
1516
1517
|
}
|
|
1517
1518
|
|
|
1518
|
-
|
|
1519
|
+
const cscSet = {
|
|
1519
1520
|
idx: new Array( 3 )
|
|
1520
1521
|
};
|
|
1521
1522
|
|
|
1522
|
-
for (
|
|
1523
|
+
for ( let offset = 0; offset < info.channels; ++ offset ) {
|
|
1523
1524
|
|
|
1524
|
-
|
|
1525
|
+
const cd = channelData[ offset ];
|
|
1525
1526
|
|
|
1526
|
-
for (
|
|
1527
|
+
for ( let i = 0; i < channelRules.length; ++ i ) {
|
|
1527
1528
|
|
|
1528
|
-
|
|
1529
|
+
const rule = channelRules[ i ];
|
|
1529
1530
|
|
|
1530
1531
|
if ( cd.name == rule.name ) {
|
|
1531
1532
|
|
|
@@ -1545,6 +1546,8 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1545
1546
|
|
|
1546
1547
|
}
|
|
1547
1548
|
|
|
1549
|
+
let acBuffer, dcBuffer, rleBuffer;
|
|
1550
|
+
|
|
1548
1551
|
// Read DCT - AC component data
|
|
1549
1552
|
if ( dwaHeader.acCompressedSize > 0 ) {
|
|
1550
1553
|
|
|
@@ -1552,15 +1555,15 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1552
1555
|
|
|
1553
1556
|
case STATIC_HUFFMAN:
|
|
1554
1557
|
|
|
1555
|
-
|
|
1558
|
+
acBuffer = new Uint16Array( dwaHeader.totalAcUncompressedCount );
|
|
1556
1559
|
hufUncompress( info.array, inDataView, inOffset, dwaHeader.acCompressedSize, acBuffer, dwaHeader.totalAcUncompressedCount );
|
|
1557
1560
|
break;
|
|
1558
1561
|
|
|
1559
1562
|
case DEFLATE:
|
|
1560
1563
|
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
+
const compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.totalAcUncompressedCount );
|
|
1565
|
+
const data = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
|
|
1566
|
+
acBuffer = new Uint16Array( data.buffer );
|
|
1564
1567
|
inOffset.value += dwaHeader.totalAcUncompressedCount;
|
|
1565
1568
|
break;
|
|
1566
1569
|
|
|
@@ -1572,12 +1575,12 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1572
1575
|
// Read DCT - DC component data
|
|
1573
1576
|
if ( dwaHeader.dcCompressedSize > 0 ) {
|
|
1574
1577
|
|
|
1575
|
-
|
|
1578
|
+
const zlibInfo = {
|
|
1576
1579
|
array: info.array,
|
|
1577
1580
|
offset: inOffset,
|
|
1578
1581
|
size: dwaHeader.dcCompressedSize
|
|
1579
1582
|
};
|
|
1580
|
-
|
|
1583
|
+
dcBuffer = new Uint16Array( uncompressZIP( zlibInfo ).buffer );
|
|
1581
1584
|
inOffset.value += dwaHeader.dcCompressedSize;
|
|
1582
1585
|
|
|
1583
1586
|
}
|
|
@@ -1585,26 +1588,26 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1585
1588
|
// Read RLE compressed data
|
|
1586
1589
|
if ( dwaHeader.rleRawSize > 0 ) {
|
|
1587
1590
|
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
+
const compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.rleCompressedSize );
|
|
1592
|
+
const data = fflate.unzlibSync( compressed ); // eslint-disable-line no-undef
|
|
1593
|
+
rleBuffer = decodeRunLength( data.buffer );
|
|
1591
1594
|
|
|
1592
1595
|
inOffset.value += dwaHeader.rleCompressedSize;
|
|
1593
1596
|
|
|
1594
1597
|
}
|
|
1595
1598
|
|
|
1596
1599
|
// Prepare outbuffer data offset
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
for (
|
|
1600
|
+
let outBufferEnd = 0;
|
|
1601
|
+
const rowOffsets = new Array( channelData.length );
|
|
1602
|
+
for ( let i = 0; i < rowOffsets.length; ++ i ) {
|
|
1600
1603
|
|
|
1601
1604
|
rowOffsets[ i ] = new Array();
|
|
1602
1605
|
|
|
1603
1606
|
}
|
|
1604
1607
|
|
|
1605
|
-
for (
|
|
1608
|
+
for ( let y = 0; y < info.lines; ++ y ) {
|
|
1606
1609
|
|
|
1607
|
-
for (
|
|
1610
|
+
for ( let chan = 0; chan < channelData.length; ++ chan ) {
|
|
1608
1611
|
|
|
1609
1612
|
rowOffsets[ chan ].push( outBufferEnd );
|
|
1610
1613
|
outBufferEnd += channelData[ chan ].width * info.type * INT16_SIZE;
|
|
@@ -1617,9 +1620,9 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1617
1620
|
lossyDctDecode( cscSet, rowOffsets, channelData, acBuffer, dcBuffer, outBuffer );
|
|
1618
1621
|
|
|
1619
1622
|
// Decode other channels
|
|
1620
|
-
for (
|
|
1623
|
+
for ( let i = 0; i < channelData.length; ++ i ) {
|
|
1621
1624
|
|
|
1622
|
-
|
|
1625
|
+
const cd = channelData[ i ];
|
|
1623
1626
|
|
|
1624
1627
|
if ( cd.decoded ) continue;
|
|
1625
1628
|
|
|
@@ -1627,16 +1630,16 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1627
1630
|
|
|
1628
1631
|
case RLE:
|
|
1629
1632
|
|
|
1630
|
-
|
|
1631
|
-
|
|
1633
|
+
let row = 0;
|
|
1634
|
+
let rleOffset = 0;
|
|
1632
1635
|
|
|
1633
|
-
for (
|
|
1636
|
+
for ( let y = 0; y < info.lines; ++ y ) {
|
|
1634
1637
|
|
|
1635
|
-
|
|
1638
|
+
let rowOffsetBytes = rowOffsets[ i ][ row ];
|
|
1636
1639
|
|
|
1637
|
-
for (
|
|
1640
|
+
for ( let x = 0; x < cd.width; ++ x ) {
|
|
1638
1641
|
|
|
1639
|
-
for (
|
|
1642
|
+
for ( let byte = 0; byte < INT16_SIZE * cd.type; ++ byte ) {
|
|
1640
1643
|
|
|
1641
1644
|
outBuffer[ rowOffsetBytes ++ ] = rleBuffer[ rleOffset + byte * cd.width * cd.height ];
|
|
1642
1645
|
|
|
@@ -1667,8 +1670,8 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1667
1670
|
|
|
1668
1671
|
function parseNullTerminatedString( buffer, offset ) {
|
|
1669
1672
|
|
|
1670
|
-
|
|
1671
|
-
|
|
1673
|
+
const uintBuffer = new Uint8Array( buffer );
|
|
1674
|
+
let endOffset = 0;
|
|
1672
1675
|
|
|
1673
1676
|
while ( uintBuffer[ offset.value + endOffset ] != 0 ) {
|
|
1674
1677
|
|
|
@@ -1676,7 +1679,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1676
1679
|
|
|
1677
1680
|
}
|
|
1678
1681
|
|
|
1679
|
-
|
|
1682
|
+
const stringValue = new TextDecoder().decode(
|
|
1680
1683
|
uintBuffer.slice( offset.value, offset.value + endOffset )
|
|
1681
1684
|
);
|
|
1682
1685
|
|
|
@@ -1688,7 +1691,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1688
1691
|
|
|
1689
1692
|
function parseFixedLengthString( buffer, offset, size ) {
|
|
1690
1693
|
|
|
1691
|
-
|
|
1694
|
+
const stringValue = new TextDecoder().decode(
|
|
1692
1695
|
new Uint8Array( buffer ).slice( offset.value, offset.value + size )
|
|
1693
1696
|
);
|
|
1694
1697
|
|
|
@@ -1700,8 +1703,8 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1700
1703
|
|
|
1701
1704
|
function parseRational( dataView, offset ) {
|
|
1702
1705
|
|
|
1703
|
-
|
|
1704
|
-
|
|
1706
|
+
const x = parseInt32( dataView, offset );
|
|
1707
|
+
const y = parseUint32( dataView, offset );
|
|
1705
1708
|
|
|
1706
1709
|
return [ x, y ];
|
|
1707
1710
|
|
|
@@ -1709,8 +1712,8 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1709
1712
|
|
|
1710
1713
|
function parseTimecode( dataView, offset ) {
|
|
1711
1714
|
|
|
1712
|
-
|
|
1713
|
-
|
|
1715
|
+
const x = parseUint32( dataView, offset );
|
|
1716
|
+
const y = parseUint32( dataView, offset );
|
|
1714
1717
|
|
|
1715
1718
|
return [ x, y ];
|
|
1716
1719
|
|
|
@@ -1718,7 +1721,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1718
1721
|
|
|
1719
1722
|
function parseInt32( dataView, offset ) {
|
|
1720
1723
|
|
|
1721
|
-
|
|
1724
|
+
const Int32 = dataView.getInt32( offset.value, true );
|
|
1722
1725
|
|
|
1723
1726
|
offset.value = offset.value + INT32_SIZE;
|
|
1724
1727
|
|
|
@@ -1728,7 +1731,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1728
1731
|
|
|
1729
1732
|
function parseUint32( dataView, offset ) {
|
|
1730
1733
|
|
|
1731
|
-
|
|
1734
|
+
const Uint32 = dataView.getUint32( offset.value, true );
|
|
1732
1735
|
|
|
1733
1736
|
offset.value = offset.value + INT32_SIZE;
|
|
1734
1737
|
|
|
@@ -1738,7 +1741,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1738
1741
|
|
|
1739
1742
|
function parseUint8Array( uInt8Array, offset ) {
|
|
1740
1743
|
|
|
1741
|
-
|
|
1744
|
+
const Uint8 = uInt8Array[ offset.value ];
|
|
1742
1745
|
|
|
1743
1746
|
offset.value = offset.value + INT8_SIZE;
|
|
1744
1747
|
|
|
@@ -1748,7 +1751,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1748
1751
|
|
|
1749
1752
|
function parseUint8( dataView, offset ) {
|
|
1750
1753
|
|
|
1751
|
-
|
|
1754
|
+
const Uint8 = dataView.getUint8( offset.value );
|
|
1752
1755
|
|
|
1753
1756
|
offset.value = offset.value + INT8_SIZE;
|
|
1754
1757
|
|
|
@@ -1756,19 +1759,19 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1756
1759
|
|
|
1757
1760
|
}
|
|
1758
1761
|
|
|
1759
|
-
function
|
|
1762
|
+
const parseInt64 = function ( dataView, offset ) {
|
|
1760
1763
|
|
|
1761
|
-
|
|
1764
|
+
const Int64 = Number( dataView.getBigInt64( offset.value, true ) );
|
|
1762
1765
|
|
|
1763
1766
|
offset.value += ULONG_SIZE;
|
|
1764
1767
|
|
|
1765
|
-
return
|
|
1768
|
+
return Int64;
|
|
1766
1769
|
|
|
1767
|
-
}
|
|
1770
|
+
};
|
|
1768
1771
|
|
|
1769
1772
|
function parseFloat32( dataView, offset ) {
|
|
1770
1773
|
|
|
1771
|
-
|
|
1774
|
+
const float = dataView.getFloat32( offset.value, true );
|
|
1772
1775
|
|
|
1773
1776
|
offset.value += FLOAT32_SIZE;
|
|
1774
1777
|
|
|
@@ -1785,7 +1788,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1785
1788
|
// https://stackoverflow.com/questions/5678432/decompressing-half-precision-floats-in-javascript
|
|
1786
1789
|
function decodeFloat16( binary ) {
|
|
1787
1790
|
|
|
1788
|
-
|
|
1791
|
+
const exponent = ( binary & 0x7C00 ) >> 10,
|
|
1789
1792
|
fraction = binary & 0x03FF;
|
|
1790
1793
|
|
|
1791
1794
|
return ( binary >> 15 ? - 1 : 1 ) * (
|
|
@@ -1802,7 +1805,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1802
1805
|
|
|
1803
1806
|
function parseUint16( dataView, offset ) {
|
|
1804
1807
|
|
|
1805
|
-
|
|
1808
|
+
const Uint16 = dataView.getUint16( offset.value, true );
|
|
1806
1809
|
|
|
1807
1810
|
offset.value += INT16_SIZE;
|
|
1808
1811
|
|
|
@@ -1818,17 +1821,17 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1818
1821
|
|
|
1819
1822
|
function parseChlist( dataView, buffer, offset, size ) {
|
|
1820
1823
|
|
|
1821
|
-
|
|
1822
|
-
|
|
1824
|
+
const startOffset = offset.value;
|
|
1825
|
+
const channels = [];
|
|
1823
1826
|
|
|
1824
1827
|
while ( offset.value < ( startOffset + size - 1 ) ) {
|
|
1825
1828
|
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
+
const name = parseNullTerminatedString( buffer, offset );
|
|
1830
|
+
const pixelType = parseInt32( dataView, offset );
|
|
1831
|
+
const pLinear = parseUint8( dataView, offset );
|
|
1829
1832
|
offset.value += 3; // reserved, three chars
|
|
1830
|
-
|
|
1831
|
-
|
|
1833
|
+
const xSampling = parseInt32( dataView, offset );
|
|
1834
|
+
const ySampling = parseInt32( dataView, offset );
|
|
1832
1835
|
|
|
1833
1836
|
channels.push( {
|
|
1834
1837
|
name: name,
|
|
@@ -1848,14 +1851,14 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1848
1851
|
|
|
1849
1852
|
function parseChromaticities( dataView, offset ) {
|
|
1850
1853
|
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1854
|
+
const redX = parseFloat32( dataView, offset );
|
|
1855
|
+
const redY = parseFloat32( dataView, offset );
|
|
1856
|
+
const greenX = parseFloat32( dataView, offset );
|
|
1857
|
+
const greenY = parseFloat32( dataView, offset );
|
|
1858
|
+
const blueX = parseFloat32( dataView, offset );
|
|
1859
|
+
const blueY = parseFloat32( dataView, offset );
|
|
1860
|
+
const whiteX = parseFloat32( dataView, offset );
|
|
1861
|
+
const whiteY = parseFloat32( dataView, offset );
|
|
1859
1862
|
|
|
1860
1863
|
return { redX: redX, redY: redY, greenX: greenX, greenY: greenY, blueX: blueX, blueY: blueY, whiteX: whiteX, whiteY: whiteY };
|
|
1861
1864
|
|
|
@@ -1863,7 +1866,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1863
1866
|
|
|
1864
1867
|
function parseCompression( dataView, offset ) {
|
|
1865
1868
|
|
|
1866
|
-
|
|
1869
|
+
const compressionCodes = [
|
|
1867
1870
|
'NO_COMPRESSION',
|
|
1868
1871
|
'RLE_COMPRESSION',
|
|
1869
1872
|
'ZIPS_COMPRESSION',
|
|
@@ -1876,7 +1879,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1876
1879
|
'DWAB_COMPRESSION'
|
|
1877
1880
|
];
|
|
1878
1881
|
|
|
1879
|
-
|
|
1882
|
+
const compression = parseUint8( dataView, offset );
|
|
1880
1883
|
|
|
1881
1884
|
return compressionCodes[ compression ];
|
|
1882
1885
|
|
|
@@ -1884,10 +1887,10 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1884
1887
|
|
|
1885
1888
|
function parseBox2i( dataView, offset ) {
|
|
1886
1889
|
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1890
|
+
const xMin = parseUint32( dataView, offset );
|
|
1891
|
+
const yMin = parseUint32( dataView, offset );
|
|
1892
|
+
const xMax = parseUint32( dataView, offset );
|
|
1893
|
+
const yMax = parseUint32( dataView, offset );
|
|
1891
1894
|
|
|
1892
1895
|
return { xMin: xMin, yMin: yMin, xMax: xMax, yMax: yMax };
|
|
1893
1896
|
|
|
@@ -1895,11 +1898,11 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1895
1898
|
|
|
1896
1899
|
function parseLineOrder( dataView, offset ) {
|
|
1897
1900
|
|
|
1898
|
-
|
|
1901
|
+
const lineOrders = [
|
|
1899
1902
|
'INCREASING_Y'
|
|
1900
1903
|
];
|
|
1901
1904
|
|
|
1902
|
-
|
|
1905
|
+
const lineOrder = parseUint8( dataView, offset );
|
|
1903
1906
|
|
|
1904
1907
|
return lineOrders[ lineOrder ];
|
|
1905
1908
|
|
|
@@ -1907,8 +1910,8 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1907
1910
|
|
|
1908
1911
|
function parseV2f( dataView, offset ) {
|
|
1909
1912
|
|
|
1910
|
-
|
|
1911
|
-
|
|
1913
|
+
const x = parseFloat32( dataView, offset );
|
|
1914
|
+
const y = parseFloat32( dataView, offset );
|
|
1912
1915
|
|
|
1913
1916
|
return [ x, y ];
|
|
1914
1917
|
|
|
@@ -1916,9 +1919,9 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1916
1919
|
|
|
1917
1920
|
function parseV3f( dataView, offset ) {
|
|
1918
1921
|
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
+
const x = parseFloat32( dataView, offset );
|
|
1923
|
+
const y = parseFloat32( dataView, offset );
|
|
1924
|
+
const z = parseFloat32( dataView, offset );
|
|
1922
1925
|
|
|
1923
1926
|
return [ x, y, z ];
|
|
1924
1927
|
|
|
@@ -1998,26 +2001,26 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1998
2001
|
|
|
1999
2002
|
}
|
|
2000
2003
|
|
|
2001
|
-
EXRHeader.version = dataView.getUint8( 4
|
|
2004
|
+
EXRHeader.version = dataView.getUint8( 4 );
|
|
2002
2005
|
|
|
2003
|
-
const spec = dataView.getUint8( 5
|
|
2006
|
+
const spec = dataView.getUint8( 5 ); // fullMask
|
|
2004
2007
|
|
|
2005
2008
|
EXRHeader.spec = {
|
|
2006
|
-
singleTile: !! ( spec &
|
|
2007
|
-
longName: !! ( spec &
|
|
2008
|
-
deepFormat: !! ( spec &
|
|
2009
|
-
multiPart: !! ( spec &
|
|
2009
|
+
singleTile: !! ( spec & 2 ),
|
|
2010
|
+
longName: !! ( spec & 4 ),
|
|
2011
|
+
deepFormat: !! ( spec & 8 ),
|
|
2012
|
+
multiPart: !! ( spec & 16 ),
|
|
2010
2013
|
};
|
|
2011
2014
|
|
|
2012
2015
|
// start of header
|
|
2013
2016
|
|
|
2014
2017
|
offset.value = 8; // start at 8 - after pre-amble
|
|
2015
2018
|
|
|
2016
|
-
|
|
2019
|
+
let keepReading = true;
|
|
2017
2020
|
|
|
2018
2021
|
while ( keepReading ) {
|
|
2019
2022
|
|
|
2020
|
-
|
|
2023
|
+
const attributeName = parseNullTerminatedString( buffer, offset );
|
|
2021
2024
|
|
|
2022
2025
|
if ( attributeName == 0 ) {
|
|
2023
2026
|
|
|
@@ -2025,9 +2028,9 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2025
2028
|
|
|
2026
2029
|
} else {
|
|
2027
2030
|
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
+
const attributeType = parseNullTerminatedString( buffer, offset );
|
|
2032
|
+
const attributeSize = parseUint32( dataView, offset );
|
|
2033
|
+
const attributeValue = parseValue( dataView, buffer, offset, attributeType, attributeSize );
|
|
2031
2034
|
|
|
2032
2035
|
if ( attributeValue === undefined ) {
|
|
2033
2036
|
|
|
@@ -2043,7 +2046,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2043
2046
|
|
|
2044
2047
|
}
|
|
2045
2048
|
|
|
2046
|
-
if ( spec != 0 ) {
|
|
2049
|
+
if ( ( spec & ~ 0x04 ) != 0 ) { // unsupported tiled, deep-image, multi-part
|
|
2047
2050
|
|
|
2048
2051
|
console.error( 'EXRHeader:', EXRHeader );
|
|
2049
2052
|
throw new Error( 'THREE.EXRLoader: provided file is currently unsupported.' );
|
|
@@ -2164,7 +2167,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2164
2167
|
|
|
2165
2168
|
EXRDecoder.blockCount = ( EXRHeader.dataWindow.yMax + 1 ) / EXRDecoder.scanlineBlockSize;
|
|
2166
2169
|
|
|
2167
|
-
for (
|
|
2170
|
+
for ( let i = 0; i < EXRDecoder.blockCount; i ++ )
|
|
2168
2171
|
parseInt64( dataView, offset ); // scanlineOffset
|
|
2169
2172
|
|
|
2170
2173
|
// we should be passed the scanline offset table, ready to start reading pixel data.
|