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
|
@@ -5,12 +5,8 @@ import {
|
|
|
5
5
|
HalfFloatType,
|
|
6
6
|
LinearEncoding,
|
|
7
7
|
LinearFilter,
|
|
8
|
-
|
|
9
|
-
RGBAFormat
|
|
10
|
-
RGBEEncoding,
|
|
11
|
-
RGBEFormat,
|
|
12
|
-
RGBFormat,
|
|
13
|
-
UnsignedByteType
|
|
8
|
+
RedFormat,
|
|
9
|
+
RGBAFormat
|
|
14
10
|
} from 'three';
|
|
15
11
|
import * as fflate from '../libs/fflate.module.js';
|
|
16
12
|
|
|
@@ -132,41 +128,6 @@ class EXRLoader extends DataTextureLoader {
|
|
|
132
128
|
|
|
133
129
|
const logBase = Math.pow( 2.7182818, 2.2 );
|
|
134
130
|
|
|
135
|
-
var tmpDataView = new DataView( new ArrayBuffer( 8 ) );
|
|
136
|
-
|
|
137
|
-
function frexp( value ) {
|
|
138
|
-
|
|
139
|
-
if ( value === 0 ) return [ value, 0 ];
|
|
140
|
-
|
|
141
|
-
tmpDataView.setFloat64( 0, value );
|
|
142
|
-
|
|
143
|
-
var bits = ( tmpDataView.getUint32( 0 ) >>> 20 ) & 0x7FF;
|
|
144
|
-
if ( bits === 0 ) { // denormal
|
|
145
|
-
|
|
146
|
-
tmpDataView.setFloat64( 0, value * Math.pow( 2, 64 ) ); // exp + 64
|
|
147
|
-
bits = ( ( tmpDataView.getUint32( 0 ) >>> 20 ) & 0x7FF ) - 64;
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
var exponent = bits - 1022;
|
|
152
|
-
var mantissa = ldexp( value, - exponent );
|
|
153
|
-
|
|
154
|
-
return [ mantissa, exponent ];
|
|
155
|
-
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
function ldexp( mantissa, exponent ) {
|
|
159
|
-
|
|
160
|
-
var steps = Math.min( 3, Math.ceil( Math.abs( exponent ) / 1023 ) );
|
|
161
|
-
var result = mantissa;
|
|
162
|
-
|
|
163
|
-
for ( var i = 0; i < steps; i ++ )
|
|
164
|
-
result *= Math.pow( 2, Math.floor( ( exponent + i ) / steps ) );
|
|
165
|
-
|
|
166
|
-
return result;
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
-
|
|
170
131
|
function reverseLutFromBitmap( bitmap, lut ) {
|
|
171
132
|
|
|
172
133
|
var k = 0;
|
|
@@ -269,7 +230,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
269
230
|
|
|
270
231
|
if ( p.value - inOffset.value > ni ) {
|
|
271
232
|
|
|
272
|
-
throw 'Something wrong with hufUnpackEncTable';
|
|
233
|
+
throw new Error( 'Something wrong with hufUnpackEncTable' );
|
|
273
234
|
|
|
274
235
|
}
|
|
275
236
|
|
|
@@ -281,7 +242,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
281
242
|
|
|
282
243
|
if ( im + zerun > iM + 1 ) {
|
|
283
244
|
|
|
284
|
-
throw 'Something wrong with hufUnpackEncTable';
|
|
245
|
+
throw new Error( 'Something wrong with hufUnpackEncTable' );
|
|
285
246
|
|
|
286
247
|
}
|
|
287
248
|
|
|
@@ -295,7 +256,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
295
256
|
|
|
296
257
|
if ( im + zerun > iM + 1 ) {
|
|
297
258
|
|
|
298
|
-
throw 'Something wrong with hufUnpackEncTable';
|
|
259
|
+
throw new Error( 'Something wrong with hufUnpackEncTable' );
|
|
299
260
|
|
|
300
261
|
}
|
|
301
262
|
|
|
@@ -332,7 +293,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
332
293
|
|
|
333
294
|
if ( c >> l ) {
|
|
334
295
|
|
|
335
|
-
throw 'Invalid table entry';
|
|
296
|
+
throw new Error( 'Invalid table entry' );
|
|
336
297
|
|
|
337
298
|
}
|
|
338
299
|
|
|
@@ -342,7 +303,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
342
303
|
|
|
343
304
|
if ( pl.len ) {
|
|
344
305
|
|
|
345
|
-
throw 'Invalid table entry';
|
|
306
|
+
throw new Error( 'Invalid table entry' );
|
|
346
307
|
|
|
347
308
|
}
|
|
348
309
|
|
|
@@ -377,7 +338,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
377
338
|
|
|
378
339
|
if ( pl.len || pl.p ) {
|
|
379
340
|
|
|
380
|
-
throw 'Invalid table entry';
|
|
341
|
+
throw new Error( 'Invalid table entry' );
|
|
381
342
|
|
|
382
343
|
}
|
|
383
344
|
|
|
@@ -665,7 +626,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
665
626
|
|
|
666
627
|
if ( ! pl.p ) {
|
|
667
628
|
|
|
668
|
-
throw 'hufDecode issues';
|
|
629
|
+
throw new Error( 'hufDecode issues' );
|
|
669
630
|
|
|
670
631
|
}
|
|
671
632
|
|
|
@@ -705,7 +666,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
705
666
|
|
|
706
667
|
if ( j == pl.lit ) {
|
|
707
668
|
|
|
708
|
-
throw 'hufDecode issues';
|
|
669
|
+
throw new Error( 'hufDecode issues' );
|
|
709
670
|
|
|
710
671
|
}
|
|
711
672
|
|
|
@@ -735,7 +696,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
735
696
|
|
|
736
697
|
} else {
|
|
737
698
|
|
|
738
|
-
throw 'hufDecode issues';
|
|
699
|
+
throw new Error( 'hufDecode issues' );
|
|
739
700
|
|
|
740
701
|
}
|
|
741
702
|
|
|
@@ -761,7 +722,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
761
722
|
|
|
762
723
|
if ( im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE ) {
|
|
763
724
|
|
|
764
|
-
throw 'Something wrong with HUF_ENCSIZE';
|
|
725
|
+
throw new Error( 'Something wrong with HUF_ENCSIZE' );
|
|
765
726
|
|
|
766
727
|
}
|
|
767
728
|
|
|
@@ -776,7 +737,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
776
737
|
|
|
777
738
|
if ( nBits > 8 * ( nCompressed - ( inOffset.value - initialInOffset ) ) ) {
|
|
778
739
|
|
|
779
|
-
throw 'Something wrong with hufUncompress';
|
|
740
|
+
throw new Error( 'Something wrong with hufUncompress' );
|
|
780
741
|
|
|
781
742
|
}
|
|
782
743
|
|
|
@@ -1312,8 +1273,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1312
1273
|
var inDataView = info.viewer;
|
|
1313
1274
|
var inOffset = { value: info.offset.value };
|
|
1314
1275
|
|
|
1315
|
-
var
|
|
1316
|
-
var outBuffer = new Uint16Array( tmpBufSize );
|
|
1276
|
+
var outBuffer = new Uint16Array( info.width * info.scanlineBlockSize * ( info.channels * info.type ) );
|
|
1317
1277
|
var bitmap = new Uint8Array( BITMAP_SIZE );
|
|
1318
1278
|
|
|
1319
1279
|
// Setup channel info
|
|
@@ -1333,12 +1293,13 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1333
1293
|
}
|
|
1334
1294
|
|
|
1335
1295
|
// Read range compression data
|
|
1296
|
+
|
|
1336
1297
|
var minNonZero = parseUint16( inDataView, inOffset );
|
|
1337
1298
|
var maxNonZero = parseUint16( inDataView, inOffset );
|
|
1338
1299
|
|
|
1339
1300
|
if ( maxNonZero >= BITMAP_SIZE ) {
|
|
1340
1301
|
|
|
1341
|
-
throw 'Something is wrong with PIZ_COMPRESSION BITMAP_SIZE';
|
|
1302
|
+
throw new Error( 'Something is wrong with PIZ_COMPRESSION BITMAP_SIZE' );
|
|
1342
1303
|
|
|
1343
1304
|
}
|
|
1344
1305
|
|
|
@@ -1489,7 +1450,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1489
1450
|
|
|
1490
1451
|
var inDataView = info.viewer;
|
|
1491
1452
|
var inOffset = { value: info.offset.value };
|
|
1492
|
-
var outBuffer = new Uint8Array( info.width * info.lines * (
|
|
1453
|
+
var outBuffer = new Uint8Array( info.width * info.lines * ( info.channels * info.type * INT16_SIZE ) );
|
|
1493
1454
|
|
|
1494
1455
|
// Read compression header information
|
|
1495
1456
|
var dwaHeader = {
|
|
@@ -1509,7 +1470,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1509
1470
|
};
|
|
1510
1471
|
|
|
1511
1472
|
if ( dwaHeader.version < 2 )
|
|
1512
|
-
throw 'EXRLoader.parse: ' + EXRHeader.compression + ' version ' + dwaHeader.version + ' is unsupported';
|
|
1473
|
+
throw new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' version ' + dwaHeader.version + ' is unsupported' );
|
|
1513
1474
|
|
|
1514
1475
|
// Read channel ruleset information
|
|
1515
1476
|
var channelRules = new Array();
|
|
@@ -1694,7 +1655,7 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1694
1655
|
case LOSSY_DCT: // skip
|
|
1695
1656
|
|
|
1696
1657
|
default:
|
|
1697
|
-
throw 'EXRLoader.parse: unsupported channel compression';
|
|
1658
|
+
throw new Error( 'EXRLoader.parse: unsupported channel compression' );
|
|
1698
1659
|
|
|
1699
1660
|
}
|
|
1700
1661
|
|
|
@@ -1737,16 +1698,6 @@ class EXRLoader extends DataTextureLoader {
|
|
|
1737
1698
|
|
|
1738
1699
|
}
|
|
1739
1700
|
|
|
1740
|
-
function parseUlong( dataView, offset ) {
|
|
1741
|
-
|
|
1742
|
-
var uLong = dataView.getUint32( 0, true );
|
|
1743
|
-
|
|
1744
|
-
offset.value = offset.value + ULONG_SIZE;
|
|
1745
|
-
|
|
1746
|
-
return uLong;
|
|
1747
|
-
|
|
1748
|
-
}
|
|
1749
|
-
|
|
1750
1701
|
function parseRational( dataView, offset ) {
|
|
1751
1702
|
|
|
1752
1703
|
var x = parseInt32( dataView, offset );
|
|
@@ -2037,311 +1988,274 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2037
1988
|
|
|
2038
1989
|
}
|
|
2039
1990
|
|
|
2040
|
-
|
|
2041
|
-
var uInt8Array = new Uint8Array( buffer );
|
|
2042
|
-
|
|
2043
|
-
var EXRHeader = {};
|
|
2044
|
-
|
|
2045
|
-
bufferDataView.getUint32( 0, true ); // magic
|
|
2046
|
-
bufferDataView.getUint8( 4, true ); // versionByteZero
|
|
2047
|
-
bufferDataView.getUint8( 5, true ); // fullMask
|
|
2048
|
-
|
|
2049
|
-
// start of header
|
|
1991
|
+
function parseHeader( dataView, buffer, offset ) {
|
|
2050
1992
|
|
|
2051
|
-
|
|
1993
|
+
const EXRHeader = {};
|
|
2052
1994
|
|
|
2053
|
-
|
|
1995
|
+
if ( dataView.getUint32( 0, true ) != 20000630 ) { // magic
|
|
2054
1996
|
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
var attributeName = parseNullTerminatedString( buffer, offset );
|
|
2058
|
-
|
|
2059
|
-
if ( attributeName == 0 ) {
|
|
2060
|
-
|
|
2061
|
-
keepReading = false;
|
|
2062
|
-
|
|
2063
|
-
} else {
|
|
2064
|
-
|
|
2065
|
-
var attributeType = parseNullTerminatedString( buffer, offset );
|
|
2066
|
-
var attributeSize = parseUint32( bufferDataView, offset );
|
|
2067
|
-
var attributeValue = parseValue( bufferDataView, buffer, offset, attributeType, attributeSize );
|
|
2068
|
-
|
|
2069
|
-
if ( attributeValue === undefined ) {
|
|
2070
|
-
|
|
2071
|
-
console.warn( `EXRLoader.parse: skipped unknown header attribute type \'${ attributeType }\'.` );
|
|
2072
|
-
|
|
2073
|
-
} else {
|
|
2074
|
-
|
|
2075
|
-
EXRHeader[ attributeName ] = attributeValue;
|
|
2076
|
-
|
|
2077
|
-
}
|
|
1997
|
+
throw new Error( 'THREE.EXRLoader: provided file doesn\'t appear to be in OpenEXR format.' );
|
|
2078
1998
|
|
|
2079
1999
|
}
|
|
2080
2000
|
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
// offsets
|
|
2084
|
-
var dataWindowHeight = EXRHeader.dataWindow.yMax + 1;
|
|
2001
|
+
EXRHeader.version = dataView.getUint8( 4, true );
|
|
2085
2002
|
|
|
2086
|
-
|
|
2087
|
-
var scanlineBlockSize;
|
|
2003
|
+
const spec = dataView.getUint8( 5, true ); // fullMask
|
|
2088
2004
|
|
|
2089
|
-
|
|
2005
|
+
EXRHeader.spec = {
|
|
2006
|
+
singleTile: !! ( spec & 1 ),
|
|
2007
|
+
longName: !! ( spec & 2 ),
|
|
2008
|
+
deepFormat: !! ( spec & 4 ),
|
|
2009
|
+
multiPart: !! ( spec & 8 ),
|
|
2010
|
+
};
|
|
2090
2011
|
|
|
2091
|
-
|
|
2012
|
+
// start of header
|
|
2092
2013
|
|
|
2093
|
-
|
|
2094
|
-
uncompress = uncompressRAW;
|
|
2095
|
-
break;
|
|
2014
|
+
offset.value = 8; // start at 8 - after pre-amble
|
|
2096
2015
|
|
|
2097
|
-
|
|
2016
|
+
var keepReading = true;
|
|
2098
2017
|
|
|
2099
|
-
|
|
2100
|
-
uncompress = uncompressRLE;
|
|
2101
|
-
break;
|
|
2018
|
+
while ( keepReading ) {
|
|
2102
2019
|
|
|
2103
|
-
|
|
2020
|
+
var attributeName = parseNullTerminatedString( buffer, offset );
|
|
2104
2021
|
|
|
2105
|
-
|
|
2106
|
-
uncompress = uncompressZIP;
|
|
2107
|
-
break;
|
|
2022
|
+
if ( attributeName == 0 ) {
|
|
2108
2023
|
|
|
2109
|
-
|
|
2024
|
+
keepReading = false;
|
|
2110
2025
|
|
|
2111
|
-
|
|
2112
|
-
uncompress = uncompressZIP;
|
|
2113
|
-
break;
|
|
2026
|
+
} else {
|
|
2114
2027
|
|
|
2115
|
-
|
|
2028
|
+
var attributeType = parseNullTerminatedString( buffer, offset );
|
|
2029
|
+
var attributeSize = parseUint32( dataView, offset );
|
|
2030
|
+
var attributeValue = parseValue( dataView, buffer, offset, attributeType, attributeSize );
|
|
2116
2031
|
|
|
2117
|
-
|
|
2118
|
-
uncompress = uncompressPIZ;
|
|
2119
|
-
break;
|
|
2032
|
+
if ( attributeValue === undefined ) {
|
|
2120
2033
|
|
|
2121
|
-
|
|
2034
|
+
console.warn( `EXRLoader.parse: skipped unknown header attribute type \'${attributeType}\'.` );
|
|
2122
2035
|
|
|
2123
|
-
|
|
2124
|
-
uncompress = uncompressPXR;
|
|
2125
|
-
break;
|
|
2036
|
+
} else {
|
|
2126
2037
|
|
|
2127
|
-
|
|
2038
|
+
EXRHeader[ attributeName ] = attributeValue;
|
|
2128
2039
|
|
|
2129
|
-
|
|
2130
|
-
uncompress = uncompressDWA;
|
|
2131
|
-
break;
|
|
2040
|
+
}
|
|
2132
2041
|
|
|
2133
|
-
|
|
2042
|
+
}
|
|
2134
2043
|
|
|
2135
|
-
|
|
2136
|
-
uncompress = uncompressDWA;
|
|
2137
|
-
break;
|
|
2044
|
+
}
|
|
2138
2045
|
|
|
2139
|
-
|
|
2046
|
+
if ( spec != 0 ) {
|
|
2140
2047
|
|
|
2141
|
-
|
|
2048
|
+
console.error( 'EXRHeader:', EXRHeader );
|
|
2049
|
+
throw new Error( 'THREE.EXRLoader: provided file is currently unsupported.' );
|
|
2142
2050
|
|
|
2143
|
-
|
|
2051
|
+
}
|
|
2144
2052
|
|
|
2145
|
-
|
|
2146
|
-
var getValue;
|
|
2053
|
+
return EXRHeader;
|
|
2147
2054
|
|
|
2148
|
-
|
|
2149
|
-
var pixelType = EXRHeader.channels[ 0 ].pixelType;
|
|
2055
|
+
}
|
|
2150
2056
|
|
|
2151
|
-
|
|
2057
|
+
function setupDecoder( EXRHeader, dataView, uInt8Array, offset, outputType ) {
|
|
2152
2058
|
|
|
2153
|
-
|
|
2059
|
+
const EXRDecoder = {
|
|
2060
|
+
size: 0,
|
|
2061
|
+
viewer: dataView,
|
|
2062
|
+
array: uInt8Array,
|
|
2063
|
+
offset: offset,
|
|
2064
|
+
width: EXRHeader.dataWindow.xMax - EXRHeader.dataWindow.xMin + 1,
|
|
2065
|
+
height: EXRHeader.dataWindow.yMax - EXRHeader.dataWindow.yMin + 1,
|
|
2066
|
+
channels: EXRHeader.channels.length,
|
|
2067
|
+
bytesPerLine: null,
|
|
2068
|
+
lines: null,
|
|
2069
|
+
inputSize: null,
|
|
2070
|
+
type: EXRHeader.channels[ 0 ].pixelType,
|
|
2071
|
+
uncompress: null,
|
|
2072
|
+
getter: null,
|
|
2073
|
+
format: null,
|
|
2074
|
+
encoding: null,
|
|
2075
|
+
};
|
|
2154
2076
|
|
|
2155
|
-
|
|
2156
|
-
case FloatType:
|
|
2077
|
+
switch ( EXRHeader.compression ) {
|
|
2157
2078
|
|
|
2158
|
-
|
|
2159
|
-
|
|
2079
|
+
case 'NO_COMPRESSION':
|
|
2080
|
+
EXRDecoder.lines = 1;
|
|
2081
|
+
EXRDecoder.uncompress = uncompressRAW;
|
|
2160
2082
|
break;
|
|
2161
2083
|
|
|
2162
|
-
case
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
size_t = INT16_SIZE;
|
|
2084
|
+
case 'RLE_COMPRESSION':
|
|
2085
|
+
EXRDecoder.lines = 1;
|
|
2086
|
+
EXRDecoder.uncompress = uncompressRLE;
|
|
2166
2087
|
break;
|
|
2167
2088
|
|
|
2168
|
-
|
|
2089
|
+
case 'ZIPS_COMPRESSION':
|
|
2090
|
+
EXRDecoder.lines = 1;
|
|
2091
|
+
EXRDecoder.uncompress = uncompressZIP;
|
|
2092
|
+
break;
|
|
2169
2093
|
|
|
2170
|
-
|
|
2094
|
+
case 'ZIP_COMPRESSION':
|
|
2095
|
+
EXRDecoder.lines = 16;
|
|
2096
|
+
EXRDecoder.uncompress = uncompressZIP;
|
|
2097
|
+
break;
|
|
2171
2098
|
|
|
2172
|
-
|
|
2099
|
+
case 'PIZ_COMPRESSION':
|
|
2100
|
+
EXRDecoder.lines = 32;
|
|
2101
|
+
EXRDecoder.uncompress = uncompressPIZ;
|
|
2102
|
+
break;
|
|
2173
2103
|
|
|
2174
|
-
case
|
|
2175
|
-
|
|
2104
|
+
case 'PXR24_COMPRESSION':
|
|
2105
|
+
EXRDecoder.lines = 16;
|
|
2106
|
+
EXRDecoder.uncompress = uncompressPXR;
|
|
2107
|
+
break;
|
|
2176
2108
|
|
|
2177
|
-
|
|
2178
|
-
|
|
2109
|
+
case 'DWAA_COMPRESSION':
|
|
2110
|
+
EXRDecoder.lines = 32;
|
|
2111
|
+
EXRDecoder.uncompress = uncompressDWA;
|
|
2179
2112
|
break;
|
|
2180
2113
|
|
|
2181
|
-
case
|
|
2114
|
+
case 'DWAB_COMPRESSION':
|
|
2115
|
+
EXRDecoder.lines = 256;
|
|
2116
|
+
EXRDecoder.uncompress = uncompressDWA;
|
|
2117
|
+
break;
|
|
2182
2118
|
|
|
2183
|
-
|
|
2184
|
-
|
|
2119
|
+
default:
|
|
2120
|
+
throw new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' is unsupported' );
|
|
2185
2121
|
|
|
2186
2122
|
}
|
|
2187
2123
|
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
throw 'EXRLoader.parse: unsupported pixelType ' + pixelType + ' for ' + EXRHeader.compression + '.';
|
|
2191
|
-
|
|
2192
|
-
}
|
|
2193
|
-
|
|
2194
|
-
var numBlocks = dataWindowHeight / scanlineBlockSize;
|
|
2195
|
-
|
|
2196
|
-
for ( var i = 0; i < numBlocks; i ++ ) {
|
|
2197
|
-
|
|
2198
|
-
parseUlong( bufferDataView, offset ); // scanlineOffset
|
|
2124
|
+
EXRDecoder.scanlineBlockSize = EXRDecoder.lines;
|
|
2199
2125
|
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
// we should be passed the scanline offset table, start reading pixel data
|
|
2203
|
-
|
|
2204
|
-
var width = EXRHeader.dataWindow.xMax - EXRHeader.dataWindow.xMin + 1;
|
|
2205
|
-
var height = EXRHeader.dataWindow.yMax - EXRHeader.dataWindow.yMin + 1;
|
|
2206
|
-
// Firefox only supports RGBA (half) float textures
|
|
2207
|
-
// var numChannels = EXRHeader.channels.length;
|
|
2208
|
-
var numChannels = 4;
|
|
2209
|
-
var size = width * height * numChannels;
|
|
2210
|
-
|
|
2211
|
-
// Fill initially with 1s for the alpha value if the texture is not RGBA, RGB values will be overwritten
|
|
2212
|
-
switch ( this.type ) {
|
|
2126
|
+
if ( EXRDecoder.type == 1 ) {
|
|
2213
2127
|
|
|
2214
|
-
|
|
2215
|
-
|
|
2128
|
+
// half
|
|
2129
|
+
switch ( outputType ) {
|
|
2216
2130
|
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2131
|
+
case FloatType:
|
|
2132
|
+
EXRDecoder.getter = parseFloat16;
|
|
2133
|
+
EXRDecoder.inputSize = INT16_SIZE;
|
|
2134
|
+
break;
|
|
2220
2135
|
|
|
2221
|
-
|
|
2136
|
+
case HalfFloatType:
|
|
2137
|
+
EXRDecoder.getter = parseUint16;
|
|
2138
|
+
EXRDecoder.inputSize = INT16_SIZE;
|
|
2139
|
+
break;
|
|
2222
2140
|
|
|
2223
2141
|
}
|
|
2224
2142
|
|
|
2225
|
-
|
|
2143
|
+
} else if ( EXRDecoder.type == 2 ) {
|
|
2226
2144
|
|
|
2227
|
-
|
|
2145
|
+
// float
|
|
2146
|
+
switch ( outputType ) {
|
|
2228
2147
|
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2148
|
+
case FloatType:
|
|
2149
|
+
EXRDecoder.getter = parseFloat32;
|
|
2150
|
+
EXRDecoder.inputSize = FLOAT32_SIZE;
|
|
2151
|
+
break;
|
|
2232
2152
|
|
|
2233
|
-
|
|
2153
|
+
case HalfFloatType:
|
|
2154
|
+
EXRDecoder.getter = decodeFloat32;
|
|
2155
|
+
EXRDecoder.inputSize = FLOAT32_SIZE;
|
|
2234
2156
|
|
|
2235
2157
|
}
|
|
2236
2158
|
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
default:
|
|
2240
|
-
|
|
2241
|
-
console.error( 'THREE.EXRLoader: unsupported type: ', this.type );
|
|
2242
|
-
break;
|
|
2159
|
+
} else {
|
|
2243
2160
|
|
|
2244
|
-
|
|
2161
|
+
throw new Error( 'EXRLoader.parse: unsupported pixelType ' + EXRDecoder.type + ' for ' + EXRHeader.compression + '.' );
|
|
2245
2162
|
|
|
2246
|
-
|
|
2247
|
-
R: 0,
|
|
2248
|
-
G: 1,
|
|
2249
|
-
B: 2,
|
|
2250
|
-
A: 3
|
|
2251
|
-
};
|
|
2163
|
+
}
|
|
2252
2164
|
|
|
2253
|
-
|
|
2165
|
+
EXRDecoder.blockCount = ( EXRHeader.dataWindow.yMax + 1 ) / EXRDecoder.scanlineBlockSize;
|
|
2254
2166
|
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
lines: scanlineBlockSize,
|
|
2167
|
+
for ( var i = 0; i < EXRDecoder.blockCount; i ++ )
|
|
2168
|
+
parseInt64( dataView, offset ); // scanlineOffset
|
|
2258
2169
|
|
|
2259
|
-
offset
|
|
2260
|
-
array: uInt8Array,
|
|
2261
|
-
viewer: bufferDataView,
|
|
2170
|
+
// we should be passed the scanline offset table, ready to start reading pixel data.
|
|
2262
2171
|
|
|
2263
|
-
|
|
2264
|
-
channels:
|
|
2172
|
+
// RGB images will be converted to RGBA format, preventing software emulation in select devices.
|
|
2173
|
+
EXRDecoder.outputChannels = ( ( EXRDecoder.channels == 3 ) ? 4 : EXRDecoder.channels );
|
|
2174
|
+
const size = EXRDecoder.width * EXRDecoder.height * EXRDecoder.outputChannels;
|
|
2265
2175
|
|
|
2266
|
-
|
|
2176
|
+
switch ( outputType ) {
|
|
2267
2177
|
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
var viewer;
|
|
2271
|
-
var tmpOffset = { value: 0 };
|
|
2178
|
+
case FloatType:
|
|
2179
|
+
EXRDecoder.byteArray = new Float32Array( size );
|
|
2272
2180
|
|
|
2273
|
-
|
|
2181
|
+
// Fill initially with 1s for the alpha value if the texture is not RGBA, RGB values will be overwritten
|
|
2182
|
+
if ( EXRDecoder.channels < EXRDecoder.outputChannels )
|
|
2183
|
+
EXRDecoder.byteArray.fill( 1, 0, size );
|
|
2274
2184
|
|
|
2275
|
-
|
|
2276
|
-
size = parseUint32( bufferDataView, offset ); // data_len
|
|
2185
|
+
break;
|
|
2277
2186
|
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
compressionInfo.size = size;
|
|
2187
|
+
case HalfFloatType:
|
|
2188
|
+
EXRDecoder.byteArray = new Uint16Array( size );
|
|
2281
2189
|
|
|
2282
|
-
|
|
2190
|
+
if ( EXRDecoder.channels < EXRDecoder.outputChannels )
|
|
2191
|
+
EXRDecoder.byteArray.fill( 0x3C00, 0, size ); // Uint16Array holds half float data, 0x3C00 is 1
|
|
2283
2192
|
|
|
2284
|
-
|
|
2193
|
+
break;
|
|
2285
2194
|
|
|
2286
|
-
|
|
2195
|
+
default:
|
|
2196
|
+
console.error( 'THREE.EXRLoader: unsupported type: ', outputType );
|
|
2197
|
+
break;
|
|
2287
2198
|
|
|
2288
|
-
|
|
2199
|
+
}
|
|
2289
2200
|
|
|
2290
|
-
|
|
2201
|
+
EXRDecoder.bytesPerLine = EXRDecoder.width * EXRDecoder.inputSize * EXRDecoder.channels;
|
|
2291
2202
|
|
|
2292
|
-
|
|
2203
|
+
if ( EXRDecoder.outputChannels == 4 ) {
|
|
2293
2204
|
|
|
2294
|
-
|
|
2205
|
+
EXRDecoder.format = RGBAFormat;
|
|
2206
|
+
EXRDecoder.encoding = LinearEncoding;
|
|
2295
2207
|
|
|
2296
|
-
|
|
2208
|
+
} else {
|
|
2297
2209
|
|
|
2298
|
-
|
|
2299
|
-
|
|
2210
|
+
EXRDecoder.format = RedFormat;
|
|
2211
|
+
EXRDecoder.encoding = LinearEncoding;
|
|
2300
2212
|
|
|
2301
|
-
|
|
2213
|
+
}
|
|
2302
2214
|
|
|
2303
|
-
|
|
2215
|
+
return EXRDecoder;
|
|
2304
2216
|
|
|
2305
|
-
|
|
2217
|
+
}
|
|
2306
2218
|
|
|
2307
|
-
|
|
2219
|
+
// start parsing file [START]
|
|
2308
2220
|
|
|
2309
|
-
|
|
2221
|
+
const bufferDataView = new DataView( buffer );
|
|
2222
|
+
const uInt8Array = new Uint8Array( buffer );
|
|
2223
|
+
const offset = { value: 0 };
|
|
2310
2224
|
|
|
2311
|
-
|
|
2225
|
+
// get header information and validate format.
|
|
2226
|
+
const EXRHeader = parseHeader( bufferDataView, buffer, offset );
|
|
2312
2227
|
|
|
2313
|
-
|
|
2228
|
+
// get input compression information and prepare decoding.
|
|
2229
|
+
const EXRDecoder = setupDecoder( EXRHeader, bufferDataView, uInt8Array, offset, this.type );
|
|
2314
2230
|
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
const RGBEArray = new Uint8Array( size );
|
|
2231
|
+
const tmpOffset = { value: 0 };
|
|
2232
|
+
const channelOffsets = { R: 0, G: 1, B: 2, A: 3, Y: 0 };
|
|
2318
2233
|
|
|
2319
|
-
|
|
2234
|
+
for ( let scanlineBlockIdx = 0; scanlineBlockIdx < EXRDecoder.height / EXRDecoder.scanlineBlockSize; scanlineBlockIdx ++ ) {
|
|
2320
2235
|
|
|
2321
|
-
|
|
2236
|
+
const line = parseUint32( bufferDataView, offset ); // line_no
|
|
2237
|
+
EXRDecoder.size = parseUint32( bufferDataView, offset ); // data_len
|
|
2238
|
+
EXRDecoder.lines = ( ( line + EXRDecoder.scanlineBlockSize > EXRDecoder.height ) ? ( EXRDecoder.height - line ) : EXRDecoder.scanlineBlockSize );
|
|
2322
2239
|
|
|
2323
|
-
|
|
2240
|
+
const isCompressed = EXRDecoder.size < EXRDecoder.lines * EXRDecoder.bytesPerLine;
|
|
2241
|
+
const viewer = isCompressed ? EXRDecoder.uncompress( EXRDecoder ) : uncompressRAW( EXRDecoder );
|
|
2324
2242
|
|
|
2325
|
-
|
|
2326
|
-
const green = byteArray[ i + 1 ];
|
|
2327
|
-
const blue = byteArray[ i + 2 ];
|
|
2243
|
+
offset.value += EXRDecoder.size;
|
|
2328
2244
|
|
|
2329
|
-
|
|
2330
|
-
v = ( blue > v ) ? blue : v;
|
|
2245
|
+
for ( let line_y = 0; line_y < EXRDecoder.scanlineBlockSize; line_y ++ ) {
|
|
2331
2246
|
|
|
2332
|
-
|
|
2247
|
+
const true_y = line_y + scanlineBlockIdx * EXRDecoder.scanlineBlockSize;
|
|
2248
|
+
if ( true_y >= EXRDecoder.height ) break;
|
|
2333
2249
|
|
|
2334
|
-
|
|
2250
|
+
for ( let channelID = 0; channelID < EXRDecoder.channels; channelID ++ ) {
|
|
2335
2251
|
|
|
2336
|
-
|
|
2252
|
+
const cOff = channelOffsets[ EXRHeader.channels[ channelID ].name ];
|
|
2337
2253
|
|
|
2338
|
-
|
|
2339
|
-
v = res[ 0 ] * 256 / v;
|
|
2254
|
+
for ( let x = 0; x < EXRDecoder.width; x ++ ) {
|
|
2340
2255
|
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
RGBEArray[ i + 3 ] = res[ 1 ] + 128;
|
|
2256
|
+
tmpOffset.value = ( line_y * ( EXRDecoder.channels * EXRDecoder.width ) + channelID * EXRDecoder.width + x ) * EXRDecoder.inputSize;
|
|
2257
|
+
const outIndex = ( EXRDecoder.height - 1 - true_y ) * ( EXRDecoder.width * EXRDecoder.outputChannels ) + x * EXRDecoder.outputChannels + cOff;
|
|
2258
|
+
EXRDecoder.byteArray[ outIndex ] = EXRDecoder.getter( viewer, tmpOffset );
|
|
2345
2259
|
|
|
2346
2260
|
}
|
|
2347
2261
|
|
|
@@ -2349,19 +2263,16 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2349
2263
|
|
|
2350
2264
|
}
|
|
2351
2265
|
|
|
2352
|
-
byteArray = RGBEArray;
|
|
2353
|
-
|
|
2354
2266
|
}
|
|
2355
2267
|
|
|
2356
|
-
const format = ( this.type === UnsignedByteType ) ? RGBEFormat : ( numChannels === 4 ) ? RGBAFormat : RGBFormat;
|
|
2357
|
-
|
|
2358
2268
|
return {
|
|
2359
2269
|
header: EXRHeader,
|
|
2360
|
-
width: width,
|
|
2361
|
-
height: height,
|
|
2362
|
-
data: byteArray,
|
|
2363
|
-
format: format,
|
|
2364
|
-
|
|
2270
|
+
width: EXRDecoder.width,
|
|
2271
|
+
height: EXRDecoder.height,
|
|
2272
|
+
data: EXRDecoder.byteArray,
|
|
2273
|
+
format: EXRDecoder.format,
|
|
2274
|
+
encoding: EXRDecoder.encoding,
|
|
2275
|
+
type: this.type,
|
|
2365
2276
|
};
|
|
2366
2277
|
|
|
2367
2278
|
}
|
|
@@ -2377,28 +2288,11 @@ class EXRLoader extends DataTextureLoader {
|
|
|
2377
2288
|
|
|
2378
2289
|
function onLoadCallback( texture, texData ) {
|
|
2379
2290
|
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
texture.minFilter = NearestFilter;
|
|
2386
|
-
texture.magFilter = NearestFilter;
|
|
2387
|
-
texture.generateMipmaps = false;
|
|
2388
|
-
texture.flipY = false;
|
|
2389
|
-
break;
|
|
2390
|
-
|
|
2391
|
-
case FloatType:
|
|
2392
|
-
case HalfFloatType:
|
|
2393
|
-
|
|
2394
|
-
texture.encoding = LinearEncoding;
|
|
2395
|
-
texture.minFilter = LinearFilter;
|
|
2396
|
-
texture.magFilter = LinearFilter;
|
|
2397
|
-
texture.generateMipmaps = false;
|
|
2398
|
-
texture.flipY = false;
|
|
2399
|
-
break;
|
|
2400
|
-
|
|
2401
|
-
}
|
|
2291
|
+
texture.encoding = texData.encoding;
|
|
2292
|
+
texture.minFilter = LinearFilter;
|
|
2293
|
+
texture.magFilter = LinearFilter;
|
|
2294
|
+
texture.generateMipmaps = false;
|
|
2295
|
+
texture.flipY = false;
|
|
2402
2296
|
|
|
2403
2297
|
if ( onLoad ) onLoad( texture, texData );
|
|
2404
2298
|
|