three-stdlib 2.15.0 → 2.15.2
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/animation/AnimationClipCreator.js +32 -52
- package/animation/AnimationClipCreator.mjs +57 -0
- package/animation/CCDIKSolver.js +66 -161
- package/animation/CCDIKSolver.mjs +234 -0
- package/animation/MMDAnimationHelper.js +150 -341
- package/animation/MMDAnimationHelper.mjs +514 -0
- package/animation/MMDPhysics.js +154 -361
- package/animation/MMDPhysics.mjs +769 -0
- package/cameras/CinematicCamera.js +67 -77
- package/cameras/CinematicCamera.mjs +129 -0
- package/controls/ArcballControls.js +544 -1449
- package/controls/ArcballControls.mjs +1737 -0
- package/controls/DeviceOrientationControls.js +52 -97
- package/controls/DeviceOrientationControls.mjs +74 -0
- package/controls/DragControls.js +85 -187
- package/controls/DragControls.mjs +172 -0
- package/controls/FirstPersonControls.js +123 -193
- package/controls/FirstPersonControls.mjs +220 -0
- package/controls/FlyControls.js +82 -152
- package/controls/FlyControls.mjs +239 -0
- package/controls/OrbitControls.js +232 -481
- package/controls/OrbitControls.mjs +731 -0
- package/controls/PointerLockControls.js +63 -99
- package/controls/PointerLockControls.mjs +88 -0
- package/controls/TrackballControls.js +211 -383
- package/controls/TrackballControls.mjs +481 -0
- package/controls/TransformControls.js +575 -782
- package/controls/TransformControls.mjs +1068 -0
- package/controls/experimental/CameraControls.js +329 -609
- package/controls/experimental/CameraControls.mjs +673 -0
- package/csm/CSM.js +47 -108
- package/csm/CSM.mjs +244 -0
- package/csm/CSMFrustum.js +14 -29
- package/csm/CSMFrustum.mjs +75 -0
- package/csm/CSMHelper.js +20 -34
- package/csm/CSMHelper.mjs +114 -0
- package/csm/CSMShader.js +7 -11
- package/csm/CSMShader.mjs +251 -0
- package/curves/CurveExtras.js +73 -115
- package/curves/CurveExtras.mjs +224 -0
- package/curves/NURBSCurve.js +15 -43
- package/curves/NURBSCurve.mjs +35 -0
- package/curves/NURBSSurface.js +11 -27
- package/curves/NURBSSurface.mjs +28 -0
- package/curves/NURBSUtils.js +54 -203
- package/curves/NURBSUtils.mjs +226 -0
- package/deprecated/Geometry.js +191 -486
- package/deprecated/Geometry.mjs +966 -0
- package/effects/AnaglyphEffect.js +95 -60
- package/effects/AnaglyphEffect.mjs +120 -0
- package/effects/AsciiEffect.js +80 -110
- package/effects/AsciiEffect.mjs +173 -0
- package/effects/OutlineEffect.js +121 -204
- package/effects/OutlineEffect.mjs +295 -0
- package/effects/ParallaxBarrierEffect.js +39 -38
- package/effects/ParallaxBarrierEffect.mjs +64 -0
- package/effects/PeppersGhostEffect.js +19 -68
- package/effects/PeppersGhostEffect.mjs +85 -0
- package/effects/StereoEffect.js +12 -16
- package/effects/StereoEffect.mjs +32 -0
- package/environments/RoomEnvironment.js +52 -47
- package/environments/RoomEnvironment.mjs +78 -0
- package/exporters/ColladaExporter.js +115 -241
- package/exporters/ColladaExporter.mjs +299 -0
- package/exporters/DRACOExporter.js +67 -121
- package/exporters/DRACOExporter.mjs +132 -0
- package/exporters/GLTFExporter.js +463 -1014
- package/exporters/GLTFExporter.mjs +1381 -0
- package/exporters/MMDExporter.js +44 -102
- package/exporters/MMDExporter.mjs +102 -0
- package/exporters/OBJExporter.js +78 -140
- package/exporters/OBJExporter.mjs +166 -0
- package/exporters/PLYExporter.js +93 -154
- package/exporters/PLYExporter.mjs +278 -0
- package/exporters/STLExporter.js +30 -81
- package/exporters/STLExporter.mjs +129 -0
- package/exporters/USDZExporter.js +84 -144
- package/exporters/USDZExporter.mjs +328 -0
- package/geometries/BoxLineGeometry.js +7 -14
- package/geometries/BoxLineGeometry.mjs +45 -0
- package/geometries/ConvexGeometry.js +15 -24
- package/geometries/ConvexGeometry.mjs +29 -0
- package/geometries/DecalGeometry.js +108 -162
- package/geometries/DecalGeometry.mjs +184 -0
- package/geometries/LightningStrike.js +101 -294
- package/geometries/LightningStrike.mjs +547 -0
- package/geometries/ParametricGeometries.js +26 -76
- package/geometries/ParametricGeometries.mjs +129 -0
- package/geometries/ParametricGeometry.js +24 -48
- package/geometries/ParametricGeometry.mjs +63 -0
- package/geometries/RoundedBoxGeometry.js +33 -64
- package/geometries/RoundedBoxGeometry.mjs +91 -0
- package/geometries/TeapotGeometry.js +1434 -174
- package/geometries/TeapotGeometry.mjs +1557 -0
- package/geometries/TextGeometry.js +9 -17
- package/geometries/TextGeometry.mjs +23 -0
- package/helpers/LightProbeHelper.js +53 -21
- package/helpers/LightProbeHelper.mjs +72 -0
- package/helpers/PositionalAudioHelper.js +23 -30
- package/helpers/PositionalAudioHelper.mjs +68 -0
- package/helpers/RectAreaLightHelper.js +17 -33
- package/helpers/RectAreaLightHelper.mjs +44 -0
- package/helpers/VertexNormalsHelper.js +20 -41
- package/helpers/VertexNormalsHelper.mjs +54 -0
- package/helpers/VertexTangentsHelper.js +18 -36
- package/helpers/VertexTangentsHelper.mjs +45 -0
- package/index.d.ts +54 -0
- package/index.js +968 -333
- package/index.mjs +968 -0
- package/interactive/SelectionBox.js +31 -46
- package/interactive/SelectionBox.mjs +137 -0
- package/interactive/SelectionHelper.js +16 -21
- package/interactive/SelectionHelper.mjs +54 -0
- package/libs/MeshoptDecoder.js +147 -58
- package/libs/MeshoptDecoder.mjs +210 -0
- package/libs/MotionControllers.js +66 -208
- package/libs/MotionControllers.mjs +261 -0
- package/lights/LightProbeGenerator.js +40 -96
- package/lights/LightProbeGenerator.mjs +145 -0
- package/lights/RectAreaLightUniformsLib.js +32842 -9
- package/lights/RectAreaLightUniformsLib.mjs +32842 -0
- package/lines/Line2.js +9 -12
- package/lines/Line2.mjs +13 -0
- package/lines/LineGeometry.js +7 -19
- package/lines/LineGeometry.mjs +44 -0
- package/lines/LineMaterial.js +51 -89
- package/lines/LineMaterial.mjs +539 -0
- package/lines/LineSegments2.js +56 -165
- package/lines/LineSegments2.mjs +202 -0
- package/lines/LineSegmentsGeometry.js +29 -71
- package/lines/LineSegmentsGeometry.mjs +124 -0
- package/lines/Wireframe.js +15 -29
- package/lines/Wireframe.mjs +31 -0
- package/lines/WireframeGeometry2.js +8 -9
- package/lines/WireframeGeometry2.mjs +13 -0
- package/loaders/3DMLoader.js +234 -469
- package/loaders/3DMLoader.mjs +802 -0
- package/loaders/3MFLoader.js +340 -555
- package/loaders/3MFLoader.mjs +837 -0
- package/loaders/AMFLoader.js +114 -219
- package/loaders/AMFLoader.mjs +284 -0
- package/loaders/AssimpLoader.js +328 -725
- package/loaders/AssimpLoader.mjs +1396 -0
- package/loaders/BVHLoader.js +94 -200
- package/loaders/BVHLoader.mjs +207 -0
- package/loaders/BasisTextureLoader.js +229 -357
- package/loaders/BasisTextureLoader.mjs +474 -0
- package/loaders/ColladaLoader.js +932 -1522
- package/loaders/ColladaLoader.mjs +2403 -0
- package/loaders/DDSLoader.js +42 -108
- package/loaders/DDSLoader.mjs +148 -0
- package/loaders/DRACOLoader.js +103 -210
- package/loaders/DRACOLoader.mjs +340 -0
- package/loaders/EXRLoader.js +461 -809
- package/loaders/EXRLoader.mjs +1351 -0
- package/loaders/FBXLoader.js +842 -1397
- package/loaders/FBXLoader.mjs +2362 -0
- package/loaders/FontLoader.js +33 -66
- package/loaders/FontLoader.mjs +111 -0
- package/loaders/GCodeLoader.js +63 -111
- package/loaders/GCodeLoader.mjs +141 -0
- package/loaders/GLTFLoader.js +771 -1484
- package/loaders/GLTFLoader.mjs +2316 -0
- package/loaders/HDRCubeTextureLoader.js +45 -50
- package/loaders/HDRCubeTextureLoader.mjs +77 -0
- package/loaders/KMZLoader.js +42 -55
- package/loaders/KMZLoader.mjs +75 -0
- package/loaders/KTX2Loader.js +229 -362
- package/loaders/KTX2Loader.mjs +427 -0
- package/loaders/KTXLoader.js +37 -99
- package/loaders/KTXLoader.mjs +87 -0
- package/loaders/LDrawLoader.js +313 -746
- package/loaders/LDrawLoader.mjs +1409 -0
- package/loaders/LUT3dlLoader.js +50 -62
- package/loaders/LUT3dlLoader.mjs +100 -0
- package/loaders/LUTCubeLoader.js +45 -56
- package/loaders/LUTCubeLoader.mjs +104 -0
- package/loaders/LWOLoader.js +227 -339
- package/loaders/LWOLoader.mjs +625 -0
- package/loaders/LottieLoader.js +36 -38
- package/loaders/LottieLoader.mjs +47 -0
- package/loaders/MD2Loader.js +248 -91
- package/loaders/MD2Loader.mjs +359 -0
- package/loaders/MDDLoader.js +25 -45
- package/loaders/MDDLoader.mjs +58 -0
- package/loaders/MMDLoader.js +359 -795
- package/loaders/MMDLoader.mjs +998 -0
- package/loaders/MTLLoader.js +91 -201
- package/loaders/MTLLoader.mjs +280 -0
- package/loaders/NRRDLoader.js +182 -263
- package/loaders/NRRDLoader.mjs +401 -0
- package/loaders/NodeMaterialLoader.js +121 -14
- package/loaders/NodeMaterialLoader.mjs +146 -0
- package/loaders/OBJLoader.js +161 -283
- package/loaders/OBJLoader.mjs +487 -0
- package/loaders/PCDLoader.js +145 -164
- package/loaders/PCDLoader.mjs +248 -0
- package/loaders/PDBLoader.js +45 -63
- package/loaders/PDBLoader.mjs +246 -0
- package/loaders/PLYLoader.js +106 -203
- package/loaders/PLYLoader.mjs +317 -0
- package/loaders/PRWMLoader.js +73 -110
- package/loaders/PRWMLoader.mjs +160 -0
- package/loaders/PVRLoader.js +32 -93
- package/loaders/PVRLoader.mjs +131 -0
- package/loaders/RGBELoader.js +96 -233
- package/loaders/RGBELoader.mjs +244 -0
- package/loaders/RGBMLoader.js +344 -514
- package/loaders/RGBMLoader.mjs +998 -0
- package/loaders/STLLoader.js +59 -165
- package/loaders/STLLoader.mjs +190 -0
- package/loaders/SVGLoader.js +481 -851
- package/loaders/SVGLoader.mjs +1709 -0
- package/loaders/TDSLoader.js +137 -527
- package/loaders/TDSLoader.mjs +480 -0
- package/loaders/TGALoader.js +94 -205
- package/loaders/TGALoader.mjs +285 -0
- package/loaders/TTFLoader.js +58 -79
- package/loaders/TTFLoader.mjs +131 -0
- package/loaders/TiltLoader.js +129 -167
- package/loaders/TiltLoader.mjs +373 -0
- package/loaders/VOXLoader.js +320 -84
- package/loaders/VOXLoader.mjs +431 -0
- package/loaders/VRMLLoader.js +786 -1268
- package/loaders/VRMLLoader.mjs +2093 -0
- package/loaders/VRMLoader.js +23 -31
- package/loaders/VRMLoader.mjs +38 -0
- package/loaders/VTKLoader.js +219 -407
- package/loaders/VTKLoader.mjs +646 -0
- package/loaders/XLoader.js +1083 -1259
- package/loaders/XLoader.mjs +1258 -0
- package/loaders/XYZLoader.js +28 -34
- package/loaders/XYZLoader.mjs +60 -0
- package/loaders/lwo/IFFParser.js +238 -492
- package/loaders/lwo/IFFParser.mjs +697 -0
- package/loaders/lwo/LWO2Parser.js +176 -279
- package/loaders/lwo/LWO2Parser.mjs +327 -0
- package/loaders/lwo/LWO3Parser.js +160 -247
- package/loaders/lwo/LWO3Parser.mjs +298 -0
- package/math/Capsule.js +56 -43
- package/math/Capsule.mjs +100 -0
- package/math/ColorConverter.js +18 -32
- package/math/ColorConverter.mjs +51 -0
- package/math/ConvexHull.js +515 -739
- package/math/ConvexHull.mjs +574 -0
- package/math/ImprovedNoise.js +282 -32
- package/math/ImprovedNoise.mjs +302 -0
- package/math/Lut.js +51 -35
- package/math/Lut.mjs +135 -0
- package/math/MeshSurfaceSampler.js +25 -68
- package/math/MeshSurfaceSampler.mjs +107 -0
- package/math/OBB.js +91 -152
- package/math/OBB.mjs +235 -0
- package/math/Octree.js +76 -139
- package/math/Octree.mjs +278 -0
- package/math/SimplexNoise.js +217 -238
- package/math/SimplexNoise.mjs +425 -0
- package/misc/ConvexObjectBreaker.js +79 -185
- package/misc/ConvexObjectBreaker.mjs +292 -0
- package/misc/GPUComputationRenderer.js +69 -194
- package/misc/GPUComputationRenderer.mjs +171 -0
- package/misc/Gyroscope.js +16 -22
- package/misc/Gyroscope.mjs +35 -0
- package/misc/MD2Character.js +52 -74
- package/misc/MD2Character.mjs +162 -0
- package/misc/MD2CharacterComplex.js +112 -163
- package/misc/MD2CharacterComplex.mjs +328 -0
- package/misc/MorphAnimMesh.js +20 -28
- package/misc/MorphAnimMesh.mjs +40 -0
- package/misc/MorphBlendMesh.js +45 -69
- package/misc/MorphBlendMesh.mjs +179 -0
- package/misc/ProgressiveLightmap.js +70 -187
- package/misc/ProgressiveLightmap.mjs +166 -0
- package/misc/RollerCoaster.js +106 -135
- package/misc/RollerCoaster.mjs +346 -0
- package/misc/TubePainter.js +74 -92
- package/misc/TubePainter.mjs +123 -0
- package/misc/Volume.js +108 -270
- package/misc/Volume.mjs +244 -0
- package/misc/VolumeSlice.js +34 -122
- package/misc/VolumeSlice.mjs +106 -0
- package/misc/WebGL.js +37 -34
- package/misc/WebGL.mjs +74 -0
- package/modifiers/CurveModifier.js +46 -151
- package/modifiers/CurveModifier.mjs +182 -0
- package/modifiers/EdgeSplitModifier.js +46 -90
- package/modifiers/EdgeSplitModifier.mjs +162 -0
- package/modifiers/SimplifyModifier.js +77 -202
- package/modifiers/SimplifyModifier.mjs +282 -0
- package/modifiers/TessellateModifier.js +65 -90
- package/modifiers/TessellateModifier.mjs +206 -0
- package/nodes/Nodes.js +274 -140
- package/nodes/Nodes.mjs +400 -0
- package/nodes/ShaderNode.js +296 -196
- package/nodes/ShaderNode.mjs +408 -0
- package/nodes/accessors/BufferNode.js +4 -8
- package/nodes/accessors/BufferNode.mjs +15 -0
- package/nodes/accessors/CameraNode.js +20 -25
- package/nodes/accessors/CameraNode.mjs +44 -0
- package/nodes/accessors/CubeTextureNode.js +14 -26
- package/nodes/accessors/CubeTextureNode.mjs +42 -0
- package/nodes/accessors/MaterialNode.js +43 -53
- package/nodes/accessors/MaterialNode.mjs +71 -0
- package/nodes/accessors/MaterialReferenceNode.js +3 -6
- package/nodes/accessors/MaterialReferenceNode.mjs +14 -0
- package/nodes/accessors/ModelNode.js +3 -5
- package/nodes/accessors/ModelNode.mjs +9 -0
- package/nodes/accessors/ModelViewProjectionNode.js +14 -13
- package/nodes/accessors/ModelViewProjectionNode.mjs +24 -0
- package/nodes/accessors/NormalNode.js +40 -39
- package/nodes/accessors/NormalNode.mjs +62 -0
- package/nodes/accessors/Object3DNode.js +40 -50
- package/nodes/accessors/Object3DNode.mjs +76 -0
- package/nodes/accessors/PointUVNode.js +5 -9
- package/nodes/accessors/PointUVNode.mjs +13 -0
- package/nodes/accessors/PositionNode.js +42 -41
- package/nodes/accessors/PositionNode.mjs +65 -0
- package/nodes/accessors/ReferenceNode.js +10 -17
- package/nodes/accessors/ReferenceNode.mjs +37 -0
- package/nodes/accessors/ReflectNode.js +23 -26
- package/nodes/accessors/ReflectNode.mjs +43 -0
- package/nodes/accessors/SkinningNode.js +46 -48
- package/nodes/accessors/SkinningNode.mjs +58 -0
- package/nodes/accessors/TextureNode.js +14 -29
- package/nodes/accessors/TextureNode.mjs +54 -0
- package/nodes/accessors/UVNode.js +5 -11
- package/nodes/accessors/UVNode.mjs +23 -0
- package/nodes/core/ArrayUniformNode.js +3 -7
- package/nodes/core/ArrayUniformNode.mjs +14 -0
- package/nodes/core/AttributeNode.js +5 -12
- package/nodes/core/AttributeNode.mjs +30 -0
- package/nodes/core/BypassNode.js +5 -12
- package/nodes/core/BypassNode.mjs +22 -0
- package/nodes/core/CodeNode.js +4 -12
- package/nodes/core/CodeNode.mjs +28 -0
- package/nodes/core/ConstNode.js +3 -7
- package/nodes/core/ConstNode.mjs +14 -0
- package/nodes/core/ContextNode.js +3 -8
- package/nodes/core/ContextNode.mjs +22 -0
- package/nodes/core/ExpressionNode.js +5 -9
- package/nodes/core/ExpressionNode.mjs +19 -0
- package/nodes/core/FunctionCallNode.js +6 -15
- package/nodes/core/FunctionCallNode.mjs +37 -0
- package/nodes/core/FunctionNode.js +10 -25
- package/nodes/core/FunctionNode.mjs +56 -0
- package/nodes/core/InputNode.js +12 -23
- package/nodes/core/InputNode.mjs +38 -0
- package/nodes/core/Node.js +35 -75
- package/nodes/core/Node.mjs +139 -0
- package/nodes/core/NodeAttribute.js +2 -4
- package/nodes/core/NodeAttribute.mjs +10 -0
- package/nodes/core/NodeBuilder.js +110 -224
- package/nodes/core/NodeBuilder.mjs +395 -0
- package/nodes/core/NodeCode.js +4 -7
- package/nodes/core/NodeCode.mjs +11 -0
- package/nodes/core/NodeFrame.js +9 -12
- package/nodes/core/NodeFrame.mjs +35 -0
- package/nodes/core/NodeFunctionInput.js +3 -5
- package/nodes/core/NodeFunctionInput.mjs +13 -0
- package/nodes/core/NodeKeywords.js +5 -16
- package/nodes/core/NodeKeywords.mjs +44 -0
- package/nodes/core/NodeUniform.js +3 -7
- package/nodes/core/NodeUniform.mjs +18 -0
- package/nodes/core/NodeUtils.js +39 -43
- package/nodes/core/NodeUtils.mjs +57 -0
- package/nodes/core/NodeVar.js +2 -4
- package/nodes/core/NodeVar.mjs +10 -0
- package/nodes/core/NodeVary.js +2 -4
- package/nodes/core/NodeVary.mjs +10 -0
- package/nodes/core/PropertyNode.js +4 -10
- package/nodes/core/PropertyNode.mjs +21 -0
- package/nodes/core/TempNode.js +5 -11
- package/nodes/core/TempNode.mjs +25 -0
- package/nodes/core/UniformNode.js +4 -10
- package/nodes/core/UniformNode.mjs +23 -0
- package/nodes/core/VarNode.js +3 -11
- package/nodes/core/VarNode.mjs +31 -0
- package/nodes/core/VaryNode.js +6 -15
- package/nodes/core/VaryNode.mjs +30 -0
- package/nodes/core/constants.js +20 -7
- package/nodes/core/constants.mjs +24 -0
- package/nodes/display/ColorSpaceNode.js +34 -38
- package/nodes/display/ColorSpaceNode.mjs +63 -0
- package/nodes/display/NormalMapNode.js +35 -53
- package/nodes/display/NormalMapNode.mjs +54 -0
- package/nodes/fog/FogNode.js +5 -9
- package/nodes/fog/FogNode.mjs +15 -0
- package/nodes/fog/FogRangeNode.js +5 -9
- package/nodes/fog/FogRangeNode.mjs +17 -0
- package/nodes/functions/BSDFs.js +61 -118
- package/nodes/functions/BSDFs.mjs +64 -0
- package/nodes/lights/LightContextNode.js +14 -23
- package/nodes/lights/LightContextNode.mjs +35 -0
- package/nodes/lights/LightNode.js +27 -31
- package/nodes/lights/LightNode.mjs +58 -0
- package/nodes/lights/LightsNode.js +9 -28
- package/nodes/lights/LightsNode.mjs +59 -0
- package/nodes/loaders/NodeLoader.js +27 -42
- package/nodes/loaders/NodeLoader.mjs +66 -0
- package/nodes/loaders/NodeMaterialLoader.js +4 -10
- package/nodes/loaders/NodeMaterialLoader.mjs +24 -0
- package/nodes/loaders/NodeObjectLoader.js +9 -19
- package/nodes/loaders/NodeObjectLoader.mjs +40 -0
- package/nodes/materials/LineBasicNodeMaterial.js +5 -10
- package/nodes/materials/LineBasicNodeMaterial.mjs +27 -0
- package/nodes/materials/Materials.js +14 -17
- package/nodes/materials/Materials.mjs +28 -0
- package/nodes/materials/MeshBasicNodeMaterial.js +5 -10
- package/nodes/materials/MeshBasicNodeMaterial.mjs +28 -0
- package/nodes/materials/MeshStandardNodeMaterial.js +5 -8
- package/nodes/materials/MeshStandardNodeMaterial.mjs +41 -0
- package/nodes/materials/NodeMaterial.js +20 -36
- package/nodes/materials/NodeMaterial.mjs +64 -0
- package/nodes/materials/PointsNodeMaterial.js +5 -10
- package/nodes/materials/PointsNodeMaterial.mjs +30 -0
- package/nodes/math/CondNode.js +11 -23
- package/nodes/math/CondNode.mjs +38 -0
- package/nodes/math/MathNode.js +98 -142
- package/nodes/math/MathNode.mjs +163 -0
- package/nodes/math/OperatorNode.js +24 -46
- package/nodes/math/OperatorNode.mjs +103 -0
- package/nodes/procedural/CheckerNode.js +13 -19
- package/nodes/procedural/CheckerNode.mjs +21 -0
- package/nodes/utils/ArrayElementNode.js +4 -8
- package/nodes/utils/ArrayElementNode.mjs +19 -0
- package/nodes/utils/ConvertNode.js +3 -8
- package/nodes/utils/ConvertNode.mjs +25 -0
- package/nodes/utils/JoinNode.js +7 -11
- package/nodes/utils/JoinNode.mjs +26 -0
- package/nodes/utils/MatcapUVNode.js +8 -11
- package/nodes/utils/MatcapUVNode.mjs +16 -0
- package/nodes/utils/OscNode.js +27 -33
- package/nodes/utils/OscNode.mjs +50 -0
- package/nodes/utils/SplitNode.js +6 -20
- package/nodes/utils/SplitNode.mjs +45 -0
- package/nodes/utils/SpriteSheetUVNode.js +23 -23
- package/nodes/utils/SpriteSheetUVNode.mjs +40 -0
- package/nodes/utils/TimerNode.js +20 -24
- package/nodes/utils/TimerNode.mjs +44 -0
- package/objects/GroundProjectedEnv.js +22 -37
- package/objects/GroundProjectedEnv.mjs +130 -0
- package/objects/Lensflare.js +86 -156
- package/objects/Lensflare.mjs +262 -0
- package/objects/LightningStorm.js +38 -102
- package/objects/LightningStorm.mjs +110 -0
- package/objects/MarchingCubes.js +150 -303
- package/objects/MarchingCubes.mjs +457 -0
- package/objects/Reflector.js +50 -72
- package/objects/Reflector.mjs +166 -0
- package/objects/ReflectorForSSRPass.js +80 -131
- package/objects/ReflectorForSSRPass.mjs +247 -0
- package/objects/ReflectorRTT.js +6 -7
- package/objects/ReflectorRTT.mjs +10 -0
- package/objects/Refractor.js +64 -106
- package/objects/Refractor.mjs +178 -0
- package/objects/ShadowMesh.js +8 -17
- package/objects/ShadowMesh.mjs +41 -0
- package/objects/Sky.js +119 -80
- package/objects/Sky.mjs +124 -0
- package/objects/Water.js +83 -127
- package/objects/Water.mjs +235 -0
- package/objects/Water2.js +72 -108
- package/objects/Water2.mjs +252 -0
- package/offscreen/jank.js +10 -14
- package/offscreen/jank.mjs +27 -0
- package/offscreen/offscreen.js +4 -5
- package/offscreen/offscreen.mjs +5 -0
- package/offscreen/scene.js +45 -48
- package/offscreen/scene.mjs +52 -0
- package/package.json +3 -3
- package/physics/AmmoPhysics.js +30 -71
- package/physics/AmmoPhysics.mjs +165 -0
- package/postprocessing/AdaptiveToneMappingPass.js +97 -123
- package/postprocessing/AdaptiveToneMappingPass.mjs +221 -0
- package/postprocessing/AfterimagePass.js +28 -49
- package/postprocessing/AfterimagePass.mjs +55 -0
- package/postprocessing/BloomPass.js +43 -69
- package/postprocessing/BloomPass.mjs +90 -0
- package/postprocessing/BokehPass.js +39 -69
- package/postprocessing/BokehPass.mjs +76 -0
- package/postprocessing/ClearPass.js +10 -25
- package/postprocessing/ClearPass.mjs +27 -0
- package/postprocessing/CubeTexturePass.js +28 -27
- package/postprocessing/CubeTexturePass.mjs +49 -0
- package/postprocessing/DotScreenPass.js +24 -32
- package/postprocessing/DotScreenPass.mjs +40 -0
- package/postprocessing/EffectComposer.js +39 -86
- package/postprocessing/EffectComposer.mjs +139 -0
- package/postprocessing/FilmPass.js +25 -30
- package/postprocessing/FilmPass.mjs +42 -0
- package/postprocessing/GlitchPass.js +38 -61
- package/postprocessing/GlitchPass.mjs +75 -0
- package/postprocessing/HalftonePass.js +19 -39
- package/postprocessing/HalftonePass.mjs +44 -0
- package/postprocessing/LUTPass.js +13 -38
- package/postprocessing/LUTPass.mjs +136 -0
- package/postprocessing/MaskPass.js +19 -38
- package/postprocessing/MaskPass.mjs +60 -0
- package/postprocessing/OutlinePass.js +135 -277
- package/postprocessing/OutlinePass.mjs +438 -0
- package/postprocessing/Pass.js +20 -44
- package/postprocessing/Pass.mjs +37 -0
- package/postprocessing/RenderPass.js +13 -36
- package/postprocessing/RenderPass.mjs +48 -0
- package/postprocessing/RenderPixelatedPass.js +44 -58
- package/postprocessing/RenderPixelatedPass.mjs +199 -0
- package/postprocessing/SAOPass.js +154 -189
- package/postprocessing/SAOPass.mjs +282 -0
- package/postprocessing/SMAAPass.js +64 -84
- package/postprocessing/SMAAPass.mjs +112 -0
- package/postprocessing/SSAARenderPass.js +121 -69
- package/postprocessing/SSAARenderPass.mjs +170 -0
- package/postprocessing/SSAOPass.js +123 -172
- package/postprocessing/SSAOPass.mjs +265 -0
- package/postprocessing/SSRPass.js +211 -280
- package/postprocessing/SSRPass.mjs +432 -0
- package/postprocessing/SavePass.js +20 -25
- package/postprocessing/SavePass.mjs +37 -0
- package/postprocessing/ShaderPass.js +14 -30
- package/postprocessing/ShaderPass.mjs +39 -0
- package/postprocessing/TAARenderPass.js +42 -61
- package/postprocessing/TAARenderPass.mjs +88 -0
- package/postprocessing/TexturePass.js +21 -22
- package/postprocessing/TexturePass.mjs +39 -0
- package/postprocessing/UnrealBloomPass.js +105 -213
- package/postprocessing/UnrealBloomPass.mjs +220 -0
- package/renderers/CSS2DRenderer.js +44 -56
- package/renderers/CSS2DRenderer.mjs +112 -0
- package/renderers/CSS3DRenderer.js +53 -86
- package/renderers/CSS3DRenderer.mjs +133 -0
- package/renderers/Projector.js +107 -274
- package/renderers/Projector.mjs +511 -0
- package/renderers/SVGRenderer.js +72 -182
- package/renderers/SVGRenderer.mjs +306 -0
- package/renderers/nodes/accessors/CameraNode.js +29 -40
- package/renderers/nodes/accessors/CameraNode.mjs +63 -0
- package/renderers/nodes/accessors/ModelNode.js +28 -37
- package/renderers/nodes/accessors/ModelNode.mjs +61 -0
- package/renderers/nodes/accessors/ModelViewProjectionNode.js +10 -23
- package/renderers/nodes/accessors/ModelViewProjectionNode.mjs +21 -0
- package/renderers/nodes/accessors/NormalNode.js +35 -45
- package/renderers/nodes/accessors/NormalNode.mjs +61 -0
- package/renderers/nodes/accessors/PositionNode.js +18 -19
- package/renderers/nodes/accessors/PositionNode.mjs +30 -0
- package/renderers/nodes/accessors/UVNode.js +5 -10
- package/renderers/nodes/accessors/UVNode.mjs +13 -0
- package/renderers/nodes/core/AttributeNode.js +5 -14
- package/renderers/nodes/core/AttributeNode.mjs +35 -0
- package/renderers/nodes/core/InputNode.js +4 -14
- package/renderers/nodes/core/InputNode.mjs +31 -0
- package/renderers/nodes/core/Node.js +7 -17
- package/renderers/nodes/core/Node.mjs +34 -0
- package/renderers/nodes/core/NodeAttribute.js +3 -6
- package/renderers/nodes/core/NodeAttribute.mjs +10 -0
- package/renderers/nodes/core/NodeBuilder.js +87 -154
- package/renderers/nodes/core/NodeBuilder.mjs +243 -0
- package/renderers/nodes/core/NodeFrame.js +9 -12
- package/renderers/nodes/core/NodeFrame.mjs +35 -0
- package/renderers/nodes/core/NodeSlot.js +2 -3
- package/renderers/nodes/core/NodeSlot.mjs +10 -0
- package/renderers/nodes/core/NodeUniform.js +4 -9
- package/renderers/nodes/core/NodeUniform.mjs +18 -0
- package/renderers/nodes/core/NodeVary.js +4 -7
- package/renderers/nodes/core/NodeVary.mjs +11 -0
- package/renderers/nodes/core/VaryNode.js +6 -12
- package/renderers/nodes/core/VaryNode.mjs +22 -0
- package/renderers/nodes/core/constants.js +16 -13
- package/renderers/nodes/core/constants.mjs +22 -0
- package/renderers/nodes/inputs/ColorNode.js +5 -11
- package/renderers/nodes/inputs/ColorNode.mjs +11 -0
- package/renderers/nodes/inputs/FloatNode.js +5 -11
- package/renderers/nodes/inputs/FloatNode.mjs +11 -0
- package/renderers/nodes/inputs/Matrix3Node.js +7 -13
- package/renderers/nodes/inputs/Matrix3Node.mjs +12 -0
- package/renderers/nodes/inputs/Matrix4Node.js +7 -13
- package/renderers/nodes/inputs/Matrix4Node.mjs +12 -0
- package/renderers/nodes/inputs/TextureNode.js +7 -15
- package/renderers/nodes/inputs/TextureNode.mjs +20 -0
- package/renderers/nodes/inputs/Vector2Node.js +5 -11
- package/renderers/nodes/inputs/Vector2Node.mjs +11 -0
- package/renderers/nodes/inputs/Vector3Node.js +7 -13
- package/renderers/nodes/inputs/Vector3Node.mjs +12 -0
- package/renderers/nodes/inputs/Vector4Node.js +7 -13
- package/renderers/nodes/inputs/Vector4Node.mjs +12 -0
- package/renderers/nodes/math/MathNode.js +20 -30
- package/renderers/nodes/math/MathNode.mjs +55 -0
- package/renderers/nodes/math/OperatorNode.js +4 -20
- package/renderers/nodes/math/OperatorNode.mjs +42 -0
- package/renderers/nodes/utils/SwitchNode.js +4 -9
- package/renderers/nodes/utils/SwitchNode.mjs +20 -0
- package/renderers/nodes/utils/TimerNode.js +5 -10
- package/renderers/nodes/utils/TimerNode.mjs +14 -0
- package/renderers/webgpu/WebGPU.js +14 -16
- package/renderers/webgpu/WebGPU.mjs +24 -0
- package/renderers/webgpu/WebGPUAttributes.js +16 -23
- package/renderers/webgpu/WebGPUAttributes.mjs +69 -0
- package/renderers/webgpu/WebGPUBackground.js +13 -30
- package/renderers/webgpu/WebGPUBackground.mjs +61 -0
- package/renderers/webgpu/WebGPUBinding.js +4 -7
- package/renderers/webgpu/WebGPUBinding.mjs +14 -0
- package/renderers/webgpu/WebGPUBindings.js +21 -57
- package/renderers/webgpu/WebGPUBindings.mjs +155 -0
- package/renderers/webgpu/WebGPUComputePipelines.js +14 -25
- package/renderers/webgpu/WebGPUComputePipelines.mjs +44 -0
- package/renderers/webgpu/WebGPUGeometries.js +5 -15
- package/renderers/webgpu/WebGPUGeometries.mjs +41 -0
- package/renderers/webgpu/WebGPUInfo.js +3 -8
- package/renderers/webgpu/WebGPUInfo.mjs +46 -0
- package/renderers/webgpu/WebGPUObjects.js +5 -10
- package/renderers/webgpu/WebGPUObjects.mjs +25 -0
- package/renderers/webgpu/WebGPUProperties.js +5 -11
- package/renderers/webgpu/WebGPUProperties.mjs +22 -0
- package/renderers/webgpu/WebGPURenderLists.js +20 -36
- package/renderers/webgpu/WebGPURenderLists.mjs +119 -0
- package/renderers/webgpu/WebGPURenderPipelines.js +260 -387
- package/renderers/webgpu/WebGPURenderPipelines.mjs +545 -0
- package/renderers/webgpu/WebGPURenderer.js +124 -262
- package/renderers/webgpu/WebGPURenderer.mjs +574 -0
- package/renderers/webgpu/WebGPUSampledTexture.js +18 -31
- package/renderers/webgpu/WebGPUSampledTexture.mjs +40 -0
- package/renderers/webgpu/WebGPUSampler.js +7 -12
- package/renderers/webgpu/WebGPUSampler.mjs +15 -0
- package/renderers/webgpu/WebGPUStorageBuffer.js +7 -12
- package/renderers/webgpu/WebGPUStorageBuffer.mjs +15 -0
- package/renderers/webgpu/WebGPUTextureRenderer.js +5 -11
- package/renderers/webgpu/WebGPUTextureRenderer.mjs +23 -0
- package/renderers/webgpu/WebGPUTextureUtils.js +29 -40
- package/renderers/webgpu/WebGPUTextureUtils.mjs +98 -0
- package/renderers/webgpu/WebGPUTextures.js +186 -333
- package/renderers/webgpu/WebGPUTextures.mjs +484 -0
- package/renderers/webgpu/WebGPUUniform.js +25 -51
- package/renderers/webgpu/WebGPUUniform.mjs +81 -0
- package/renderers/webgpu/WebGPUUniformsGroup.js +32 -72
- package/renderers/webgpu/WebGPUUniformsGroup.mjs +176 -0
- package/renderers/webgpu/constants.js +190 -181
- package/renderers/webgpu/constants.mjs +230 -0
- package/renderers/webgpu/nodes/ShaderLib.js +2 -2
- package/renderers/webgpu/nodes/ShaderLib.mjs +42 -0
- package/renderers/webgpu/nodes/WebGPUNodeBuilder.js +53 -124
- package/renderers/webgpu/nodes/WebGPUNodeBuilder.mjs +165 -0
- package/renderers/webgpu/nodes/WebGPUNodeUniform.js +17 -31
- package/renderers/webgpu/nodes/WebGPUNodeUniform.mjs +73 -0
- package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +8 -9
- package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.mjs +15 -0
- package/renderers/webgpu/nodes/WebGPUNodes.js +7 -45
- package/renderers/webgpu/nodes/WebGPUNodes.mjs +40 -0
- package/shaders/ACESFilmicToneMappingShader.js +44 -24
- package/shaders/ACESFilmicToneMappingShader.mjs +48 -0
- package/shaders/AfterimageShader.js +28 -18
- package/shaders/AfterimageShader.mjs +32 -0
- package/shaders/BasicShader.js +9 -7
- package/shaders/BasicShader.mjs +12 -0
- package/shaders/BleachBypassShader.js +31 -15
- package/shaders/BleachBypassShader.mjs +35 -0
- package/shaders/BlendShader.js +26 -19
- package/shaders/BlendShader.mjs +30 -0
- package/shaders/BokehShader.js +98 -36
- package/shaders/BokehShader.mjs +106 -0
- package/shaders/BokehShader2.js +261 -90
- package/shaders/BokehShader2.mjs +269 -0
- package/shaders/BrightnessContrastShader.js +28 -19
- package/shaders/BrightnessContrastShader.mjs +32 -0
- package/shaders/ColorCorrectionShader.js +26 -22
- package/shaders/ColorCorrectionShader.mjs +30 -0
- package/shaders/ColorifyShader.js +24 -16
- package/shaders/ColorifyShader.mjs +28 -0
- package/shaders/ConvolutionShader.js +40 -36
- package/shaders/ConvolutionShader.mjs +55 -0
- package/shaders/CopyShader.js +21 -13
- package/shaders/CopyShader.mjs +25 -0
- package/shaders/DOFMipMapShader.js +28 -21
- package/shaders/DOFMipMapShader.mjs +32 -0
- package/shaders/DepthLimitedBlurShader.js +85 -40
- package/shaders/DepthLimitedBlurShader.mjs +114 -0
- package/shaders/DigitalGlitch.js +74 -46
- package/shaders/DigitalGlitch.mjs +78 -0
- package/shaders/DotScreenShader.js +35 -27
- package/shaders/DotScreenShader.mjs +39 -0
- package/shaders/FXAAShader.js +1094 -19
- package/shaders/FXAAShader.mjs +1098 -0
- package/shaders/FilmShader.js +38 -52
- package/shaders/FilmShader.mjs +42 -0
- package/shaders/FocusShader.js +51 -24
- package/shaders/FocusShader.mjs +55 -0
- package/shaders/FreiChenShader.js +57 -24
- package/shaders/FreiChenShader.mjs +61 -0
- package/shaders/FresnelShader.js +43 -22
- package/shaders/FresnelShader.mjs +47 -0
- package/shaders/GammaCorrectionShader.js +19 -11
- package/shaders/GammaCorrectionShader.mjs +23 -0
- package/shaders/GodRaysShader.js +103 -94
- package/shaders/GodRaysShader.mjs +146 -0
- package/shaders/HalftoneShader.js +208 -65
- package/shaders/HalftoneShader.mjs +212 -0
- package/shaders/HorizontalBlurShader.js +7 -23
- package/shaders/HorizontalBlurShader.mjs +43 -0
- package/shaders/HorizontalTiltShiftShader.js +33 -21
- package/shaders/HorizontalTiltShiftShader.mjs +37 -0
- package/shaders/HueSaturationShader.js +37 -21
- package/shaders/HueSaturationShader.mjs +41 -0
- package/shaders/KaleidoShader.js +30 -22
- package/shaders/KaleidoShader.mjs +34 -0
- package/shaders/LuminosityHighPassShader.js +33 -27
- package/shaders/LuminosityHighPassShader.mjs +37 -0
- package/shaders/LuminosityShader.js +21 -11
- package/shaders/LuminosityShader.mjs +25 -0
- package/shaders/MirrorShader.js +31 -16
- package/shaders/MirrorShader.mjs +35 -0
- package/shaders/NormalMapShader.js +27 -23
- package/shaders/NormalMapShader.mjs +31 -0
- package/shaders/ParallaxShader.js +107 -48
- package/shaders/ParallaxShader.mjs +113 -0
- package/shaders/PixelShader.js +24 -16
- package/shaders/PixelShader.mjs +28 -0
- package/shaders/RGBShiftShader.js +26 -22
- package/shaders/RGBShiftShader.mjs +30 -0
- package/shaders/SAOShader.js +132 -48
- package/shaders/SAOShader.mjs +144 -0
- package/shaders/SMAAShader.js +256 -135
- package/shaders/SMAAShader.mjs +272 -0
- package/shaders/SSAOShader.js +153 -81
- package/shaders/SSAOShader.mjs +172 -0
- package/shaders/SSRShader.js +32 -87
- package/shaders/SSRShader.mjs +324 -0
- package/shaders/SepiaShader.js +25 -15
- package/shaders/SepiaShader.mjs +29 -0
- package/shaders/SobelOperatorShader.js +40 -29
- package/shaders/SobelOperatorShader.mjs +44 -0
- package/shaders/SubsurfaceScatteringShader.js +53 -39
- package/shaders/SubsurfaceScatteringShader.mjs +59 -0
- package/shaders/TechnicolorShader.js +20 -13
- package/shaders/TechnicolorShader.mjs +24 -0
- package/shaders/ToneMapShader.js +44 -28
- package/shaders/ToneMapShader.mjs +48 -0
- package/shaders/ToonShader.js +172 -96
- package/shaders/ToonShader.mjs +188 -0
- package/shaders/TriangleBlurShader.js +32 -23
- package/shaders/TriangleBlurShader.mjs +36 -0
- package/shaders/UnpackDepthRGBAShader.js +22 -14
- package/shaders/UnpackDepthRGBAShader.mjs +26 -0
- package/shaders/VerticalBlurShader.js +7 -23
- package/shaders/VerticalBlurShader.mjs +44 -0
- package/shaders/VerticalTiltShiftShader.js +33 -21
- package/shaders/VerticalTiltShiftShader.mjs +37 -0
- package/shaders/VignetteShader.js +24 -28
- package/shaders/VignetteShader.mjs +28 -0
- package/shaders/VolumeShader.js +174 -77
- package/shaders/VolumeShader.mjs +178 -0
- package/shaders/WaterRefractionShader.js +38 -6
- package/shaders/WaterRefractionShader.mjs +57 -0
- package/shaders/types.js +1 -1
- package/{custom.d.js → shaders/types.mjs} +0 -0
- package/textures/FlakesTexture.js +8 -10
- package/textures/FlakesTexture.mjs +30 -0
- package/types/helpers.js +3 -2
- package/types/helpers.mjs +4 -0
- package/utils/BufferGeometryUtils.js +251 -325
- package/utils/BufferGeometryUtils.mjs +570 -0
- package/utils/GeometryCompressionUtils.js +241 -239
- package/utils/GeometryCompressionUtils.mjs +547 -0
- package/utils/GeometryUtils.js +41 -94
- package/utils/GeometryUtils.mjs +108 -0
- package/utils/RoughnessMipmapper.js +38 -82
- package/utils/RoughnessMipmapper.mjs +213 -0
- package/utils/SceneUtils.js +15 -20
- package/utils/SceneUtils.mjs +36 -0
- package/utils/ShadowMapViewer.js +49 -95
- package/utils/ShadowMapViewer.mjs +114 -0
- package/utils/SkeletonUtils.js +74 -165
- package/utils/SkeletonUtils.mjs +292 -0
- package/utils/UVsDebug.js +32 -62
- package/utils/UVsDebug.mjs +85 -0
- package/utils/WorkerPool.js +13 -33
- package/utils/WorkerPool.mjs +62 -0
- package/webxr/ARButton.js +72 -98
- package/webxr/ARButton.mjs +119 -0
- package/webxr/OculusHandModel.js +18 -37
- package/webxr/OculusHandModel.mjs +71 -0
- package/webxr/OculusHandPointerModel.js +58 -80
- package/webxr/OculusHandPointerModel.mjs +207 -0
- package/webxr/Text2D.js +37 -19
- package/webxr/Text2D.mjs +31 -0
- package/webxr/VRButton.js +59 -90
- package/webxr/VRButton.mjs +105 -0
- package/webxr/XRControllerModelFactory.js +58 -116
- package/webxr/XRControllerModelFactory.mjs +146 -0
- package/webxr/XREstimatedLight.js +39 -66
- package/webxr/XREstimatedLight.mjs +126 -0
- package/webxr/XRHandMeshModel.js +40 -29
- package/webxr/XRHandMeshModel.mjs +73 -0
- package/webxr/XRHandModelFactory.js +28 -31
- package/webxr/XRHandModelFactory.mjs +61 -0
- package/webxr/XRHandPrimitiveModel.js +41 -27
- package/webxr/XRHandPrimitiveModel.mjs +68 -0
- package/BufferGeometryUtils-1a7a235c.js +0 -655
- package/BufferGeometryUtils-971dfde3.js +0 -1
- package/Nodes-4f766d71.js +0 -471
- package/Nodes-9aa16d74.js +0 -1
- package/animation/AnimationClipCreator.cjs.js +0 -1
- package/animation/CCDIKSolver.cjs.js +0 -1
- package/animation/MMDAnimationHelper.cjs.js +0 -1
- package/animation/MMDPhysics.cjs.js +0 -1
- package/cameras/CinematicCamera.cjs.js +0 -1
- package/controls/ArcballControls.cjs.js +0 -1
- package/controls/DeviceOrientationControls.cjs.js +0 -1
- package/controls/DragControls.cjs.js +0 -1
- package/controls/FirstPersonControls.cjs.js +0 -1
- package/controls/FlyControls.cjs.js +0 -1
- package/controls/OrbitControls.cjs.js +0 -1
- package/controls/PointerLockControls.cjs.js +0 -1
- package/controls/TrackballControls.cjs.js +0 -1
- package/controls/TransformControls.cjs.js +0 -1
- package/controls/experimental/CameraControls.cjs.js +0 -1
- package/csm/CSM.cjs.js +0 -1
- package/csm/CSMFrustum.cjs.js +0 -1
- package/csm/CSMHelper.cjs.js +0 -1
- package/csm/CSMShader.cjs.js +0 -1
- package/curves/CurveExtras.cjs.js +0 -1
- package/curves/NURBSCurve.cjs.js +0 -1
- package/curves/NURBSSurface.cjs.js +0 -1
- package/curves/NURBSUtils.cjs.js +0 -1
- package/custom.d.cjs.js +0 -1
- package/deprecated/Geometry.cjs.js +0 -1
- package/effects/AnaglyphEffect.cjs.js +0 -1
- package/effects/AsciiEffect.cjs.js +0 -1
- package/effects/OutlineEffect.cjs.js +0 -1
- package/effects/ParallaxBarrierEffect.cjs.js +0 -1
- package/effects/PeppersGhostEffect.cjs.js +0 -1
- package/effects/StereoEffect.cjs.js +0 -1
- package/environments/RoomEnvironment.cjs.js +0 -1
- package/exporters/ColladaExporter.cjs.js +0 -1
- package/exporters/DRACOExporter.cjs.js +0 -1
- package/exporters/GLTFExporter.cjs.js +0 -1
- package/exporters/MMDExporter.cjs.js +0 -1
- package/exporters/OBJExporter.cjs.js +0 -1
- package/exporters/PLYExporter.cjs.js +0 -1
- package/exporters/STLExporter.cjs.js +0 -1
- package/exporters/USDZExporter.cjs.js +0 -1
- package/geometries/BoxLineGeometry.cjs.js +0 -1
- package/geometries/ConvexGeometry.cjs.js +0 -1
- package/geometries/DecalGeometry.cjs.js +0 -1
- package/geometries/LightningStrike.cjs.js +0 -1
- package/geometries/ParametricGeometries.cjs.js +0 -1
- package/geometries/ParametricGeometry.cjs.js +0 -1
- package/geometries/RoundedBoxGeometry.cjs.js +0 -1
- package/geometries/TeapotGeometry.cjs.js +0 -1
- package/geometries/TextGeometry.cjs.js +0 -1
- package/helpers/LightProbeHelper.cjs.js +0 -1
- package/helpers/PositionalAudioHelper.cjs.js +0 -1
- package/helpers/RectAreaLightHelper.cjs.js +0 -1
- package/helpers/VertexNormalsHelper.cjs.js +0 -1
- package/helpers/VertexTangentsHelper.cjs.js +0 -1
- package/index.cjs.js +0 -1
- package/interactive/InteractiveGroup.cjs.js +0 -1
- package/interactive/InteractiveGroup.d.ts +0 -5
- package/interactive/InteractiveGroup.js +0 -87
- package/interactive/SelectionBox.cjs.js +0 -1
- package/interactive/SelectionHelper.cjs.js +0 -1
- package/libs/MeshoptDecoder.cjs.js +0 -1
- package/libs/MotionControllers.cjs.js +0 -1
- package/lights/LightProbeGenerator.cjs.js +0 -1
- package/lights/RectAreaLightUniformsLib.cjs.js +0 -1
- package/lines/Line2.cjs.js +0 -1
- package/lines/LineGeometry.cjs.js +0 -1
- package/lines/LineMaterial.cjs.js +0 -1
- package/lines/LineSegments2.cjs.js +0 -1
- package/lines/LineSegmentsGeometry.cjs.js +0 -1
- package/lines/Wireframe.cjs.js +0 -1
- package/lines/WireframeGeometry2.cjs.js +0 -1
- package/loaders/3DMLoader.cjs.js +0 -1
- package/loaders/3MFLoader.cjs.js +0 -1
- package/loaders/AMFLoader.cjs.js +0 -1
- package/loaders/AssimpLoader.cjs.js +0 -1
- package/loaders/BVHLoader.cjs.js +0 -1
- package/loaders/BasisTextureLoader.cjs.js +0 -1
- package/loaders/ColladaLoader.cjs.js +0 -1
- package/loaders/DDSLoader.cjs.js +0 -1
- package/loaders/DRACOLoader.cjs.js +0 -1
- package/loaders/EXRLoader.cjs.js +0 -1
- package/loaders/FBXLoader.cjs.js +0 -1
- package/loaders/FontLoader.cjs.js +0 -1
- package/loaders/GCodeLoader.cjs.js +0 -1
- package/loaders/GLTFLoader.cjs.js +0 -1
- package/loaders/HDRCubeTextureLoader.cjs.js +0 -1
- package/loaders/KMZLoader.cjs.js +0 -1
- package/loaders/KTX2Loader.cjs.js +0 -1
- package/loaders/KTXLoader.cjs.js +0 -1
- package/loaders/LDrawLoader.cjs.js +0 -1
- package/loaders/LUT3dlLoader.cjs.js +0 -1
- package/loaders/LUTCubeLoader.cjs.js +0 -1
- package/loaders/LWOLoader.cjs.js +0 -1
- package/loaders/LottieLoader.cjs.js +0 -1
- package/loaders/MD2Loader.cjs.js +0 -1
- package/loaders/MDDLoader.cjs.js +0 -1
- package/loaders/MMDLoader.cjs.js +0 -1
- package/loaders/MTLLoader.cjs.js +0 -1
- package/loaders/NRRDLoader.cjs.js +0 -1
- package/loaders/NodeMaterialLoader.cjs.js +0 -1
- package/loaders/OBJLoader.cjs.js +0 -1
- package/loaders/PCDLoader.cjs.js +0 -1
- package/loaders/PDBLoader.cjs.js +0 -1
- package/loaders/PLYLoader.cjs.js +0 -1
- package/loaders/PRWMLoader.cjs.js +0 -1
- package/loaders/PVRLoader.cjs.js +0 -1
- package/loaders/RGBELoader.cjs.js +0 -1
- package/loaders/RGBMLoader.cjs.js +0 -1
- package/loaders/STLLoader.cjs.js +0 -1
- package/loaders/SVGLoader.cjs.js +0 -1
- package/loaders/TDSLoader.cjs.js +0 -1
- package/loaders/TGALoader.cjs.js +0 -1
- package/loaders/TTFLoader.cjs.js +0 -1
- package/loaders/TiltLoader.cjs.js +0 -1
- package/loaders/VOXLoader.cjs.js +0 -1
- package/loaders/VRMLLoader.cjs.js +0 -1
- package/loaders/VRMLoader.cjs.js +0 -1
- package/loaders/VTKLoader.cjs.js +0 -1
- package/loaders/XLoader.cjs.js +0 -1
- package/loaders/XYZLoader.cjs.js +0 -1
- package/loaders/lwo/IFFParser.cjs.js +0 -1
- package/loaders/lwo/LWO2Parser.cjs.js +0 -1
- package/loaders/lwo/LWO3Parser.cjs.js +0 -1
- package/math/Capsule.cjs.js +0 -1
- package/math/ColorConverter.cjs.js +0 -1
- package/math/ConvexHull.cjs.js +0 -1
- package/math/ImprovedNoise.cjs.js +0 -1
- package/math/Lut.cjs.js +0 -1
- package/math/MeshSurfaceSampler.cjs.js +0 -1
- package/math/OBB.cjs.js +0 -1
- package/math/Octree.cjs.js +0 -1
- package/math/SimplexNoise.cjs.js +0 -1
- package/misc/ConvexObjectBreaker.cjs.js +0 -1
- package/misc/GPUComputationRenderer.cjs.js +0 -1
- package/misc/Gyroscope.cjs.js +0 -1
- package/misc/MD2Character.cjs.js +0 -1
- package/misc/MD2CharacterComplex.cjs.js +0 -1
- package/misc/MorphAnimMesh.cjs.js +0 -1
- package/misc/MorphBlendMesh.cjs.js +0 -1
- package/misc/ProgressiveLightmap.cjs.js +0 -1
- package/misc/RollerCoaster.cjs.js +0 -1
- package/misc/TubePainter.cjs.js +0 -1
- package/misc/Volume.cjs.js +0 -1
- package/misc/VolumeSlice.cjs.js +0 -1
- package/misc/WebGL.cjs.js +0 -1
- package/modifiers/CurveModifier.cjs.js +0 -1
- package/modifiers/EdgeSplitModifier.cjs.js +0 -1
- package/modifiers/SimplifyModifier.cjs.js +0 -1
- package/modifiers/TessellateModifier.cjs.js +0 -1
- package/nodes/Nodes.cjs.js +0 -1
- package/nodes/ShaderNode.cjs.js +0 -1
- package/nodes/accessors/BufferNode.cjs.js +0 -1
- package/nodes/accessors/CameraNode.cjs.js +0 -1
- package/nodes/accessors/CubeTextureNode.cjs.js +0 -1
- package/nodes/accessors/MaterialNode.cjs.js +0 -1
- package/nodes/accessors/MaterialReferenceNode.cjs.js +0 -1
- package/nodes/accessors/ModelNode.cjs.js +0 -1
- package/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
- package/nodes/accessors/NormalNode.cjs.js +0 -1
- package/nodes/accessors/Object3DNode.cjs.js +0 -1
- package/nodes/accessors/PointUVNode.cjs.js +0 -1
- package/nodes/accessors/PositionNode.cjs.js +0 -1
- package/nodes/accessors/ReferenceNode.cjs.js +0 -1
- package/nodes/accessors/ReflectNode.cjs.js +0 -1
- package/nodes/accessors/SkinningNode.cjs.js +0 -1
- package/nodes/accessors/TextureNode.cjs.js +0 -1
- package/nodes/accessors/UVNode.cjs.js +0 -1
- package/nodes/core/ArrayUniformNode.cjs.js +0 -1
- package/nodes/core/AttributeNode.cjs.js +0 -1
- package/nodes/core/BypassNode.cjs.js +0 -1
- package/nodes/core/CodeNode.cjs.js +0 -1
- package/nodes/core/ConstNode.cjs.js +0 -1
- package/nodes/core/ContextNode.cjs.js +0 -1
- package/nodes/core/ExpressionNode.cjs.js +0 -1
- package/nodes/core/FunctionCallNode.cjs.js +0 -1
- package/nodes/core/FunctionNode.cjs.js +0 -1
- package/nodes/core/InputNode.cjs.js +0 -1
- package/nodes/core/Node.cjs.js +0 -1
- package/nodes/core/NodeAttribute.cjs.js +0 -1
- package/nodes/core/NodeBuilder.cjs.js +0 -1
- package/nodes/core/NodeCode.cjs.js +0 -1
- package/nodes/core/NodeFrame.cjs.js +0 -1
- package/nodes/core/NodeFunction.cjs.js +0 -1
- package/nodes/core/NodeFunction.js +0 -17
- package/nodes/core/NodeFunctionInput.cjs.js +0 -1
- package/nodes/core/NodeKeywords.cjs.js +0 -1
- package/nodes/core/NodeParser.cjs.js +0 -1
- package/nodes/core/NodeParser.js +0 -8
- package/nodes/core/NodeUniform.cjs.js +0 -1
- package/nodes/core/NodeUtils.cjs.js +0 -1
- package/nodes/core/NodeVar.cjs.js +0 -1
- package/nodes/core/NodeVary.cjs.js +0 -1
- package/nodes/core/PropertyNode.cjs.js +0 -1
- package/nodes/core/TempNode.cjs.js +0 -1
- package/nodes/core/UniformNode.cjs.js +0 -1
- package/nodes/core/VarNode.cjs.js +0 -1
- package/nodes/core/VaryNode.cjs.js +0 -1
- package/nodes/core/constants.cjs.js +0 -1
- package/nodes/display/ColorSpaceNode.cjs.js +0 -1
- package/nodes/display/NormalMapNode.cjs.js +0 -1
- package/nodes/fog/FogNode.cjs.js +0 -1
- package/nodes/fog/FogRangeNode.cjs.js +0 -1
- package/nodes/functions/BSDFs.cjs.js +0 -1
- package/nodes/functions/PhysicalMaterialFunctions.cjs.js +0 -1
- package/nodes/functions/PhysicalMaterialFunctions.js +0 -57
- package/nodes/lights/LightContextNode.cjs.js +0 -1
- package/nodes/lights/LightNode.cjs.js +0 -1
- package/nodes/lights/LightsNode.cjs.js +0 -1
- package/nodes/loaders/NodeLoader.cjs.js +0 -1
- package/nodes/loaders/NodeMaterialLoader.cjs.js +0 -1
- package/nodes/loaders/NodeObjectLoader.cjs.js +0 -1
- package/nodes/materials/LineBasicNodeMaterial.cjs.js +0 -1
- package/nodes/materials/Materials.cjs.js +0 -1
- package/nodes/materials/MeshBasicNodeMaterial.cjs.js +0 -1
- package/nodes/materials/MeshStandardNodeMaterial.cjs.js +0 -1
- package/nodes/materials/NodeMaterial.cjs.js +0 -1
- package/nodes/materials/PointsNodeMaterial.cjs.js +0 -1
- package/nodes/math/CondNode.cjs.js +0 -1
- package/nodes/math/MathNode.cjs.js +0 -1
- package/nodes/math/OperatorNode.cjs.js +0 -1
- package/nodes/parsers/GLSLNodeFunction.cjs.js +0 -1
- package/nodes/parsers/GLSLNodeFunction.js +0 -101
- package/nodes/parsers/GLSLNodeParser.cjs.js +0 -1
- package/nodes/parsers/GLSLNodeParser.js +0 -13
- package/nodes/parsers/WGSLNodeFunction.cjs.js +0 -1
- package/nodes/parsers/WGSLNodeFunction.js +0 -71
- package/nodes/parsers/WGSLNodeParser.cjs.js +0 -1
- package/nodes/parsers/WGSLNodeParser.js +0 -13
- package/nodes/procedural/CheckerNode.cjs.js +0 -1
- package/nodes/utils/ArrayElementNode.cjs.js +0 -1
- package/nodes/utils/ConvertNode.cjs.js +0 -1
- package/nodes/utils/JoinNode.cjs.js +0 -1
- package/nodes/utils/MatcapUVNode.cjs.js +0 -1
- package/nodes/utils/OscNode.cjs.js +0 -1
- package/nodes/utils/SplitNode.cjs.js +0 -1
- package/nodes/utils/SpriteSheetUVNode.cjs.js +0 -1
- package/nodes/utils/TimerNode.cjs.js +0 -1
- package/objects/GroundProjectedEnv.cjs.js +0 -1
- package/objects/Lensflare.cjs.js +0 -1
- package/objects/LightningStorm.cjs.js +0 -1
- package/objects/MarchingCubes.cjs.js +0 -1
- package/objects/Reflector.cjs.js +0 -1
- package/objects/ReflectorForSSRPass.cjs.js +0 -1
- package/objects/ReflectorRTT.cjs.js +0 -1
- package/objects/Refractor.cjs.js +0 -1
- package/objects/ShadowMesh.cjs.js +0 -1
- package/objects/Sky.cjs.js +0 -1
- package/objects/Water.cjs.js +0 -1
- package/objects/Water2.cjs.js +0 -1
- package/offscreen/jank.cjs.js +0 -1
- package/offscreen/offscreen.cjs.js +0 -1
- package/offscreen/scene.cjs.js +0 -1
- package/physics/AmmoPhysics.cjs.js +0 -1
- package/postprocessing/AdaptiveToneMappingPass.cjs.js +0 -1
- package/postprocessing/AfterimagePass.cjs.js +0 -1
- package/postprocessing/BloomPass.cjs.js +0 -1
- package/postprocessing/BokehPass.cjs.js +0 -1
- package/postprocessing/ClearPass.cjs.js +0 -1
- package/postprocessing/CubeTexturePass.cjs.js +0 -1
- package/postprocessing/DotScreenPass.cjs.js +0 -1
- package/postprocessing/EffectComposer.cjs.js +0 -1
- package/postprocessing/FilmPass.cjs.js +0 -1
- package/postprocessing/GlitchPass.cjs.js +0 -1
- package/postprocessing/HalftonePass.cjs.js +0 -1
- package/postprocessing/LUTPass.cjs.js +0 -1
- package/postprocessing/MaskPass.cjs.js +0 -1
- package/postprocessing/OutlinePass.cjs.js +0 -1
- package/postprocessing/Pass.cjs.js +0 -1
- package/postprocessing/RenderPass.cjs.js +0 -1
- package/postprocessing/RenderPixelatedPass.cjs.js +0 -1
- package/postprocessing/SAOPass.cjs.js +0 -1
- package/postprocessing/SMAAPass.cjs.js +0 -1
- package/postprocessing/SSAARenderPass.cjs.js +0 -1
- package/postprocessing/SSAOPass.cjs.js +0 -1
- package/postprocessing/SSRPass.cjs.js +0 -1
- package/postprocessing/SavePass.cjs.js +0 -1
- package/postprocessing/ShaderPass.cjs.js +0 -1
- package/postprocessing/TAARenderPass.cjs.js +0 -1
- package/postprocessing/TexturePass.cjs.js +0 -1
- package/postprocessing/UnrealBloomPass.cjs.js +0 -1
- package/renderers/CSS2DRenderer.cjs.js +0 -1
- package/renderers/CSS3DRenderer.cjs.js +0 -1
- package/renderers/Projector.cjs.js +0 -1
- package/renderers/SVGRenderer.cjs.js +0 -1
- package/renderers/nodes/accessors/CameraNode.cjs.js +0 -1
- package/renderers/nodes/accessors/ModelNode.cjs.js +0 -1
- package/renderers/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
- package/renderers/nodes/accessors/NormalNode.cjs.js +0 -1
- package/renderers/nodes/accessors/PositionNode.cjs.js +0 -1
- package/renderers/nodes/accessors/UVNode.cjs.js +0 -1
- package/renderers/nodes/core/AttributeNode.cjs.js +0 -1
- package/renderers/nodes/core/InputNode.cjs.js +0 -1
- package/renderers/nodes/core/Node.cjs.js +0 -1
- package/renderers/nodes/core/NodeAttribute.cjs.js +0 -1
- package/renderers/nodes/core/NodeBuilder.cjs.js +0 -1
- package/renderers/nodes/core/NodeFrame.cjs.js +0 -1
- package/renderers/nodes/core/NodeSlot.cjs.js +0 -1
- package/renderers/nodes/core/NodeUniform.cjs.js +0 -1
- package/renderers/nodes/core/NodeVary.cjs.js +0 -1
- package/renderers/nodes/core/VaryNode.cjs.js +0 -1
- package/renderers/nodes/core/constants.cjs.js +0 -1
- package/renderers/nodes/inputs/ColorNode.cjs.js +0 -1
- package/renderers/nodes/inputs/FloatNode.cjs.js +0 -1
- package/renderers/nodes/inputs/Matrix3Node.cjs.js +0 -1
- package/renderers/nodes/inputs/Matrix4Node.cjs.js +0 -1
- package/renderers/nodes/inputs/TextureNode.cjs.js +0 -1
- package/renderers/nodes/inputs/Vector2Node.cjs.js +0 -1
- package/renderers/nodes/inputs/Vector3Node.cjs.js +0 -1
- package/renderers/nodes/inputs/Vector4Node.cjs.js +0 -1
- package/renderers/nodes/math/MathNode.cjs.js +0 -1
- package/renderers/nodes/math/OperatorNode.cjs.js +0 -1
- package/renderers/nodes/utils/SwitchNode.cjs.js +0 -1
- package/renderers/nodes/utils/TimerNode.cjs.js +0 -1
- package/renderers/webgpu/WebGPU.cjs.js +0 -1
- package/renderers/webgpu/WebGPUAttributes.cjs.js +0 -1
- package/renderers/webgpu/WebGPUBackground.cjs.js +0 -1
- package/renderers/webgpu/WebGPUBinding.cjs.js +0 -1
- package/renderers/webgpu/WebGPUBindings.cjs.js +0 -1
- package/renderers/webgpu/WebGPUComputePipelines.cjs.js +0 -1
- package/renderers/webgpu/WebGPUGeometries.cjs.js +0 -1
- package/renderers/webgpu/WebGPUInfo.cjs.js +0 -1
- package/renderers/webgpu/WebGPUObjects.cjs.js +0 -1
- package/renderers/webgpu/WebGPUProperties.cjs.js +0 -1
- package/renderers/webgpu/WebGPURenderLists.cjs.js +0 -1
- package/renderers/webgpu/WebGPURenderPipelines.cjs.js +0 -1
- package/renderers/webgpu/WebGPURenderer.cjs.js +0 -1
- package/renderers/webgpu/WebGPUSampledTexture.cjs.js +0 -1
- package/renderers/webgpu/WebGPUSampler.cjs.js +0 -1
- package/renderers/webgpu/WebGPUStorageBuffer.cjs.js +0 -1
- package/renderers/webgpu/WebGPUTextureRenderer.cjs.js +0 -1
- package/renderers/webgpu/WebGPUTextureUtils.cjs.js +0 -1
- package/renderers/webgpu/WebGPUTextures.cjs.js +0 -1
- package/renderers/webgpu/WebGPUUniform.cjs.js +0 -1
- package/renderers/webgpu/WebGPUUniformsGroup.cjs.js +0 -1
- package/renderers/webgpu/constants.cjs.js +0 -1
- package/renderers/webgpu/nodes/ShaderLib.cjs.js +0 -1
- package/renderers/webgpu/nodes/WebGPUNodeBuilder.cjs.js +0 -1
- package/renderers/webgpu/nodes/WebGPUNodeUniform.cjs.js +0 -1
- package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.cjs.js +0 -1
- package/renderers/webgpu/nodes/WebGPUNodes.cjs.js +0 -1
- package/shaders/ACESFilmicToneMappingShader.cjs.js +0 -1
- package/shaders/AfterimageShader.cjs.js +0 -1
- package/shaders/BasicShader.cjs.js +0 -1
- package/shaders/BleachBypassShader.cjs.js +0 -1
- package/shaders/BlendShader.cjs.js +0 -1
- package/shaders/BokehShader.cjs.js +0 -1
- package/shaders/BokehShader2.cjs.js +0 -1
- package/shaders/BrightnessContrastShader.cjs.js +0 -1
- package/shaders/ColorCorrectionShader.cjs.js +0 -1
- package/shaders/ColorifyShader.cjs.js +0 -1
- package/shaders/ConvolutionShader.cjs.js +0 -1
- package/shaders/CopyShader.cjs.js +0 -1
- package/shaders/DOFMipMapShader.cjs.js +0 -1
- package/shaders/DepthLimitedBlurShader.cjs.js +0 -1
- package/shaders/DigitalGlitch.cjs.js +0 -1
- package/shaders/DotScreenShader.cjs.js +0 -1
- package/shaders/FXAAShader.cjs.js +0 -1
- package/shaders/FilmShader.cjs.js +0 -1
- package/shaders/FocusShader.cjs.js +0 -1
- package/shaders/FreiChenShader.cjs.js +0 -1
- package/shaders/FresnelShader.cjs.js +0 -1
- package/shaders/GammaCorrectionShader.cjs.js +0 -1
- package/shaders/GodRaysShader.cjs.js +0 -1
- package/shaders/HalftoneShader.cjs.js +0 -1
- package/shaders/HorizontalBlurShader.cjs.js +0 -1
- package/shaders/HorizontalTiltShiftShader.cjs.js +0 -1
- package/shaders/HueSaturationShader.cjs.js +0 -1
- package/shaders/KaleidoShader.cjs.js +0 -1
- package/shaders/LuminosityHighPassShader.cjs.js +0 -1
- package/shaders/LuminosityShader.cjs.js +0 -1
- package/shaders/MirrorShader.cjs.js +0 -1
- package/shaders/NormalMapShader.cjs.js +0 -1
- package/shaders/ParallaxShader.cjs.js +0 -1
- package/shaders/PixelShader.cjs.js +0 -1
- package/shaders/RGBShiftShader.cjs.js +0 -1
- package/shaders/SAOShader.cjs.js +0 -1
- package/shaders/SMAAShader.cjs.js +0 -1
- package/shaders/SSAOShader.cjs.js +0 -1
- package/shaders/SSRShader.cjs.js +0 -1
- package/shaders/SepiaShader.cjs.js +0 -1
- package/shaders/SobelOperatorShader.cjs.js +0 -1
- package/shaders/SubsurfaceScatteringShader.cjs.js +0 -1
- package/shaders/TechnicolorShader.cjs.js +0 -1
- package/shaders/ToneMapShader.cjs.js +0 -1
- package/shaders/ToonShader.cjs.js +0 -1
- package/shaders/TriangleBlurShader.cjs.js +0 -1
- package/shaders/UnpackDepthRGBAShader.cjs.js +0 -1
- package/shaders/VerticalBlurShader.cjs.js +0 -1
- package/shaders/VerticalTiltShiftShader.cjs.js +0 -1
- package/shaders/VignetteShader.cjs.js +0 -1
- package/shaders/VolumeShader.cjs.js +0 -1
- package/shaders/WaterRefractionShader.cjs.js +0 -1
- package/shaders/index.cjs.js +0 -1
- package/shaders/index.d.ts +0 -54
- package/shaders/index.js +0 -53
- package/shaders/types.cjs.js +0 -1
- package/textures/FlakesTexture.cjs.js +0 -1
- package/types/helpers.cjs.js +0 -1
- package/types/shared.cjs.js +0 -1
- package/types/shared.js +0 -1
- package/types/utils.cjs.js +0 -1
- package/types/utils.js +0 -1
- package/utils/BufferGeometryUtils.cjs.js +0 -1
- package/utils/GeometryCompressionUtils.cjs.js +0 -1
- package/utils/GeometryUtils.cjs.js +0 -1
- package/utils/LDrawUtils.cjs.js +0 -1
- package/utils/LDrawUtils.d.ts +0 -5
- package/utils/LDrawUtils.js +0 -144
- package/utils/RoughnessMipmapper.cjs.js +0 -1
- package/utils/SceneUtils.cjs.js +0 -1
- package/utils/ShadowMapViewer.cjs.js +0 -1
- package/utils/SkeletonUtils.cjs.js +0 -1
- package/utils/UVsDebug.cjs.js +0 -1
- package/utils/WorkerPool.cjs.js +0 -1
- package/webxr/ARButton.cjs.js +0 -1
- package/webxr/OculusHandModel.cjs.js +0 -1
- package/webxr/OculusHandPointerModel.cjs.js +0 -1
- package/webxr/Text2D.cjs.js +0 -1
- package/webxr/VRButton.cjs.js +0 -1
- package/webxr/XRControllerModelFactory.cjs.js +0 -1
- package/webxr/XREstimatedLight.cjs.js +0 -1
- package/webxr/XRHandMeshModel.cjs.js +0 -1
- package/webxr/XRHandModelFactory.cjs.js +0 -1
- package/webxr/XRHandPrimitiveModel.cjs.js +0 -1
package/loaders/EXRLoader.js
CHANGED
|
@@ -1,90 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* Supports reading as UnsignedByte, HalfFloat and Float type data texture.
|
|
7
|
-
*
|
|
8
|
-
* Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita
|
|
9
|
-
* implementation, so I have preserved their copyright notices.
|
|
10
|
-
*/
|
|
11
|
-
// /*
|
|
12
|
-
// Copyright (c) 2014 - 2017, Syoyo Fujita
|
|
13
|
-
// All rights reserved.
|
|
14
|
-
// Redistribution and use in source and binary forms, with or without
|
|
15
|
-
// modification, are permitted provided that the following conditions are met:
|
|
16
|
-
// * Redistributions of source code must retain the above copyright
|
|
17
|
-
// notice, this list of conditions and the following disclaimer.
|
|
18
|
-
// * Redistributions in binary form must reproduce the above copyright
|
|
19
|
-
// notice, this list of conditions and the following disclaimer in the
|
|
20
|
-
// documentation and/or other materials provided with the distribution.
|
|
21
|
-
// * Neither the name of the Syoyo Fujita nor the
|
|
22
|
-
// names of its contributors may be used to endorse or promote products
|
|
23
|
-
// derived from this software without specific prior written permission.
|
|
24
|
-
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
25
|
-
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
26
|
-
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
27
|
-
// DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
|
28
|
-
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
29
|
-
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
30
|
-
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
31
|
-
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
32
|
-
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
33
|
-
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
34
|
-
// */
|
|
35
|
-
// // TinyEXR contains some OpenEXR code, which is licensed under ------------
|
|
36
|
-
// ///////////////////////////////////////////////////////////////////////////
|
|
37
|
-
// //
|
|
38
|
-
// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas
|
|
39
|
-
// // Digital Ltd. LLC
|
|
40
|
-
// //
|
|
41
|
-
// // All rights reserved.
|
|
42
|
-
// //
|
|
43
|
-
// // Redistribution and use in source and binary forms, with or without
|
|
44
|
-
// // modification, are permitted provided that the following conditions are
|
|
45
|
-
// // met:
|
|
46
|
-
// // * Redistributions of source code must retain the above copyright
|
|
47
|
-
// // notice, this list of conditions and the following disclaimer.
|
|
48
|
-
// // * Redistributions in binary form must reproduce the above
|
|
49
|
-
// // copyright notice, this list of conditions and the following disclaimer
|
|
50
|
-
// // in the documentation and/or other materials provided with the
|
|
51
|
-
// // distribution.
|
|
52
|
-
// // * Neither the name of Industrial Light & Magic nor the names of
|
|
53
|
-
// // its contributors may be used to endorse or promote products derived
|
|
54
|
-
// // from this software without specific prior written permission.
|
|
55
|
-
// //
|
|
56
|
-
// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
57
|
-
// // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
58
|
-
// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
59
|
-
// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
60
|
-
// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
61
|
-
// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
62
|
-
// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
63
|
-
// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
64
|
-
// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
65
|
-
// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
66
|
-
// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
67
|
-
// //
|
|
68
|
-
// ///////////////////////////////////////////////////////////////////////////
|
|
69
|
-
// // End of OpenEXR license -------------------------------------------------
|
|
70
|
-
|
|
71
|
-
class EXRLoader extends DataTextureLoader {
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const THREE = require("three");
|
|
4
|
+
const fflate = require("fflate");
|
|
5
|
+
class EXRLoader extends THREE.DataTextureLoader {
|
|
72
6
|
constructor(manager) {
|
|
73
7
|
super(manager);
|
|
74
|
-
this.type = HalfFloatType;
|
|
8
|
+
this.type = THREE.HalfFloatType;
|
|
75
9
|
}
|
|
76
|
-
|
|
77
10
|
parse(buffer) {
|
|
78
11
|
const USHORT_RANGE = 1 << 16;
|
|
79
12
|
const BITMAP_SIZE = USHORT_RANGE >> 3;
|
|
80
|
-
const HUF_ENCBITS = 16;
|
|
81
|
-
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
const HUF_ENCSIZE = (1 << HUF_ENCBITS) + 1; // encoding table size
|
|
85
|
-
|
|
86
|
-
const HUF_DECSIZE = 1 << HUF_DECBITS; // decoding table size
|
|
87
|
-
|
|
13
|
+
const HUF_ENCBITS = 16;
|
|
14
|
+
const HUF_DECBITS = 14;
|
|
15
|
+
const HUF_ENCSIZE = (1 << HUF_ENCBITS) + 1;
|
|
16
|
+
const HUF_DECSIZE = 1 << HUF_DECBITS;
|
|
88
17
|
const HUF_DECMASK = HUF_DECSIZE - 1;
|
|
89
18
|
const NBITS = 16;
|
|
90
19
|
const A_OFFSET = 1 << NBITS - 1;
|
|
@@ -103,23 +32,18 @@ class EXRLoader extends DataTextureLoader {
|
|
|
103
32
|
const LOSSY_DCT = 1;
|
|
104
33
|
const RLE = 2;
|
|
105
34
|
const logBase = Math.pow(2.7182818, 2.2);
|
|
106
|
-
|
|
107
35
|
function reverseLutFromBitmap(bitmap, lut) {
|
|
108
36
|
var k = 0;
|
|
109
|
-
|
|
110
37
|
for (var i = 0; i < USHORT_RANGE; ++i) {
|
|
111
38
|
if (i == 0 || bitmap[i >> 3] & 1 << (i & 7)) {
|
|
112
39
|
lut[k++] = i;
|
|
113
40
|
}
|
|
114
41
|
}
|
|
115
|
-
|
|
116
42
|
var n = k - 1;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
43
|
+
while (k < USHORT_RANGE)
|
|
44
|
+
lut[k++] = 0;
|
|
120
45
|
return n;
|
|
121
46
|
}
|
|
122
|
-
|
|
123
47
|
function hufClearDecTable(hdec) {
|
|
124
48
|
for (var i = 0; i < HUF_DECSIZE; i++) {
|
|
125
49
|
hdec[i] = {};
|
|
@@ -128,185 +52,139 @@ class EXRLoader extends DataTextureLoader {
|
|
|
128
52
|
hdec[i].p = null;
|
|
129
53
|
}
|
|
130
54
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
l: 0,
|
|
134
|
-
c: 0,
|
|
135
|
-
lc: 0
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
function getBits(nBits, c, lc, uInt8Array, inOffset) {
|
|
55
|
+
const getBitsReturn = { l: 0, c: 0, lc: 0 };
|
|
56
|
+
function getBits(nBits, c, lc, uInt8Array2, inOffset) {
|
|
139
57
|
while (lc < nBits) {
|
|
140
|
-
c = c << 8 | parseUint8Array(
|
|
58
|
+
c = c << 8 | parseUint8Array(uInt8Array2, inOffset);
|
|
141
59
|
lc += 8;
|
|
142
60
|
}
|
|
143
|
-
|
|
144
61
|
lc -= nBits;
|
|
145
62
|
getBitsReturn.l = c >> lc & (1 << nBits) - 1;
|
|
146
63
|
getBitsReturn.c = c;
|
|
147
64
|
getBitsReturn.lc = lc;
|
|
148
65
|
}
|
|
149
|
-
|
|
150
66
|
const hufTableBuffer = new Array(59);
|
|
151
|
-
|
|
152
67
|
function hufCanonicalCodeTable(hcode) {
|
|
153
|
-
for (var i = 0; i <= 58; ++i)
|
|
154
|
-
|
|
155
|
-
for (var i = 0; i < HUF_ENCSIZE; ++i)
|
|
156
|
-
|
|
68
|
+
for (var i = 0; i <= 58; ++i)
|
|
69
|
+
hufTableBuffer[i] = 0;
|
|
70
|
+
for (var i = 0; i < HUF_ENCSIZE; ++i)
|
|
71
|
+
hufTableBuffer[hcode[i]] += 1;
|
|
157
72
|
var c = 0;
|
|
158
|
-
|
|
159
73
|
for (var i = 58; i > 0; --i) {
|
|
160
74
|
var nc = c + hufTableBuffer[i] >> 1;
|
|
161
75
|
hufTableBuffer[i] = c;
|
|
162
76
|
c = nc;
|
|
163
77
|
}
|
|
164
|
-
|
|
165
78
|
for (var i = 0; i < HUF_ENCSIZE; ++i) {
|
|
166
79
|
var l = hcode[i];
|
|
167
|
-
if (l > 0)
|
|
80
|
+
if (l > 0)
|
|
81
|
+
hcode[i] = l | hufTableBuffer[l]++ << 6;
|
|
168
82
|
}
|
|
169
83
|
}
|
|
170
|
-
|
|
171
|
-
function hufUnpackEncTable(uInt8Array, inDataView, inOffset, ni, im, iM, hcode) {
|
|
84
|
+
function hufUnpackEncTable(uInt8Array2, inDataView, inOffset, ni, im, iM, hcode) {
|
|
172
85
|
var p = inOffset;
|
|
173
86
|
var c = 0;
|
|
174
87
|
var lc = 0;
|
|
175
|
-
|
|
176
88
|
for (; im <= iM; im++) {
|
|
177
|
-
if (p.value - inOffset.value > ni)
|
|
178
|
-
|
|
89
|
+
if (p.value - inOffset.value > ni)
|
|
90
|
+
return false;
|
|
91
|
+
getBits(6, c, lc, uInt8Array2, p);
|
|
179
92
|
var l = getBitsReturn.l;
|
|
180
93
|
c = getBitsReturn.c;
|
|
181
94
|
lc = getBitsReturn.lc;
|
|
182
95
|
hcode[im] = l;
|
|
183
|
-
|
|
184
96
|
if (l == LONG_ZEROCODE_RUN) {
|
|
185
97
|
if (p.value - inOffset.value > ni) {
|
|
186
|
-
throw
|
|
98
|
+
throw "Something wrong with hufUnpackEncTable";
|
|
187
99
|
}
|
|
188
|
-
|
|
189
|
-
getBits(8, c, lc, uInt8Array, p);
|
|
100
|
+
getBits(8, c, lc, uInt8Array2, p);
|
|
190
101
|
var zerun = getBitsReturn.l + SHORTEST_LONG_RUN;
|
|
191
102
|
c = getBitsReturn.c;
|
|
192
103
|
lc = getBitsReturn.lc;
|
|
193
|
-
|
|
194
104
|
if (im + zerun > iM + 1) {
|
|
195
|
-
throw
|
|
105
|
+
throw "Something wrong with hufUnpackEncTable";
|
|
196
106
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
107
|
+
while (zerun--)
|
|
108
|
+
hcode[im++] = 0;
|
|
200
109
|
im--;
|
|
201
110
|
} else if (l >= SHORT_ZEROCODE_RUN) {
|
|
202
111
|
var zerun = l - SHORT_ZEROCODE_RUN + 2;
|
|
203
|
-
|
|
204
112
|
if (im + zerun > iM + 1) {
|
|
205
|
-
throw
|
|
113
|
+
throw "Something wrong with hufUnpackEncTable";
|
|
206
114
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
115
|
+
while (zerun--)
|
|
116
|
+
hcode[im++] = 0;
|
|
210
117
|
im--;
|
|
211
118
|
}
|
|
212
119
|
}
|
|
213
|
-
|
|
214
120
|
hufCanonicalCodeTable(hcode);
|
|
215
121
|
}
|
|
216
|
-
|
|
217
122
|
function hufLength(code) {
|
|
218
123
|
return code & 63;
|
|
219
124
|
}
|
|
220
|
-
|
|
221
125
|
function hufCode(code) {
|
|
222
126
|
return code >> 6;
|
|
223
127
|
}
|
|
224
|
-
|
|
225
128
|
function hufBuildDecTable(hcode, im, iM, hdecod) {
|
|
226
129
|
for (; im <= iM; im++) {
|
|
227
130
|
var c = hufCode(hcode[im]);
|
|
228
131
|
var l = hufLength(hcode[im]);
|
|
229
|
-
|
|
230
132
|
if (c >> l) {
|
|
231
|
-
throw
|
|
133
|
+
throw "Invalid table entry";
|
|
232
134
|
}
|
|
233
|
-
|
|
234
135
|
if (l > HUF_DECBITS) {
|
|
235
136
|
var pl = hdecod[c >> l - HUF_DECBITS];
|
|
236
|
-
|
|
237
137
|
if (pl.len) {
|
|
238
|
-
throw
|
|
138
|
+
throw "Invalid table entry";
|
|
239
139
|
}
|
|
240
|
-
|
|
241
140
|
pl.lit++;
|
|
242
|
-
|
|
243
141
|
if (pl.p) {
|
|
244
142
|
var p = pl.p;
|
|
245
143
|
pl.p = new Array(pl.lit);
|
|
246
|
-
|
|
247
144
|
for (var i = 0; i < pl.lit - 1; ++i) {
|
|
248
145
|
pl.p[i] = p[i];
|
|
249
146
|
}
|
|
250
147
|
} else {
|
|
251
148
|
pl.p = new Array(1);
|
|
252
149
|
}
|
|
253
|
-
|
|
254
150
|
pl.p[pl.lit - 1] = im;
|
|
255
151
|
} else if (l) {
|
|
256
152
|
var plOffset = 0;
|
|
257
|
-
|
|
258
153
|
for (var i = 1 << HUF_DECBITS - l; i > 0; i--) {
|
|
259
154
|
var pl = hdecod[(c << HUF_DECBITS - l) + plOffset];
|
|
260
|
-
|
|
261
155
|
if (pl.len || pl.p) {
|
|
262
|
-
throw
|
|
156
|
+
throw "Invalid table entry";
|
|
263
157
|
}
|
|
264
|
-
|
|
265
158
|
pl.len = l;
|
|
266
159
|
pl.lit = im;
|
|
267
160
|
plOffset++;
|
|
268
161
|
}
|
|
269
162
|
}
|
|
270
163
|
}
|
|
271
|
-
|
|
272
164
|
return true;
|
|
273
165
|
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
c
|
|
277
|
-
lc: 0
|
|
278
|
-
};
|
|
279
|
-
|
|
280
|
-
function getChar(c, lc, uInt8Array, inOffset) {
|
|
281
|
-
c = c << 8 | parseUint8Array(uInt8Array, inOffset);
|
|
166
|
+
const getCharReturn = { c: 0, lc: 0 };
|
|
167
|
+
function getChar(c, lc, uInt8Array2, inOffset) {
|
|
168
|
+
c = c << 8 | parseUint8Array(uInt8Array2, inOffset);
|
|
282
169
|
lc += 8;
|
|
283
170
|
getCharReturn.c = c;
|
|
284
171
|
getCharReturn.lc = lc;
|
|
285
172
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
c: 0,
|
|
289
|
-
lc: 0
|
|
290
|
-
};
|
|
291
|
-
|
|
292
|
-
function getCode(po, rlc, c, lc, uInt8Array, inDataView, inOffset, outBuffer, outBufferOffset, outBufferEndOffset) {
|
|
173
|
+
const getCodeReturn = { c: 0, lc: 0 };
|
|
174
|
+
function getCode(po, rlc, c, lc, uInt8Array2, inDataView, inOffset, outBuffer, outBufferOffset, outBufferEndOffset) {
|
|
293
175
|
if (po == rlc) {
|
|
294
176
|
if (lc < 8) {
|
|
295
|
-
getChar(c, lc,
|
|
177
|
+
getChar(c, lc, uInt8Array2, inOffset);
|
|
296
178
|
c = getCharReturn.c;
|
|
297
179
|
lc = getCharReturn.lc;
|
|
298
180
|
}
|
|
299
|
-
|
|
300
181
|
lc -= 8;
|
|
301
182
|
var cs = c >> lc;
|
|
302
183
|
var cs = new Uint8Array([cs])[0];
|
|
303
|
-
|
|
304
184
|
if (outBufferOffset.value + cs > outBufferEndOffset) {
|
|
305
185
|
return false;
|
|
306
186
|
}
|
|
307
|
-
|
|
308
187
|
var s = outBuffer[outBufferOffset.value - 1];
|
|
309
|
-
|
|
310
188
|
while (cs-- > 0) {
|
|
311
189
|
outBuffer[outBufferOffset.value++] = s;
|
|
312
190
|
}
|
|
@@ -315,25 +193,17 @@ class EXRLoader extends DataTextureLoader {
|
|
|
315
193
|
} else {
|
|
316
194
|
return false;
|
|
317
195
|
}
|
|
318
|
-
|
|
319
196
|
getCodeReturn.c = c;
|
|
320
197
|
getCodeReturn.lc = lc;
|
|
321
198
|
}
|
|
322
|
-
|
|
323
199
|
function UInt16(value) {
|
|
324
|
-
return value &
|
|
200
|
+
return value & 65535;
|
|
325
201
|
}
|
|
326
|
-
|
|
327
202
|
function Int16(value) {
|
|
328
203
|
var ref = UInt16(value);
|
|
329
|
-
return ref >
|
|
204
|
+
return ref > 32767 ? ref - 65536 : ref;
|
|
330
205
|
}
|
|
331
|
-
|
|
332
|
-
const wdec14Return = {
|
|
333
|
-
a: 0,
|
|
334
|
-
b: 0
|
|
335
|
-
};
|
|
336
|
-
|
|
206
|
+
const wdec14Return = { a: 0, b: 0 };
|
|
337
207
|
function wdec14(l, h) {
|
|
338
208
|
var ls = Int16(l);
|
|
339
209
|
var hs = Int16(h);
|
|
@@ -344,7 +214,6 @@ class EXRLoader extends DataTextureLoader {
|
|
|
344
214
|
wdec14Return.a = as;
|
|
345
215
|
wdec14Return.b = bs;
|
|
346
216
|
}
|
|
347
|
-
|
|
348
217
|
function wdec16(l, h) {
|
|
349
218
|
var m = UInt16(l);
|
|
350
219
|
var d = UInt16(h);
|
|
@@ -353,19 +222,16 @@ class EXRLoader extends DataTextureLoader {
|
|
|
353
222
|
wdec14Return.a = aa;
|
|
354
223
|
wdec14Return.b = bb;
|
|
355
224
|
}
|
|
356
|
-
|
|
357
|
-
function wav2Decode(buffer, j, nx, ox, ny, oy, mx) {
|
|
225
|
+
function wav2Decode(buffer2, j, nx, ox, ny, oy, mx) {
|
|
358
226
|
var w14 = mx < 1 << 14;
|
|
359
227
|
var n = nx > ny ? ny : nx;
|
|
360
228
|
var p = 1;
|
|
361
229
|
var p2;
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
230
|
+
while (p <= n)
|
|
231
|
+
p <<= 1;
|
|
365
232
|
p >>= 1;
|
|
366
233
|
p2 = p;
|
|
367
234
|
p >>= 1;
|
|
368
|
-
|
|
369
235
|
while (p >= 1) {
|
|
370
236
|
var py = 0;
|
|
371
237
|
var ey = py + oy * (ny - p2);
|
|
@@ -374,217 +240,200 @@ class EXRLoader extends DataTextureLoader {
|
|
|
374
240
|
var ox1 = ox * p;
|
|
375
241
|
var ox2 = ox * p2;
|
|
376
242
|
var i00, i01, i10, i11;
|
|
377
|
-
|
|
378
243
|
for (; py <= ey; py += oy2) {
|
|
379
244
|
var px = py;
|
|
380
245
|
var ex = py + ox * (nx - p2);
|
|
381
|
-
|
|
382
246
|
for (; px <= ex; px += ox2) {
|
|
383
247
|
var p01 = px + ox1;
|
|
384
248
|
var p10 = px + oy1;
|
|
385
249
|
var p11 = p10 + ox1;
|
|
386
|
-
|
|
387
250
|
if (w14) {
|
|
388
|
-
wdec14(
|
|
251
|
+
wdec14(buffer2[px + j], buffer2[p10 + j]);
|
|
389
252
|
i00 = wdec14Return.a;
|
|
390
253
|
i10 = wdec14Return.b;
|
|
391
|
-
wdec14(
|
|
254
|
+
wdec14(buffer2[p01 + j], buffer2[p11 + j]);
|
|
392
255
|
i01 = wdec14Return.a;
|
|
393
256
|
i11 = wdec14Return.b;
|
|
394
257
|
wdec14(i00, i01);
|
|
395
|
-
|
|
396
|
-
|
|
258
|
+
buffer2[px + j] = wdec14Return.a;
|
|
259
|
+
buffer2[p01 + j] = wdec14Return.b;
|
|
397
260
|
wdec14(i10, i11);
|
|
398
|
-
|
|
399
|
-
|
|
261
|
+
buffer2[p10 + j] = wdec14Return.a;
|
|
262
|
+
buffer2[p11 + j] = wdec14Return.b;
|
|
400
263
|
} else {
|
|
401
|
-
wdec16(
|
|
264
|
+
wdec16(buffer2[px + j], buffer2[p10 + j]);
|
|
402
265
|
i00 = wdec14Return.a;
|
|
403
266
|
i10 = wdec14Return.b;
|
|
404
|
-
wdec16(
|
|
267
|
+
wdec16(buffer2[p01 + j], buffer2[p11 + j]);
|
|
405
268
|
i01 = wdec14Return.a;
|
|
406
269
|
i11 = wdec14Return.b;
|
|
407
270
|
wdec16(i00, i01);
|
|
408
|
-
|
|
409
|
-
|
|
271
|
+
buffer2[px + j] = wdec14Return.a;
|
|
272
|
+
buffer2[p01 + j] = wdec14Return.b;
|
|
410
273
|
wdec16(i10, i11);
|
|
411
|
-
|
|
412
|
-
|
|
274
|
+
buffer2[p10 + j] = wdec14Return.a;
|
|
275
|
+
buffer2[p11 + j] = wdec14Return.b;
|
|
413
276
|
}
|
|
414
277
|
}
|
|
415
|
-
|
|
416
278
|
if (nx & p) {
|
|
417
279
|
var p10 = px + oy1;
|
|
418
|
-
if (w14)
|
|
280
|
+
if (w14)
|
|
281
|
+
wdec14(buffer2[px + j], buffer2[p10 + j]);
|
|
282
|
+
else
|
|
283
|
+
wdec16(buffer2[px + j], buffer2[p10 + j]);
|
|
419
284
|
i00 = wdec14Return.a;
|
|
420
|
-
|
|
421
|
-
|
|
285
|
+
buffer2[p10 + j] = wdec14Return.b;
|
|
286
|
+
buffer2[px + j] = i00;
|
|
422
287
|
}
|
|
423
288
|
}
|
|
424
|
-
|
|
425
289
|
if (ny & p) {
|
|
426
290
|
var px = py;
|
|
427
291
|
var ex = py + ox * (nx - p2);
|
|
428
|
-
|
|
429
292
|
for (; px <= ex; px += ox2) {
|
|
430
293
|
var p01 = px + ox1;
|
|
431
|
-
if (w14)
|
|
294
|
+
if (w14)
|
|
295
|
+
wdec14(buffer2[px + j], buffer2[p01 + j]);
|
|
296
|
+
else
|
|
297
|
+
wdec16(buffer2[px + j], buffer2[p01 + j]);
|
|
432
298
|
i00 = wdec14Return.a;
|
|
433
|
-
|
|
434
|
-
|
|
299
|
+
buffer2[p01 + j] = wdec14Return.b;
|
|
300
|
+
buffer2[px + j] = i00;
|
|
435
301
|
}
|
|
436
302
|
}
|
|
437
|
-
|
|
438
303
|
p2 = p;
|
|
439
304
|
p >>= 1;
|
|
440
305
|
}
|
|
441
|
-
|
|
442
306
|
return py;
|
|
443
307
|
}
|
|
444
|
-
|
|
445
|
-
function hufDecode(encodingTable, decodingTable, uInt8Array, inDataView, inOffset, ni, rlc, no, outBuffer, outOffset) {
|
|
308
|
+
function hufDecode(encodingTable, decodingTable, uInt8Array2, inDataView, inOffset, ni, rlc, no, outBuffer, outOffset) {
|
|
446
309
|
var c = 0;
|
|
447
310
|
var lc = 0;
|
|
448
311
|
var outBufferEndOffset = no;
|
|
449
312
|
var inOffsetEnd = Math.trunc(inOffset.value + (ni + 7) / 8);
|
|
450
|
-
|
|
451
313
|
while (inOffset.value < inOffsetEnd) {
|
|
452
|
-
getChar(c, lc,
|
|
314
|
+
getChar(c, lc, uInt8Array2, inOffset);
|
|
453
315
|
c = getCharReturn.c;
|
|
454
316
|
lc = getCharReturn.lc;
|
|
455
|
-
|
|
456
317
|
while (lc >= HUF_DECBITS) {
|
|
457
318
|
var index = c >> lc - HUF_DECBITS & HUF_DECMASK;
|
|
458
319
|
var pl = decodingTable[index];
|
|
459
|
-
|
|
460
320
|
if (pl.len) {
|
|
461
321
|
lc -= pl.len;
|
|
462
|
-
getCode(pl.lit, rlc, c, lc,
|
|
322
|
+
getCode(pl.lit, rlc, c, lc, uInt8Array2, inDataView, inOffset, outBuffer, outOffset, outBufferEndOffset);
|
|
463
323
|
c = getCodeReturn.c;
|
|
464
324
|
lc = getCodeReturn.lc;
|
|
465
325
|
} else {
|
|
466
326
|
if (!pl.p) {
|
|
467
|
-
throw
|
|
327
|
+
throw "hufDecode issues";
|
|
468
328
|
}
|
|
469
|
-
|
|
470
329
|
var j;
|
|
471
|
-
|
|
472
330
|
for (j = 0; j < pl.lit; j++) {
|
|
473
331
|
var l = hufLength(encodingTable[pl.p[j]]);
|
|
474
|
-
|
|
475
332
|
while (lc < l && inOffset.value < inOffsetEnd) {
|
|
476
|
-
getChar(c, lc,
|
|
333
|
+
getChar(c, lc, uInt8Array2, inOffset);
|
|
477
334
|
c = getCharReturn.c;
|
|
478
335
|
lc = getCharReturn.lc;
|
|
479
336
|
}
|
|
480
|
-
|
|
481
337
|
if (lc >= l) {
|
|
482
338
|
if (hufCode(encodingTable[pl.p[j]]) == (c >> lc - l & (1 << l) - 1)) {
|
|
483
339
|
lc -= l;
|
|
484
|
-
getCode(
|
|
340
|
+
getCode(
|
|
341
|
+
pl.p[j],
|
|
342
|
+
rlc,
|
|
343
|
+
c,
|
|
344
|
+
lc,
|
|
345
|
+
uInt8Array2,
|
|
346
|
+
inDataView,
|
|
347
|
+
inOffset,
|
|
348
|
+
outBuffer,
|
|
349
|
+
outOffset,
|
|
350
|
+
outBufferEndOffset
|
|
351
|
+
);
|
|
485
352
|
c = getCodeReturn.c;
|
|
486
353
|
lc = getCodeReturn.lc;
|
|
487
354
|
break;
|
|
488
355
|
}
|
|
489
356
|
}
|
|
490
357
|
}
|
|
491
|
-
|
|
492
358
|
if (j == pl.lit) {
|
|
493
|
-
throw
|
|
359
|
+
throw "hufDecode issues";
|
|
494
360
|
}
|
|
495
361
|
}
|
|
496
362
|
}
|
|
497
363
|
}
|
|
498
|
-
|
|
499
364
|
var i = 8 - ni & 7;
|
|
500
365
|
c >>= i;
|
|
501
366
|
lc -= i;
|
|
502
|
-
|
|
503
367
|
while (lc > 0) {
|
|
504
368
|
var pl = decodingTable[c << HUF_DECBITS - lc & HUF_DECMASK];
|
|
505
|
-
|
|
506
369
|
if (pl.len) {
|
|
507
370
|
lc -= pl.len;
|
|
508
|
-
getCode(pl.lit, rlc, c, lc,
|
|
371
|
+
getCode(pl.lit, rlc, c, lc, uInt8Array2, inDataView, inOffset, outBuffer, outOffset, outBufferEndOffset);
|
|
509
372
|
c = getCodeReturn.c;
|
|
510
373
|
lc = getCodeReturn.lc;
|
|
511
374
|
} else {
|
|
512
|
-
throw
|
|
375
|
+
throw "hufDecode issues";
|
|
513
376
|
}
|
|
514
377
|
}
|
|
515
|
-
|
|
516
378
|
return true;
|
|
517
379
|
}
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
var outOffset = {
|
|
521
|
-
value: 0
|
|
522
|
-
};
|
|
380
|
+
function hufUncompress(uInt8Array2, inDataView, inOffset, nCompressed, outBuffer, nRaw) {
|
|
381
|
+
var outOffset = { value: 0 };
|
|
523
382
|
var initialInOffset = inOffset.value;
|
|
524
383
|
var im = parseUint32(inDataView, inOffset);
|
|
525
384
|
var iM = parseUint32(inDataView, inOffset);
|
|
526
385
|
inOffset.value += 4;
|
|
527
386
|
var nBits = parseUint32(inDataView, inOffset);
|
|
528
387
|
inOffset.value += 4;
|
|
529
|
-
|
|
530
388
|
if (im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE) {
|
|
531
|
-
throw
|
|
389
|
+
throw "Something wrong with HUF_ENCSIZE";
|
|
532
390
|
}
|
|
533
|
-
|
|
534
391
|
var freq = new Array(HUF_ENCSIZE);
|
|
535
392
|
var hdec = new Array(HUF_DECSIZE);
|
|
536
393
|
hufClearDecTable(hdec);
|
|
537
394
|
var ni = nCompressed - (inOffset.value - initialInOffset);
|
|
538
|
-
hufUnpackEncTable(
|
|
539
|
-
|
|
395
|
+
hufUnpackEncTable(uInt8Array2, inDataView, inOffset, ni, im, iM, freq);
|
|
540
396
|
if (nBits > 8 * (nCompressed - (inOffset.value - initialInOffset))) {
|
|
541
|
-
throw
|
|
397
|
+
throw "Something wrong with hufUncompress";
|
|
542
398
|
}
|
|
543
|
-
|
|
544
399
|
hufBuildDecTable(freq, im, iM, hdec);
|
|
545
|
-
hufDecode(freq, hdec,
|
|
400
|
+
hufDecode(freq, hdec, uInt8Array2, inDataView, inOffset, nBits, iM, nRaw, outBuffer, outOffset);
|
|
546
401
|
}
|
|
547
|
-
|
|
548
402
|
function applyLut(lut, data, nData) {
|
|
549
403
|
for (var i = 0; i < nData; ++i) {
|
|
550
404
|
data[i] = lut[data[i]];
|
|
551
405
|
}
|
|
552
406
|
}
|
|
553
|
-
|
|
554
407
|
function predictor(source) {
|
|
555
408
|
for (var t = 1; t < source.length; t++) {
|
|
556
409
|
var d = source[t - 1] + source[t] - 128;
|
|
557
410
|
source[t] = d;
|
|
558
411
|
}
|
|
559
412
|
}
|
|
560
|
-
|
|
561
413
|
function interleaveScalar(source, out) {
|
|
562
414
|
var t1 = 0;
|
|
563
415
|
var t2 = Math.floor((source.length + 1) / 2);
|
|
564
416
|
var s = 0;
|
|
565
417
|
var stop = source.length - 1;
|
|
566
|
-
|
|
567
418
|
while (true) {
|
|
568
|
-
if (s > stop)
|
|
419
|
+
if (s > stop)
|
|
420
|
+
break;
|
|
569
421
|
out[s++] = source[t1++];
|
|
570
|
-
if (s > stop)
|
|
422
|
+
if (s > stop)
|
|
423
|
+
break;
|
|
571
424
|
out[s++] = source[t2++];
|
|
572
425
|
}
|
|
573
426
|
}
|
|
574
|
-
|
|
575
427
|
function decodeRunLength(source) {
|
|
576
428
|
var size = source.byteLength;
|
|
577
429
|
var out = new Array();
|
|
578
430
|
var p = 0;
|
|
579
431
|
var reader = new DataView(source);
|
|
580
|
-
|
|
581
432
|
while (size > 0) {
|
|
582
433
|
var l = reader.getInt8(p++);
|
|
583
|
-
|
|
584
434
|
if (l < 0) {
|
|
585
435
|
var count = -l;
|
|
586
436
|
size -= count + 1;
|
|
587
|
-
|
|
588
437
|
for (var i = 0; i < count; i++) {
|
|
589
438
|
out.push(reader.getUint8(p++));
|
|
590
439
|
}
|
|
@@ -592,153 +441,121 @@ class EXRLoader extends DataTextureLoader {
|
|
|
592
441
|
var count = l;
|
|
593
442
|
size -= 2;
|
|
594
443
|
var value = reader.getUint8(p++);
|
|
595
|
-
|
|
596
444
|
for (var i = 0; i < count + 1; i++) {
|
|
597
445
|
out.push(value);
|
|
598
446
|
}
|
|
599
447
|
}
|
|
600
448
|
}
|
|
601
|
-
|
|
602
449
|
return out;
|
|
603
450
|
}
|
|
604
|
-
|
|
605
451
|
function lossyDctDecode(cscSet, rowPtrs, channelData, acBuffer, dcBuffer, outBuffer) {
|
|
606
452
|
var dataView = new DataView(outBuffer.buffer);
|
|
607
453
|
var width = channelData[cscSet.idx[0]].width;
|
|
608
454
|
var height = channelData[cscSet.idx[0]].height;
|
|
609
455
|
var numComp = 3;
|
|
610
|
-
var numFullBlocksX = Math.floor(width / 8
|
|
611
|
-
var numBlocksX = Math.ceil(width / 8
|
|
612
|
-
var numBlocksY = Math.ceil(height / 8
|
|
456
|
+
var numFullBlocksX = Math.floor(width / 8);
|
|
457
|
+
var numBlocksX = Math.ceil(width / 8);
|
|
458
|
+
var numBlocksY = Math.ceil(height / 8);
|
|
613
459
|
var leftoverX = width - (numBlocksX - 1) * 8;
|
|
614
460
|
var leftoverY = height - (numBlocksY - 1) * 8;
|
|
615
|
-
var currAcComp = {
|
|
616
|
-
value: 0
|
|
617
|
-
};
|
|
461
|
+
var currAcComp = { value: 0 };
|
|
618
462
|
var currDcComp = new Array(numComp);
|
|
619
463
|
var dctData = new Array(numComp);
|
|
620
464
|
var halfZigBlock = new Array(numComp);
|
|
621
465
|
var rowBlock = new Array(numComp);
|
|
622
466
|
var rowOffsets = new Array(numComp);
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
rowBlock[comp] = new Uint16Array(numBlocksX * 64);
|
|
467
|
+
for (let comp2 = 0; comp2 < numComp; ++comp2) {
|
|
468
|
+
rowOffsets[comp2] = rowPtrs[cscSet.idx[comp2]];
|
|
469
|
+
currDcComp[comp2] = comp2 < 1 ? 0 : currDcComp[comp2 - 1] + numBlocksX * numBlocksY;
|
|
470
|
+
dctData[comp2] = new Float32Array(64);
|
|
471
|
+
halfZigBlock[comp2] = new Uint16Array(64);
|
|
472
|
+
rowBlock[comp2] = new Uint16Array(numBlocksX * 64);
|
|
630
473
|
}
|
|
631
|
-
|
|
632
474
|
for (let blocky = 0; blocky < numBlocksY; ++blocky) {
|
|
633
475
|
var maxY = 8;
|
|
634
|
-
if (blocky == numBlocksY - 1)
|
|
476
|
+
if (blocky == numBlocksY - 1)
|
|
477
|
+
maxY = leftoverY;
|
|
635
478
|
var maxX = 8;
|
|
636
|
-
|
|
637
479
|
for (let blockx = 0; blockx < numBlocksX; ++blockx) {
|
|
638
|
-
if (blockx == numBlocksX - 1)
|
|
639
|
-
|
|
640
|
-
for (let
|
|
641
|
-
halfZigBlock[
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
unZigZag(halfZigBlock[comp], dctData[comp]); // decode float dct
|
|
648
|
-
|
|
649
|
-
dctInverse(dctData[comp]);
|
|
480
|
+
if (blockx == numBlocksX - 1)
|
|
481
|
+
maxX = leftoverX;
|
|
482
|
+
for (let comp2 = 0; comp2 < numComp; ++comp2) {
|
|
483
|
+
halfZigBlock[comp2].fill(0);
|
|
484
|
+
halfZigBlock[comp2][0] = dcBuffer[currDcComp[comp2]++];
|
|
485
|
+
unRleAC(currAcComp, acBuffer, halfZigBlock[comp2]);
|
|
486
|
+
unZigZag(halfZigBlock[comp2], dctData[comp2]);
|
|
487
|
+
dctInverse(dctData[comp2]);
|
|
650
488
|
}
|
|
651
|
-
|
|
652
|
-
{
|
|
489
|
+
if (numComp == 3) {
|
|
653
490
|
csc709Inverse(dctData);
|
|
654
491
|
}
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
convertToHalf(dctData[comp], rowBlock[comp], blockx * 64);
|
|
492
|
+
for (let comp2 = 0; comp2 < numComp; ++comp2) {
|
|
493
|
+
convertToHalf(dctData[comp2], rowBlock[comp2], blockx * 64);
|
|
658
494
|
}
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
const type = channelData[cscSet.idx[comp]].type;
|
|
666
|
-
|
|
667
|
-
for (let y = 8 * blocky; y < 8 * blocky + maxY; ++y) {
|
|
668
|
-
offset = rowOffsets[comp][y];
|
|
669
|
-
|
|
495
|
+
}
|
|
496
|
+
let offset2 = 0;
|
|
497
|
+
for (let comp2 = 0; comp2 < numComp; ++comp2) {
|
|
498
|
+
const type2 = channelData[cscSet.idx[comp2]].type;
|
|
499
|
+
for (let y2 = 8 * blocky; y2 < 8 * blocky + maxY; ++y2) {
|
|
500
|
+
offset2 = rowOffsets[comp2][y2];
|
|
670
501
|
for (let blockx = 0; blockx < numFullBlocksX; ++blockx) {
|
|
671
|
-
const src = blockx * 64 + (
|
|
672
|
-
dataView.setUint16(
|
|
673
|
-
dataView.setUint16(
|
|
674
|
-
dataView.setUint16(
|
|
675
|
-
dataView.setUint16(
|
|
676
|
-
dataView.setUint16(
|
|
677
|
-
dataView.setUint16(
|
|
678
|
-
dataView.setUint16(
|
|
679
|
-
dataView.setUint16(
|
|
680
|
-
|
|
502
|
+
const src = blockx * 64 + (y2 & 7) * 8;
|
|
503
|
+
dataView.setUint16(offset2 + 0 * INT16_SIZE * type2, rowBlock[comp2][src + 0], true);
|
|
504
|
+
dataView.setUint16(offset2 + 1 * INT16_SIZE * type2, rowBlock[comp2][src + 1], true);
|
|
505
|
+
dataView.setUint16(offset2 + 2 * INT16_SIZE * type2, rowBlock[comp2][src + 2], true);
|
|
506
|
+
dataView.setUint16(offset2 + 3 * INT16_SIZE * type2, rowBlock[comp2][src + 3], true);
|
|
507
|
+
dataView.setUint16(offset2 + 4 * INT16_SIZE * type2, rowBlock[comp2][src + 4], true);
|
|
508
|
+
dataView.setUint16(offset2 + 5 * INT16_SIZE * type2, rowBlock[comp2][src + 5], true);
|
|
509
|
+
dataView.setUint16(offset2 + 6 * INT16_SIZE * type2, rowBlock[comp2][src + 6], true);
|
|
510
|
+
dataView.setUint16(offset2 + 7 * INT16_SIZE * type2, rowBlock[comp2][src + 7], true);
|
|
511
|
+
offset2 += 8 * INT16_SIZE * type2;
|
|
681
512
|
}
|
|
682
|
-
}
|
|
683
|
-
|
|
684
|
-
|
|
513
|
+
}
|
|
685
514
|
if (numFullBlocksX != numBlocksX) {
|
|
686
|
-
for (let
|
|
687
|
-
const
|
|
688
|
-
const src = numFullBlocksX * 64 + (
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
dataView.setUint16(offset + x * INT16_SIZE * type, rowBlock[comp][src + x], true);
|
|
515
|
+
for (let y2 = 8 * blocky; y2 < 8 * blocky + maxY; ++y2) {
|
|
516
|
+
const offset3 = rowOffsets[comp2][y2] + 8 * numFullBlocksX * INT16_SIZE * type2;
|
|
517
|
+
const src = numFullBlocksX * 64 + (y2 & 7) * 8;
|
|
518
|
+
for (let x2 = 0; x2 < maxX; ++x2) {
|
|
519
|
+
dataView.setUint16(offset3 + x2 * INT16_SIZE * type2, rowBlock[comp2][src + x2], true);
|
|
692
520
|
}
|
|
693
521
|
}
|
|
694
522
|
}
|
|
695
|
-
}
|
|
696
|
-
|
|
697
|
-
} // blocky
|
|
698
|
-
|
|
699
|
-
|
|
523
|
+
}
|
|
524
|
+
}
|
|
700
525
|
var halfRow = new Uint16Array(width);
|
|
701
|
-
var dataView = new DataView(outBuffer.buffer);
|
|
702
|
-
|
|
526
|
+
var dataView = new DataView(outBuffer.buffer);
|
|
703
527
|
for (var comp = 0; comp < numComp; ++comp) {
|
|
704
528
|
channelData[cscSet.idx[comp]].decoded = true;
|
|
705
529
|
var type = channelData[cscSet.idx[comp]].type;
|
|
706
|
-
if (channelData[comp].type != 2)
|
|
707
|
-
|
|
530
|
+
if (channelData[comp].type != 2)
|
|
531
|
+
continue;
|
|
708
532
|
for (var y = 0; y < height; ++y) {
|
|
709
|
-
const
|
|
710
|
-
|
|
533
|
+
const offset2 = rowOffsets[comp][y];
|
|
711
534
|
for (var x = 0; x < width; ++x) {
|
|
712
|
-
halfRow[x] = dataView.getUint16(
|
|
535
|
+
halfRow[x] = dataView.getUint16(offset2 + x * INT16_SIZE * type, true);
|
|
713
536
|
}
|
|
714
|
-
|
|
715
537
|
for (var x = 0; x < width; ++x) {
|
|
716
|
-
dataView.setFloat32(
|
|
538
|
+
dataView.setFloat32(offset2 + x * INT16_SIZE * type, decodeFloat16(halfRow[x]), true);
|
|
717
539
|
}
|
|
718
540
|
}
|
|
719
541
|
}
|
|
720
542
|
}
|
|
721
|
-
|
|
722
543
|
function unRleAC(currAcComp, acBuffer, halfZigBlock) {
|
|
723
544
|
var acValue;
|
|
724
545
|
var dctComp = 1;
|
|
725
|
-
|
|
726
546
|
while (dctComp < 64) {
|
|
727
547
|
acValue = acBuffer[currAcComp.value];
|
|
728
|
-
|
|
729
|
-
if (acValue == 0xff00) {
|
|
548
|
+
if (acValue == 65280) {
|
|
730
549
|
dctComp = 64;
|
|
731
|
-
} else if (acValue >> 8 ==
|
|
732
|
-
dctComp += acValue &
|
|
550
|
+
} else if (acValue >> 8 == 255) {
|
|
551
|
+
dctComp += acValue & 255;
|
|
733
552
|
} else {
|
|
734
553
|
halfZigBlock[dctComp] = acValue;
|
|
735
554
|
dctComp++;
|
|
736
555
|
}
|
|
737
|
-
|
|
738
556
|
currAcComp.value++;
|
|
739
557
|
}
|
|
740
558
|
}
|
|
741
|
-
|
|
742
559
|
function unZigZag(src, dst) {
|
|
743
560
|
dst[0] = decodeFloat16(src[0]);
|
|
744
561
|
dst[1] = decodeFloat16(src[1]);
|
|
@@ -805,20 +622,18 @@ class EXRLoader extends DataTextureLoader {
|
|
|
805
622
|
dst[62] = decodeFloat16(src[62]);
|
|
806
623
|
dst[63] = decodeFloat16(src[63]);
|
|
807
624
|
}
|
|
808
|
-
|
|
809
625
|
function dctInverse(data) {
|
|
810
|
-
const a = 0.5 * Math.cos(3.14159 / 4
|
|
811
|
-
const b = 0.5 * Math.cos(3.14159 / 16
|
|
812
|
-
const c = 0.5 * Math.cos(3.14159 / 8
|
|
813
|
-
const d = 0.5 * Math.cos(3
|
|
814
|
-
const e = 0.5 * Math.cos(5
|
|
815
|
-
const f = 0.5 * Math.cos(3
|
|
816
|
-
const g = 0.5 * Math.cos(7
|
|
626
|
+
const a = 0.5 * Math.cos(3.14159 / 4);
|
|
627
|
+
const b = 0.5 * Math.cos(3.14159 / 16);
|
|
628
|
+
const c = 0.5 * Math.cos(3.14159 / 8);
|
|
629
|
+
const d = 0.5 * Math.cos(3 * 3.14159 / 16);
|
|
630
|
+
const e = 0.5 * Math.cos(5 * 3.14159 / 16);
|
|
631
|
+
const f = 0.5 * Math.cos(3 * 3.14159 / 8);
|
|
632
|
+
const g = 0.5 * Math.cos(7 * 3.14159 / 16);
|
|
817
633
|
var alpha = new Array(4);
|
|
818
634
|
var beta = new Array(4);
|
|
819
635
|
var theta = new Array(4);
|
|
820
636
|
var gamma = new Array(4);
|
|
821
|
-
|
|
822
637
|
for (var row = 0; row < 8; ++row) {
|
|
823
638
|
var rowPtr = row * 8;
|
|
824
639
|
alpha[0] = c * data[rowPtr + 2];
|
|
@@ -846,7 +661,6 @@ class EXRLoader extends DataTextureLoader {
|
|
|
846
661
|
data[rowPtr + 6] = gamma[1] - beta[1];
|
|
847
662
|
data[rowPtr + 7] = gamma[0] - beta[0];
|
|
848
663
|
}
|
|
849
|
-
|
|
850
664
|
for (var column = 0; column < 8; ++column) {
|
|
851
665
|
alpha[0] = c * data[16 + column];
|
|
852
666
|
alpha[1] = f * data[16 + column];
|
|
@@ -874,7 +688,6 @@ class EXRLoader extends DataTextureLoader {
|
|
|
874
688
|
data[56 + column] = gamma[0] - beta[0];
|
|
875
689
|
}
|
|
876
690
|
}
|
|
877
|
-
|
|
878
691
|
function csc709Inverse(data) {
|
|
879
692
|
for (var i = 0; i < 64; ++i) {
|
|
880
693
|
var y = data[0][i];
|
|
@@ -885,175 +698,132 @@ class EXRLoader extends DataTextureLoader {
|
|
|
885
698
|
data[2][i] = y + 1.8556 * cb;
|
|
886
699
|
}
|
|
887
700
|
}
|
|
888
|
-
|
|
889
701
|
function convertToHalf(src, dst, idx) {
|
|
890
702
|
for (var i = 0; i < 64; ++i) {
|
|
891
|
-
dst[idx + i] = DataUtils.toHalfFloat(toLinear(src[i]));
|
|
703
|
+
dst[idx + i] = THREE.DataUtils.toHalfFloat(toLinear(src[i]));
|
|
892
704
|
}
|
|
893
705
|
}
|
|
894
|
-
|
|
895
706
|
function toLinear(float) {
|
|
896
707
|
if (float <= 1) {
|
|
897
708
|
return Math.sign(float) * Math.pow(Math.abs(float), 2.2);
|
|
898
709
|
} else {
|
|
899
|
-
return Math.sign(float) * Math.pow(logBase, Math.abs(float) - 1
|
|
710
|
+
return Math.sign(float) * Math.pow(logBase, Math.abs(float) - 1);
|
|
900
711
|
}
|
|
901
712
|
}
|
|
902
|
-
|
|
903
713
|
function uncompressRAW(info) {
|
|
904
714
|
return new DataView(info.array.buffer, info.offset.value, info.size);
|
|
905
715
|
}
|
|
906
|
-
|
|
907
716
|
function uncompressRLE(info) {
|
|
908
717
|
var compressed = info.viewer.buffer.slice(info.offset.value, info.offset.value + info.size);
|
|
909
718
|
var rawBuffer = new Uint8Array(decodeRunLength(compressed));
|
|
910
719
|
var tmpBuffer = new Uint8Array(rawBuffer.length);
|
|
911
|
-
predictor(rawBuffer);
|
|
912
|
-
|
|
913
|
-
interleaveScalar(rawBuffer, tmpBuffer); // interleave pixels
|
|
914
|
-
|
|
720
|
+
predictor(rawBuffer);
|
|
721
|
+
interleaveScalar(rawBuffer, tmpBuffer);
|
|
915
722
|
return new DataView(tmpBuffer.buffer);
|
|
916
723
|
}
|
|
917
|
-
|
|
918
724
|
function uncompressZIP(info) {
|
|
919
725
|
var compressed = info.array.slice(info.offset.value, info.offset.value + info.size);
|
|
920
|
-
var rawBuffer = unzlibSync(compressed);
|
|
921
|
-
|
|
726
|
+
var rawBuffer = fflate.unzlibSync(compressed);
|
|
922
727
|
var tmpBuffer = new Uint8Array(rawBuffer.length);
|
|
923
|
-
predictor(rawBuffer);
|
|
924
|
-
|
|
925
|
-
interleaveScalar(rawBuffer, tmpBuffer); // interleave pixels
|
|
926
|
-
|
|
728
|
+
predictor(rawBuffer);
|
|
729
|
+
interleaveScalar(rawBuffer, tmpBuffer);
|
|
927
730
|
return new DataView(tmpBuffer.buffer);
|
|
928
731
|
}
|
|
929
|
-
|
|
930
732
|
function uncompressPIZ(info) {
|
|
931
733
|
var inDataView = info.viewer;
|
|
932
|
-
var inOffset = {
|
|
933
|
-
value: info.offset.value
|
|
934
|
-
};
|
|
734
|
+
var inOffset = { value: info.offset.value };
|
|
935
735
|
var outBuffer = new Uint16Array(info.width * info.scanlineBlockSize * (info.channels * info.type));
|
|
936
|
-
var bitmap = new Uint8Array(BITMAP_SIZE);
|
|
937
|
-
|
|
736
|
+
var bitmap = new Uint8Array(BITMAP_SIZE);
|
|
938
737
|
var outBufferEnd = 0;
|
|
939
738
|
var pizChannelData = new Array(info.channels);
|
|
940
|
-
|
|
941
739
|
for (var i = 0; i < info.channels; i++) {
|
|
942
740
|
pizChannelData[i] = {};
|
|
943
|
-
pizChannelData[i][
|
|
944
|
-
pizChannelData[i][
|
|
945
|
-
pizChannelData[i][
|
|
946
|
-
pizChannelData[i][
|
|
947
|
-
pizChannelData[i][
|
|
741
|
+
pizChannelData[i]["start"] = outBufferEnd;
|
|
742
|
+
pizChannelData[i]["end"] = pizChannelData[i]["start"];
|
|
743
|
+
pizChannelData[i]["nx"] = info.width;
|
|
744
|
+
pizChannelData[i]["ny"] = info.lines;
|
|
745
|
+
pizChannelData[i]["size"] = info.type;
|
|
948
746
|
outBufferEnd += pizChannelData[i].nx * pizChannelData[i].ny * pizChannelData[i].size;
|
|
949
|
-
}
|
|
950
|
-
|
|
951
|
-
|
|
747
|
+
}
|
|
952
748
|
var minNonZero = parseUint16(inDataView, inOffset);
|
|
953
749
|
var maxNonZero = parseUint16(inDataView, inOffset);
|
|
954
|
-
|
|
955
750
|
if (maxNonZero >= BITMAP_SIZE) {
|
|
956
|
-
throw
|
|
751
|
+
throw "Something is wrong with PIZ_COMPRESSION BITMAP_SIZE";
|
|
957
752
|
}
|
|
958
|
-
|
|
959
753
|
if (minNonZero <= maxNonZero) {
|
|
960
754
|
for (var i = 0; i < maxNonZero - minNonZero + 1; i++) {
|
|
961
755
|
bitmap[i + minNonZero] = parseUint8(inDataView, inOffset);
|
|
962
756
|
}
|
|
963
|
-
}
|
|
964
|
-
|
|
965
|
-
|
|
757
|
+
}
|
|
966
758
|
var lut = new Uint16Array(USHORT_RANGE);
|
|
967
759
|
var maxValue = reverseLutFromBitmap(bitmap, lut);
|
|
968
|
-
var length = parseUint32(inDataView, inOffset);
|
|
969
|
-
|
|
970
|
-
hufUncompress(info.array, inDataView, inOffset, length, outBuffer, outBufferEnd); // Wavelet decoding
|
|
971
|
-
|
|
760
|
+
var length = parseUint32(inDataView, inOffset);
|
|
761
|
+
hufUncompress(info.array, inDataView, inOffset, length, outBuffer, outBufferEnd);
|
|
972
762
|
for (var i = 0; i < info.channels; ++i) {
|
|
973
763
|
var cd = pizChannelData[i];
|
|
974
|
-
|
|
975
764
|
for (var j = 0; j < pizChannelData[i].size; ++j) {
|
|
976
765
|
wav2Decode(outBuffer, cd.start + j, cd.nx, cd.size, cd.ny, cd.nx * cd.size, maxValue);
|
|
977
766
|
}
|
|
978
|
-
}
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
applyLut(lut, outBuffer, outBufferEnd); // Rearrange the pixel data into the format expected by the caller.
|
|
982
|
-
|
|
983
|
-
var tmpOffset = 0;
|
|
767
|
+
}
|
|
768
|
+
applyLut(lut, outBuffer, outBufferEnd);
|
|
769
|
+
var tmpOffset2 = 0;
|
|
984
770
|
var tmpBuffer = new Uint8Array(outBuffer.buffer.byteLength);
|
|
985
|
-
|
|
986
771
|
for (var y = 0; y < info.lines; y++) {
|
|
987
772
|
for (var c = 0; c < info.channels; c++) {
|
|
988
773
|
var cd = pizChannelData[c];
|
|
989
774
|
var n = cd.nx * cd.size;
|
|
990
775
|
var cp = new Uint8Array(outBuffer.buffer, cd.end * INT16_SIZE, n * INT16_SIZE);
|
|
991
|
-
tmpBuffer.set(cp,
|
|
992
|
-
|
|
776
|
+
tmpBuffer.set(cp, tmpOffset2);
|
|
777
|
+
tmpOffset2 += n * INT16_SIZE;
|
|
993
778
|
cd.end += n;
|
|
994
779
|
}
|
|
995
780
|
}
|
|
996
|
-
|
|
997
781
|
return new DataView(tmpBuffer.buffer);
|
|
998
782
|
}
|
|
999
|
-
|
|
1000
783
|
function uncompressPXR(info) {
|
|
1001
784
|
var compressed = info.array.slice(info.offset.value, info.offset.value + info.size);
|
|
1002
|
-
var rawBuffer = unzlibSync(compressed);
|
|
1003
|
-
|
|
785
|
+
var rawBuffer = fflate.unzlibSync(compressed);
|
|
1004
786
|
const sz = info.lines * info.channels * info.width;
|
|
1005
787
|
const tmpBuffer = info.type == 1 ? new Uint16Array(sz) : new Uint32Array(sz);
|
|
1006
788
|
let tmpBufferEnd = 0;
|
|
1007
789
|
let writePtr = 0;
|
|
1008
790
|
const ptr = new Array(4);
|
|
1009
|
-
|
|
1010
791
|
for (let y = 0; y < info.lines; y++) {
|
|
1011
792
|
for (let c = 0; c < info.channels; c++) {
|
|
1012
793
|
let pixel = 0;
|
|
1013
|
-
|
|
1014
794
|
switch (info.type) {
|
|
1015
795
|
case 1:
|
|
1016
796
|
ptr[0] = tmpBufferEnd;
|
|
1017
797
|
ptr[1] = ptr[0] + info.width;
|
|
1018
798
|
tmpBufferEnd = ptr[1] + info.width;
|
|
1019
|
-
|
|
1020
799
|
for (let j = 0; j < info.width; ++j) {
|
|
1021
800
|
const diff = rawBuffer[ptr[0]++] << 8 | rawBuffer[ptr[1]++];
|
|
1022
801
|
pixel += diff;
|
|
1023
802
|
tmpBuffer[writePtr] = pixel;
|
|
1024
803
|
writePtr++;
|
|
1025
804
|
}
|
|
1026
|
-
|
|
1027
805
|
break;
|
|
1028
|
-
|
|
1029
806
|
case 2:
|
|
1030
807
|
ptr[0] = tmpBufferEnd;
|
|
1031
808
|
ptr[1] = ptr[0] + info.width;
|
|
1032
809
|
ptr[2] = ptr[1] + info.width;
|
|
1033
810
|
tmpBufferEnd = ptr[2] + info.width;
|
|
1034
|
-
|
|
1035
811
|
for (let j = 0; j < info.width; ++j) {
|
|
1036
812
|
const diff = rawBuffer[ptr[0]++] << 24 | rawBuffer[ptr[1]++] << 16 | rawBuffer[ptr[2]++] << 8;
|
|
1037
813
|
pixel += diff;
|
|
1038
814
|
tmpBuffer[writePtr] = pixel;
|
|
1039
815
|
writePtr++;
|
|
1040
816
|
}
|
|
1041
|
-
|
|
1042
817
|
break;
|
|
1043
818
|
}
|
|
1044
819
|
}
|
|
1045
820
|
}
|
|
1046
|
-
|
|
1047
821
|
return new DataView(tmpBuffer.buffer);
|
|
1048
822
|
}
|
|
1049
|
-
|
|
1050
823
|
function uncompressDWA(info) {
|
|
1051
824
|
var inDataView = info.viewer;
|
|
1052
|
-
var inOffset = {
|
|
1053
|
-
|
|
1054
|
-
};
|
|
1055
|
-
var outBuffer = new Uint8Array(info.width * info.lines * (info.channels * info.type * INT16_SIZE)); // Read compression header information
|
|
1056
|
-
|
|
825
|
+
var inOffset = { value: info.offset.value };
|
|
826
|
+
var outBuffer = new Uint8Array(info.width * info.lines * (info.channels * info.type * INT16_SIZE));
|
|
1057
827
|
var dwaHeader = {
|
|
1058
828
|
version: parseInt64(inDataView, inOffset),
|
|
1059
829
|
unknownUncompressedSize: parseInt64(inDataView, inOffset),
|
|
@@ -1067,15 +837,11 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1067
837
|
totalDcUncompressedCount: parseInt64(inDataView, inOffset),
|
|
1068
838
|
acCompression: parseInt64(inDataView, inOffset)
|
|
1069
839
|
};
|
|
1070
|
-
|
|
1071
840
|
if (dwaHeader.version < 2) {
|
|
1072
|
-
throw
|
|
1073
|
-
}
|
|
1074
|
-
|
|
1075
|
-
|
|
841
|
+
throw "EXRLoader.parse: " + EXRHeader.compression + " version " + dwaHeader.version + " is unsupported";
|
|
842
|
+
}
|
|
1076
843
|
var channelRules = new Array();
|
|
1077
844
|
var ruleSize = parseUint16(inDataView, inOffset) - INT16_SIZE;
|
|
1078
|
-
|
|
1079
845
|
while (ruleSize > 0) {
|
|
1080
846
|
var name = parseNullTerminatedString(inDataView.buffer, inOffset);
|
|
1081
847
|
var value = parseUint8(inDataView, inOffset);
|
|
@@ -1084,18 +850,15 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1084
850
|
var index = new Int8Array([csc])[0];
|
|
1085
851
|
var type = parseUint8(inDataView, inOffset);
|
|
1086
852
|
channelRules.push({
|
|
1087
|
-
name
|
|
1088
|
-
index
|
|
1089
|
-
type
|
|
1090
|
-
compression
|
|
853
|
+
name,
|
|
854
|
+
index,
|
|
855
|
+
type,
|
|
856
|
+
compression
|
|
1091
857
|
});
|
|
1092
858
|
ruleSize -= name.length + 3;
|
|
1093
|
-
}
|
|
1094
|
-
|
|
1095
|
-
|
|
859
|
+
}
|
|
1096
860
|
var channels = EXRHeader.channels;
|
|
1097
861
|
var channelData = new Array(info.channels);
|
|
1098
|
-
|
|
1099
862
|
for (var i = 0; i < info.channels; ++i) {
|
|
1100
863
|
var cd = channelData[i] = {};
|
|
1101
864
|
var channel = channels[i];
|
|
@@ -1107,48 +870,43 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1107
870
|
cd.width = info.width;
|
|
1108
871
|
cd.height = info.lines;
|
|
1109
872
|
}
|
|
1110
|
-
|
|
1111
873
|
var cscSet = {
|
|
1112
874
|
idx: new Array(3)
|
|
1113
875
|
};
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
var cd = channelData[offset];
|
|
1117
|
-
|
|
876
|
+
for (var offset2 = 0; offset2 < info.channels; ++offset2) {
|
|
877
|
+
var cd = channelData[offset2];
|
|
1118
878
|
for (var i = 0; i < channelRules.length; ++i) {
|
|
1119
879
|
var rule = channelRules[i];
|
|
1120
|
-
|
|
1121
880
|
if (cd.name == rule.name) {
|
|
1122
881
|
cd.compression = rule.compression;
|
|
1123
|
-
|
|
1124
882
|
if (rule.index >= 0) {
|
|
1125
|
-
cscSet.idx[rule.index] =
|
|
883
|
+
cscSet.idx[rule.index] = offset2;
|
|
1126
884
|
}
|
|
1127
|
-
|
|
1128
|
-
cd.offset = offset;
|
|
885
|
+
cd.offset = offset2;
|
|
1129
886
|
}
|
|
1130
887
|
}
|
|
1131
|
-
}
|
|
1132
|
-
|
|
1133
|
-
|
|
888
|
+
}
|
|
1134
889
|
if (dwaHeader.acCompressedSize > 0) {
|
|
1135
890
|
switch (dwaHeader.acCompression) {
|
|
1136
891
|
case STATIC_HUFFMAN:
|
|
1137
892
|
var acBuffer = new Uint16Array(dwaHeader.totalAcUncompressedCount);
|
|
1138
|
-
hufUncompress(
|
|
893
|
+
hufUncompress(
|
|
894
|
+
info.array,
|
|
895
|
+
inDataView,
|
|
896
|
+
inOffset,
|
|
897
|
+
dwaHeader.acCompressedSize,
|
|
898
|
+
acBuffer,
|
|
899
|
+
dwaHeader.totalAcUncompressedCount
|
|
900
|
+
);
|
|
1139
901
|
break;
|
|
1140
|
-
|
|
1141
902
|
case DEFLATE:
|
|
1142
903
|
var compressed = info.array.slice(inOffset.value, inOffset.value + dwaHeader.totalAcUncompressedCount);
|
|
1143
|
-
var data = unzlibSync(compressed);
|
|
1144
|
-
|
|
904
|
+
var data = fflate.unzlibSync(compressed);
|
|
1145
905
|
var acBuffer = new Uint16Array(data.buffer);
|
|
1146
906
|
inOffset.value += dwaHeader.totalAcUncompressedCount;
|
|
1147
907
|
break;
|
|
1148
908
|
}
|
|
1149
|
-
}
|
|
1150
|
-
|
|
1151
|
-
|
|
909
|
+
}
|
|
1152
910
|
if (dwaHeader.dcCompressedSize > 0) {
|
|
1153
911
|
var zlibInfo = {
|
|
1154
912
|
array: info.array,
|
|
@@ -1157,505 +915,404 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1157
915
|
};
|
|
1158
916
|
var dcBuffer = new Uint16Array(uncompressZIP(zlibInfo).buffer);
|
|
1159
917
|
inOffset.value += dwaHeader.dcCompressedSize;
|
|
1160
|
-
}
|
|
1161
|
-
|
|
1162
|
-
|
|
918
|
+
}
|
|
1163
919
|
if (dwaHeader.rleRawSize > 0) {
|
|
1164
920
|
var compressed = info.array.slice(inOffset.value, inOffset.value + dwaHeader.rleCompressedSize);
|
|
1165
|
-
var data = unzlibSync(compressed);
|
|
1166
|
-
|
|
921
|
+
var data = fflate.unzlibSync(compressed);
|
|
1167
922
|
var rleBuffer = decodeRunLength(data.buffer);
|
|
1168
923
|
inOffset.value += dwaHeader.rleCompressedSize;
|
|
1169
|
-
}
|
|
1170
|
-
|
|
1171
|
-
|
|
924
|
+
}
|
|
1172
925
|
var outBufferEnd = 0;
|
|
1173
926
|
var rowOffsets = new Array(channelData.length);
|
|
1174
|
-
|
|
1175
927
|
for (var i = 0; i < rowOffsets.length; ++i) {
|
|
1176
928
|
rowOffsets[i] = new Array();
|
|
1177
929
|
}
|
|
1178
|
-
|
|
1179
930
|
for (var y = 0; y < info.lines; ++y) {
|
|
1180
931
|
for (var chan = 0; chan < channelData.length; ++chan) {
|
|
1181
932
|
rowOffsets[chan].push(outBufferEnd);
|
|
1182
933
|
outBufferEnd += channelData[chan].width * info.type * INT16_SIZE;
|
|
1183
934
|
}
|
|
1184
|
-
}
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
lossyDctDecode(cscSet, rowOffsets, channelData, acBuffer, dcBuffer, outBuffer); // Decode other channels
|
|
1188
|
-
|
|
935
|
+
}
|
|
936
|
+
lossyDctDecode(cscSet, rowOffsets, channelData, acBuffer, dcBuffer, outBuffer);
|
|
1189
937
|
for (var i = 0; i < channelData.length; ++i) {
|
|
1190
938
|
var cd = channelData[i];
|
|
1191
|
-
if (cd.decoded)
|
|
1192
|
-
|
|
939
|
+
if (cd.decoded)
|
|
940
|
+
continue;
|
|
1193
941
|
switch (cd.compression) {
|
|
1194
942
|
case RLE:
|
|
1195
943
|
var row = 0;
|
|
1196
944
|
var rleOffset = 0;
|
|
1197
|
-
|
|
1198
945
|
for (var y = 0; y < info.lines; ++y) {
|
|
1199
946
|
var rowOffsetBytes = rowOffsets[i][row];
|
|
1200
|
-
|
|
1201
947
|
for (var x = 0; x < cd.width; ++x) {
|
|
1202
948
|
for (var byte = 0; byte < INT16_SIZE * cd.type; ++byte) {
|
|
1203
949
|
outBuffer[rowOffsetBytes++] = rleBuffer[rleOffset + byte * cd.width * cd.height];
|
|
1204
950
|
}
|
|
1205
|
-
|
|
1206
951
|
rleOffset++;
|
|
1207
952
|
}
|
|
1208
|
-
|
|
1209
953
|
row++;
|
|
1210
954
|
}
|
|
1211
|
-
|
|
1212
955
|
break;
|
|
1213
|
-
|
|
1214
|
-
case LOSSY_DCT: // skip
|
|
1215
|
-
|
|
956
|
+
case LOSSY_DCT:
|
|
1216
957
|
default:
|
|
1217
|
-
throw
|
|
958
|
+
throw "EXRLoader.parse: unsupported channel compression";
|
|
1218
959
|
}
|
|
1219
960
|
}
|
|
1220
|
-
|
|
1221
961
|
return new DataView(outBuffer.buffer);
|
|
1222
962
|
}
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
var uintBuffer = new Uint8Array(buffer);
|
|
963
|
+
function parseNullTerminatedString(buffer2, offset2) {
|
|
964
|
+
var uintBuffer = new Uint8Array(buffer2);
|
|
1226
965
|
var endOffset = 0;
|
|
1227
|
-
|
|
1228
|
-
while (uintBuffer[offset.value + endOffset] != 0) {
|
|
966
|
+
while (uintBuffer[offset2.value + endOffset] != 0) {
|
|
1229
967
|
endOffset += 1;
|
|
1230
968
|
}
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
offset.value = offset.value + endOffset + 1;
|
|
969
|
+
var stringValue = new TextDecoder().decode(uintBuffer.slice(offset2.value, offset2.value + endOffset));
|
|
970
|
+
offset2.value = offset2.value + endOffset + 1;
|
|
1234
971
|
return stringValue;
|
|
1235
972
|
}
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
offset.value = offset.value + size;
|
|
973
|
+
function parseFixedLengthString(buffer2, offset2, size) {
|
|
974
|
+
var stringValue = new TextDecoder().decode(new Uint8Array(buffer2).slice(offset2.value, offset2.value + size));
|
|
975
|
+
offset2.value = offset2.value + size;
|
|
1240
976
|
return stringValue;
|
|
1241
977
|
}
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
var
|
|
1245
|
-
var y = parseUint32(dataView, offset);
|
|
978
|
+
function parseRational(dataView, offset2) {
|
|
979
|
+
var x = parseInt32(dataView, offset2);
|
|
980
|
+
var y = parseUint32(dataView, offset2);
|
|
1246
981
|
return [x, y];
|
|
1247
982
|
}
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
var
|
|
1251
|
-
var y = parseUint32(dataView, offset);
|
|
983
|
+
function parseTimecode(dataView, offset2) {
|
|
984
|
+
var x = parseUint32(dataView, offset2);
|
|
985
|
+
var y = parseUint32(dataView, offset2);
|
|
1252
986
|
return [x, y];
|
|
1253
987
|
}
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
offset.value = offset.value + INT32_SIZE;
|
|
988
|
+
function parseInt32(dataView, offset2) {
|
|
989
|
+
var Int32 = dataView.getInt32(offset2.value, true);
|
|
990
|
+
offset2.value = offset2.value + INT32_SIZE;
|
|
1258
991
|
return Int32;
|
|
1259
992
|
}
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
offset.value = offset.value + INT32_SIZE;
|
|
993
|
+
function parseUint32(dataView, offset2) {
|
|
994
|
+
var Uint32 = dataView.getUint32(offset2.value, true);
|
|
995
|
+
offset2.value = offset2.value + INT32_SIZE;
|
|
1264
996
|
return Uint32;
|
|
1265
997
|
}
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
offset.value = offset.value + INT8_SIZE;
|
|
998
|
+
function parseUint8Array(uInt8Array2, offset2) {
|
|
999
|
+
var Uint8 = uInt8Array2[offset2.value];
|
|
1000
|
+
offset2.value = offset2.value + INT8_SIZE;
|
|
1270
1001
|
return Uint8;
|
|
1271
1002
|
}
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
offset.value = offset.value + INT8_SIZE;
|
|
1003
|
+
function parseUint8(dataView, offset2) {
|
|
1004
|
+
var Uint8 = dataView.getUint8(offset2.value);
|
|
1005
|
+
offset2.value = offset2.value + INT8_SIZE;
|
|
1276
1006
|
return Uint8;
|
|
1277
1007
|
}
|
|
1278
|
-
|
|
1279
|
-
const parseInt64 = function (dataView, offset) {
|
|
1008
|
+
const parseInt64 = function(dataView, offset2) {
|
|
1280
1009
|
let int;
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
int = Number(dataView.getBigInt64(offset.value, true));
|
|
1010
|
+
if ("getBigInt64" in DataView.prototype) {
|
|
1011
|
+
int = Number(dataView.getBigInt64(offset2.value, true));
|
|
1284
1012
|
} else {
|
|
1285
|
-
int = dataView.getUint32(
|
|
1013
|
+
int = dataView.getUint32(offset2.value + 4, true) + Number(dataView.getUint32(offset2.value, true) << 32);
|
|
1286
1014
|
}
|
|
1287
|
-
|
|
1288
|
-
offset.value += ULONG_SIZE;
|
|
1015
|
+
offset2.value += ULONG_SIZE;
|
|
1289
1016
|
return int;
|
|
1290
1017
|
};
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
offset.value += FLOAT32_SIZE;
|
|
1018
|
+
function parseFloat32(dataView, offset2) {
|
|
1019
|
+
var float = dataView.getFloat32(offset2.value, true);
|
|
1020
|
+
offset2.value += FLOAT32_SIZE;
|
|
1295
1021
|
return float;
|
|
1296
1022
|
}
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
} // https://stackoverflow.com/questions/5678432/decompressing-half-precision-floats-in-javascript
|
|
1301
|
-
|
|
1302
|
-
|
|
1023
|
+
function decodeFloat32(dataView, offset2) {
|
|
1024
|
+
return THREE.DataUtils.toHalfFloat(parseFloat32(dataView, offset2));
|
|
1025
|
+
}
|
|
1303
1026
|
function decodeFloat16(binary) {
|
|
1304
|
-
var exponent = (binary &
|
|
1305
|
-
|
|
1306
|
-
return (binary >> 15 ? -1 : 1) * (exponent ? exponent === 0x1f ? fraction ? NaN : Infinity : Math.pow(2, exponent - 15) * (1 + fraction / 0x400) : 6.103515625e-5 * (fraction / 0x400));
|
|
1027
|
+
var exponent = (binary & 31744) >> 10, fraction = binary & 1023;
|
|
1028
|
+
return (binary >> 15 ? -1 : 1) * (exponent ? exponent === 31 ? fraction ? NaN : Infinity : Math.pow(2, exponent - 15) * (1 + fraction / 1024) : 6103515625e-14 * (fraction / 1024));
|
|
1307
1029
|
}
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
offset.value += INT16_SIZE;
|
|
1030
|
+
function parseUint16(dataView, offset2) {
|
|
1031
|
+
var Uint16 = dataView.getUint16(offset2.value, true);
|
|
1032
|
+
offset2.value += INT16_SIZE;
|
|
1312
1033
|
return Uint16;
|
|
1313
1034
|
}
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
return decodeFloat16(parseUint16(buffer, offset));
|
|
1035
|
+
function parseFloat16(buffer2, offset2) {
|
|
1036
|
+
return decodeFloat16(parseUint16(buffer2, offset2));
|
|
1317
1037
|
}
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
var startOffset = offset.value;
|
|
1038
|
+
function parseChlist(dataView, buffer2, offset2, size) {
|
|
1039
|
+
var startOffset = offset2.value;
|
|
1321
1040
|
var channels = [];
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
var
|
|
1325
|
-
var
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
var xSampling = parseInt32(dataView, offset);
|
|
1330
|
-
var ySampling = parseInt32(dataView, offset);
|
|
1041
|
+
while (offset2.value < startOffset + size - 1) {
|
|
1042
|
+
var name = parseNullTerminatedString(buffer2, offset2);
|
|
1043
|
+
var pixelType = parseInt32(dataView, offset2);
|
|
1044
|
+
var pLinear = parseUint8(dataView, offset2);
|
|
1045
|
+
offset2.value += 3;
|
|
1046
|
+
var xSampling = parseInt32(dataView, offset2);
|
|
1047
|
+
var ySampling = parseInt32(dataView, offset2);
|
|
1331
1048
|
channels.push({
|
|
1332
|
-
name
|
|
1333
|
-
pixelType
|
|
1334
|
-
pLinear
|
|
1335
|
-
xSampling
|
|
1336
|
-
ySampling
|
|
1049
|
+
name,
|
|
1050
|
+
pixelType,
|
|
1051
|
+
pLinear,
|
|
1052
|
+
xSampling,
|
|
1053
|
+
ySampling
|
|
1337
1054
|
});
|
|
1338
1055
|
}
|
|
1339
|
-
|
|
1340
|
-
offset.value += 1;
|
|
1056
|
+
offset2.value += 1;
|
|
1341
1057
|
return channels;
|
|
1342
1058
|
}
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
var
|
|
1346
|
-
var
|
|
1347
|
-
var
|
|
1348
|
-
var
|
|
1349
|
-
var
|
|
1350
|
-
var
|
|
1351
|
-
var
|
|
1352
|
-
var whiteY = parseFloat32(dataView, offset);
|
|
1059
|
+
function parseChromaticities(dataView, offset2) {
|
|
1060
|
+
var redX = parseFloat32(dataView, offset2);
|
|
1061
|
+
var redY = parseFloat32(dataView, offset2);
|
|
1062
|
+
var greenX = parseFloat32(dataView, offset2);
|
|
1063
|
+
var greenY = parseFloat32(dataView, offset2);
|
|
1064
|
+
var blueX = parseFloat32(dataView, offset2);
|
|
1065
|
+
var blueY = parseFloat32(dataView, offset2);
|
|
1066
|
+
var whiteX = parseFloat32(dataView, offset2);
|
|
1067
|
+
var whiteY = parseFloat32(dataView, offset2);
|
|
1353
1068
|
return {
|
|
1354
|
-
redX
|
|
1355
|
-
redY
|
|
1356
|
-
greenX
|
|
1357
|
-
greenY
|
|
1358
|
-
blueX
|
|
1359
|
-
blueY
|
|
1360
|
-
whiteX
|
|
1361
|
-
whiteY
|
|
1069
|
+
redX,
|
|
1070
|
+
redY,
|
|
1071
|
+
greenX,
|
|
1072
|
+
greenY,
|
|
1073
|
+
blueX,
|
|
1074
|
+
blueY,
|
|
1075
|
+
whiteX,
|
|
1076
|
+
whiteY
|
|
1362
1077
|
};
|
|
1363
1078
|
}
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1079
|
+
function parseCompression(dataView, offset2) {
|
|
1080
|
+
var compressionCodes = [
|
|
1081
|
+
"NO_COMPRESSION",
|
|
1082
|
+
"RLE_COMPRESSION",
|
|
1083
|
+
"ZIPS_COMPRESSION",
|
|
1084
|
+
"ZIP_COMPRESSION",
|
|
1085
|
+
"PIZ_COMPRESSION",
|
|
1086
|
+
"PXR24_COMPRESSION",
|
|
1087
|
+
"B44_COMPRESSION",
|
|
1088
|
+
"B44A_COMPRESSION",
|
|
1089
|
+
"DWAA_COMPRESSION",
|
|
1090
|
+
"DWAB_COMPRESSION"
|
|
1091
|
+
];
|
|
1092
|
+
var compression = parseUint8(dataView, offset2);
|
|
1368
1093
|
return compressionCodes[compression];
|
|
1369
1094
|
}
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
var
|
|
1373
|
-
var
|
|
1374
|
-
var
|
|
1375
|
-
|
|
1376
|
-
return {
|
|
1377
|
-
xMin: xMin,
|
|
1378
|
-
yMin: yMin,
|
|
1379
|
-
xMax: xMax,
|
|
1380
|
-
yMax: yMax
|
|
1381
|
-
};
|
|
1095
|
+
function parseBox2i(dataView, offset2) {
|
|
1096
|
+
var xMin = parseUint32(dataView, offset2);
|
|
1097
|
+
var yMin = parseUint32(dataView, offset2);
|
|
1098
|
+
var xMax = parseUint32(dataView, offset2);
|
|
1099
|
+
var yMax = parseUint32(dataView, offset2);
|
|
1100
|
+
return { xMin, yMin, xMax, yMax };
|
|
1382
1101
|
}
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
var
|
|
1386
|
-
var lineOrder = parseUint8(dataView, offset);
|
|
1102
|
+
function parseLineOrder(dataView, offset2) {
|
|
1103
|
+
var lineOrders = ["INCREASING_Y"];
|
|
1104
|
+
var lineOrder = parseUint8(dataView, offset2);
|
|
1387
1105
|
return lineOrders[lineOrder];
|
|
1388
1106
|
}
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
var
|
|
1392
|
-
var y = parseFloat32(dataView, offset);
|
|
1107
|
+
function parseV2f(dataView, offset2) {
|
|
1108
|
+
var x = parseFloat32(dataView, offset2);
|
|
1109
|
+
var y = parseFloat32(dataView, offset2);
|
|
1393
1110
|
return [x, y];
|
|
1394
1111
|
}
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
var
|
|
1398
|
-
var
|
|
1399
|
-
var z = parseFloat32(dataView, offset);
|
|
1112
|
+
function parseV3f(dataView, offset2) {
|
|
1113
|
+
var x = parseFloat32(dataView, offset2);
|
|
1114
|
+
var y = parseFloat32(dataView, offset2);
|
|
1115
|
+
var z = parseFloat32(dataView, offset2);
|
|
1400
1116
|
return [x, y, z];
|
|
1401
1117
|
}
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
return 'skipped';
|
|
1118
|
+
function parseValue(dataView, buffer2, offset2, type, size) {
|
|
1119
|
+
if (type === "string" || type === "stringvector" || type === "iccProfile") {
|
|
1120
|
+
return parseFixedLengthString(buffer2, offset2, size);
|
|
1121
|
+
} else if (type === "chlist") {
|
|
1122
|
+
return parseChlist(dataView, buffer2, offset2, size);
|
|
1123
|
+
} else if (type === "chromaticities") {
|
|
1124
|
+
return parseChromaticities(dataView, offset2);
|
|
1125
|
+
} else if (type === "compression") {
|
|
1126
|
+
return parseCompression(dataView, offset2);
|
|
1127
|
+
} else if (type === "box2i") {
|
|
1128
|
+
return parseBox2i(dataView, offset2);
|
|
1129
|
+
} else if (type === "lineOrder") {
|
|
1130
|
+
return parseLineOrder(dataView, offset2);
|
|
1131
|
+
} else if (type === "float") {
|
|
1132
|
+
return parseFloat32(dataView, offset2);
|
|
1133
|
+
} else if (type === "v2f") {
|
|
1134
|
+
return parseV2f(dataView, offset2);
|
|
1135
|
+
} else if (type === "v3f") {
|
|
1136
|
+
return parseV3f(dataView, offset2);
|
|
1137
|
+
} else if (type === "int") {
|
|
1138
|
+
return parseInt32(dataView, offset2);
|
|
1139
|
+
} else if (type === "rational") {
|
|
1140
|
+
return parseRational(dataView, offset2);
|
|
1141
|
+
} else if (type === "timecode") {
|
|
1142
|
+
return parseTimecode(dataView, offset2);
|
|
1143
|
+
} else if (type === "preview") {
|
|
1144
|
+
offset2.value += size;
|
|
1145
|
+
return "skipped";
|
|
1431
1146
|
} else {
|
|
1432
|
-
|
|
1433
|
-
return
|
|
1147
|
+
offset2.value += size;
|
|
1148
|
+
return void 0;
|
|
1434
1149
|
}
|
|
1435
1150
|
}
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
const EXRHeader = {};
|
|
1439
|
-
|
|
1151
|
+
function parseHeader(dataView, buffer2, offset2) {
|
|
1152
|
+
const EXRHeader2 = {};
|
|
1440
1153
|
if (dataView.getUint32(0, true) != 20000630) {
|
|
1441
|
-
// magic
|
|
1442
1154
|
throw "THREE.EXRLoader: provided file doesn't appear to be in OpenEXR format.";
|
|
1443
1155
|
}
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
EXRHeader.spec = {
|
|
1156
|
+
EXRHeader2.version = dataView.getUint8(4);
|
|
1157
|
+
const spec = dataView.getUint8(5);
|
|
1158
|
+
EXRHeader2.spec = {
|
|
1449
1159
|
singleTile: !!(spec & 2),
|
|
1450
1160
|
longName: !!(spec & 4),
|
|
1451
1161
|
deepFormat: !!(spec & 8),
|
|
1452
1162
|
multiPart: !!(spec & 16)
|
|
1453
|
-
};
|
|
1454
|
-
|
|
1455
|
-
offset.value = 8; // start at 8 - after pre-amble
|
|
1456
|
-
|
|
1163
|
+
};
|
|
1164
|
+
offset2.value = 8;
|
|
1457
1165
|
var keepReading = true;
|
|
1458
|
-
|
|
1459
1166
|
while (keepReading) {
|
|
1460
|
-
var attributeName = parseNullTerminatedString(
|
|
1461
|
-
|
|
1167
|
+
var attributeName = parseNullTerminatedString(buffer2, offset2);
|
|
1462
1168
|
if (attributeName == 0) {
|
|
1463
1169
|
keepReading = false;
|
|
1464
1170
|
} else {
|
|
1465
|
-
var attributeType = parseNullTerminatedString(
|
|
1466
|
-
var attributeSize = parseUint32(dataView,
|
|
1467
|
-
var attributeValue = parseValue(dataView,
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
console.warn(`EXRLoader.parse: skipped unknown header attribute type \'${attributeType}\'.`);
|
|
1171
|
+
var attributeType = parseNullTerminatedString(buffer2, offset2);
|
|
1172
|
+
var attributeSize = parseUint32(dataView, offset2);
|
|
1173
|
+
var attributeValue = parseValue(dataView, buffer2, offset2, attributeType, attributeSize);
|
|
1174
|
+
if (attributeValue === void 0) {
|
|
1175
|
+
console.warn(`EXRLoader.parse: skipped unknown header attribute type '${attributeType}'.`);
|
|
1471
1176
|
} else {
|
|
1472
|
-
|
|
1177
|
+
EXRHeader2[attributeName] = attributeValue;
|
|
1473
1178
|
}
|
|
1474
1179
|
}
|
|
1475
1180
|
}
|
|
1476
|
-
|
|
1477
1181
|
if (spec != 0) {
|
|
1478
|
-
console.error(
|
|
1479
|
-
throw
|
|
1182
|
+
console.error("EXRHeader:", EXRHeader2);
|
|
1183
|
+
throw "THREE.EXRLoader: provided file is currently unsupported.";
|
|
1480
1184
|
}
|
|
1481
|
-
|
|
1482
|
-
return EXRHeader;
|
|
1185
|
+
return EXRHeader2;
|
|
1483
1186
|
}
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
const EXRDecoder = {
|
|
1187
|
+
function setupDecoder(EXRHeader2, dataView, uInt8Array2, offset2, outputType) {
|
|
1188
|
+
const EXRDecoder2 = {
|
|
1487
1189
|
size: 0,
|
|
1488
1190
|
viewer: dataView,
|
|
1489
|
-
array:
|
|
1490
|
-
offset:
|
|
1491
|
-
width:
|
|
1492
|
-
height:
|
|
1493
|
-
channels:
|
|
1191
|
+
array: uInt8Array2,
|
|
1192
|
+
offset: offset2,
|
|
1193
|
+
width: EXRHeader2.dataWindow.xMax - EXRHeader2.dataWindow.xMin + 1,
|
|
1194
|
+
height: EXRHeader2.dataWindow.yMax - EXRHeader2.dataWindow.yMin + 1,
|
|
1195
|
+
channels: EXRHeader2.channels.length,
|
|
1494
1196
|
bytesPerLine: null,
|
|
1495
1197
|
lines: null,
|
|
1496
1198
|
inputSize: null,
|
|
1497
|
-
type:
|
|
1199
|
+
type: EXRHeader2.channels[0].pixelType,
|
|
1498
1200
|
uncompress: null,
|
|
1499
1201
|
getter: null,
|
|
1500
1202
|
format: null,
|
|
1501
1203
|
encoding: null
|
|
1502
1204
|
};
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
EXRDecoder.uncompress = uncompressRAW;
|
|
1205
|
+
switch (EXRHeader2.compression) {
|
|
1206
|
+
case "NO_COMPRESSION":
|
|
1207
|
+
EXRDecoder2.lines = 1;
|
|
1208
|
+
EXRDecoder2.uncompress = uncompressRAW;
|
|
1508
1209
|
break;
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
EXRDecoder.uncompress = uncompressRLE;
|
|
1210
|
+
case "RLE_COMPRESSION":
|
|
1211
|
+
EXRDecoder2.lines = 1;
|
|
1212
|
+
EXRDecoder2.uncompress = uncompressRLE;
|
|
1513
1213
|
break;
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
EXRDecoder.uncompress = uncompressZIP;
|
|
1214
|
+
case "ZIPS_COMPRESSION":
|
|
1215
|
+
EXRDecoder2.lines = 1;
|
|
1216
|
+
EXRDecoder2.uncompress = uncompressZIP;
|
|
1518
1217
|
break;
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
EXRDecoder.uncompress = uncompressZIP;
|
|
1218
|
+
case "ZIP_COMPRESSION":
|
|
1219
|
+
EXRDecoder2.lines = 16;
|
|
1220
|
+
EXRDecoder2.uncompress = uncompressZIP;
|
|
1523
1221
|
break;
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
EXRDecoder.uncompress = uncompressPIZ;
|
|
1222
|
+
case "PIZ_COMPRESSION":
|
|
1223
|
+
EXRDecoder2.lines = 32;
|
|
1224
|
+
EXRDecoder2.uncompress = uncompressPIZ;
|
|
1528
1225
|
break;
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
EXRDecoder.uncompress = uncompressPXR;
|
|
1226
|
+
case "PXR24_COMPRESSION":
|
|
1227
|
+
EXRDecoder2.lines = 16;
|
|
1228
|
+
EXRDecoder2.uncompress = uncompressPXR;
|
|
1533
1229
|
break;
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
EXRDecoder.uncompress = uncompressDWA;
|
|
1230
|
+
case "DWAA_COMPRESSION":
|
|
1231
|
+
EXRDecoder2.lines = 32;
|
|
1232
|
+
EXRDecoder2.uncompress = uncompressDWA;
|
|
1538
1233
|
break;
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
EXRDecoder.uncompress = uncompressDWA;
|
|
1234
|
+
case "DWAB_COMPRESSION":
|
|
1235
|
+
EXRDecoder2.lines = 256;
|
|
1236
|
+
EXRDecoder2.uncompress = uncompressDWA;
|
|
1543
1237
|
break;
|
|
1544
|
-
|
|
1545
1238
|
default:
|
|
1546
|
-
throw
|
|
1239
|
+
throw "EXRLoader.parse: " + EXRHeader2.compression + " is unsupported";
|
|
1547
1240
|
}
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
if (EXRDecoder.type == 1) {
|
|
1552
|
-
// half
|
|
1241
|
+
EXRDecoder2.scanlineBlockSize = EXRDecoder2.lines;
|
|
1242
|
+
if (EXRDecoder2.type == 1) {
|
|
1553
1243
|
switch (outputType) {
|
|
1554
|
-
case FloatType:
|
|
1555
|
-
|
|
1556
|
-
|
|
1244
|
+
case THREE.FloatType:
|
|
1245
|
+
EXRDecoder2.getter = parseFloat16;
|
|
1246
|
+
EXRDecoder2.inputSize = INT16_SIZE;
|
|
1557
1247
|
break;
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
EXRDecoder.inputSize = INT16_SIZE;
|
|
1248
|
+
case THREE.HalfFloatType:
|
|
1249
|
+
EXRDecoder2.getter = parseUint16;
|
|
1250
|
+
EXRDecoder2.inputSize = INT16_SIZE;
|
|
1562
1251
|
break;
|
|
1563
1252
|
}
|
|
1564
|
-
} else if (
|
|
1565
|
-
// float
|
|
1253
|
+
} else if (EXRDecoder2.type == 2) {
|
|
1566
1254
|
switch (outputType) {
|
|
1567
|
-
case FloatType:
|
|
1568
|
-
|
|
1569
|
-
|
|
1255
|
+
case THREE.FloatType:
|
|
1256
|
+
EXRDecoder2.getter = parseFloat32;
|
|
1257
|
+
EXRDecoder2.inputSize = FLOAT32_SIZE;
|
|
1570
1258
|
break;
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
EXRDecoder.inputSize = FLOAT32_SIZE;
|
|
1259
|
+
case THREE.HalfFloatType:
|
|
1260
|
+
EXRDecoder2.getter = decodeFloat32;
|
|
1261
|
+
EXRDecoder2.inputSize = FLOAT32_SIZE;
|
|
1575
1262
|
}
|
|
1576
1263
|
} else {
|
|
1577
|
-
throw
|
|
1264
|
+
throw "EXRLoader.parse: unsupported pixelType " + EXRDecoder2.type + " for " + EXRHeader2.compression + ".";
|
|
1578
1265
|
}
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
// RGB images will be converted to RGBA format, preventing software emulation in select devices.
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
EXRDecoder.outputChannels = EXRDecoder.channels == 3 ? 4 : EXRDecoder.channels;
|
|
1588
|
-
const size = EXRDecoder.width * EXRDecoder.height * EXRDecoder.outputChannels;
|
|
1589
|
-
|
|
1266
|
+
EXRDecoder2.blockCount = (EXRHeader2.dataWindow.yMax + 1) / EXRDecoder2.scanlineBlockSize;
|
|
1267
|
+
for (var i = 0; i < EXRDecoder2.blockCount; i++)
|
|
1268
|
+
parseInt64(dataView, offset2);
|
|
1269
|
+
EXRDecoder2.outputChannels = EXRDecoder2.channels == 3 ? 4 : EXRDecoder2.channels;
|
|
1270
|
+
const size = EXRDecoder2.width * EXRDecoder2.height * EXRDecoder2.outputChannels;
|
|
1590
1271
|
switch (outputType) {
|
|
1591
|
-
case FloatType:
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1272
|
+
case THREE.FloatType:
|
|
1273
|
+
EXRDecoder2.byteArray = new Float32Array(size);
|
|
1274
|
+
if (EXRDecoder2.channels < EXRDecoder2.outputChannels)
|
|
1275
|
+
EXRDecoder2.byteArray.fill(1, 0, size);
|
|
1595
1276
|
break;
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1277
|
+
case THREE.HalfFloatType:
|
|
1278
|
+
EXRDecoder2.byteArray = new Uint16Array(size);
|
|
1279
|
+
if (EXRDecoder2.channels < EXRDecoder2.outputChannels)
|
|
1280
|
+
EXRDecoder2.byteArray.fill(15360, 0, size);
|
|
1601
1281
|
break;
|
|
1602
|
-
|
|
1603
1282
|
default:
|
|
1604
|
-
console.error(
|
|
1283
|
+
console.error("THREE.EXRLoader: unsupported type: ", outputType);
|
|
1605
1284
|
break;
|
|
1606
1285
|
}
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
EXRDecoder.format = RGBAFormat;
|
|
1612
|
-
EXRDecoder.encoding = LinearEncoding;
|
|
1286
|
+
EXRDecoder2.bytesPerLine = EXRDecoder2.width * EXRDecoder2.inputSize * EXRDecoder2.channels;
|
|
1287
|
+
if (EXRDecoder2.outputChannels == 4) {
|
|
1288
|
+
EXRDecoder2.format = THREE.RGBAFormat;
|
|
1289
|
+
EXRDecoder2.encoding = THREE.LinearEncoding;
|
|
1613
1290
|
} else {
|
|
1614
|
-
|
|
1615
|
-
|
|
1291
|
+
EXRDecoder2.format = THREE.RedFormat;
|
|
1292
|
+
EXRDecoder2.encoding = THREE.LinearEncoding;
|
|
1616
1293
|
}
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
} // start parsing file [START]
|
|
1620
|
-
|
|
1621
|
-
|
|
1294
|
+
return EXRDecoder2;
|
|
1295
|
+
}
|
|
1622
1296
|
const bufferDataView = new DataView(buffer);
|
|
1623
1297
|
const uInt8Array = new Uint8Array(buffer);
|
|
1624
|
-
const offset = {
|
|
1625
|
-
|
|
1626
|
-
}; // get header information and validate format.
|
|
1627
|
-
|
|
1628
|
-
const EXRHeader = parseHeader(bufferDataView, buffer, offset); // get input compression information and prepare decoding.
|
|
1629
|
-
|
|
1298
|
+
const offset = { value: 0 };
|
|
1299
|
+
const EXRHeader = parseHeader(bufferDataView, buffer, offset);
|
|
1630
1300
|
const EXRDecoder = setupDecoder(EXRHeader, bufferDataView, uInt8Array, offset, this.type);
|
|
1631
|
-
const tmpOffset = {
|
|
1632
|
-
|
|
1633
|
-
};
|
|
1634
|
-
const channelOffsets = {
|
|
1635
|
-
R: 0,
|
|
1636
|
-
G: 1,
|
|
1637
|
-
B: 2,
|
|
1638
|
-
A: 3,
|
|
1639
|
-
Y: 0
|
|
1640
|
-
};
|
|
1641
|
-
|
|
1301
|
+
const tmpOffset = { value: 0 };
|
|
1302
|
+
const channelOffsets = { R: 0, G: 1, B: 2, A: 3, Y: 0 };
|
|
1642
1303
|
for (let scanlineBlockIdx = 0; scanlineBlockIdx < EXRDecoder.height / EXRDecoder.scanlineBlockSize; scanlineBlockIdx++) {
|
|
1643
|
-
const line = parseUint32(bufferDataView, offset);
|
|
1644
|
-
|
|
1645
|
-
EXRDecoder.size = parseUint32(bufferDataView, offset); // data_len
|
|
1646
|
-
|
|
1304
|
+
const line = parseUint32(bufferDataView, offset);
|
|
1305
|
+
EXRDecoder.size = parseUint32(bufferDataView, offset);
|
|
1647
1306
|
EXRDecoder.lines = line + EXRDecoder.scanlineBlockSize > EXRDecoder.height ? EXRDecoder.height - line : EXRDecoder.scanlineBlockSize;
|
|
1648
1307
|
const isCompressed = EXRDecoder.size < EXRDecoder.lines * EXRDecoder.bytesPerLine;
|
|
1649
1308
|
const viewer = isCompressed ? EXRDecoder.uncompress(EXRDecoder) : uncompressRAW(EXRDecoder);
|
|
1650
1309
|
offset.value += EXRDecoder.size;
|
|
1651
|
-
|
|
1652
1310
|
for (let line_y = 0; line_y < EXRDecoder.scanlineBlockSize; line_y++) {
|
|
1653
1311
|
const true_y = line_y + scanlineBlockIdx * EXRDecoder.scanlineBlockSize;
|
|
1654
|
-
if (true_y >= EXRDecoder.height)
|
|
1655
|
-
|
|
1312
|
+
if (true_y >= EXRDecoder.height)
|
|
1313
|
+
break;
|
|
1656
1314
|
for (let channelID = 0; channelID < EXRDecoder.channels; channelID++) {
|
|
1657
1315
|
const cOff = channelOffsets[EXRHeader.channels[channelID].name];
|
|
1658
|
-
|
|
1659
1316
|
for (let x = 0; x < EXRDecoder.width; x++) {
|
|
1660
1317
|
tmpOffset.value = (line_y * (EXRDecoder.channels * EXRDecoder.width) + channelID * EXRDecoder.width + x) * EXRDecoder.inputSize;
|
|
1661
1318
|
const outIndex = (EXRDecoder.height - 1 - true_y) * (EXRDecoder.width * EXRDecoder.outputChannels) + x * EXRDecoder.outputChannels + cOff;
|
|
@@ -1664,7 +1321,6 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1664
1321
|
}
|
|
1665
1322
|
}
|
|
1666
1323
|
}
|
|
1667
|
-
|
|
1668
1324
|
return {
|
|
1669
1325
|
header: EXRHeader,
|
|
1670
1326
|
width: EXRDecoder.width,
|
|
@@ -1675,25 +1331,21 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1675
1331
|
type: this.type
|
|
1676
1332
|
};
|
|
1677
1333
|
}
|
|
1678
|
-
|
|
1679
1334
|
setDataType(value) {
|
|
1680
1335
|
this.type = value;
|
|
1681
1336
|
return this;
|
|
1682
1337
|
}
|
|
1683
|
-
|
|
1684
1338
|
load(url, onLoad, onProgress, onError) {
|
|
1685
1339
|
function onLoadCallback(texture, texData) {
|
|
1686
1340
|
texture.encoding = texData.encoding;
|
|
1687
|
-
texture.minFilter = LinearFilter;
|
|
1688
|
-
texture.magFilter = LinearFilter;
|
|
1341
|
+
texture.minFilter = THREE.LinearFilter;
|
|
1342
|
+
texture.magFilter = THREE.LinearFilter;
|
|
1689
1343
|
texture.generateMipmaps = false;
|
|
1690
1344
|
texture.flipY = false;
|
|
1691
|
-
if (onLoad)
|
|
1345
|
+
if (onLoad)
|
|
1346
|
+
onLoad(texture, texData);
|
|
1692
1347
|
}
|
|
1693
|
-
|
|
1694
1348
|
return super.load(url, onLoadCallback, onProgress, onError);
|
|
1695
1349
|
}
|
|
1696
|
-
|
|
1697
1350
|
}
|
|
1698
|
-
|
|
1699
|
-
export { EXRLoader };
|
|
1351
|
+
exports.EXRLoader = EXRLoader;
|