super-three 0.133.4 → 0.136.1
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/LICENSE +1 -1
- package/build/three.js +2285 -1983
- package/build/three.min.js +1 -1
- package/build/three.module.js +5983 -5358
- package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
- package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
- package/examples/fonts/open-sans/open-sans.css +9 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +3966 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
- package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
- package/examples/js/animation/CCDIKSolver.js +0 -1
- package/examples/js/animation/MMDPhysics.js +2 -4
- package/examples/js/cameras/CinematicCamera.js +2 -7
- package/examples/js/controls/ArcballControls.js +99 -72
- package/examples/js/controls/DragControls.js +7 -0
- package/examples/js/controls/OrbitControls.js +5 -36
- package/examples/js/controls/TrackballControls.js +3 -2
- package/examples/js/controls/TransformControls.js +24 -1
- package/examples/js/csm/CSM.js +2 -2
- package/examples/js/csm/CSMFrustum.js +133 -0
- package/examples/js/curves/CurveExtras.js +0 -2
- package/examples/js/effects/AsciiEffect.js +2 -9
- package/examples/js/exporters/GLTFExporter.js +148 -64
- package/examples/js/exporters/MMDExporter.js +1 -1
- package/examples/js/exporters/USDZExporter.js +45 -26
- package/examples/js/geometries/ConvexGeometry.js +1 -1
- package/examples/js/geometries/TeapotGeometry.js +0 -1
- package/examples/js/interactive/SelectionBox.js +2 -0
- package/examples/js/interactive/SelectionHelper.js +22 -7
- package/examples/js/lights/RectAreaLightUniformsLib.js +4 -0
- package/examples/js/lines/LineMaterial.js +58 -20
- package/examples/js/lines/LineSegments2.js +29 -24
- package/examples/js/loaders/3DMLoader.js +24 -11
- package/examples/js/loaders/3MFLoader.js +2 -2
- package/examples/js/loaders/AMFLoader.js +0 -2
- package/examples/js/loaders/BasisTextureLoader.js +1 -0
- package/examples/js/loaders/ColladaLoader.js +61 -4
- package/examples/js/loaders/EXRLoader.js +201 -272
- package/examples/js/loaders/FBXLoader.js +4 -5
- package/examples/js/loaders/GLTFLoader.js +98 -35
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -10
- package/examples/js/loaders/KTX2Loader.js +23 -2
- package/examples/js/loaders/KTXLoader.js +1 -1
- package/examples/js/loaders/LDrawLoader.js +1169 -901
- package/examples/js/loaders/LUT3dlLoader.js +19 -10
- package/examples/js/loaders/LUTCubeLoader.js +5 -4
- package/examples/js/loaders/LWOLoader.js +8 -6
- package/examples/js/loaders/LogLuvLoader.js +766 -0
- package/examples/js/loaders/MMDLoader.js +0 -1
- package/examples/js/loaders/NRRDLoader.js +9 -2
- package/examples/js/loaders/OBJLoader.js +0 -2
- package/examples/js/loaders/PLYLoader.js +33 -8
- package/examples/js/loaders/RGBELoader.js +8 -22
- package/examples/js/loaders/RGBMLoader.js +56 -6
- package/examples/js/loaders/SVGLoader.js +12 -6
- package/examples/js/loaders/TDSLoader.js +237 -271
- package/examples/js/loaders/VOXLoader.js +1 -0
- package/examples/js/loaders/VRMLLoader.js +11 -22
- package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
- package/examples/js/math/ConvexHull.js +7 -13
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/misc/GPUComputationRenderer.js +3 -1
- package/examples/js/misc/Volume.js +2 -2
- package/examples/js/modifiers/CurveModifier.js +8 -7
- package/examples/js/modifiers/EdgeSplitModifier.js +1 -1
- package/examples/js/modifiers/SimplifyModifier.js +1 -1
- package/examples/js/objects/Lensflare.js +2 -10
- package/examples/js/objects/MarchingCubes.js +42 -128
- package/examples/js/objects/Reflector.js +8 -13
- package/examples/js/objects/ReflectorForSSRPass.js +0 -10
- package/examples/js/objects/Refractor.js +8 -13
- package/examples/js/objects/Sky.js +1 -1
- package/examples/js/objects/Water.js +3 -15
- package/examples/js/objects/Water2.js +4 -7
- package/examples/js/postprocessing/GlitchPass.js +6 -5
- package/examples/js/postprocessing/SMAAPass.js +2 -9
- package/examples/js/postprocessing/SSAOPass.js +10 -21
- package/examples/js/postprocessing/SavePass.js +1 -5
- package/examples/js/renderers/CSS2DRenderer.js +4 -4
- package/examples/js/renderers/CSS3DRenderer.js +4 -4
- package/examples/js/shaders/ConvolutionShader.js +0 -1
- package/examples/js/shaders/DigitalGlitch.js +3 -3
- package/examples/js/shaders/FXAAShader.js +1 -1
- package/examples/js/shaders/FilmShader.js +1 -1
- package/examples/js/shaders/GammaCorrectionShader.js +1 -1
- package/examples/js/shaders/HorizontalBlurShader.js +1 -2
- package/examples/js/shaders/MMDToonShader.js +0 -1
- package/examples/js/shaders/SSAOShader.js +1 -1
- package/examples/js/shaders/SSRShader.js +1 -1
- package/examples/js/shaders/SSRrShader.js +1 -1
- package/examples/js/shaders/VerticalBlurShader.js +1 -2
- package/examples/js/utils/GeometryUtils.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +0 -1
- package/examples/jsm/animation/MMDPhysics.js +1 -3
- package/examples/jsm/cameras/CinematicCamera.js +2 -5
- package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
- package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +80 -77
- package/examples/jsm/controls/DragControls.js +7 -0
- package/examples/jsm/controls/OrbitControls.js +9 -51
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +24 -1
- package/examples/jsm/csm/CSM.js +3 -3
- package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
- package/examples/jsm/curves/CurveExtras.js +0 -2
- package/examples/jsm/effects/AsciiEffect.js +2 -9
- package/examples/jsm/exporters/GLTFExporter.js +169 -99
- package/examples/jsm/exporters/MMDExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +47 -26
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/TeapotGeometry.js +0 -1
- package/examples/jsm/interactive/SelectionBox.js +1 -0
- package/examples/jsm/interactive/SelectionHelper.js +19 -7
- package/examples/jsm/libs/flow.module.js +3338 -0
- package/examples/jsm/libs/lil-gui.module.min.js +8 -0
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +7 -0
- package/examples/jsm/lines/LineMaterial.js +59 -23
- package/examples/jsm/lines/LineSegments2.js +22 -18
- package/examples/jsm/loaders/3DMLoader.js +18 -12
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +0 -2
- package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
- package/examples/jsm/loaders/ColladaLoader.js +61 -4
- package/examples/jsm/loaders/EXRLoader.js +200 -306
- package/examples/jsm/loaders/FBXLoader.js +4 -5
- package/examples/jsm/loaders/GLTFLoader.js +102 -40
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -17
- package/examples/jsm/loaders/KTX2Loader.js +30 -2
- package/examples/jsm/loaders/KTXLoader.js +1 -1
- package/examples/jsm/loaders/LDrawLoader.js +1159 -898
- package/examples/jsm/loaders/LUT3dlLoader.js +19 -12
- package/examples/jsm/loaders/LUTCubeLoader.js +5 -5
- package/examples/jsm/loaders/LWOLoader.js +8 -6
- package/examples/jsm/loaders/LogLuvLoader.js +606 -0
- package/examples/jsm/loaders/MMDLoader.js +0 -1
- package/examples/jsm/loaders/NRRDLoader.js +10 -2
- package/examples/jsm/loaders/OBJLoader.js +0 -2
- package/examples/jsm/loaders/PLYLoader.js +34 -8
- package/examples/jsm/loaders/RGBELoader.js +7 -28
- package/examples/jsm/loaders/RGBMLoader.js +62 -8
- package/examples/jsm/loaders/SVGLoader.js +15 -7
- package/examples/jsm/loaders/TDSLoader.js +236 -275
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +11 -23
- package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
- package/examples/jsm/math/ConvexHull.js +7 -13
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +3 -1
- package/examples/jsm/misc/Volume.js +2 -2
- package/examples/jsm/modifiers/CurveModifier.js +9 -8
- package/examples/jsm/modifiers/EdgeSplitModifier.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +455 -0
- package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
- package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
- package/examples/jsm/node-editor/accessors/UVEditor.js +26 -0
- package/examples/jsm/node-editor/display/BlendEditor.js +43 -0
- package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
- package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
- package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
- package/examples/jsm/node-editor/examples/rim.json +1 -0
- package/examples/jsm/node-editor/inputs/ColorEditor.js +91 -0
- package/examples/jsm/node-editor/inputs/FloatEditor.js +24 -0
- package/examples/jsm/node-editor/inputs/SliderEditor.js +68 -0
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +28 -0
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +30 -0
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +37 -0
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +108 -0
- package/examples/jsm/node-editor/math/DotEditor.js +36 -0
- package/examples/jsm/node-editor/math/InvertEditor.js +38 -0
- package/examples/jsm/node-editor/math/LimiterEditor.js +48 -0
- package/examples/jsm/node-editor/math/NormalizeEditor.js +26 -0
- package/examples/jsm/node-editor/math/OperatorEditor.js +50 -0
- package/examples/jsm/node-editor/math/PowerEditor.js +34 -0
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +39 -0
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +26 -0
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +42 -0
- package/examples/jsm/node-editor/utils/TimerEditor.js +57 -0
- package/examples/jsm/nodes/core/NodeBuilder.js +2 -2
- package/examples/jsm/nodes/materials/StandardNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/nodes/StandardNode.js +7 -6
- package/examples/jsm/nodes/math/MathNode.js +12 -0
- package/examples/jsm/nodes/misc/BumpMapNode.js +1 -1
- package/examples/jsm/nodes/misc/TextureCubeUVNode.js +1 -4
- package/examples/jsm/nodes/utils/ColorSpaceNode.js +5 -177
- package/examples/jsm/objects/Lensflare.js +5 -16
- package/examples/jsm/objects/MarchingCubes.js +46 -152
- package/examples/jsm/objects/Reflector.js +8 -16
- package/examples/jsm/objects/ReflectorForSSRPass.js +0 -12
- package/examples/jsm/objects/Refractor.js +8 -16
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/Water.js +3 -18
- package/examples/jsm/objects/Water2.js +4 -8
- package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +1 -1
- package/examples/jsm/postprocessing/AfterimagePass.js +1 -1
- package/examples/jsm/postprocessing/BloomPass.js +1 -1
- package/examples/jsm/postprocessing/BokehPass.js +1 -1
- package/examples/jsm/postprocessing/ClearPass.js +1 -1
- package/examples/jsm/postprocessing/CubeTexturePass.js +1 -1
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
- package/examples/jsm/postprocessing/EffectComposer.js +3 -3
- package/examples/jsm/postprocessing/FilmPass.js +1 -1
- package/examples/jsm/postprocessing/GlitchPass.js +10 -7
- package/examples/jsm/postprocessing/HalftonePass.js +1 -1
- package/examples/jsm/postprocessing/MaskPass.js +1 -1
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- package/examples/jsm/postprocessing/RenderPass.js +1 -1
- package/examples/jsm/postprocessing/SAOPass.js +2 -2
- package/examples/jsm/postprocessing/SMAAPass.js +3 -12
- package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
- package/examples/jsm/postprocessing/SSAOPass.js +15 -26
- package/examples/jsm/postprocessing/SSRPass.js +1 -1
- package/examples/jsm/postprocessing/SSRrPass.js +1 -1
- package/examples/jsm/postprocessing/SavePass.js +2 -4
- package/examples/jsm/postprocessing/ShaderPass.js +1 -1
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
- package/examples/jsm/postprocessing/TexturePass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +1 -1
- package/examples/jsm/renderers/CSS2DRenderer.js +5 -4
- package/examples/jsm/renderers/CSS3DRenderer.js +5 -4
- package/examples/jsm/renderers/nodes/Nodes.js +17 -13
- package/examples/jsm/renderers/nodes/ShaderNode.js +229 -49
- package/examples/jsm/renderers/nodes/accessors/MaterialNode.js +6 -6
- package/examples/jsm/renderers/nodes/accessors/ModelViewProjectionNode.js +5 -5
- package/examples/jsm/renderers/nodes/accessors/NormalNode.js +14 -3
- package/examples/jsm/renderers/nodes/accessors/PointUVNode.js +3 -3
- package/examples/jsm/renderers/nodes/accessors/PositionNode.js +15 -5
- package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +107 -0
- package/examples/jsm/renderers/nodes/accessors/UVNode.js +7 -5
- package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +3 -3
- package/examples/jsm/renderers/nodes/core/AttributeNode.js +6 -0
- package/examples/jsm/renderers/nodes/core/BypassNode.js +38 -0
- package/examples/jsm/renderers/nodes/core/CodeNode.js +3 -3
- package/examples/jsm/renderers/nodes/core/ContextNode.js +4 -19
- package/examples/jsm/renderers/nodes/core/ExpressionNode.js +13 -2
- package/examples/jsm/renderers/nodes/core/FunctionNode.js +19 -132
- package/examples/jsm/renderers/nodes/core/InputNode.js +13 -3
- package/examples/jsm/renderers/nodes/core/Node.js +32 -10
- package/examples/jsm/renderers/nodes/core/NodeBuilder.js +146 -128
- package/examples/jsm/renderers/nodes/core/NodeFunction.js +22 -0
- package/examples/jsm/renderers/nodes/core/NodeFunctionInput.js +4 -4
- package/examples/jsm/renderers/nodes/core/NodeKeywords.js +18 -179
- package/examples/jsm/renderers/nodes/core/NodeParser.js +11 -0
- package/examples/jsm/renderers/nodes/core/NodeVar.js +2 -2
- package/examples/jsm/renderers/nodes/core/PropertyNode.js +14 -2
- package/examples/jsm/renderers/nodes/core/TempNode.js +10 -13
- package/examples/jsm/renderers/nodes/core/VarNode.js +12 -7
- package/examples/jsm/renderers/nodes/core/VaryNode.js +23 -8
- package/examples/jsm/renderers/nodes/core/constants.js +2 -0
- package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +43 -63
- package/examples/jsm/renderers/nodes/display/NormalMapNode.js +21 -22
- package/examples/jsm/renderers/nodes/functions/BSDFs.js +64 -101
- package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +27 -0
- package/examples/jsm/renderers/nodes/inputs/BufferNode.js +25 -0
- package/examples/jsm/renderers/nodes/inputs/IntNode.js +17 -0
- package/examples/jsm/renderers/nodes/inputs/TextureNode.js +13 -10
- package/examples/jsm/renderers/nodes/lights/LightContextNode.js +20 -14
- package/examples/jsm/renderers/nodes/lights/LightNode.js +32 -36
- package/examples/jsm/renderers/nodes/math/CondNode.js +60 -0
- package/examples/jsm/renderers/nodes/math/MathNode.js +91 -37
- package/examples/jsm/renderers/nodes/math/OperatorNode.js +124 -31
- package/examples/jsm/renderers/nodes/parsers/GLSLNodeFunction.js +137 -0
- package/examples/jsm/renderers/nodes/parsers/GLSLNodeParser.js +14 -0
- package/examples/jsm/renderers/nodes/parsers/WGSLNodeFunction.js +89 -0
- package/examples/jsm/renderers/nodes/parsers/WGSLNodeParser.js +14 -0
- package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +7 -9
- package/examples/jsm/renderers/nodes/utils/ArrayElementNode.js +31 -0
- package/examples/jsm/renderers/nodes/utils/ConvertNode.js +33 -0
- package/examples/jsm/renderers/nodes/utils/JoinNode.js +7 -7
- package/examples/jsm/renderers/nodes/utils/OscNode.js +58 -0
- package/examples/jsm/renderers/nodes/utils/SplitNode.js +18 -8
- package/examples/jsm/renderers/nodes/utils/SpriteSheetUVNode.js +7 -7
- package/examples/jsm/renderers/nodes/utils/TimerNode.js +1 -1
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +22 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +192 -95
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +2 -2
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPUBindings.js +10 -9
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +2 -4
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +2 -4
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +15 -23
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +44 -65
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +13 -31
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +61 -28
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +35 -29
- package/examples/jsm/renderers/webgpu/constants.js +2 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +459 -95
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/ConvolutionShader.js +0 -1
- package/examples/jsm/shaders/DigitalGlitch.js +3 -3
- package/examples/jsm/shaders/FXAAShader.js +1 -1
- package/examples/jsm/shaders/FilmShader.js +1 -1
- package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +1 -2
- package/examples/jsm/shaders/MMDToonShader.js +0 -1
- package/examples/jsm/shaders/SSAOShader.js +1 -1
- package/examples/jsm/shaders/SSRShader.js +1 -1
- package/examples/jsm/shaders/SSRrShader.js +1 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +1 -2
- package/examples/jsm/utils/GeometryUtils.js +1 -1
- package/examples/jsm/utils/LDrawUtils.js +195 -0
- package/examples/jsm/utils/WorkerPool.js +11 -11
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
- package/examples/jsm/webxr/VRButton.js +24 -0
- package/examples/jsm/webxr/XREstimatedLight.js +2 -0
- package/package.json +27 -18
- package/src/Three.Legacy.js +18 -0
- package/src/Three.js +1 -3
- package/src/animation/AnimationMixer.js +1 -0
- package/src/cameras/CubeCamera.js +2 -0
- package/src/cameras/StereoCamera.js +8 -7
- package/src/constants.js +3 -23
- package/src/core/Layers.js +7 -1
- package/src/core/Object3D.js +3 -1
- package/src/extras/ImageUtils.js +63 -0
- package/src/extras/PMREMGenerator.js +49 -185
- package/src/extras/core/Interpolations.js +1 -1
- package/src/geometries/LatheGeometry.js +70 -47
- package/src/helpers/CameraHelper.js +1 -1
- package/src/loaders/FileLoader.js +98 -144
- package/src/loaders/ImageLoader.js +9 -4
- package/src/loaders/LoaderUtils.js +26 -0
- package/src/loaders/MaterialLoader.js +8 -5
- package/src/loaders/ObjectLoader.js +2 -0
- package/src/materials/Material.js +8 -8
- package/src/materials/MeshPhysicalMaterial.js +20 -14
- package/src/math/Color.js +1 -39
- package/src/math/MathUtils.js +5 -16
- package/src/math/Quaternion.js +1 -1
- package/src/math/Ray.js +2 -2
- package/src/math/Sphere.js +10 -1
- package/src/objects/Skeleton.js +1 -0
- package/src/renderers/WebGLCubeRenderTarget.js +0 -2
- package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
- package/src/renderers/WebGLRenderer.js +106 -199
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +2 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -78
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +28 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
- package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +9 -8
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -3
- package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +23 -5
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib.js +8 -6
- package/src/renderers/shaders/UniformsLib.js +1 -2
- package/src/renderers/webgl/WebGLCapabilities.js +0 -2
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
- package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
- package/src/renderers/webgl/WebGLExtensions.js +1 -0
- package/src/renderers/webgl/WebGLMaterials.js +27 -15
- package/src/renderers/webgl/WebGLMorphtargets.js +13 -0
- package/src/renderers/webgl/WebGLProgram.js +12 -37
- package/src/renderers/webgl/WebGLPrograms.js +192 -70
- package/src/renderers/webgl/WebGLRenderLists.js +4 -14
- package/src/renderers/webgl/WebGLShaderCache.js +120 -0
- package/src/renderers/webgl/WebGLShadowMap.js +14 -5
- package/src/renderers/webgl/WebGLState.js +157 -17
- package/src/renderers/webgl/WebGLTextures.js +442 -83
- package/src/renderers/webgl/WebGLUniforms.js +45 -1
- package/src/renderers/webgl/WebGLUtils.js +86 -28
- package/src/renderers/webxr/WebXRManager.js +77 -109
- package/src/scenes/Scene.js +1 -1
- package/src/textures/DataTexture.js +0 -2
- package/src/textures/DataTexture2DArray.js +0 -2
- package/src/textures/DataTexture3D.js +0 -2
- package/src/textures/FramebufferTexture.js +25 -0
- package/src/textures/Texture.js +8 -1
- package/src/textures/VideoTexture.js +1 -3
- package/examples/js/WebGL.js +0 -90
- package/examples/js/controls/DeviceOrientationControls.js +0 -147
- package/examples/js/libs/dat.gui.min.js +0 -14
- package/examples/js/utils/RoughnessMipmapper.js +0 -278
- package/examples/jsm/controls/DeviceOrientationControls.js +0 -153
- package/examples/jsm/libs/dat.gui.module.js +0 -3575
- package/examples/jsm/libs/glslang.js +0 -78
- package/examples/jsm/libs/glslang.wasm +0 -0
- package/examples/jsm/renderers/nodes/consts/MathConsts.js +0 -7
- package/examples/jsm/renderers/nodes/core/ConstNode.js +0 -39
- package/examples/jsm/renderers/nodes/core/NodeSlot.js +0 -13
- package/examples/jsm/renderers/nodes/core/StructNode.js +0 -80
- package/examples/jsm/renderers/nodes/core/StructVarNode.js +0 -75
- package/examples/jsm/renderers/nodes/functions/EncodingFunctions.js +0 -99
- package/examples/jsm/renderers/nodes/functions/MathFunctions.js +0 -47
- package/examples/jsm/renderers/webgpu/nodes/ShaderLib.js +0 -152
- package/examples/jsm/utils/RoughnessMipmapper.js +0 -300
- package/src/extras/objects/ImmediateRenderObject.js +0 -31
|
@@ -106,39 +106,6 @@
|
|
|
106
106
|
const LOSSY_DCT = 1;
|
|
107
107
|
const RLE = 2;
|
|
108
108
|
const logBase = Math.pow( 2.7182818, 2.2 );
|
|
109
|
-
var tmpDataView = new DataView( new ArrayBuffer( 8 ) );
|
|
110
|
-
|
|
111
|
-
function frexp( value ) {
|
|
112
|
-
|
|
113
|
-
if ( value === 0 ) return [ value, 0 ];
|
|
114
|
-
tmpDataView.setFloat64( 0, value );
|
|
115
|
-
var bits = tmpDataView.getUint32( 0 ) >>> 20 & 0x7FF;
|
|
116
|
-
|
|
117
|
-
if ( bits === 0 ) {
|
|
118
|
-
|
|
119
|
-
// denormal
|
|
120
|
-
tmpDataView.setFloat64( 0, value * Math.pow( 2, 64 ) ); // exp + 64
|
|
121
|
-
|
|
122
|
-
bits = ( tmpDataView.getUint32( 0 ) >>> 20 & 0x7FF ) - 64;
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
var exponent = bits - 1022;
|
|
127
|
-
var mantissa = ldexp( value, - exponent );
|
|
128
|
-
return [ mantissa, exponent ];
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
function ldexp( mantissa, exponent ) {
|
|
133
|
-
|
|
134
|
-
var steps = Math.min( 3, Math.ceil( Math.abs( exponent ) / 1023 ) );
|
|
135
|
-
var result = mantissa;
|
|
136
|
-
|
|
137
|
-
for ( var i = 0; i < steps; i ++ ) result *= Math.pow( 2, Math.floor( ( exponent + i ) / steps ) );
|
|
138
|
-
|
|
139
|
-
return result;
|
|
140
|
-
|
|
141
|
-
}
|
|
142
109
|
|
|
143
110
|
function reverseLutFromBitmap( bitmap, lut ) {
|
|
144
111
|
|
|
@@ -243,7 +210,7 @@
|
|
|
243
210
|
|
|
244
211
|
if ( p.value - inOffset.value > ni ) {
|
|
245
212
|
|
|
246
|
-
throw 'Something wrong with hufUnpackEncTable';
|
|
213
|
+
throw new Error( 'Something wrong with hufUnpackEncTable' );
|
|
247
214
|
|
|
248
215
|
}
|
|
249
216
|
|
|
@@ -254,7 +221,7 @@
|
|
|
254
221
|
|
|
255
222
|
if ( im + zerun > iM + 1 ) {
|
|
256
223
|
|
|
257
|
-
throw 'Something wrong with hufUnpackEncTable';
|
|
224
|
+
throw new Error( 'Something wrong with hufUnpackEncTable' );
|
|
258
225
|
|
|
259
226
|
}
|
|
260
227
|
|
|
@@ -268,7 +235,7 @@
|
|
|
268
235
|
|
|
269
236
|
if ( im + zerun > iM + 1 ) {
|
|
270
237
|
|
|
271
|
-
throw 'Something wrong with hufUnpackEncTable';
|
|
238
|
+
throw new Error( 'Something wrong with hufUnpackEncTable' );
|
|
272
239
|
|
|
273
240
|
}
|
|
274
241
|
|
|
@@ -305,7 +272,7 @@
|
|
|
305
272
|
|
|
306
273
|
if ( c >> l ) {
|
|
307
274
|
|
|
308
|
-
throw 'Invalid table entry';
|
|
275
|
+
throw new Error( 'Invalid table entry' );
|
|
309
276
|
|
|
310
277
|
}
|
|
311
278
|
|
|
@@ -315,7 +282,7 @@
|
|
|
315
282
|
|
|
316
283
|
if ( pl.len ) {
|
|
317
284
|
|
|
318
|
-
throw 'Invalid table entry';
|
|
285
|
+
throw new Error( 'Invalid table entry' );
|
|
319
286
|
|
|
320
287
|
}
|
|
321
288
|
|
|
@@ -350,7 +317,7 @@
|
|
|
350
317
|
|
|
351
318
|
if ( pl.len || pl.p ) {
|
|
352
319
|
|
|
353
|
-
throw 'Invalid table entry';
|
|
320
|
+
throw new Error( 'Invalid table entry' );
|
|
354
321
|
|
|
355
322
|
}
|
|
356
323
|
|
|
@@ -609,7 +576,7 @@
|
|
|
609
576
|
|
|
610
577
|
if ( ! pl.p ) {
|
|
611
578
|
|
|
612
|
-
throw 'hufDecode issues';
|
|
579
|
+
throw new Error( 'hufDecode issues' );
|
|
613
580
|
|
|
614
581
|
}
|
|
615
582
|
|
|
@@ -645,7 +612,7 @@
|
|
|
645
612
|
|
|
646
613
|
if ( j == pl.lit ) {
|
|
647
614
|
|
|
648
|
-
throw 'hufDecode issues';
|
|
615
|
+
throw new Error( 'hufDecode issues' );
|
|
649
616
|
|
|
650
617
|
}
|
|
651
618
|
|
|
@@ -672,7 +639,7 @@
|
|
|
672
639
|
|
|
673
640
|
} else {
|
|
674
641
|
|
|
675
|
-
throw 'hufDecode issues';
|
|
642
|
+
throw new Error( 'hufDecode issues' );
|
|
676
643
|
|
|
677
644
|
}
|
|
678
645
|
|
|
@@ -696,7 +663,7 @@
|
|
|
696
663
|
|
|
697
664
|
if ( im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE ) {
|
|
698
665
|
|
|
699
|
-
throw 'Something wrong with HUF_ENCSIZE';
|
|
666
|
+
throw new Error( 'Something wrong with HUF_ENCSIZE' );
|
|
700
667
|
|
|
701
668
|
}
|
|
702
669
|
|
|
@@ -708,7 +675,7 @@
|
|
|
708
675
|
|
|
709
676
|
if ( nBits > 8 * ( nCompressed - ( inOffset.value - initialInOffset ) ) ) {
|
|
710
677
|
|
|
711
|
-
throw 'Something wrong with hufUncompress';
|
|
678
|
+
throw new Error( 'Something wrong with hufUncompress' );
|
|
712
679
|
|
|
713
680
|
}
|
|
714
681
|
|
|
@@ -1207,8 +1174,7 @@
|
|
|
1207
1174
|
var inOffset = {
|
|
1208
1175
|
value: info.offset.value
|
|
1209
1176
|
};
|
|
1210
|
-
var
|
|
1211
|
-
var outBuffer = new Uint16Array( tmpBufSize );
|
|
1177
|
+
var outBuffer = new Uint16Array( info.width * info.scanlineBlockSize * ( info.channels * info.type ) );
|
|
1212
1178
|
var bitmap = new Uint8Array( BITMAP_SIZE ); // Setup channel info
|
|
1213
1179
|
|
|
1214
1180
|
var outBufferEnd = 0;
|
|
@@ -1232,7 +1198,7 @@
|
|
|
1232
1198
|
|
|
1233
1199
|
if ( maxNonZero >= BITMAP_SIZE ) {
|
|
1234
1200
|
|
|
1235
|
-
throw 'Something is wrong with PIZ_COMPRESSION BITMAP_SIZE';
|
|
1201
|
+
throw new Error( 'Something is wrong with PIZ_COMPRESSION BITMAP_SIZE' );
|
|
1236
1202
|
|
|
1237
1203
|
}
|
|
1238
1204
|
|
|
@@ -1365,7 +1331,7 @@
|
|
|
1365
1331
|
var inOffset = {
|
|
1366
1332
|
value: info.offset.value
|
|
1367
1333
|
};
|
|
1368
|
-
var outBuffer = new Uint8Array( info.width * info.lines * (
|
|
1334
|
+
var outBuffer = new Uint8Array( info.width * info.lines * ( info.channels * info.type * INT16_SIZE ) ); // Read compression header information
|
|
1369
1335
|
|
|
1370
1336
|
var dwaHeader = {
|
|
1371
1337
|
version: parseInt64( inDataView, inOffset ),
|
|
@@ -1380,7 +1346,7 @@
|
|
|
1380
1346
|
totalDcUncompressedCount: parseInt64( inDataView, inOffset ),
|
|
1381
1347
|
acCompression: parseInt64( inDataView, inOffset )
|
|
1382
1348
|
};
|
|
1383
|
-
if ( dwaHeader.version < 2 ) throw 'EXRLoader.parse: ' + EXRHeader.compression + ' version ' + dwaHeader.version + ' is unsupported'; // Read channel ruleset information
|
|
1349
|
+
if ( dwaHeader.version < 2 ) throw new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' version ' + dwaHeader.version + ' is unsupported' ); // Read channel ruleset information
|
|
1384
1350
|
|
|
1385
1351
|
var channelRules = new Array();
|
|
1386
1352
|
var ruleSize = parseUint16( inDataView, inOffset ) - INT16_SIZE;
|
|
@@ -1557,7 +1523,7 @@
|
|
|
1557
1523
|
case LOSSY_DCT: // skip
|
|
1558
1524
|
|
|
1559
1525
|
default:
|
|
1560
|
-
throw 'EXRLoader.parse: unsupported channel compression';
|
|
1526
|
+
throw new Error( 'EXRLoader.parse: unsupported channel compression' );
|
|
1561
1527
|
|
|
1562
1528
|
}
|
|
1563
1529
|
|
|
@@ -1592,14 +1558,6 @@
|
|
|
1592
1558
|
|
|
1593
1559
|
}
|
|
1594
1560
|
|
|
1595
|
-
function parseUlong( dataView, offset ) {
|
|
1596
|
-
|
|
1597
|
-
var uLong = dataView.getUint32( 0, true );
|
|
1598
|
-
offset.value = offset.value + ULONG_SIZE;
|
|
1599
|
-
return uLong;
|
|
1600
|
-
|
|
1601
|
-
}
|
|
1602
|
-
|
|
1603
1561
|
function parseRational( dataView, offset ) {
|
|
1604
1562
|
|
|
1605
1563
|
var x = parseInt32( dataView, offset );
|
|
@@ -1857,283 +1815,272 @@
|
|
|
1857
1815
|
|
|
1858
1816
|
}
|
|
1859
1817
|
|
|
1860
|
-
|
|
1861
|
-
var uInt8Array = new Uint8Array( buffer );
|
|
1862
|
-
var EXRHeader = {};
|
|
1863
|
-
bufferDataView.getUint32( 0, true ); // magic
|
|
1818
|
+
function parseHeader( dataView, buffer, offset ) {
|
|
1864
1819
|
|
|
1865
|
-
|
|
1820
|
+
const EXRHeader = {};
|
|
1866
1821
|
|
|
1867
|
-
|
|
1868
|
-
// start of header
|
|
1822
|
+
if ( dataView.getUint32( 0, true ) != 20000630 ) {
|
|
1869
1823
|
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
}; // start at 8, after magic stuff
|
|
1824
|
+
// magic
|
|
1825
|
+
throw new Error( 'THREE.EXRLoader: provided file doesn\'t appear to be in OpenEXR format.' );
|
|
1873
1826
|
|
|
1874
|
-
|
|
1827
|
+
}
|
|
1875
1828
|
|
|
1876
|
-
|
|
1829
|
+
EXRHeader.version = dataView.getUint8( 4, true );
|
|
1830
|
+
const spec = dataView.getUint8( 5, true ); // fullMask
|
|
1877
1831
|
|
|
1878
|
-
|
|
1832
|
+
EXRHeader.spec = {
|
|
1833
|
+
singleTile: !! ( spec & 1 ),
|
|
1834
|
+
longName: !! ( spec & 2 ),
|
|
1835
|
+
deepFormat: !! ( spec & 4 ),
|
|
1836
|
+
multiPart: !! ( spec & 8 )
|
|
1837
|
+
}; // start of header
|
|
1879
1838
|
|
|
1880
|
-
|
|
1839
|
+
offset.value = 8; // start at 8 - after pre-amble
|
|
1881
1840
|
|
|
1882
|
-
|
|
1841
|
+
var keepReading = true;
|
|
1883
1842
|
|
|
1884
|
-
|
|
1843
|
+
while ( keepReading ) {
|
|
1885
1844
|
|
|
1886
|
-
var
|
|
1887
|
-
var attributeSize = parseUint32( bufferDataView, offset );
|
|
1888
|
-
var attributeValue = parseValue( bufferDataView, buffer, offset, attributeType, attributeSize );
|
|
1845
|
+
var attributeName = parseNullTerminatedString( buffer, offset );
|
|
1889
1846
|
|
|
1890
|
-
if (
|
|
1847
|
+
if ( attributeName == 0 ) {
|
|
1891
1848
|
|
|
1892
|
-
|
|
1849
|
+
keepReading = false;
|
|
1893
1850
|
|
|
1894
1851
|
} else {
|
|
1895
1852
|
|
|
1896
|
-
|
|
1853
|
+
var attributeType = parseNullTerminatedString( buffer, offset );
|
|
1854
|
+
var attributeSize = parseUint32( dataView, offset );
|
|
1855
|
+
var attributeValue = parseValue( dataView, buffer, offset, attributeType, attributeSize );
|
|
1897
1856
|
|
|
1898
|
-
|
|
1857
|
+
if ( attributeValue === undefined ) {
|
|
1899
1858
|
|
|
1900
|
-
|
|
1859
|
+
console.warn( `EXRLoader.parse: skipped unknown header attribute type \'${attributeType}\'.` );
|
|
1901
1860
|
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
var dataWindowHeight = EXRHeader.dataWindow.yMax + 1;
|
|
1906
|
-
var uncompress;
|
|
1907
|
-
var scanlineBlockSize;
|
|
1908
|
-
|
|
1909
|
-
switch ( EXRHeader.compression ) {
|
|
1910
|
-
|
|
1911
|
-
case 'NO_COMPRESSION':
|
|
1912
|
-
scanlineBlockSize = 1;
|
|
1913
|
-
uncompress = uncompressRAW;
|
|
1914
|
-
break;
|
|
1861
|
+
} else {
|
|
1915
1862
|
|
|
1916
|
-
|
|
1917
|
-
scanlineBlockSize = 1;
|
|
1918
|
-
uncompress = uncompressRLE;
|
|
1919
|
-
break;
|
|
1863
|
+
EXRHeader[ attributeName ] = attributeValue;
|
|
1920
1864
|
|
|
1921
|
-
|
|
1922
|
-
scanlineBlockSize = 1;
|
|
1923
|
-
uncompress = uncompressZIP;
|
|
1924
|
-
break;
|
|
1865
|
+
}
|
|
1925
1866
|
|
|
1926
|
-
|
|
1927
|
-
scanlineBlockSize = 16;
|
|
1928
|
-
uncompress = uncompressZIP;
|
|
1929
|
-
break;
|
|
1867
|
+
}
|
|
1930
1868
|
|
|
1931
|
-
|
|
1932
|
-
scanlineBlockSize = 32;
|
|
1933
|
-
uncompress = uncompressPIZ;
|
|
1934
|
-
break;
|
|
1869
|
+
}
|
|
1935
1870
|
|
|
1936
|
-
|
|
1937
|
-
scanlineBlockSize = 16;
|
|
1938
|
-
uncompress = uncompressPXR;
|
|
1939
|
-
break;
|
|
1871
|
+
if ( spec != 0 ) {
|
|
1940
1872
|
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
uncompress = uncompressDWA;
|
|
1944
|
-
break;
|
|
1873
|
+
console.error( 'EXRHeader:', EXRHeader );
|
|
1874
|
+
throw new Error( 'THREE.EXRLoader: provided file is currently unsupported.' );
|
|
1945
1875
|
|
|
1946
|
-
|
|
1947
|
-
scanlineBlockSize = 256;
|
|
1948
|
-
uncompress = uncompressDWA;
|
|
1949
|
-
break;
|
|
1876
|
+
}
|
|
1950
1877
|
|
|
1951
|
-
|
|
1952
|
-
throw 'EXRLoader.parse: ' + EXRHeader.compression + ' is unsupported';
|
|
1878
|
+
return EXRHeader;
|
|
1953
1879
|
|
|
1954
1880
|
}
|
|
1955
1881
|
|
|
1956
|
-
|
|
1957
|
-
var getValue; // mixed pixelType not supported
|
|
1882
|
+
function setupDecoder( EXRHeader, dataView, uInt8Array, offset, outputType ) {
|
|
1958
1883
|
|
|
1959
|
-
|
|
1884
|
+
const EXRDecoder = {
|
|
1885
|
+
size: 0,
|
|
1886
|
+
viewer: dataView,
|
|
1887
|
+
array: uInt8Array,
|
|
1888
|
+
offset: offset,
|
|
1889
|
+
width: EXRHeader.dataWindow.xMax - EXRHeader.dataWindow.xMin + 1,
|
|
1890
|
+
height: EXRHeader.dataWindow.yMax - EXRHeader.dataWindow.yMin + 1,
|
|
1891
|
+
channels: EXRHeader.channels.length,
|
|
1892
|
+
bytesPerLine: null,
|
|
1893
|
+
lines: null,
|
|
1894
|
+
inputSize: null,
|
|
1895
|
+
type: EXRHeader.channels[ 0 ].pixelType,
|
|
1896
|
+
uncompress: null,
|
|
1897
|
+
getter: null,
|
|
1898
|
+
format: null,
|
|
1899
|
+
encoding: null
|
|
1900
|
+
};
|
|
1960
1901
|
|
|
1961
|
-
|
|
1902
|
+
switch ( EXRHeader.compression ) {
|
|
1962
1903
|
|
|
1963
|
-
|
|
1964
|
-
|
|
1904
|
+
case 'NO_COMPRESSION':
|
|
1905
|
+
EXRDecoder.lines = 1;
|
|
1906
|
+
EXRDecoder.uncompress = uncompressRAW;
|
|
1907
|
+
break;
|
|
1965
1908
|
|
|
1966
|
-
case
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
size_t = INT16_SIZE;
|
|
1909
|
+
case 'RLE_COMPRESSION':
|
|
1910
|
+
EXRDecoder.lines = 1;
|
|
1911
|
+
EXRDecoder.uncompress = uncompressRLE;
|
|
1970
1912
|
break;
|
|
1971
1913
|
|
|
1972
|
-
case
|
|
1973
|
-
|
|
1974
|
-
|
|
1914
|
+
case 'ZIPS_COMPRESSION':
|
|
1915
|
+
EXRDecoder.lines = 1;
|
|
1916
|
+
EXRDecoder.uncompress = uncompressZIP;
|
|
1975
1917
|
break;
|
|
1976
1918
|
|
|
1977
|
-
|
|
1919
|
+
case 'ZIP_COMPRESSION':
|
|
1920
|
+
EXRDecoder.lines = 16;
|
|
1921
|
+
EXRDecoder.uncompress = uncompressZIP;
|
|
1922
|
+
break;
|
|
1978
1923
|
|
|
1979
|
-
|
|
1924
|
+
case 'PIZ_COMPRESSION':
|
|
1925
|
+
EXRDecoder.lines = 32;
|
|
1926
|
+
EXRDecoder.uncompress = uncompressPIZ;
|
|
1927
|
+
break;
|
|
1980
1928
|
|
|
1981
|
-
|
|
1982
|
-
|
|
1929
|
+
case 'PXR24_COMPRESSION':
|
|
1930
|
+
EXRDecoder.lines = 16;
|
|
1931
|
+
EXRDecoder.uncompress = uncompressPXR;
|
|
1932
|
+
break;
|
|
1983
1933
|
|
|
1984
|
-
case
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
size_t = FLOAT32_SIZE;
|
|
1934
|
+
case 'DWAA_COMPRESSION':
|
|
1935
|
+
EXRDecoder.lines = 32;
|
|
1936
|
+
EXRDecoder.uncompress = uncompressDWA;
|
|
1988
1937
|
break;
|
|
1989
1938
|
|
|
1990
|
-
case
|
|
1991
|
-
|
|
1992
|
-
|
|
1939
|
+
case 'DWAB_COMPRESSION':
|
|
1940
|
+
EXRDecoder.lines = 256;
|
|
1941
|
+
EXRDecoder.uncompress = uncompressDWA;
|
|
1942
|
+
break;
|
|
1943
|
+
|
|
1944
|
+
default:
|
|
1945
|
+
throw new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' is unsupported' );
|
|
1993
1946
|
|
|
1994
1947
|
}
|
|
1995
1948
|
|
|
1996
|
-
|
|
1949
|
+
EXRDecoder.scanlineBlockSize = EXRDecoder.lines;
|
|
1997
1950
|
|
|
1998
|
-
|
|
1951
|
+
if ( EXRDecoder.type == 1 ) {
|
|
1999
1952
|
|
|
2000
|
-
|
|
1953
|
+
// half
|
|
1954
|
+
switch ( outputType ) {
|
|
2001
1955
|
|
|
2002
|
-
|
|
1956
|
+
case THREE.FloatType:
|
|
1957
|
+
EXRDecoder.getter = parseFloat16;
|
|
1958
|
+
EXRDecoder.inputSize = INT16_SIZE;
|
|
1959
|
+
break;
|
|
2003
1960
|
|
|
2004
|
-
|
|
1961
|
+
case THREE.HalfFloatType:
|
|
1962
|
+
EXRDecoder.getter = parseUint16;
|
|
1963
|
+
EXRDecoder.inputSize = INT16_SIZE;
|
|
1964
|
+
break;
|
|
2005
1965
|
|
|
2006
|
-
|
|
1966
|
+
}
|
|
2007
1967
|
|
|
2008
|
-
|
|
1968
|
+
} else if ( EXRDecoder.type == 2 ) {
|
|
2009
1969
|
|
|
1970
|
+
// float
|
|
1971
|
+
switch ( outputType ) {
|
|
2010
1972
|
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
1973
|
+
case THREE.FloatType:
|
|
1974
|
+
EXRDecoder.getter = parseFloat32;
|
|
1975
|
+
EXRDecoder.inputSize = FLOAT32_SIZE;
|
|
1976
|
+
break;
|
|
2014
1977
|
|
|
2015
|
-
|
|
2016
|
-
|
|
1978
|
+
case THREE.HalfFloatType:
|
|
1979
|
+
EXRDecoder.getter = decodeFloat32;
|
|
1980
|
+
EXRDecoder.inputSize = FLOAT32_SIZE;
|
|
2017
1981
|
|
|
2018
|
-
|
|
1982
|
+
}
|
|
2019
1983
|
|
|
2020
|
-
|
|
2021
|
-
case THREE.FloatType:
|
|
2022
|
-
var byteArray = new Float32Array( size );
|
|
1984
|
+
} else {
|
|
2023
1985
|
|
|
2024
|
-
|
|
1986
|
+
throw new Error( 'EXRLoader.parse: unsupported pixelType ' + EXRDecoder.type + ' for ' + EXRHeader.compression + '.' );
|
|
2025
1987
|
|
|
2026
|
-
|
|
1988
|
+
}
|
|
2027
1989
|
|
|
2028
|
-
|
|
1990
|
+
EXRDecoder.blockCount = ( EXRHeader.dataWindow.yMax + 1 ) / EXRDecoder.scanlineBlockSize;
|
|
2029
1991
|
|
|
2030
|
-
|
|
1992
|
+
for ( var i = 0; i < EXRDecoder.blockCount; i ++ ) parseInt64( dataView, offset ); // scanlineOffset
|
|
1993
|
+
// we should be passed the scanline offset table, ready to start reading pixel data.
|
|
1994
|
+
// RGB images will be converted to RGBA format, preventing software emulation in select devices.
|
|
2031
1995
|
|
|
2032
|
-
case THREE.HalfFloatType:
|
|
2033
|
-
var byteArray = new Uint16Array( size );
|
|
2034
1996
|
|
|
2035
|
-
|
|
1997
|
+
EXRDecoder.outputChannels = EXRDecoder.channels == 3 ? 4 : EXRDecoder.channels;
|
|
1998
|
+
const size = EXRDecoder.width * EXRDecoder.height * EXRDecoder.outputChannels;
|
|
2036
1999
|
|
|
2037
|
-
|
|
2000
|
+
switch ( outputType ) {
|
|
2038
2001
|
|
|
2039
|
-
|
|
2002
|
+
case THREE.FloatType:
|
|
2003
|
+
EXRDecoder.byteArray = new Float32Array( size ); // Fill initially with 1s for the alpha value if the texture is not RGBA, RGB values will be overwritten
|
|
2040
2004
|
|
|
2041
|
-
|
|
2005
|
+
if ( EXRDecoder.channels < EXRDecoder.outputChannels ) EXRDecoder.byteArray.fill( 1, 0, size );
|
|
2006
|
+
break;
|
|
2042
2007
|
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2008
|
+
case THREE.HalfFloatType:
|
|
2009
|
+
EXRDecoder.byteArray = new Uint16Array( size );
|
|
2010
|
+
if ( EXRDecoder.channels < EXRDecoder.outputChannels ) EXRDecoder.byteArray.fill( 0x3C00, 0, size ); // Uint16Array holds half float data, 0x3C00 is 1
|
|
2046
2011
|
|
|
2047
|
-
|
|
2012
|
+
break;
|
|
2048
2013
|
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
B: 2,
|
|
2053
|
-
A: 3
|
|
2054
|
-
};
|
|
2055
|
-
var compressionInfo = {
|
|
2056
|
-
size: 0,
|
|
2057
|
-
width: width,
|
|
2058
|
-
lines: scanlineBlockSize,
|
|
2059
|
-
offset: offset,
|
|
2060
|
-
array: uInt8Array,
|
|
2061
|
-
viewer: bufferDataView,
|
|
2062
|
-
type: pixelType,
|
|
2063
|
-
channels: EXRHeader.channels.length
|
|
2064
|
-
};
|
|
2065
|
-
var line;
|
|
2066
|
-
var size;
|
|
2067
|
-
var viewer;
|
|
2068
|
-
var tmpOffset = {
|
|
2069
|
-
value: 0
|
|
2070
|
-
};
|
|
2014
|
+
default:
|
|
2015
|
+
console.error( 'THREE.EXRLoader: unsupported type: ', outputType );
|
|
2016
|
+
break;
|
|
2071
2017
|
|
|
2072
|
-
|
|
2018
|
+
}
|
|
2073
2019
|
|
|
2074
|
-
|
|
2020
|
+
EXRDecoder.bytesPerLine = EXRDecoder.width * EXRDecoder.inputSize * EXRDecoder.channels;
|
|
2075
2021
|
|
|
2076
|
-
|
|
2022
|
+
if ( EXRDecoder.outputChannels == 4 ) {
|
|
2077
2023
|
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
compressionInfo.size = size;
|
|
2081
|
-
viewer = uncompress( compressionInfo );
|
|
2082
|
-
offset.value += size;
|
|
2024
|
+
EXRDecoder.format = THREE.RGBAFormat;
|
|
2025
|
+
EXRDecoder.encoding = THREE.LinearEncoding;
|
|
2083
2026
|
|
|
2084
|
-
|
|
2027
|
+
} else {
|
|
2085
2028
|
|
|
2086
|
-
|
|
2087
|
-
|
|
2029
|
+
EXRDecoder.format = THREE.RedFormat;
|
|
2030
|
+
EXRDecoder.encoding = THREE.LinearEncoding;
|
|
2088
2031
|
|
|
2089
|
-
|
|
2032
|
+
}
|
|
2090
2033
|
|
|
2091
|
-
|
|
2034
|
+
return EXRDecoder;
|
|
2092
2035
|
|
|
2093
|
-
|
|
2036
|
+
} // start parsing file [START]
|
|
2094
2037
|
|
|
2095
|
-
var idx = line_y * ( EXRHeader.channels.length * width ) + channelID * width + x;
|
|
2096
|
-
tmpOffset.value = idx * size_t;
|
|
2097
|
-
var val = getValue( viewer, tmpOffset );
|
|
2098
|
-
byteArray[ ( height - 1 - true_y ) * ( width * numChannels ) + x * numChannels + cOff ] = val;
|
|
2099
2038
|
|
|
2100
|
-
|
|
2039
|
+
const bufferDataView = new DataView( buffer );
|
|
2040
|
+
const uInt8Array = new Uint8Array( buffer );
|
|
2041
|
+
const offset = {
|
|
2042
|
+
value: 0
|
|
2043
|
+
}; // get header information and validate format.
|
|
2101
2044
|
|
|
2102
|
-
|
|
2045
|
+
const EXRHeader = parseHeader( bufferDataView, buffer, offset ); // get input compression information and prepare decoding.
|
|
2103
2046
|
|
|
2104
|
-
|
|
2047
|
+
const EXRDecoder = setupDecoder( EXRHeader, bufferDataView, uInt8Array, offset, this.type );
|
|
2048
|
+
const tmpOffset = {
|
|
2049
|
+
value: 0
|
|
2050
|
+
};
|
|
2051
|
+
const channelOffsets = {
|
|
2052
|
+
R: 0,
|
|
2053
|
+
G: 1,
|
|
2054
|
+
B: 2,
|
|
2055
|
+
A: 3,
|
|
2056
|
+
Y: 0
|
|
2057
|
+
};
|
|
2105
2058
|
|
|
2106
|
-
|
|
2059
|
+
for ( let scanlineBlockIdx = 0; scanlineBlockIdx < EXRDecoder.height / EXRDecoder.scanlineBlockSize; scanlineBlockIdx ++ ) {
|
|
2107
2060
|
|
|
2108
|
-
|
|
2061
|
+
const line = parseUint32( bufferDataView, offset ); // line_no
|
|
2109
2062
|
|
|
2110
|
-
|
|
2111
|
-
const size = byteArray.length;
|
|
2112
|
-
const RGBEArray = new Uint8Array( size );
|
|
2063
|
+
EXRDecoder.size = parseUint32( bufferDataView, offset ); // data_len
|
|
2113
2064
|
|
|
2114
|
-
|
|
2065
|
+
EXRDecoder.lines = line + EXRDecoder.scanlineBlockSize > EXRDecoder.height ? EXRDecoder.height - line : EXRDecoder.scanlineBlockSize;
|
|
2066
|
+
const isCompressed = EXRDecoder.size < EXRDecoder.lines * EXRDecoder.bytesPerLine;
|
|
2067
|
+
const viewer = isCompressed ? EXRDecoder.uncompress( EXRDecoder ) : uncompressRAW( EXRDecoder );
|
|
2068
|
+
offset.value += EXRDecoder.size;
|
|
2115
2069
|
|
|
2116
|
-
|
|
2070
|
+
for ( let line_y = 0; line_y < EXRDecoder.scanlineBlockSize; line_y ++ ) {
|
|
2117
2071
|
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
const green = byteArray[ i + 1 ];
|
|
2121
|
-
const blue = byteArray[ i + 2 ];
|
|
2122
|
-
v = red > green ? red : green;
|
|
2123
|
-
v = blue > v ? blue : v;
|
|
2072
|
+
const true_y = line_y + scanlineBlockIdx * EXRDecoder.scanlineBlockSize;
|
|
2073
|
+
if ( true_y >= EXRDecoder.height ) break;
|
|
2124
2074
|
|
|
2125
|
-
|
|
2075
|
+
for ( let channelID = 0; channelID < EXRDecoder.channels; channelID ++ ) {
|
|
2126
2076
|
|
|
2127
|
-
|
|
2077
|
+
const cOff = channelOffsets[ EXRHeader.channels[ channelID ].name ];
|
|
2128
2078
|
|
|
2129
|
-
|
|
2079
|
+
for ( let x = 0; x < EXRDecoder.width; x ++ ) {
|
|
2130
2080
|
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
RGBEArray[ i + 1 ] = green * v;
|
|
2135
|
-
RGBEArray[ i + 2 ] = blue * v;
|
|
2136
|
-
RGBEArray[ i + 3 ] = res[ 1 ] + 128;
|
|
2081
|
+
tmpOffset.value = ( line_y * ( EXRDecoder.channels * EXRDecoder.width ) + channelID * EXRDecoder.width + x ) * EXRDecoder.inputSize;
|
|
2082
|
+
const outIndex = ( EXRDecoder.height - 1 - true_y ) * ( EXRDecoder.width * EXRDecoder.outputChannels ) + x * EXRDecoder.outputChannels + cOff;
|
|
2083
|
+
EXRDecoder.byteArray[ outIndex ] = EXRDecoder.getter( viewer, tmpOffset );
|
|
2137
2084
|
|
|
2138
2085
|
}
|
|
2139
2086
|
|
|
@@ -2141,17 +2088,15 @@
|
|
|
2141
2088
|
|
|
2142
2089
|
}
|
|
2143
2090
|
|
|
2144
|
-
byteArray = RGBEArray;
|
|
2145
|
-
|
|
2146
2091
|
}
|
|
2147
2092
|
|
|
2148
|
-
const format = this.type === THREE.UnsignedByteType ? THREE.RGBEFormat : numChannels === 4 ? THREE.RGBAFormat : THREE.RGBFormat;
|
|
2149
2093
|
return {
|
|
2150
2094
|
header: EXRHeader,
|
|
2151
|
-
width: width,
|
|
2152
|
-
height: height,
|
|
2153
|
-
data: byteArray,
|
|
2154
|
-
format: format,
|
|
2095
|
+
width: EXRDecoder.width,
|
|
2096
|
+
height: EXRDecoder.height,
|
|
2097
|
+
data: EXRDecoder.byteArray,
|
|
2098
|
+
format: EXRDecoder.format,
|
|
2099
|
+
encoding: EXRDecoder.encoding,
|
|
2155
2100
|
type: this.type
|
|
2156
2101
|
};
|
|
2157
2102
|
|
|
@@ -2168,27 +2113,11 @@
|
|
|
2168
2113
|
|
|
2169
2114
|
function onLoadCallback( texture, texData ) {
|
|
2170
2115
|
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
texture.magFilter = THREE.NearestFilter;
|
|
2177
|
-
texture.generateMipmaps = false;
|
|
2178
|
-
texture.flipY = false;
|
|
2179
|
-
break;
|
|
2180
|
-
|
|
2181
|
-
case THREE.FloatType:
|
|
2182
|
-
case THREE.HalfFloatType:
|
|
2183
|
-
texture.encoding = THREE.LinearEncoding;
|
|
2184
|
-
texture.minFilter = THREE.LinearFilter;
|
|
2185
|
-
texture.magFilter = THREE.LinearFilter;
|
|
2186
|
-
texture.generateMipmaps = false;
|
|
2187
|
-
texture.flipY = false;
|
|
2188
|
-
break;
|
|
2189
|
-
|
|
2190
|
-
}
|
|
2191
|
-
|
|
2116
|
+
texture.encoding = texData.encoding;
|
|
2117
|
+
texture.minFilter = THREE.LinearFilter;
|
|
2118
|
+
texture.magFilter = THREE.LinearFilter;
|
|
2119
|
+
texture.generateMipmaps = false;
|
|
2120
|
+
texture.flipY = false;
|
|
2192
2121
|
if ( onLoad ) onLoad( texture, texData );
|
|
2193
2122
|
|
|
2194
2123
|
}
|