@babylonjs/viewer 7.24.0-alpha → 7.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configuration/configuration.d.ts +107 -0
- package/configuration/configuration.js +16 -0
- package/configuration/configuration.js.map +1 -0
- package/configuration/configurationCompatibility.d.ts +8 -0
- package/configuration/configurationCompatibility.js +66 -0
- package/configuration/configurationCompatibility.js.map +1 -0
- package/configuration/configurationContainer.d.ts +10 -0
- package/configuration/configurationContainer.js +10 -0
- package/configuration/configurationContainer.js.map +1 -0
- package/configuration/globals.d.ts +6 -0
- package/configuration/globals.js +18 -0
- package/configuration/globals.js.map +1 -0
- package/configuration/index.d.ts +2 -0
- package/configuration/index.js +4 -0
- package/configuration/index.js.map +1 -0
- package/configuration/interfaces/cameraConfiguration.d.ts +31 -0
- package/configuration/interfaces/cameraConfiguration.js +2 -0
- package/configuration/interfaces/cameraConfiguration.js.map +1 -0
- package/configuration/interfaces/colorGradingConfiguration.d.ts +81 -0
- package/configuration/interfaces/colorGradingConfiguration.js +2 -0
- package/configuration/interfaces/colorGradingConfiguration.js.map +1 -0
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +20 -0
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +2 -0
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +1 -0
- package/configuration/interfaces/environmentMapConfiguration.d.ts +22 -0
- package/configuration/interfaces/environmentMapConfiguration.js +2 -0
- package/configuration/interfaces/environmentMapConfiguration.js.map +1 -0
- package/configuration/interfaces/groundConfiguration.d.ts +24 -0
- package/configuration/interfaces/groundConfiguration.js +2 -0
- package/configuration/interfaces/groundConfiguration.js.map +1 -0
- package/configuration/interfaces/imageProcessingConfiguration.d.ts +45 -0
- package/configuration/interfaces/imageProcessingConfiguration.js +2 -0
- package/configuration/interfaces/imageProcessingConfiguration.js.map +1 -0
- package/configuration/interfaces/index.d.ts +15 -0
- package/configuration/interfaces/index.js +16 -0
- package/configuration/interfaces/index.js.map +1 -0
- package/configuration/interfaces/lightConfiguration.d.ts +60 -0
- package/configuration/interfaces/lightConfiguration.js +2 -0
- package/configuration/interfaces/lightConfiguration.js.map +1 -0
- package/configuration/interfaces/modelAnimationConfiguration.d.ts +26 -0
- package/configuration/interfaces/modelAnimationConfiguration.js +2 -0
- package/configuration/interfaces/modelAnimationConfiguration.js.map +1 -0
- package/configuration/interfaces/modelConfiguration.d.ts +65 -0
- package/configuration/interfaces/modelConfiguration.js +2 -0
- package/configuration/interfaces/modelConfiguration.js.map +1 -0
- package/configuration/interfaces/observersConfiguration.d.ts +5 -0
- package/configuration/interfaces/observersConfiguration.js +2 -0
- package/configuration/interfaces/observersConfiguration.js.map +1 -0
- package/configuration/interfaces/sceneConfiguration.d.ts +48 -0
- package/configuration/interfaces/sceneConfiguration.js +2 -0
- package/configuration/interfaces/sceneConfiguration.js.map +1 -0
- package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +23 -0
- package/configuration/interfaces/sceneOptimizerConfiguration.js +2 -0
- package/configuration/interfaces/sceneOptimizerConfiguration.js.map +1 -0
- package/configuration/interfaces/skyboxConfiguration.d.ts +21 -0
- package/configuration/interfaces/skyboxConfiguration.js +2 -0
- package/configuration/interfaces/skyboxConfiguration.js.map +1 -0
- package/configuration/interfaces/templateConfiguration.d.ts +67 -0
- package/configuration/interfaces/templateConfiguration.js +2 -0
- package/configuration/interfaces/templateConfiguration.js.map +1 -0
- package/configuration/interfaces/vrConfiguration.d.ts +16 -0
- package/configuration/interfaces/vrConfiguration.js +2 -0
- package/configuration/interfaces/vrConfiguration.js.map +1 -0
- package/configuration/loader.d.ts +4 -0
- package/configuration/loader.js +17 -0
- package/configuration/loader.js.map +1 -0
- package/configuration/mappers.d.ts +43 -0
- package/configuration/mappers.js +192 -0
- package/configuration/mappers.js.map +1 -0
- package/configuration/renderOnlyLoader.d.ts +33 -0
- package/configuration/renderOnlyLoader.js +162 -0
- package/configuration/renderOnlyLoader.js.map +1 -0
- package/configuration/types/default.d.ts +6 -0
- package/configuration/types/default.js +121 -0
- package/configuration/types/default.js.map +1 -0
- package/configuration/types/environmentMap.d.ts +5 -0
- package/configuration/types/environmentMap.js +14 -0
- package/configuration/types/environmentMap.js.map +1 -0
- package/configuration/types/extended.d.ts +6 -0
- package/configuration/types/extended.js +317 -0
- package/configuration/types/extended.js.map +1 -0
- package/configuration/types/index.d.ts +14 -0
- package/configuration/types/index.js +51 -0
- package/configuration/types/index.js.map +1 -0
- package/configuration/types/minimal.d.ts +6 -0
- package/configuration/types/minimal.js +43 -0
- package/configuration/types/minimal.js.map +1 -0
- package/configuration/types/renderOnlyDefault.d.ts +30 -0
- package/configuration/types/renderOnlyDefault.js +31 -0
- package/configuration/types/renderOnlyDefault.js.map +1 -0
- package/configuration/types/shadowLight.d.ts +9 -0
- package/configuration/types/shadowLight.js +64 -0
- package/configuration/types/shadowLight.js.map +1 -0
- package/helper/index.d.ts +29 -0
- package/helper/index.js +66 -0
- package/helper/index.js.map +1 -0
- package/index.d.ts +30 -0
- package/index.js +46 -0
- package/index.js.map +1 -0
- package/initializer.d.ts +11 -0
- package/initializer.js +35 -0
- package/initializer.js.map +1 -0
- package/interfaces.d.ts +5 -0
- package/interfaces.js +7 -0
- package/interfaces.js.map +1 -0
- package/labs/environmentSerializer.d.ts +126 -0
- package/labs/environmentSerializer.js +191 -0
- package/labs/environmentSerializer.js.map +1 -0
- package/labs/texture.d.ts +183 -0
- package/labs/texture.js +351 -0
- package/labs/texture.js.map +1 -0
- package/labs/viewerLabs.d.ts +51 -0
- package/labs/viewerLabs.js +134 -0
- package/labs/viewerLabs.js.map +1 -0
- package/loader/modelLoader.d.ts +56 -0
- package/loader/modelLoader.js +199 -0
- package/loader/modelLoader.js.map +1 -0
- package/loader/plugins/applyMaterialConfig.d.ts +12 -0
- package/loader/plugins/applyMaterialConfig.js +16 -0
- package/loader/plugins/applyMaterialConfig.js.map +1 -0
- package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +9 -0
- package/loader/plugins/extendedMaterialLoaderPlugin.js +16 -0
- package/loader/plugins/extendedMaterialLoaderPlugin.js.map +1 -0
- package/loader/plugins/index.d.ts +19 -0
- package/loader/plugins/index.js +44 -0
- package/loader/plugins/index.js.map +1 -0
- package/loader/plugins/loaderPlugin.d.ts +24 -0
- package/loader/plugins/loaderPlugin.js +2 -0
- package/loader/plugins/loaderPlugin.js.map +1 -0
- package/loader/plugins/msftLodLoaderPlugin.d.ts +12 -0
- package/loader/plugins/msftLodLoaderPlugin.js +21 -0
- package/loader/plugins/msftLodLoaderPlugin.js.map +1 -0
- package/loader/plugins/telemetryLoaderPlugin.d.ts +12 -0
- package/loader/plugins/telemetryLoaderPlugin.js +36 -0
- package/loader/plugins/telemetryLoaderPlugin.js.map +1 -0
- package/managers/observablesManager.d.ts +66 -0
- package/managers/observablesManager.js +35 -0
- package/managers/observablesManager.js.map +1 -0
- package/managers/sceneManager.d.ts +245 -0
- package/managers/sceneManager.js +1375 -0
- package/managers/sceneManager.js.map +1 -0
- package/managers/telemetryManager.d.ts +78 -0
- package/managers/telemetryManager.js +117 -0
- package/managers/telemetryManager.js.map +1 -0
- package/model/modelAnimation.d.ts +215 -0
- package/model/modelAnimation.js +237 -0
- package/model/modelAnimation.js.map +1 -0
- package/model/viewerModel.d.ts +233 -0
- package/model/viewerModel.js +673 -0
- package/model/viewerModel.js.map +1 -0
- package/optimizer/custom/extended.d.ts +13 -0
- package/optimizer/custom/extended.js +101 -0
- package/optimizer/custom/extended.js.map +1 -0
- package/optimizer/custom/index.d.ts +9 -0
- package/optimizer/custom/index.js +26 -0
- package/optimizer/custom/index.js.map +1 -0
- package/package.json +27 -17
- package/readme.md +21 -35
- package/renderOnlyIndex.d.ts +11 -0
- package/renderOnlyIndex.js +18 -0
- package/renderOnlyIndex.js.map +1 -0
- package/templating/eventManager.d.ts +35 -0
- package/templating/eventManager.js +66 -0
- package/templating/eventManager.js.map +1 -0
- package/templating/plugins/hdButtonPlugin.d.ts +9 -0
- package/templating/plugins/hdButtonPlugin.js +21 -0
- package/templating/plugins/hdButtonPlugin.js.map +1 -0
- package/templating/plugins/printButton.d.ts +9 -0
- package/templating/plugins/printButton.js +40 -0
- package/templating/plugins/printButton.js.map +1 -0
- package/templating/templateManager.d.ts +197 -0
- package/templating/templateManager.js +561 -0
- package/templating/templateManager.js.map +1 -0
- package/templating/viewerTemplatePlugin.d.ts +21 -0
- package/templating/viewerTemplatePlugin.js +69 -0
- package/templating/viewerTemplatePlugin.js.map +1 -0
- package/viewer/defaultViewer.d.ts +130 -0
- package/viewer/defaultViewer.js +675 -0
- package/viewer/defaultViewer.js.map +1 -0
- package/viewer/renderOnlyViewer.d.ts +9 -0
- package/viewer/renderOnlyViewer.js +46 -0
- package/viewer/renderOnlyViewer.js.map +1 -0
- package/viewer/viewer.d.ts +258 -0
- package/viewer/viewer.js +783 -0
- package/viewer/viewer.js.map +1 -0
- package/viewer/viewerManager.d.ts +58 -0
- package/viewer/viewerManager.js +91 -0
- package/viewer/viewerManager.js.map +1 -0
- package/viewer/viewerWithTemplate.d.ts +9 -0
- package/viewer/viewerWithTemplate.js +20 -0
- package/viewer/viewerWithTemplate.js.map +1 -0
- package/dist/babylon-viewer.esm.js +0 -2
- package/dist/babylon-viewer.esm.js.map +0 -1
- package/dist/babylon-viewer.esm.min.js +0 -2
- package/dist/babylon-viewer.esm.min.js.map +0 -1
- package/dist/chunks/EXT_lights_image_based-C8Zx_zbb.esm.min.js +0 -2
- package/dist/chunks/EXT_lights_image_based-C8Zx_zbb.esm.min.js.map +0 -1
- package/dist/chunks/EXT_lights_image_based-kduc1dpt.esm.js +0 -170
- package/dist/chunks/EXT_lights_image_based-kduc1dpt.esm.js.map +0 -1
- package/dist/chunks/EXT_mesh_gpu_instancing-CUpO919s.esm.min.js +0 -2
- package/dist/chunks/EXT_mesh_gpu_instancing-CUpO919s.esm.min.js.map +0 -1
- package/dist/chunks/EXT_mesh_gpu_instancing-CYGlESBG.esm.js +0 -86
- package/dist/chunks/EXT_mesh_gpu_instancing-CYGlESBG.esm.js.map +0 -1
- package/dist/chunks/EXT_meshopt_compression-BtWefmPI.esm.js +0 -134
- package/dist/chunks/EXT_meshopt_compression-BtWefmPI.esm.js.map +0 -1
- package/dist/chunks/EXT_meshopt_compression-DNd-1RJ_.esm.min.js +0 -2
- package/dist/chunks/EXT_meshopt_compression-DNd-1RJ_.esm.min.js.map +0 -1
- package/dist/chunks/EXT_texture_avif-BgOmraWM.esm.min.js +0 -2
- package/dist/chunks/EXT_texture_avif-BgOmraWM.esm.min.js.map +0 -1
- package/dist/chunks/EXT_texture_avif-BkBGixX6.esm.js +0 -44
- package/dist/chunks/EXT_texture_avif-BkBGixX6.esm.js.map +0 -1
- package/dist/chunks/EXT_texture_webp-DEij2Hfd.esm.min.js +0 -2
- package/dist/chunks/EXT_texture_webp-DEij2Hfd.esm.min.js.map +0 -1
- package/dist/chunks/EXT_texture_webp-Uw1qOCtv.esm.js +0 -43
- package/dist/chunks/EXT_texture_webp-Uw1qOCtv.esm.js.map +0 -1
- package/dist/chunks/ExtrasAsMetadata-BqsudUT7.esm.min.js +0 -2
- package/dist/chunks/ExtrasAsMetadata-BqsudUT7.esm.min.js.map +0 -1
- package/dist/chunks/ExtrasAsMetadata-CM2jTjHQ.esm.js +0 -64
- package/dist/chunks/ExtrasAsMetadata-CM2jTjHQ.esm.js.map +0 -1
- package/dist/chunks/KHR_animation_pointer-DX9lguJB.esm.js +0 -343
- package/dist/chunks/KHR_animation_pointer-DX9lguJB.esm.js.map +0 -1
- package/dist/chunks/KHR_animation_pointer-D_r3SXH0.esm.min.js +0 -2
- package/dist/chunks/KHR_animation_pointer-D_r3SXH0.esm.min.js.map +0 -1
- package/dist/chunks/KHR_draco_mesh_compression-Bxjw8_pv.esm.min.js +0 -2
- package/dist/chunks/KHR_draco_mesh_compression-Bxjw8_pv.esm.min.js.map +0 -1
- package/dist/chunks/KHR_draco_mesh_compression-CbI7tqZf.esm.js +0 -610
- package/dist/chunks/KHR_draco_mesh_compression-CbI7tqZf.esm.js.map +0 -1
- package/dist/chunks/KHR_interactivity-B9qhnhvi.esm.js +0 -4033
- package/dist/chunks/KHR_interactivity-B9qhnhvi.esm.js.map +0 -1
- package/dist/chunks/KHR_interactivity-ClkL8PwU.esm.min.js +0 -2
- package/dist/chunks/KHR_interactivity-ClkL8PwU.esm.min.js.map +0 -1
- package/dist/chunks/KHR_lights_punctual-C7-LlQCf.esm.js +0 -1253
- package/dist/chunks/KHR_lights_punctual-C7-LlQCf.esm.js.map +0 -1
- package/dist/chunks/KHR_lights_punctual-hn-7LTf-.esm.min.js +0 -2
- package/dist/chunks/KHR_lights_punctual-hn-7LTf-.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_anisotropy-B4Tuk6uT.esm.js +0 -64
- package/dist/chunks/KHR_materials_anisotropy-B4Tuk6uT.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_anisotropy-CKZ6ypYV.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_anisotropy-CKZ6ypYV.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_clearcoat-B7g-cV_Q.esm.js +0 -96
- package/dist/chunks/KHR_materials_clearcoat-B7g-cV_Q.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_clearcoat-BBlfAKyA.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_clearcoat-BBlfAKyA.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_diffuse_transmission-Cxa1EzSD.esm.js +0 -96
- package/dist/chunks/KHR_materials_diffuse_transmission-Cxa1EzSD.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_diffuse_transmission-D7VVR_6W.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_diffuse_transmission-D7VVR_6W.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_dispersion-BD-i4dhK.esm.js +0 -63
- package/dist/chunks/KHR_materials_dispersion-BD-i4dhK.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_dispersion-DA1pPYlo.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_dispersion-DA1pPYlo.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_emissive_strength-BUG2Suzu.esm.js +0 -55
- package/dist/chunks/KHR_materials_emissive_strength-BUG2Suzu.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_emissive_strength-Cy4f53O0.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_emissive_strength-Cy4f53O0.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_ior-CXkf52WI.esm.js +0 -64
- package/dist/chunks/KHR_materials_ior-CXkf52WI.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_ior-Cb18R0md.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_ior-Cb18R0md.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_iridescence-CRrr8cNQ.esm.js +0 -72
- package/dist/chunks/KHR_materials_iridescence-CRrr8cNQ.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_iridescence-RKidJoeM.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_iridescence-RKidJoeM.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-CM3wFF_J.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-CM3wFF_J.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-JiRlMqAc.esm.js +0 -81
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-JiRlMqAc.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_sheen-CFE2-qvr.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_sheen-CFE2-qvr.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_sheen-yahUgSy0.esm.js +0 -85
- package/dist/chunks/KHR_materials_sheen-yahUgSy0.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_specular-D5MMqFRA.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_specular-D5MMqFRA.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_specular-uE0VOMMR.esm.js +0 -75
- package/dist/chunks/KHR_materials_specular-uE0VOMMR.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_transmission-BqfkbFTi.esm.js +0 -307
- package/dist/chunks/KHR_materials_transmission-BqfkbFTi.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_transmission-Cy5bbuBe.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_transmission-Cy5bbuBe.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_unlit-CeAe8MXr.esm.js +0 -74
- package/dist/chunks/KHR_materials_unlit-CeAe8MXr.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_unlit-D_vQV9wJ.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_unlit-D_vQV9wJ.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_variants-DI_pay4_.esm.js +0 -238
- package/dist/chunks/KHR_materials_variants-DI_pay4_.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_variants-jFCWO0BP.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_variants-jFCWO0BP.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_volume-CeG8b15V.esm.js +0 -88
- package/dist/chunks/KHR_materials_volume-CeG8b15V.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_volume-DE_Ylfcc.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_volume-DE_Ylfcc.esm.min.js.map +0 -1
- package/dist/chunks/KHR_mesh_quantization-CzyL_Cnv.esm.js +0 -26
- package/dist/chunks/KHR_mesh_quantization-CzyL_Cnv.esm.js.map +0 -1
- package/dist/chunks/KHR_mesh_quantization-DJe_n3uT.esm.min.js +0 -2
- package/dist/chunks/KHR_mesh_quantization-DJe_n3uT.esm.min.js.map +0 -1
- package/dist/chunks/KHR_texture_basisu-BM_kwHpr.esm.min.js +0 -2
- package/dist/chunks/KHR_texture_basisu-BM_kwHpr.esm.min.js.map +0 -1
- package/dist/chunks/KHR_texture_basisu-CW33-gFJ.esm.js +0 -43
- package/dist/chunks/KHR_texture_basisu-CW33-gFJ.esm.js.map +0 -1
- package/dist/chunks/KHR_texture_transform-BvOVd3aP.esm.js +0 -63
- package/dist/chunks/KHR_texture_transform-BvOVd3aP.esm.js.map +0 -1
- package/dist/chunks/KHR_texture_transform-DP5URy2N.esm.min.js +0 -2
- package/dist/chunks/KHR_texture_transform-DP5URy2N.esm.min.js.map +0 -1
- package/dist/chunks/KHR_xmp_json_ld-BUxeQ4mX.esm.js +0 -51
- package/dist/chunks/KHR_xmp_json_ld-BUxeQ4mX.esm.js.map +0 -1
- package/dist/chunks/KHR_xmp_json_ld-CakdJpK8.esm.min.js +0 -2
- package/dist/chunks/KHR_xmp_json_ld-CakdJpK8.esm.min.js.map +0 -1
- package/dist/chunks/MSFT_audio_emitter-CANraFUR.esm.js +0 -1601
- package/dist/chunks/MSFT_audio_emitter-CANraFUR.esm.js.map +0 -1
- package/dist/chunks/MSFT_audio_emitter-CCZ2emXW.esm.min.js +0 -2
- package/dist/chunks/MSFT_audio_emitter-CCZ2emXW.esm.min.js.map +0 -1
- package/dist/chunks/MSFT_lod-B6edIFfM.esm.js +0 -337
- package/dist/chunks/MSFT_lod-B6edIFfM.esm.js.map +0 -1
- package/dist/chunks/MSFT_lod-CTqZxsr6.esm.min.js +0 -2
- package/dist/chunks/MSFT_lod-CTqZxsr6.esm.min.js.map +0 -1
- package/dist/chunks/MSFT_minecraftMesh-BQ2-yi3j.esm.min.js +0 -2
- package/dist/chunks/MSFT_minecraftMesh-BQ2-yi3j.esm.min.js.map +0 -1
- package/dist/chunks/MSFT_minecraftMesh-utO1z3Rb.esm.js +0 -46
- package/dist/chunks/MSFT_minecraftMesh-utO1z3Rb.esm.js.map +0 -1
- package/dist/chunks/MSFT_sRGBFactors-DcH5vUrm.esm.min.js +0 -2
- package/dist/chunks/MSFT_sRGBFactors-DcH5vUrm.esm.min.js.map +0 -1
- package/dist/chunks/MSFT_sRGBFactors-Dxlg_cnl.esm.js +0 -47
- package/dist/chunks/MSFT_sRGBFactors-Dxlg_cnl.esm.js.map +0 -1
- package/dist/chunks/assetContainer-D7kzzGaF.esm.js +0 -1598
- package/dist/chunks/assetContainer-D7kzzGaF.esm.js.map +0 -1
- package/dist/chunks/assetContainer-DerZknN4.esm.min.js +0 -2
- package/dist/chunks/assetContainer-DerZknN4.esm.min.js.map +0 -1
- package/dist/chunks/basisTextureLoader-DFUefcfx.esm.js +0 -600
- package/dist/chunks/basisTextureLoader-DFUefcfx.esm.js.map +0 -1
- package/dist/chunks/basisTextureLoader-DHZAViG3.esm.min.js +0 -2
- package/dist/chunks/basisTextureLoader-DHZAViG3.esm.min.js.map +0 -1
- package/dist/chunks/ddsTextureLoader-Besuv3in.esm.min.js +0 -2
- package/dist/chunks/ddsTextureLoader-Besuv3in.esm.min.js.map +0 -1
- package/dist/chunks/ddsTextureLoader-DAJtmdH2.esm.js +0 -87
- package/dist/chunks/ddsTextureLoader-DAJtmdH2.esm.js.map +0 -1
- package/dist/chunks/default.fragment-Byp0EQWo.esm.js +0 -452
- package/dist/chunks/default.fragment-Byp0EQWo.esm.js.map +0 -1
- package/dist/chunks/default.fragment-CPrwFLxj.esm.min.js +0 -2
- package/dist/chunks/default.fragment-CPrwFLxj.esm.min.js.map +0 -1
- package/dist/chunks/default.fragment-CuTK0g2w.esm.min.js +0 -2
- package/dist/chunks/default.fragment-CuTK0g2w.esm.min.js.map +0 -1
- package/dist/chunks/default.fragment-D4K678XE.esm.js +0 -515
- package/dist/chunks/default.fragment-D4K678XE.esm.js.map +0 -1
- package/dist/chunks/default.vertex-CBf60jXb.esm.js +0 -178
- package/dist/chunks/default.vertex-CBf60jXb.esm.js.map +0 -1
- package/dist/chunks/default.vertex-CPLi2rTa.esm.min.js +0 -2
- package/dist/chunks/default.vertex-CPLi2rTa.esm.min.js.map +0 -1
- package/dist/chunks/default.vertex-DneLJIzI.esm.js +0 -199
- package/dist/chunks/default.vertex-DneLJIzI.esm.js.map +0 -1
- package/dist/chunks/default.vertex-tjZYwgIm.esm.min.js +0 -2
- package/dist/chunks/default.vertex-tjZYwgIm.esm.min.js.map +0 -1
- package/dist/chunks/defaultUboDeclaration-5Ze2L4TA.esm.js +0 -15
- package/dist/chunks/defaultUboDeclaration-5Ze2L4TA.esm.js.map +0 -1
- package/dist/chunks/defaultUboDeclaration-BbZB9zOH.esm.min.js +0 -2
- package/dist/chunks/defaultUboDeclaration-BbZB9zOH.esm.min.js.map +0 -1
- package/dist/chunks/defaultUboDeclaration-C1D54TCU.esm.min.js +0 -2
- package/dist/chunks/defaultUboDeclaration-C1D54TCU.esm.min.js.map +0 -1
- package/dist/chunks/defaultUboDeclaration-xq351fzv.esm.js +0 -13
- package/dist/chunks/defaultUboDeclaration-xq351fzv.esm.js.map +0 -1
- package/dist/chunks/envTextureLoader-Cd87_F9v.esm.js +0 -63
- package/dist/chunks/envTextureLoader-Cd87_F9v.esm.js.map +0 -1
- package/dist/chunks/envTextureLoader-DDrwMoNn.esm.min.js +0 -2
- package/dist/chunks/envTextureLoader-DDrwMoNn.esm.min.js.map +0 -1
- package/dist/chunks/environmentTextureTools-Bewx0Dvk.esm.js +0 -381
- package/dist/chunks/environmentTextureTools-Bewx0Dvk.esm.js.map +0 -1
- package/dist/chunks/environmentTextureTools-CKR4vXo_.esm.min.js +0 -2
- package/dist/chunks/environmentTextureTools-CKR4vXo_.esm.min.js.map +0 -1
- package/dist/chunks/exrTextureLoader-B5OMTxNT.esm.min.js +0 -2
- package/dist/chunks/exrTextureLoader-B5OMTxNT.esm.min.js.map +0 -1
- package/dist/chunks/exrTextureLoader-DYief1aQ.esm.js +0 -1682
- package/dist/chunks/exrTextureLoader-DYief1aQ.esm.js.map +0 -1
- package/dist/chunks/fogFragment-DDtXY8BJ.esm.min.js +0 -2
- package/dist/chunks/fogFragment-DDtXY8BJ.esm.min.js.map +0 -1
- package/dist/chunks/fogFragment-uA_uzICI.esm.js +0 -102
- package/dist/chunks/fogFragment-uA_uzICI.esm.js.map +0 -1
- package/dist/chunks/glTFLoader-BYQ5K9Kt.esm.min.js +0 -2
- package/dist/chunks/glTFLoader-BYQ5K9Kt.esm.min.js.map +0 -1
- package/dist/chunks/glTFLoader-r35szQk2.esm.js +0 -7552
- package/dist/chunks/glTFLoader-r35szQk2.esm.js.map +0 -1
- package/dist/chunks/glTFLoaderAnimation-CBE8cJ5o.esm.min.js +0 -2
- package/dist/chunks/glTFLoaderAnimation-CBE8cJ5o.esm.min.js.map +0 -1
- package/dist/chunks/glTFLoaderAnimation-CT3NxYwM.esm.js +0 -77
- package/dist/chunks/glTFLoaderAnimation-CT3NxYwM.esm.js.map +0 -1
- package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +0 -2
- package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +0 -1
- package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +0 -67
- package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +0 -1
- package/dist/chunks/harmonicsFunctions-BFzEbNOc.esm.min.js +0 -2
- package/dist/chunks/harmonicsFunctions-BFzEbNOc.esm.min.js.map +0 -1
- package/dist/chunks/harmonicsFunctions-BmNqYWse.esm.js +0 -35
- package/dist/chunks/harmonicsFunctions-BmNqYWse.esm.js.map +0 -1
- package/dist/chunks/harmonicsFunctions-DCYVvJfE.esm.js +0 -34
- package/dist/chunks/harmonicsFunctions-DCYVvJfE.esm.js.map +0 -1
- package/dist/chunks/harmonicsFunctions-LdNe78Vv.esm.min.js +0 -2
- package/dist/chunks/harmonicsFunctions-LdNe78Vv.esm.min.js.map +0 -1
- package/dist/chunks/hdrTextureLoader-B4HJ1PIb.esm.js +0 -252
- package/dist/chunks/hdrTextureLoader-B4HJ1PIb.esm.js.map +0 -1
- package/dist/chunks/hdrTextureLoader-D2de5rCS.esm.min.js +0 -2
- package/dist/chunks/hdrTextureLoader-D2de5rCS.esm.min.js.map +0 -1
- package/dist/chunks/helperFunctions-B-V3wz1K.esm.js +0 -80
- package/dist/chunks/helperFunctions-B-V3wz1K.esm.js.map +0 -1
- package/dist/chunks/helperFunctions-B6u0LIQ1.esm.js +0 -108
- package/dist/chunks/helperFunctions-B6u0LIQ1.esm.js.map +0 -1
- package/dist/chunks/helperFunctions-D3_vTLCV.esm.min.js +0 -2
- package/dist/chunks/helperFunctions-D3_vTLCV.esm.min.js.map +0 -1
- package/dist/chunks/helperFunctions-DbaT8xhT.esm.min.js +0 -2
- package/dist/chunks/helperFunctions-DbaT8xhT.esm.min.js.map +0 -1
- package/dist/chunks/index-Bk29Qt-Y.esm.js +0 -81630
- package/dist/chunks/index-Bk29Qt-Y.esm.js.map +0 -1
- package/dist/chunks/index-BlF30_Ca.esm.min.js +0 -57
- package/dist/chunks/index-BlF30_Ca.esm.min.js.map +0 -1
- package/dist/chunks/ktxTextureLoader-BTMWrtOa.esm.js +0 -814
- package/dist/chunks/ktxTextureLoader-BTMWrtOa.esm.js.map +0 -1
- package/dist/chunks/ktxTextureLoader-OqiCvqqP.esm.min.js +0 -2
- package/dist/chunks/ktxTextureLoader-OqiCvqqP.esm.min.js.map +0 -1
- package/dist/chunks/logDepthDeclaration-BPKYewiS.esm.min.js +0 -2
- package/dist/chunks/logDepthDeclaration-BPKYewiS.esm.min.js.map +0 -1
- package/dist/chunks/logDepthDeclaration-CB6mwEV4.esm.min.js +0 -2
- package/dist/chunks/logDepthDeclaration-CB6mwEV4.esm.min.js.map +0 -1
- package/dist/chunks/logDepthDeclaration-CFTIeo9d.esm.js +0 -42
- package/dist/chunks/logDepthDeclaration-CFTIeo9d.esm.js.map +0 -1
- package/dist/chunks/logDepthDeclaration-DuXLlupN.esm.js +0 -35
- package/dist/chunks/logDepthDeclaration-DuXLlupN.esm.js.map +0 -1
- package/dist/chunks/logDepthVertex-B7lJf18n.esm.js +0 -605
- package/dist/chunks/logDepthVertex-B7lJf18n.esm.js.map +0 -1
- package/dist/chunks/logDepthVertex-BlpmPbMu.esm.min.js +0 -2
- package/dist/chunks/logDepthVertex-BlpmPbMu.esm.min.js.map +0 -1
- package/dist/chunks/logDepthVertex-CS2VncA3.esm.min.js +0 -2
- package/dist/chunks/logDepthVertex-CS2VncA3.esm.min.js.map +0 -1
- package/dist/chunks/logDepthVertex-DPI-wcrh.esm.js +0 -77
- package/dist/chunks/logDepthVertex-DPI-wcrh.esm.js.map +0 -1
- package/dist/chunks/mainUVVaryingDeclaration-B7jpQ5Mq.esm.min.js +0 -2
- package/dist/chunks/mainUVVaryingDeclaration-B7jpQ5Mq.esm.min.js.map +0 -1
- package/dist/chunks/mainUVVaryingDeclaration-Cy__-6Nq.esm.js +0 -11
- package/dist/chunks/mainUVVaryingDeclaration-Cy__-6Nq.esm.js.map +0 -1
- package/dist/chunks/objFileLoader-BQAlTWHc.esm.min.js +0 -2
- package/dist/chunks/objFileLoader-BQAlTWHc.esm.min.js.map +0 -1
- package/dist/chunks/objFileLoader-Bi8LHs3e.esm.js +0 -1280
- package/dist/chunks/objFileLoader-Bi8LHs3e.esm.js.map +0 -1
- package/dist/chunks/oitFragment-Bu6IB_U1.esm.min.js +0 -2
- package/dist/chunks/oitFragment-Bu6IB_U1.esm.min.js.map +0 -1
- package/dist/chunks/oitFragment-DWPsjeYm.esm.js +0 -1210
- package/dist/chunks/oitFragment-DWPsjeYm.esm.js.map +0 -1
- package/dist/chunks/oitFragment-DwS3p7os.esm.js +0 -1166
- package/dist/chunks/oitFragment-DwS3p7os.esm.js.map +0 -1
- package/dist/chunks/oitFragment-Dyo3GCIB.esm.min.js +0 -2
- package/dist/chunks/oitFragment-Dyo3GCIB.esm.min.js.map +0 -1
- package/dist/chunks/pass.fragment-BbvJLdK0.esm.min.js +0 -2
- package/dist/chunks/pass.fragment-BbvJLdK0.esm.min.js.map +0 -1
- package/dist/chunks/pass.fragment-CYW_mCe1.esm.js +0 -15
- package/dist/chunks/pass.fragment-CYW_mCe1.esm.js.map +0 -1
- package/dist/chunks/pbr.fragment-BF_ms0u4.esm.js +0 -3228
- package/dist/chunks/pbr.fragment-BF_ms0u4.esm.js.map +0 -1
- package/dist/chunks/pbr.fragment-BgRyNZP4.esm.min.js +0 -2
- package/dist/chunks/pbr.fragment-BgRyNZP4.esm.min.js.map +0 -1
- package/dist/chunks/pbr.fragment-DWDVg0cI.esm.js +0 -3163
- package/dist/chunks/pbr.fragment-DWDVg0cI.esm.js.map +0 -1
- package/dist/chunks/pbr.fragment-DnANKT1v.esm.min.js +0 -2
- package/dist/chunks/pbr.fragment-DnANKT1v.esm.min.js.map +0 -1
- package/dist/chunks/pbr.vertex-CtV1eMwZ.esm.js +0 -335
- package/dist/chunks/pbr.vertex-CtV1eMwZ.esm.js.map +0 -1
- package/dist/chunks/pbr.vertex-Dfv-0mcy.esm.js +0 -208
- package/dist/chunks/pbr.vertex-Dfv-0mcy.esm.js.map +0 -1
- package/dist/chunks/pbr.vertex-Dqkpv-Eq.esm.min.js +0 -2
- package/dist/chunks/pbr.vertex-Dqkpv-Eq.esm.min.js.map +0 -1
- package/dist/chunks/pbr.vertex-nSqzmuMh.esm.min.js +0 -2
- package/dist/chunks/pbr.vertex-nSqzmuMh.esm.min.js.map +0 -1
- package/dist/chunks/postprocess.vertex-CI-eDzvi.esm.js +0 -20
- package/dist/chunks/postprocess.vertex-CI-eDzvi.esm.js.map +0 -1
- package/dist/chunks/postprocess.vertex-Cs2SUWD0.esm.min.js +0 -2
- package/dist/chunks/postprocess.vertex-Cs2SUWD0.esm.min.js.map +0 -1
- package/dist/chunks/rawTexture-3oLvc_tp.esm.js +0 -562
- package/dist/chunks/rawTexture-3oLvc_tp.esm.js.map +0 -1
- package/dist/chunks/rawTexture-BWp9aJpK.esm.min.js +0 -2
- package/dist/chunks/rawTexture-BWp9aJpK.esm.min.js.map +0 -1
- package/dist/chunks/rgbdDecode.fragment-CYs1lXUB.esm.js +0 -17
- package/dist/chunks/rgbdDecode.fragment-CYs1lXUB.esm.js.map +0 -1
- package/dist/chunks/rgbdDecode.fragment-DiziHd4D.esm.min.js +0 -2
- package/dist/chunks/rgbdDecode.fragment-DiziHd4D.esm.min.js.map +0 -1
- package/dist/chunks/rgbdDecode.fragment-N_qzvKhN.esm.min.js +0 -2
- package/dist/chunks/rgbdDecode.fragment-N_qzvKhN.esm.min.js.map +0 -1
- package/dist/chunks/rgbdDecode.fragment-YPi0juk-.esm.js +0 -17
- package/dist/chunks/rgbdDecode.fragment-YPi0juk-.esm.js.map +0 -1
- package/dist/chunks/rgbdEncode.fragment-BPNHn1tT.esm.min.js +0 -2
- package/dist/chunks/rgbdEncode.fragment-BPNHn1tT.esm.min.js.map +0 -1
- package/dist/chunks/rgbdEncode.fragment-BcJhRtQ5.esm.min.js +0 -2
- package/dist/chunks/rgbdEncode.fragment-BcJhRtQ5.esm.min.js.map +0 -1
- package/dist/chunks/rgbdEncode.fragment-DtkOxT2Y.esm.js +0 -17
- package/dist/chunks/rgbdEncode.fragment-DtkOxT2Y.esm.js.map +0 -1
- package/dist/chunks/rgbdEncode.fragment-duKOXekg.esm.js +0 -17
- package/dist/chunks/rgbdEncode.fragment-duKOXekg.esm.js.map +0 -1
- package/dist/chunks/splatFileLoader-CftLaqSo.esm.js +0 -3137
- package/dist/chunks/splatFileLoader-CftLaqSo.esm.js.map +0 -1
- package/dist/chunks/splatFileLoader-DQY-vSa3.esm.min.js +0 -2
- package/dist/chunks/splatFileLoader-DQY-vSa3.esm.min.js.map +0 -1
- package/dist/chunks/standardMaterial-1c1C_ZIw.esm.js +0 -1809
- package/dist/chunks/standardMaterial-1c1C_ZIw.esm.js.map +0 -1
- package/dist/chunks/standardMaterial-CTSzlcu8.esm.min.js +0 -2
- package/dist/chunks/standardMaterial-CTSzlcu8.esm.min.js.map +0 -1
- package/dist/chunks/stlFileLoader-BGLYbFk2.esm.js +0 -237
- package/dist/chunks/stlFileLoader-BGLYbFk2.esm.js.map +0 -1
- package/dist/chunks/stlFileLoader-D451o5V4.esm.min.js +0 -2
- package/dist/chunks/stlFileLoader-D451o5V4.esm.min.js.map +0 -1
- package/dist/chunks/tgaTextureLoader-BLOklZDW.esm.min.js +0 -2
- package/dist/chunks/tgaTextureLoader-BLOklZDW.esm.min.js.map +0 -1
- package/dist/chunks/tgaTextureLoader-CCYZarL9.esm.js +0 -349
- package/dist/chunks/tgaTextureLoader-CCYZarL9.esm.js.map +0 -1
- package/dist/chunks/thinInstanceMesh-BuanMsAC.esm.min.js +0 -2
- package/dist/chunks/thinInstanceMesh-BuanMsAC.esm.min.js.map +0 -1
- package/dist/chunks/thinInstanceMesh-HVLKYr74.esm.js +0 -314
- package/dist/chunks/thinInstanceMesh-HVLKYr74.esm.js.map +0 -1
- package/dist/chunks/vertexColorMixing-Bhqvyjgc.esm.js +0 -528
- package/dist/chunks/vertexColorMixing-Bhqvyjgc.esm.js.map +0 -1
- package/dist/chunks/vertexColorMixing-Dgml7nXE.esm.min.js +0 -2
- package/dist/chunks/vertexColorMixing-Dgml7nXE.esm.min.js.map +0 -1
- package/dist/chunks/workerPool-BUOov2K1.esm.js +0 -122
- package/dist/chunks/workerPool-BUOov2K1.esm.js.map +0 -1
- package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +0 -2
- package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +0 -1
- package/lib/index.d.ts +0 -237
- package/lib/index.js +0 -871
- package/lib/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environmentTextureTools-CKR4vXo_.esm.min.js","sources":["../../../../../dev/core/dist/Misc/environmentTextureTools.js"],"sourcesContent":["import { Tools } from \"./tools\";\nimport { Vector3 } from \"../Maths/math.vector\";\nimport { Scalar } from \"../Maths/math.scalar\";\nimport { SphericalPolynomial } from \"../Maths/sphericalPolynomial\";\nimport { InternalTexture } from \"../Materials/Textures/internalTexture\";\nimport { BaseTexture } from \"../Materials/Textures/baseTexture\";\nimport { Constants } from \"../Engines/constants\";\nimport { Scene } from \"../scene\";\nimport { PostProcess } from \"../PostProcesses/postProcess\";\nimport { Logger } from \"../Misc/logger\";\nimport { RGBDTextureTools } from \"./rgbdTextureTools\";\nimport \"../Engines/Extensions/engine.renderTargetCube\";\nimport \"../Engines/Extensions/engine.readTexture\";\nimport \"../Materials/Textures/baseTexture.polynomial\";\nimport { DumpDataAsync } from \"../Misc/dumpTools\";\nconst DefaultEnvironmentTextureImageType = \"image/png\";\nconst CurrentVersion = 2;\n/**\n * Magic number identifying the env file.\n */\nconst MagicBytes = [0x86, 0x16, 0x87, 0x96, 0xf6, 0xd6, 0x96, 0x36];\n/**\n * Gets the environment info from an env file.\n * @param data The array buffer containing the .env bytes.\n * @returns the environment file info (the json header) if successfully parsed, normalized to the latest supported version.\n */\nexport function GetEnvInfo(data) {\n const dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);\n let pos = 0;\n for (let i = 0; i < MagicBytes.length; i++) {\n if (dataView.getUint8(pos++) !== MagicBytes[i]) {\n Logger.Error(\"Not a babylon environment map\");\n return null;\n }\n }\n // Read json manifest - collect characters up to null terminator\n let manifestString = \"\";\n let charCode = 0x00;\n while ((charCode = dataView.getUint8(pos++))) {\n manifestString += String.fromCharCode(charCode);\n }\n let manifest = JSON.parse(manifestString);\n manifest = normalizeEnvInfo(manifest);\n if (manifest.specular) {\n // Extend the header with the position of the payload.\n manifest.specular.specularDataPosition = pos;\n // Fallback to 0.8 exactly if lodGenerationScale is not defined for backward compatibility.\n manifest.specular.lodGenerationScale = manifest.specular.lodGenerationScale || 0.8;\n }\n return manifest;\n}\n/**\n * Normalizes any supported version of the environment file info to the latest version\n * @param info environment file info on any supported version\n * @returns environment file info in the latest supported version\n * @private\n */\nexport function normalizeEnvInfo(info) {\n if (info.version > CurrentVersion) {\n throw new Error(`Unsupported babylon environment map version \"${info.version}\". Latest supported version is \"${CurrentVersion}\".`);\n }\n if (info.version === 2) {\n return info;\n }\n // Migrate a v1 info to v2\n info = { ...info, version: 2, imageType: DefaultEnvironmentTextureImageType };\n return info;\n}\n/**\n * Creates an environment texture from a loaded cube texture.\n * @param texture defines the cube texture to convert in env file\n * @param options options for the conversion process\n * @param options.imageType the mime type for the encoded images, with support for \"image/png\" (default) and \"image/webp\"\n * @param options.imageQuality the image quality of encoded WebP images.\n * @returns a promise containing the environment data if successful.\n */\nexport async function CreateEnvTextureAsync(texture, options = {}) {\n const internalTexture = texture.getInternalTexture();\n if (!internalTexture) {\n return Promise.reject(\"The cube texture is invalid.\");\n }\n const imageType = options.imageType ?? DefaultEnvironmentTextureImageType;\n const engine = internalTexture.getEngine();\n if (texture.textureType !== Constants.TEXTURETYPE_HALF_FLOAT &&\n texture.textureType !== Constants.TEXTURETYPE_FLOAT &&\n texture.textureType !== Constants.TEXTURETYPE_UNSIGNED_BYTE &&\n texture.textureType !== Constants.TEXTURETYPE_UNSIGNED_INT &&\n texture.textureType !== Constants.TEXTURETYPE_UNSIGNED_INTEGER &&\n texture.textureType !== -1) {\n return Promise.reject(\"The cube texture should allow HDR (Full Float or Half Float).\");\n }\n let textureType = Constants.TEXTURETYPE_FLOAT;\n if (!engine.getCaps().textureFloatRender) {\n textureType = Constants.TEXTURETYPE_HALF_FLOAT;\n if (!engine.getCaps().textureHalfFloatRender) {\n return Promise.reject(\"Env texture can only be created when the browser supports half float or full float rendering.\");\n }\n }\n // sphericalPolynomial is lazy loaded so simply accessing it should trigger the computation.\n texture.sphericalPolynomial;\n // Lets keep track of the polynomial promise so we can wait for it to be ready before generating the pixels.\n const sphericalPolynomialPromise = texture.getInternalTexture()?._sphericalPolynomialPromise;\n const cubeWidth = internalTexture.width;\n const hostingScene = new Scene(engine);\n const specularTextures = {};\n // As we are going to readPixels the faces of the cube, make sure the drawing/update commands for the cube texture are fully sent to the GPU in case it is drawn for the first time in this very frame!\n engine.flushFramebuffer();\n // Read and collect all mipmaps data from the cube.\n const mipmapsCount = Scalar.ILog2(internalTexture.width);\n for (let i = 0; i <= mipmapsCount; i++) {\n const faceWidth = Math.pow(2, mipmapsCount - i);\n // All faces of the cube.\n for (let face = 0; face < 6; face++) {\n let faceData = await texture.readPixels(face, i, undefined, false);\n if (faceData && faceData.byteLength === faceData.length) {\n const faceDataFloat = new Float32Array(faceData.byteLength * 4);\n for (let i = 0; i < faceData.byteLength; i++) {\n faceDataFloat[i] = faceData[i] / 255;\n // Gamma to linear\n faceDataFloat[i] = Math.pow(faceDataFloat[i], 2.2);\n }\n faceData = faceDataFloat;\n }\n else if (faceData && texture.gammaSpace) {\n const floatData = faceData;\n for (let i = 0; i < floatData.length; i++) {\n // Gamma to linear\n floatData[i] = Math.pow(floatData[i], 2.2);\n }\n }\n const tempTexture = engine.createRawTexture(faceData, faceWidth, faceWidth, Constants.TEXTUREFORMAT_RGBA, false, true, Constants.TEXTURE_NEAREST_SAMPLINGMODE, null, textureType);\n await RGBDTextureTools.EncodeTextureToRGBD(tempTexture, hostingScene, textureType);\n const rgbdEncodedData = await engine._readTexturePixels(tempTexture, faceWidth, faceWidth);\n const imageEncodedData = await DumpDataAsync(faceWidth, faceWidth, rgbdEncodedData, imageType, undefined, false, true, options.imageQuality);\n specularTextures[i * 6 + face] = imageEncodedData;\n tempTexture.dispose();\n }\n }\n // We can delete the hosting scene keeping track of all the creation objects\n hostingScene.dispose();\n // Ensure completion of the polynomial creation promise.\n if (sphericalPolynomialPromise) {\n await sphericalPolynomialPromise;\n }\n // Creates the json header for the env texture\n const info = {\n version: CurrentVersion,\n width: cubeWidth,\n imageType,\n irradiance: _CreateEnvTextureIrradiance(texture),\n specular: {\n mipmaps: [],\n lodGenerationScale: texture.lodGenerationScale,\n },\n };\n // Sets the specular image data information\n let position = 0;\n for (let i = 0; i <= mipmapsCount; i++) {\n for (let face = 0; face < 6; face++) {\n const byteLength = specularTextures[i * 6 + face].byteLength;\n info.specular.mipmaps.push({\n length: byteLength,\n position: position,\n });\n position += byteLength;\n }\n }\n // Encode the JSON as an array buffer\n const infoString = JSON.stringify(info);\n const infoBuffer = new ArrayBuffer(infoString.length + 1);\n const infoView = new Uint8Array(infoBuffer); // Limited to ascii subset matching unicode.\n for (let i = 0, strLen = infoString.length; i < strLen; i++) {\n infoView[i] = infoString.charCodeAt(i);\n }\n // Ends up with a null terminator for easier parsing\n infoView[infoString.length] = 0x00;\n // Computes the final required size and creates the storage\n const totalSize = MagicBytes.length + position + infoBuffer.byteLength;\n const finalBuffer = new ArrayBuffer(totalSize);\n const finalBufferView = new Uint8Array(finalBuffer);\n const dataView = new DataView(finalBuffer);\n // Copy the magic bytes identifying the file in\n let pos = 0;\n for (let i = 0; i < MagicBytes.length; i++) {\n dataView.setUint8(pos++, MagicBytes[i]);\n }\n // Add the json info\n finalBufferView.set(new Uint8Array(infoBuffer), pos);\n pos += infoBuffer.byteLength;\n // Finally inserts the texture data\n for (let i = 0; i <= mipmapsCount; i++) {\n for (let face = 0; face < 6; face++) {\n const dataBuffer = specularTextures[i * 6 + face];\n finalBufferView.set(new Uint8Array(dataBuffer), pos);\n pos += dataBuffer.byteLength;\n }\n }\n // Voila\n return finalBuffer;\n}\n/**\n * Creates a JSON representation of the spherical data.\n * @param texture defines the texture containing the polynomials\n * @returns the JSON representation of the spherical info\n */\nfunction _CreateEnvTextureIrradiance(texture) {\n const polynmials = texture.sphericalPolynomial;\n if (polynmials == null) {\n return null;\n }\n return {\n x: [polynmials.x.x, polynmials.x.y, polynmials.x.z],\n y: [polynmials.y.x, polynmials.y.y, polynmials.y.z],\n z: [polynmials.z.x, polynmials.z.y, polynmials.z.z],\n xx: [polynmials.xx.x, polynmials.xx.y, polynmials.xx.z],\n yy: [polynmials.yy.x, polynmials.yy.y, polynmials.yy.z],\n zz: [polynmials.zz.x, polynmials.zz.y, polynmials.zz.z],\n yz: [polynmials.yz.x, polynmials.yz.y, polynmials.yz.z],\n zx: [polynmials.zx.x, polynmials.zx.y, polynmials.zx.z],\n xy: [polynmials.xy.x, polynmials.xy.y, polynmials.xy.z],\n };\n}\n/**\n * Creates the ArrayBufferViews used for initializing environment texture image data.\n * @param data the image data\n * @param info parameters that determine what views will be created for accessing the underlying buffer\n * @returns the views described by info providing access to the underlying buffer\n */\nexport function CreateImageDataArrayBufferViews(data, info) {\n info = normalizeEnvInfo(info);\n const specularInfo = info.specular;\n // Double checks the enclosed info\n let mipmapsCount = Scalar.Log2(info.width);\n mipmapsCount = Math.round(mipmapsCount) + 1;\n if (specularInfo.mipmaps.length !== 6 * mipmapsCount) {\n throw new Error(`Unsupported specular mipmaps number \"${specularInfo.mipmaps.length}\"`);\n }\n const imageData = new Array(mipmapsCount);\n for (let i = 0; i < mipmapsCount; i++) {\n imageData[i] = new Array(6);\n for (let face = 0; face < 6; face++) {\n const imageInfo = specularInfo.mipmaps[i * 6 + face];\n imageData[i][face] = new Uint8Array(data.buffer, data.byteOffset + specularInfo.specularDataPosition + imageInfo.position, imageInfo.length);\n }\n }\n return imageData;\n}\n/**\n * Uploads the texture info contained in the env file to the GPU.\n * @param texture defines the internal texture to upload to\n * @param data defines the data to load\n * @param info defines the texture info retrieved through the GetEnvInfo method\n * @returns a promise\n */\nexport function UploadEnvLevelsAsync(texture, data, info) {\n info = normalizeEnvInfo(info);\n const specularInfo = info.specular;\n if (!specularInfo) {\n // Nothing else parsed so far\n return Promise.resolve();\n }\n texture._lodGenerationScale = specularInfo.lodGenerationScale;\n const imageData = CreateImageDataArrayBufferViews(data, info);\n return UploadLevelsAsync(texture, imageData, info.imageType);\n}\nfunction _OnImageReadyAsync(image, engine, expandTexture, rgbdPostProcess, url, face, i, generateNonLODTextures, lodTextures, cubeRtt, texture) {\n return new Promise((resolve, reject) => {\n if (expandTexture) {\n const tempTexture = engine.createTexture(null, true, true, null, Constants.TEXTURE_NEAREST_SAMPLINGMODE, null, (message) => {\n reject(message);\n }, image);\n rgbdPostProcess?.onEffectCreatedObservable.addOnce((effect) => {\n effect.executeWhenCompiled(() => {\n // Uncompress the data to a RTT\n rgbdPostProcess.externalTextureSamplerBinding = true;\n rgbdPostProcess.onApply = (effect) => {\n effect._bindTexture(\"textureSampler\", tempTexture);\n effect.setFloat2(\"scale\", 1, engine._features.needsInvertingBitmap && image instanceof ImageBitmap ? -1 : 1);\n };\n if (!engine.scenes.length) {\n return;\n }\n engine.scenes[0].postProcessManager.directRender([rgbdPostProcess], cubeRtt, true, face, i);\n // Cleanup\n engine.restoreDefaultFramebuffer();\n tempTexture.dispose();\n URL.revokeObjectURL(url);\n resolve();\n });\n });\n }\n else {\n engine._uploadImageToTexture(texture, image, face, i);\n // Upload the face to the non lod texture support\n if (generateNonLODTextures) {\n const lodTexture = lodTextures[i];\n if (lodTexture) {\n engine._uploadImageToTexture(lodTexture._texture, image, face, 0);\n }\n }\n resolve();\n }\n });\n}\n/**\n * Uploads the levels of image data to the GPU.\n * @param texture defines the internal texture to upload to\n * @param imageData defines the array buffer views of image data [mipmap][face]\n * @param imageType the mime type of the image data\n * @returns a promise\n */\nexport async function UploadLevelsAsync(texture, imageData, imageType = DefaultEnvironmentTextureImageType) {\n if (!Tools.IsExponentOfTwo(texture.width)) {\n throw new Error(\"Texture size must be a power of two\");\n }\n const mipmapsCount = Scalar.ILog2(texture.width) + 1;\n // Gets everything ready.\n const engine = texture.getEngine();\n let expandTexture = false;\n let generateNonLODTextures = false;\n let rgbdPostProcess = null;\n let cubeRtt = null;\n let lodTextures = null;\n const caps = engine.getCaps();\n texture.format = Constants.TEXTUREFORMAT_RGBA;\n texture.type = Constants.TEXTURETYPE_UNSIGNED_INT;\n texture.generateMipMaps = true;\n texture._cachedAnisotropicFilteringLevel = null;\n engine.updateTextureSamplingMode(Constants.TEXTURE_TRILINEAR_SAMPLINGMODE, texture);\n // Add extra process if texture lod is not supported\n if (!caps.textureLOD) {\n expandTexture = false;\n generateNonLODTextures = true;\n lodTextures = {};\n }\n // in webgl 1 there are no ways to either render or copy lod level information for float textures.\n else if (!engine._features.supportRenderAndCopyToLodForFloatTextures) {\n expandTexture = false;\n }\n // If half float available we can uncompress the texture\n else if (caps.textureHalfFloatRender && caps.textureHalfFloatLinearFiltering) {\n expandTexture = true;\n texture.type = Constants.TEXTURETYPE_HALF_FLOAT;\n }\n // If full float available we can uncompress the texture\n else if (caps.textureFloatRender && caps.textureFloatLinearFiltering) {\n expandTexture = true;\n texture.type = Constants.TEXTURETYPE_FLOAT;\n }\n // Expand the texture if possible\n let shaderLanguage = 0 /* ShaderLanguage.GLSL */;\n if (expandTexture) {\n if (engine.isWebGPU) {\n shaderLanguage = 1 /* ShaderLanguage.WGSL */;\n await import(\"../ShadersWGSL/rgbdDecode.fragment\");\n }\n else {\n await import(\"../Shaders/rgbdDecode.fragment\");\n }\n // Simply run through the decode PP\n rgbdPostProcess = new PostProcess(\"rgbdDecode\", \"rgbdDecode\", null, null, 1, null, Constants.TEXTURE_TRILINEAR_SAMPLINGMODE, engine, false, undefined, texture.type, undefined, null, false, undefined, shaderLanguage);\n texture._isRGBD = false;\n texture.invertY = false;\n cubeRtt = engine.createRenderTargetCubeTexture(texture.width, {\n generateDepthBuffer: false,\n generateMipMaps: true,\n generateStencilBuffer: false,\n samplingMode: Constants.TEXTURE_TRILINEAR_SAMPLINGMODE,\n type: texture.type,\n format: Constants.TEXTUREFORMAT_RGBA,\n });\n }\n else {\n texture._isRGBD = true;\n texture.invertY = true;\n // In case of missing support, applies the same patch than DDS files.\n if (generateNonLODTextures) {\n const mipSlices = 3;\n const scale = texture._lodGenerationScale;\n const offset = texture._lodGenerationOffset;\n for (let i = 0; i < mipSlices; i++) {\n //compute LOD from even spacing in smoothness (matching shader calculation)\n const smoothness = i / (mipSlices - 1);\n const roughness = 1 - smoothness;\n const minLODIndex = offset; // roughness = 0\n const maxLODIndex = (mipmapsCount - 1) * scale + offset; // roughness = 1 (mipmaps start from 0)\n const lodIndex = minLODIndex + (maxLODIndex - minLODIndex) * roughness;\n const mipmapIndex = Math.round(Math.min(Math.max(lodIndex, 0), maxLODIndex));\n const glTextureFromLod = new InternalTexture(engine, 2 /* InternalTextureSource.Temp */);\n glTextureFromLod.isCube = true;\n glTextureFromLod.invertY = true;\n glTextureFromLod.generateMipMaps = false;\n engine.updateTextureSamplingMode(Constants.TEXTURE_LINEAR_LINEAR, glTextureFromLod);\n // Wrap in a base texture for easy binding.\n const lodTexture = new BaseTexture(null);\n lodTexture._isCube = true;\n lodTexture._texture = glTextureFromLod;\n lodTextures[mipmapIndex] = lodTexture;\n switch (i) {\n case 0:\n texture._lodTextureLow = lodTexture;\n break;\n case 1:\n texture._lodTextureMid = lodTexture;\n break;\n case 2:\n texture._lodTextureHigh = lodTexture;\n break;\n }\n }\n }\n }\n const promises = [];\n // All mipmaps up to provided number of images\n for (let i = 0; i < imageData.length; i++) {\n // All faces\n for (let face = 0; face < 6; face++) {\n // Constructs an image element from image data\n const bytes = imageData[i][face];\n const blob = new Blob([bytes], { type: imageType });\n const url = URL.createObjectURL(blob);\n let promise;\n if (engine._features.forceBitmapOverHTMLImageElement) {\n promise = engine.createImageBitmap(blob, { premultiplyAlpha: \"none\" }).then((img) => {\n return _OnImageReadyAsync(img, engine, expandTexture, rgbdPostProcess, url, face, i, generateNonLODTextures, lodTextures, cubeRtt, texture);\n });\n }\n else {\n const image = new Image();\n image.src = url;\n // Enqueue promise to upload to the texture.\n promise = new Promise((resolve, reject) => {\n image.onload = () => {\n _OnImageReadyAsync(image, engine, expandTexture, rgbdPostProcess, url, face, i, generateNonLODTextures, lodTextures, cubeRtt, texture)\n .then(() => resolve())\n .catch((reason) => {\n reject(reason);\n });\n };\n image.onerror = (error) => {\n reject(error);\n };\n });\n }\n promises.push(promise);\n }\n }\n // Fill remaining mipmaps with black textures.\n if (imageData.length < mipmapsCount) {\n let data;\n const size = Math.pow(2, mipmapsCount - 1 - imageData.length);\n const dataLength = size * size * 4;\n switch (texture.type) {\n case Constants.TEXTURETYPE_UNSIGNED_INT: {\n data = new Uint8Array(dataLength);\n break;\n }\n case Constants.TEXTURETYPE_HALF_FLOAT: {\n data = new Uint16Array(dataLength);\n break;\n }\n case Constants.TEXTURETYPE_FLOAT: {\n data = new Float32Array(dataLength);\n break;\n }\n }\n for (let i = imageData.length; i < mipmapsCount; i++) {\n for (let face = 0; face < 6; face++) {\n engine._uploadArrayBufferViewToTexture(texture, data, face, i);\n }\n }\n }\n // Once all done, finishes the cleanup and return\n return Promise.all(promises).then(() => {\n // Release temp RTT.\n if (cubeRtt) {\n engine._releaseTexture(texture);\n cubeRtt._swapAndDie(texture);\n }\n // Release temp Post Process.\n if (rgbdPostProcess) {\n rgbdPostProcess.dispose();\n }\n // Flag internal texture as ready in case they are in use.\n if (generateNonLODTextures) {\n if (texture._lodTextureHigh && texture._lodTextureHigh._texture) {\n texture._lodTextureHigh._texture.isReady = true;\n }\n if (texture._lodTextureMid && texture._lodTextureMid._texture) {\n texture._lodTextureMid._texture.isReady = true;\n }\n if (texture._lodTextureLow && texture._lodTextureLow._texture) {\n texture._lodTextureLow._texture.isReady = true;\n }\n }\n });\n}\n/**\n * Uploads spherical polynomials information to the texture.\n * @param texture defines the texture we are trying to upload the information to\n * @param info defines the environment texture info retrieved through the GetEnvInfo method\n */\nexport function UploadEnvSpherical(texture, info) {\n info = normalizeEnvInfo(info);\n const irradianceInfo = info.irradiance;\n if (!irradianceInfo) {\n return;\n }\n const sp = new SphericalPolynomial();\n Vector3.FromArrayToRef(irradianceInfo.x, 0, sp.x);\n Vector3.FromArrayToRef(irradianceInfo.y, 0, sp.y);\n Vector3.FromArrayToRef(irradianceInfo.z, 0, sp.z);\n Vector3.FromArrayToRef(irradianceInfo.xx, 0, sp.xx);\n Vector3.FromArrayToRef(irradianceInfo.yy, 0, sp.yy);\n Vector3.FromArrayToRef(irradianceInfo.zz, 0, sp.zz);\n Vector3.FromArrayToRef(irradianceInfo.yz, 0, sp.yz);\n Vector3.FromArrayToRef(irradianceInfo.zx, 0, sp.zx);\n Vector3.FromArrayToRef(irradianceInfo.xy, 0, sp.xy);\n texture._sphericalPolynomial = sp;\n}\n/**\n * @internal\n */\nexport function _UpdateRGBDAsync(internalTexture, data, sphericalPolynomial, lodScale, lodOffset) {\n const proxy = internalTexture\n .getEngine()\n .createRawCubeTexture(null, internalTexture.width, internalTexture.format, internalTexture.type, internalTexture.generateMipMaps, internalTexture.invertY, internalTexture.samplingMode, internalTexture._compression);\n const proxyPromise = UploadLevelsAsync(proxy, data).then(() => internalTexture);\n internalTexture.onRebuildCallback = (_internalTexture) => {\n return {\n proxy: proxyPromise,\n isReady: true,\n isAsync: true,\n };\n };\n internalTexture._source = 13 /* InternalTextureSource.CubeRawRGBD */;\n internalTexture._bufferViewArrayArray = data;\n internalTexture._lodGenerationScale = lodScale;\n internalTexture._lodGenerationOffset = lodOffset;\n internalTexture._sphericalPolynomial = sphericalPolynomial;\n return UploadLevelsAsync(internalTexture, data).then(() => {\n internalTexture.isReady = true;\n return internalTexture;\n });\n}\n/**\n * Sets of helpers addressing the serialization and deserialization of environment texture\n * stored in a BabylonJS env file.\n * Those files are usually stored as .env files.\n */\nexport const EnvironmentTextureTools = {\n /**\n * Gets the environment info from an env file.\n * @param data The array buffer containing the .env bytes.\n * @returns the environment file info (the json header) if successfully parsed, normalized to the latest supported version.\n */\n GetEnvInfo,\n /**\n * Creates an environment texture from a loaded cube texture.\n * @param texture defines the cube texture to convert in env file\n * @param options options for the conversion process\n * @param options.imageType the mime type for the encoded images, with support for \"image/png\" (default) and \"image/webp\"\n * @param options.imageQuality the image quality of encoded WebP images.\n * @returns a promise containing the environment data if successful.\n */\n CreateEnvTextureAsync,\n /**\n * Creates the ArrayBufferViews used for initializing environment texture image data.\n * @param data the image data\n * @param info parameters that determine what views will be created for accessing the underlying buffer\n * @returns the views described by info providing access to the underlying buffer\n */\n CreateImageDataArrayBufferViews,\n /**\n * Uploads the texture info contained in the env file to the GPU.\n * @param texture defines the internal texture to upload to\n * @param data defines the data to load\n * @param info defines the texture info retrieved through the GetEnvInfo method\n * @returns a promise\n */\n UploadEnvLevelsAsync,\n /**\n * Uploads the levels of image data to the GPU.\n * @param texture defines the internal texture to upload to\n * @param imageData defines the array buffer views of image data [mipmap][face]\n * @param imageType the mime type of the image data\n * @returns a promise\n */\n UploadLevelsAsync,\n /**\n * Uploads spherical polynomials information to the texture.\n * @param texture defines the texture we are trying to upload the information to\n * @param info defines the environment texture info retrieved through the GetEnvInfo method\n */\n UploadEnvSpherical,\n};\n//# sourceMappingURL=environmentTextureTools.js.map"],"names":["DefaultEnvironmentTextureImageType","CurrentVersion","MagicBytes","GetEnvInfo","data","dataView","DataView","buffer","byteOffset","byteLength","pos","i","length","getUint8","Logger","Error","manifestString","charCode","String","fromCharCode","manifest","JSON","parse","normalizeEnvInfo","specular","specularDataPosition","lodGenerationScale","info","version","imageType","UploadEnvLevelsAsync","texture","specularInfo","Promise","resolve","_lodGenerationScale","imageData","mipmapsCount","Scalar","Log2","width","Math","round","mipmaps","Array","face","imageInfo","Uint8Array","position","CreateImageDataArrayBufferViews","UploadLevelsAsync","_OnImageReadyAsync","image","engine","expandTexture","rgbdPostProcess","url","generateNonLODTextures","lodTextures","cubeRtt","reject","tempTexture","createTexture","Constants","TEXTURE_NEAREST_SAMPLINGMODE","message","onEffectCreatedObservable","addOnce","effect","executeWhenCompiled","externalTextureSamplerBinding","onApply","_bindTexture","setFloat2","_features","needsInvertingBitmap","ImageBitmap","scenes","postProcessManager","directRender","restoreDefaultFramebuffer","dispose","URL","revokeObjectURL","_uploadImageToTexture","lodTexture","_texture","async","Tools","IsExponentOfTwo","ILog2","getEngine","caps","getCaps","format","TEXTUREFORMAT_RGBA","type","TEXTURETYPE_UNSIGNED_INT","generateMipMaps","_cachedAnisotropicFilteringLevel","updateTextureSamplingMode","TEXTURE_TRILINEAR_SAMPLINGMODE","textureLOD","supportRenderAndCopyToLodForFloatTextures","textureHalfFloatRender","textureHalfFloatLinearFiltering","TEXTURETYPE_HALF_FLOAT","textureFloatRender","textureFloatLinearFiltering","TEXTURETYPE_FLOAT","shaderLanguage","isWebGPU","import","PostProcess","undefined","_isRGBD","invertY","createRenderTargetCubeTexture","generateDepthBuffer","generateStencilBuffer","samplingMode","mipSlices","scale","offset","_lodGenerationOffset","maxLODIndex","lodIndex","mipmapIndex","min","max","glTextureFromLod","InternalTexture","isCube","TEXTURE_LINEAR_LINEAR","BaseTexture","_isCube","_lodTextureLow","_lodTextureMid","_lodTextureHigh","promises","bytes","blob","Blob","createObjectURL","promise","forceBitmapOverHTMLImageElement","createImageBitmap","premultiplyAlpha","then","img","Image","src","onload","catch","reason","onerror","error","push","size","pow","dataLength","Uint16Array","Float32Array","_uploadArrayBufferViewToTexture","all","_releaseTexture","_swapAndDie","isReady","UploadEnvSpherical","irradianceInfo","irradiance","sp","SphericalPolynomial","Vector3","FromArrayToRef","x","y","z","xx","yy","zz","yz","zx","xy","_sphericalPolynomial","_UpdateRGBDAsync","internalTexture","sphericalPolynomial","lodScale","lodOffset","proxyPromise","createRawCubeTexture","_compression","onRebuildCallback","_internalTexture","proxy","isAsync","_source","_bufferViewArrayArray"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{b0 as e,L as n,u as t,e as r}from"./index-BlF30_Ca.esm.min.js";const o=4,a=4,i=1,l=2,s=8,c=65536,u=c>>3,f=14,w=65537,h=1<<f,p=h-1,y=59,d=63,b=2+d-y;var v,E;!function(e){e[e.NO_COMPRESSION=0]="NO_COMPRESSION",e[e.RLE_COMPRESSION=1]="RLE_COMPRESSION",e[e.ZIPS_COMPRESSION=2]="ZIPS_COMPRESSION",e[e.ZIP_COMPRESSION=3]="ZIP_COMPRESSION",e[e.PIZ_COMPRESSION=4]="PIZ_COMPRESSION",e[e.PXR24_COMPRESSION=5]="PXR24_COMPRESSION"}(v||(v={})),function(e){e[e.INCREASING_Y=0]="INCREASING_Y",e[e.DECREASING_Y=1]="DECREASING_Y"}(E||(E={}));const S=function(){const e=new ArrayBuffer(4),n=new Float32Array(e),t=new Uint32Array(e),r=new Uint32Array(512),o=new Uint32Array(512);for(let e=0;e<256;++e){const n=e-127;n<-27?(r[e]=0,r[256|e]=32768,o[e]=24,o[256|e]=24):n<-14?(r[e]=1024>>-n-14,r[256|e]=1024>>-n-14|32768,o[e]=-n-1,o[256|e]=-n-1):n<=15?(r[e]=n+15<<10,r[256|e]=n+15<<10|32768,o[e]=13,o[256|e]=13):n<128?(r[e]=31744,r[256|e]=64512,o[e]=24,o[256|e]=24):(r[e]=31744,r[256|e]=64512,o[e]=13,o[256|e]=13)}const a=new Uint32Array(2048),i=new Uint32Array(64),l=new Uint32Array(64);for(let e=1;e<1024;++e){let n=e<<13,t=0;for(;!(8388608&n);)n<<=1,t-=8388608;n&=-8388609,t+=947912704,a[e]=n|t}for(let e=1024;e<2048;++e)a[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)i[e]=e<<23;i[31]=1199570944,i[32]=2147483648;for(let e=33;e<63;++e)i[e]=2147483648+(e-32<<23);i[63]=3347054592;for(let e=1;e<64;++e)32!==e&&(l[e]=1024);return{floatView:n,uint32View:t,baseTable:r,shiftTable:o,mantissaTable:a,exponentTable:i,offsetTable:l}}();function A(e,n){const t=new Uint8Array(e);let r=0;for(;0!=t[n.value+r];)r+=1;const o=(new TextDecoder).decode(t.slice(n.value,n.value+r));return n.value=n.value+r+1,o}function g(e,n){const t=e.getInt32(n.value,!0);return n.value+=o,t}function O(e,n){const t=e.getUint32(n.value,!0);return n.value+=o,t}function U(e,n){const t=e.getUint8(n.value);return n.value+=i,t}function I(e,n){const t=e.getUint16(n.value,!0);return n.value+=l,t}function T(e,n){const t=e[n.value];return n.value+=i,t}function R(e,n){let t;return t="getBigInt64"in DataView.prototype?Number(e.getBigInt64(n.value,!0)):e.getUint32(n.value+4,!0)+Number(e.getUint32(n.value,!0)<<32),n.value+=s,t}function m(e,n){const t=e.getFloat32(n.value,!0);return n.value+=a,t}function C(e,n){return function(e){const n=(31744&e)>>10,t=1023&e;return(e>>15?-1:1)*(n?31===n?t?NaN:1/0:Math.pow(2,n-15)*(1+t/1024):t/1024*6103515625e-14)}(I(e,n))}function M(n,t){return function(n){if(Math.abs(n)>65504)throw new Error("Value out of range.Consider using float instead of half-float.");n=e(n,-65504,65504),S.floatView[0]=n;const t=S.uint32View[0],r=t>>23&511;return S.baseTable[r]+((8388607&t)>>S.shiftTable[r])}(m(n,t))}function P(e,n,t,r){switch(t){case"string":case"stringvector":case"iccProfile":return function(e,n,t){const r=(new TextDecoder).decode(new Uint8Array(e).slice(n.value,n.value+t));return n.value=n.value+t,r}(e.buffer,n,r);case"chlist":return function(e,n,t){const r=n.value,o=[];for(;n.value<r+t-1;){const t=A(e.buffer,n),r=g(e,n),a=U(e,n);n.value+=3;const i=g(e,n),l=g(e,n);o.push({name:t,pixelType:r,pLinear:a,xSampling:i,ySampling:l})}return n.value+=1,o}(e,n,r);case"chromaticities":return function(e,n){return{redX:m(e,n),redY:m(e,n),greenX:m(e,n),greenY:m(e,n),blueX:m(e,n),blueY:m(e,n),whiteX:m(e,n),whiteY:m(e,n)}}(e,n);case"compression":return function(e,n){return U(e,n)}(e,n);case"box2i":return function(e,n){return{xMin:g(e,n),yMin:g(e,n),xMax:g(e,n),yMax:g(e,n)}}(e,n);case"lineOrder":return function(e,n){const t=U(e,n);return E[t]}(e,n);case"float":return m(e,n);case"v2f":return function(e,n){return[m(e,n),m(e,n)]}(e,n);case"v3f":return function(e,n){return[m(e,n),m(e,n),m(e,n)]}(e,n);case"int":return g(e,n);case"rational":return function(e,n){return[g(e,n),O(e,n)]}(e,n);case"timecode":return function(e,n){return[O(e,n),O(e,n)]}(e,n);case"preview":return n.value+=r,"skipped";default:return void(n.value+=r)}}function N(e){for(let n=1;n<e.length;n++){const t=e[n-1]+e[n]-128;e[n]=t}}function x(e,n){let t=0,r=Math.floor((e.length+1)/2),o=0;const a=e.length-1;for(;!(o>a||(n[o++]=e[t++],o>a));)n[o++]=e[r++]}const _=32768,k=65535;function z(e,n,t,r,o){for(;t<e;)n=n<<8|T(r,o),t+=8;return{l:n>>(t-=e)&(1<<e)-1,c:n,lc:t}}function F(e,n,t,r){return{c:e=e<<8|T(t,r),lc:n+=8}}function L(e,n,t,r,o,a,i,l,s){if(e==n){if(r<8){const e=F(t,r,o,a);t=e.c,r=e.lc}let e=t>>(r-=8);if(e=new Uint8Array([e])[0],l.value+e>s)return null;const n=i[l.value-1];for(;e-- >0;)i[l.value++]=n}else{if(!(l.value<s))return null;i[l.value++]=e}return{c:t,lc:r}}const D=new Array(59);function B(e,n,t,r,o,a){const i=n;let l=0,s=0;for(;r<=o;r++){if(i.value-n.value>t)return;let c=z(6,l,s,e,i);const u=c.l;if(l=c.c,s=c.lc,a[r]=u,u==d){if(i.value-n.value>t)throw new Error("Error in HufUnpackEncTable");c=z(8,l,s,e,i);let u=c.l+b;if(l=c.c,s=c.lc,r+u>o+1)throw new Error("Error in HufUnpackEncTable");for(;u--;)a[r++]=0;r--}else if(u>=y){let e=u-y+2;if(r+e>o+1)throw new Error("Error in HufUnpackEncTable");for(;e--;)a[r++]=0;r--}}!function(e){for(let e=0;e<=58;++e)D[e]=0;for(let n=0;n<w;++n)D[e[n]]+=1;let n=0;for(let e=58;e>0;--e){const t=n+D[e]>>1;D[e]=n,n=t}for(let n=0;n<w;++n){const t=e[n];t>0&&(e[n]=t|D[t]++<<6)}}(a)}function W(e){return 63&e}function Y(e){return e>>6}function X(e,n,t,r,o,a){const i=t.value,l=O(n,t),s=O(n,t);t.value+=4;const c=O(n,t);if(t.value+=4,l<0||l>=w||s<0||s>=w)throw new Error("Wrong HUF_ENCSIZE");const u=new Array(w),y=new Array(h);!function(e){for(let n=0;n<h;n++)e[n]={},e[n].len=0,e[n].lit=0,e[n].p=null}(y);if(B(e,t,r-(t.value-i),l,s,u),c>8*(r-(t.value-i)))throw new Error("Wrong hufUncompress");!function(e,n,t,r){for(;n<=t;n++){const t=Y(e[n]),o=W(e[n]);if(t>>o)throw new Error("Invalid table entry");if(o>f){const e=r[t>>o-f];if(e.len)throw new Error("Invalid table entry");if(e.lit++,e.p){const n=e.p;e.p=new Array(e.lit);for(let t=0;t<e.lit-1;++t)e.p[t]=n[t]}else e.p=new Array(1);e.p[e.lit-1]=n}else if(o){let e=0;for(let a=1<<f-o;a>0;a--){const a=r[(t<<f-o)+e];if(a.len||a.p)throw new Error("Invalid table entry");a.len=o,a.lit=n,e++}}}}(u,l,s,y),function(e,n,t,r,o,a,i,l,s){let c=0,u=0;const w=i,h=Math.trunc(r.value+(o+7)/8);for(;r.value<h;){let o=F(c,u,t,r);for(c=o.c,u=o.lc;u>=f;){const i=n[c>>u-f&p];if(i.len){u-=i.len;const e=L(i.lit,a,c,u,t,r,l,s,w);e&&(c=e.c,u=e.lc)}else{if(!i.p)throw new Error("hufDecode issues");let n;for(n=0;n<i.lit;n++){const f=W(e[i.p[n]]);for(;u<f&&r.value<h;)o=F(c,u,t,r),c=o.c,u=o.lc;if(u>=f&&Y(e[i.p[n]])==(c>>u-f&(1<<f)-1)){u-=f;const e=L(i.p[n],a,c,u,t,r,l,s,w);e&&(c=e.c,u=e.lc);break}}if(n==i.lit)throw new Error("HufDecode issues")}}}const y=8-o&7;for(c>>=y,u-=y;u>0;){const e=n[c<<f-u&p];if(!e.len)throw new Error("HufDecode issues");{u-=e.len;const n=L(e.lit,a,c,u,t,r,l,s,w);n&&(c=n.c,u=n.lc)}}}(u,y,e,t,c,s,a,o,{value:0})}function H(e){return 65535&e}function V(e){const n=H(e);return n>32767?n-65536:n}function Z(e,n){const t=V(e),r=V(n),o=t+(1&r)+(r>>1);return{a:o,b:o-r}}function G(e,n){const t=H(e),r=H(n),o=t-(r>>1)&k;return{a:r+o-_&k,b:o}}function j(e,n,t,r,o,a,i){const l=i<16384,s=t>o?o:t;let c,u,f=1;for(;f<=s;)f<<=1;for(f>>=1,c=f,f>>=1;f>=1;){u=0;const i=u+a*(o-c),s=a*f,w=a*c,h=r*f,p=r*c;let y,d,b,v;for(;u<=i;u+=w){let o=u;const a=u+r*(t-c);for(;o<=a;o+=p){const t=o+h,r=o+s,a=r+h;if(l){let i=Z(e[o+n],e[r+n]);y=i.a,b=i.b,i=Z(e[t+n],e[a+n]),d=i.a,v=i.b,i=Z(y,d),e[o+n]=i.a,e[t+n]=i.b,i=Z(b,v),e[r+n]=i.a,e[a+n]=i.b}else{let i=G(e[o+n],e[r+n]);y=i.a,b=i.b,i=G(e[t+n],e[a+n]),d=i.a,v=i.b,i=G(y,d),e[o+n]=i.a,e[t+n]=i.b,i=G(b,v),e[r+n]=i.a,e[a+n]=i.b}}if(t&f){const t=o+s;let r;r=l?Z(e[o+n],e[t+n]):G(e[o+n],e[t+n]),y=r.a,e[t+n]=r.b,e[o+n]=y}}if(o&f){let o=u;const a=u+r*(t-c);for(;o<=a;o+=p){const t=o+h;let r;r=l?Z(e[o+n],e[t+n]):G(e[o+n],e[t+n]),y=r.a,e[t+n]=r.b,e[o+n]=y}}c=f,f>>=1}return u}function $(e){return new DataView(e.array.buffer,e.offset.value,e.size)}function q(e){const n=e.viewer.buffer.slice(e.offset.value,e.offset.value+e.size),t=new Uint8Array(function(e){let n=e.byteLength;const t=new Array;let r=0;const o=new DataView(e);for(;n>0;){const e=o.getInt8(r++);if(e<0){const a=-e;n-=a+1;for(let e=0;e<a;e++)t.push(o.getUint8(r++))}else{const a=e;n-=2;const i=o.getUint8(r++);for(let e=0;e<a+1;e++)t.push(i)}}return t}(n)),r=new Uint8Array(t.length);return N(t),x(t,r),new DataView(r.buffer)}function J(e){const n=e.array.slice(e.offset.value,e.offset.value+e.size),t=fflate.unzlibSync(n),r=new Uint8Array(t.length);return N(t),x(t,r),new DataView(r.buffer)}function K(e){const n=e.array.slice(e.offset.value,e.offset.value+e.size),t=fflate.unzlibSync(n),r=e.lines*e.channels*e.width,o=1==e.type?new Uint16Array(r):new Uint32Array(r);let a=0,i=0;const l=new Array(4);for(let n=0;n<e.lines;n++)for(let n=0;n<e.channels;n++){let n=0;switch(e.type){case 1:l[0]=a,l[1]=l[0]+e.width,a=l[1]+e.width;for(let r=0;r<e.width;++r){n+=t[l[0]++]<<8|t[l[1]++],o[i]=n,i++}break;case 2:l[0]=a,l[1]=l[0]+e.width,l[2]=l[1]+e.width,a=l[2]+e.width;for(let r=0;r<e.width;++r){n+=t[l[0]++]<<24|t[l[1]++]<<16|t[l[2]++]<<8,o[i]=n,i++}}}return new DataView(o.buffer)}function Q(e){const n=e.viewer,t={value:e.offset.value},r=new Uint16Array(e.width*e.scanlineBlockSize*(e.channels*e.type)),o=new Uint8Array(u);let a=0;const i=new Array(e.channels);for(let n=0;n<e.channels;n++)i[n]={},i[n].start=a,i[n].end=i[n].start,i[n].nx=e.width,i[n].ny=e.lines,i[n].size=e.type,a+=i[n].nx*i[n].ny*i[n].size;const s=I(n,t),f=I(n,t);if(f>=u)throw new Error("Wrong PIZ_COMPRESSION BITMAP_SIZE");if(s<=f)for(let e=0;e<f-s+1;e++)o[e+s]=U(n,t);const w=new Uint16Array(c),h=function(e,n){let t=0;for(let r=0;r<c;++r)(0==r||e[r>>3]&1<<(7&r))&&(n[t++]=r);const r=t-1;for(;t<c;)n[t++]=0;return r}(o,w),p=O(n,t);X(e.array,n,t,p,r,a);for(let n=0;n<e.channels;++n){const e=i[n];for(let t=0;t<i[n].size;++t)j(r,e.start+t,e.nx,e.size,e.ny,e.nx*e.size,h)}!function(e,n,t){for(let r=0;r<t;++r)n[r]=e[n[r]]}(w,r,a);let y=0;const d=new Uint8Array(r.buffer.byteLength);for(let n=0;n<e.lines;n++)for(let n=0;n<e.channels;n++){const e=i[n],t=e.nx*e.size,o=new Uint8Array(r.buffer,e.end*l,t*l);d.set(o,y),y+=t*l,e.end+=t}return new DataView(d.buffer)}var ee;!function(e){e[e.Float=0]="Float",e[e.HalfFloat=1]="HalfFloat"}(ee||(ee={}));class ne{}ne.DefaultOutputType=ee.HalfFloat,ne.FFLATEUrl="https://unpkg.com/fflate@0.8.2";class te{constructor(){this.supportCascades=!1}loadCubeData(e,n,t,r,o){throw".exr not supported in Cube."}async loadData(e,o,i){const s=new DataView(e.buffer),c={value:0},u=function(e,t){if(20000630!=e.getUint32(0,!0))throw new Error("Incorrect OpenEXR format");const r=e.getUint8(4),o=e.getUint8(5),a={singleTile:!!(2&o),longName:!!(4&o),deepFormat:!!(8&o),multiPart:!!(16&o)};t.value=8;const i={};let l=!0;for(;l;){const r=A(e.buffer,t);if(r){const o=A(e.buffer,t),a=P(e,t,o,O(e,t));void 0===a?n.Warn(`Unknown header attribute type ${o}'.`):i[r]=a}else l=!1}if(-5&o)throw new Error("Unsupported file format");return{version:r,spec:a,...i}}(s,c),f=await async function(e,n,o,i){const s={size:0,viewer:n,array:new Uint8Array(n.buffer),offset:o,width:e.dataWindow.xMax-e.dataWindow.xMin+1,height:e.dataWindow.yMax-e.dataWindow.yMin+1,channels:e.channels.length,channelLineOffsets:{},scanOrder:()=>0,bytesPerLine:0,outLineWidth:0,lines:0,scanlineBlockSize:0,inputSize:null,type:0,uncompress:null,getter:()=>0,format:t.TEXTUREFORMAT_RGBA,outputChannels:0,decodeChannels:{},blockCount:null,byteArray:null,linearSpace:!1,textureType:0};switch(e.compression){case v.NO_COMPRESSION:s.lines=1,s.uncompress=$;break;case v.RLE_COMPRESSION:s.lines=1,s.uncompress=q;break;case v.ZIPS_COMPRESSION:s.lines=1,s.uncompress=J,await r.LoadScriptAsync(ne.FFLATEUrl);break;case v.ZIP_COMPRESSION:s.lines=16,s.uncompress=J,await r.LoadScriptAsync(ne.FFLATEUrl);break;case v.PIZ_COMPRESSION:s.lines=32,s.uncompress=Q;break;case v.PXR24_COMPRESSION:s.lines=16,s.uncompress=K,await r.LoadScriptAsync(ne.FFLATEUrl);break;default:throw new Error(v[e.compression]+" is unsupported")}s.scanlineBlockSize=s.lines;const c={};for(const n of e.channels)switch(n.name){case"Y":case"R":case"G":case"B":case"A":c[n.name]=!0,s.type=n.pixelType}let u=!1;if(c.R&&c.G&&c.B)u=!c.A,s.outputChannels=4,s.decodeChannels={R:0,G:1,B:2,A:3};else{if(!c.Y)throw new Error("EXRLoader.parse: file contains unsupported data channels.");s.outputChannels=1,s.decodeChannels={Y:0}}if(1===s.type)switch(i){case ee.Float:s.getter=C,s.inputSize=l;break;case ee.HalfFloat:s.getter=I,s.inputSize=l}else{if(2!==s.type)throw new Error("Unsupported pixelType "+s.type+" for "+e.compression);switch(i){case ee.Float:s.getter=m,s.inputSize=a;break;case ee.HalfFloat:s.getter=M,s.inputSize=a}}s.blockCount=s.height/s.scanlineBlockSize;for(let e=0;e<s.blockCount;e++)R(n,o);const f=s.width*s.height*s.outputChannels;switch(i){case ee.Float:s.byteArray=new Float32Array(f),s.textureType=t.TEXTURETYPE_FLOAT,u&&s.byteArray.fill(1,0,f);break;case ee.HalfFloat:s.byteArray=new Uint16Array(f),s.textureType=t.TEXTURETYPE_HALF_FLOAT,u&&s.byteArray.fill(15360,0,f);break;default:throw new Error("Unsupported type: "+i)}let w=0;for(const n of e.channels)void 0!==s.decodeChannels[n.name]&&(s.channelLineOffsets[n.name]=w*s.width),w+=2*n.pixelType;return s.bytesPerLine=s.width*w,s.outLineWidth=s.width*s.outputChannels,"INCREASING_Y"===e.lineOrder?s.scanOrder=e=>e:s.scanOrder=e=>s.height-1-e,4==s.outputChannels?(s.format=t.TEXTUREFORMAT_RGBA,s.linearSpace=!0):(s.format=t.TEXTUREFORMAT_R,s.linearSpace=!1),s}(u,s,c,ne.DefaultOutputType);!function(e,n,t,r){const o={value:0};for(let a=0;a<e.height/e.scanlineBlockSize;a++){const i=g(t,r)-n.dataWindow.yMin;e.size=O(t,r),e.lines=i+e.scanlineBlockSize>e.height?e.height-i:e.scanlineBlockSize;const l=e.size<e.lines*e.bytesPerLine&&e.uncompress?e.uncompress(e):$(e);r.value+=e.size;for(let t=0;t<e.scanlineBlockSize;t++){const r=a*e.scanlineBlockSize,i=t+e.scanOrder(r);if(i>=e.height)continue;const s=t*e.bytesPerLine,c=(e.height-1-i)*e.outLineWidth;for(let t=0;t<e.channels;t++){const r=n.channels[t].name,a=e.channelLineOffsets[r],i=e.decodeChannels[r];if(void 0!==i){o.value=s+a;for(let n=0;n<e.width;n++){const t=c+n*e.outputChannels+i;e.byteArray&&(e.byteArray[t]=e.getter(l,o))}}}}}}(f,u,s,c);i(u.dataWindow.xMax-u.dataWindow.xMin+1,u.dataWindow.yMax-u.dataWindow.yMin+1,o.generateMipMaps,!1,(()=>{const e=o.getEngine();o.format=u.format,o.type=f.textureType,o.invertY=!1,o._gammaSpace=!u.linearSpace,f.byteArray&&e._uploadDataToTextureDirectly(o,f.byteArray,0,0,void 0,!0)}))}}export{te as _ExrTextureLoader};
|
|
2
|
-
//# sourceMappingURL=exrTextureLoader-B5OMTxNT.esm.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exrTextureLoader-B5OMTxNT.esm.min.js","sources":["../../../../../dev/core/dist/Materials/Textures/Loaders/EXR/exrLoader.interfaces.js","../../../../../dev/core/dist/Materials/Textures/Loaders/EXR/exrLoader.core.js","../../../../../dev/core/dist/Materials/Textures/Loaders/EXR/exrLoader.compression.huf.js","../../../../../dev/core/dist/Materials/Textures/Loaders/EXR/exrLoader.compression.js","../../../../../dev/core/dist/Materials/Textures/Loaders/EXR/exrLoader.compression.rle.js","../../../../../dev/core/dist/Materials/Textures/Loaders/EXR/exrLoader.configuration.js","../../../../../dev/core/dist/Materials/Textures/Loaders/exrTextureLoader.js","../../../../../dev/core/dist/Materials/Textures/Loaders/EXR/exrLoader.header.js","../../../../../dev/core/dist/Materials/Textures/Loaders/EXR/exrLoader.decoder.js"],"sourcesContent":["export const INT32_SIZE = 4;\nexport const FLOAT32_SIZE = 4;\nexport const INT8_SIZE = 1;\nexport const INT16_SIZE = 2;\nexport const ULONG_SIZE = 8;\nexport const USHORT_RANGE = 1 << 16;\nexport const BITMAP_SIZE = USHORT_RANGE >> 3;\nexport const HUF_ENCBITS = 16;\nexport const HUF_DECBITS = 14;\nexport const HUF_ENCSIZE = (1 << HUF_ENCBITS) + 1;\nexport const HUF_DECSIZE = 1 << HUF_DECBITS;\nexport const HUF_DECMASK = HUF_DECSIZE - 1;\nexport const SHORT_ZEROCODE_RUN = 59;\nexport const LONG_ZEROCODE_RUN = 63;\nexport const SHORTEST_LONG_RUN = 2 + LONG_ZEROCODE_RUN - SHORT_ZEROCODE_RUN;\n//# sourceMappingURL=exrLoader.interfaces.js.map","import { Clamp } from \"core/Maths/math.scalar.functions\";\nimport { FLOAT32_SIZE, INT16_SIZE, INT32_SIZE, INT8_SIZE, ULONG_SIZE } from \"./exrLoader.interfaces\";\n/**\n * Inspired by https://github.com/sciecode/three.js/blob/dev/examples/jsm/loaders/EXRLoader.js\n * Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita\n * implementation.\n */\n// /*\n// Copyright (c) 2014 - 2017, Syoyo Fujita\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of the Syoyo Fujita nor the\n// names of its contributors may be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// */\n// // TinyEXR contains some OpenEXR code, which is licensed under ------------\n// ///////////////////////////////////////////////////////////////////////////\n// //\n// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas\n// // Digital Ltd. LLC\n// //\n// // All rights reserved.\n// //\n// // Redistribution and use in source and binary forms, with or without\n// // modification, are permitted provided that the following conditions are\n// // met:\n// // * Redistributions of source code must retain the above copyright\n// // notice, this list of conditions and the following disclaimer.\n// // * Redistributions in binary form must reproduce the above\n// // copyright notice, this list of conditions and the following disclaimer\n// // in the documentation and/or other materials provided with the\n// // distribution.\n// // * Neither the name of Industrial Light & Magic nor the names of\n// // its contributors may be used to endorse or promote products derived\n// // from this software without specific prior written permission.\n// //\n// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// // \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// //\n// ///////////////////////////////////////////////////////////////////////////\n// // End of OpenEXR license -------------------------------------------------\nexport var CompressionCodes;\n(function (CompressionCodes) {\n CompressionCodes[CompressionCodes[\"NO_COMPRESSION\"] = 0] = \"NO_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"RLE_COMPRESSION\"] = 1] = \"RLE_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"ZIPS_COMPRESSION\"] = 2] = \"ZIPS_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"ZIP_COMPRESSION\"] = 3] = \"ZIP_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"PIZ_COMPRESSION\"] = 4] = \"PIZ_COMPRESSION\";\n CompressionCodes[CompressionCodes[\"PXR24_COMPRESSION\"] = 5] = \"PXR24_COMPRESSION\";\n})(CompressionCodes || (CompressionCodes = {}));\nvar LineOrders;\n(function (LineOrders) {\n LineOrders[LineOrders[\"INCREASING_Y\"] = 0] = \"INCREASING_Y\";\n LineOrders[LineOrders[\"DECREASING_Y\"] = 1] = \"DECREASING_Y\";\n})(LineOrders || (LineOrders = {}));\nconst _tables = _GenerateTables();\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\nfunction _GenerateTables() {\n // float32 to float16 helpers\n const buffer = new ArrayBuffer(4);\n const floatView = new Float32Array(buffer);\n const uint32View = new Uint32Array(buffer);\n const baseTable = new Uint32Array(512);\n const shiftTable = new Uint32Array(512);\n for (let i = 0; i < 256; ++i) {\n const e = i - 127;\n // very small number (0, -0)\n if (e < -27) {\n baseTable[i] = 0x0000;\n baseTable[i | 0x100] = 0x8000;\n shiftTable[i] = 24;\n shiftTable[i | 0x100] = 24;\n // small number (denorm)\n }\n else if (e < -14) {\n baseTable[i] = 0x0400 >> (-e - 14);\n baseTable[i | 0x100] = (0x0400 >> (-e - 14)) | 0x8000;\n shiftTable[i] = -e - 1;\n shiftTable[i | 0x100] = -e - 1;\n // normal number\n }\n else if (e <= 15) {\n baseTable[i] = (e + 15) << 10;\n baseTable[i | 0x100] = ((e + 15) << 10) | 0x8000;\n shiftTable[i] = 13;\n shiftTable[i | 0x100] = 13;\n // large number (Infinity, -Infinity)\n }\n else if (e < 128) {\n baseTable[i] = 0x7c00;\n baseTable[i | 0x100] = 0xfc00;\n shiftTable[i] = 24;\n shiftTable[i | 0x100] = 24;\n // stay (NaN, Infinity, -Infinity)\n }\n else {\n baseTable[i] = 0x7c00;\n baseTable[i | 0x100] = 0xfc00;\n shiftTable[i] = 13;\n shiftTable[i | 0x100] = 13;\n }\n }\n // float16 to float32 helpers\n const mantissaTable = new Uint32Array(2048);\n const exponentTable = new Uint32Array(64);\n const offsetTable = new Uint32Array(64);\n for (let i = 1; i < 1024; ++i) {\n let m = i << 13; // zero pad mantissa bits\n let e = 0; // zero exponent\n // normalized\n while ((m & 0x00800000) === 0) {\n m <<= 1;\n e -= 0x00800000; // decrement exponent\n }\n m &= ~0x00800000; // clear leading 1 bit\n e += 0x38800000; // adjust bias\n mantissaTable[i] = m | e;\n }\n for (let i = 1024; i < 2048; ++i) {\n mantissaTable[i] = 0x38000000 + ((i - 1024) << 13);\n }\n for (let i = 1; i < 31; ++i) {\n exponentTable[i] = i << 23;\n }\n exponentTable[31] = 0x47800000;\n exponentTable[32] = 0x80000000;\n for (let i = 33; i < 63; ++i) {\n exponentTable[i] = 0x80000000 + ((i - 32) << 23);\n }\n exponentTable[63] = 0xc7800000;\n for (let i = 1; i < 64; ++i) {\n if (i !== 32) {\n offsetTable[i] = 1024;\n }\n }\n return {\n floatView: floatView,\n uint32View: uint32View,\n baseTable: baseTable,\n shiftTable: shiftTable,\n mantissaTable: mantissaTable,\n exponentTable: exponentTable,\n offsetTable: offsetTable,\n };\n}\n/**\n * Parse a null terminated string from the buffer\n * @param buffer buffer to read from\n * @param offset current offset in the buffer\n * @returns a string\n */\nexport function ParseNullTerminatedString(buffer, offset) {\n const uintBuffer = new Uint8Array(buffer);\n let endOffset = 0;\n while (uintBuffer[offset.value + endOffset] != 0) {\n endOffset += 1;\n }\n const stringValue = new TextDecoder().decode(uintBuffer.slice(offset.value, offset.value + endOffset));\n offset.value = offset.value + endOffset + 1;\n return stringValue;\n}\n/**\n * Parse an int32 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns an int32\n */\nexport function ParseInt32(dataView, offset) {\n const value = dataView.getInt32(offset.value, true);\n offset.value += INT32_SIZE;\n return value;\n}\n/**\n * Parse an uint32 from the buffer\n * @param dataView data view to read from\n * @param offset offset in the data view\n * @returns an uint32\n */\nexport function ParseUint32(dataView, offset) {\n const value = dataView.getUint32(offset.value, true);\n offset.value += INT32_SIZE;\n return value;\n}\n/**\n * Parse an uint8 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns an uint8\n */\nexport function ParseUint8(dataView, offset) {\n const value = dataView.getUint8(offset.value);\n offset.value += INT8_SIZE;\n return value;\n}\n/**\n * Parse an uint16 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns an uint16\n */\nexport function ParseUint16(dataView, offset) {\n const value = dataView.getUint16(offset.value, true);\n offset.value += INT16_SIZE;\n return value;\n}\n/**\n * Parse an uint8 from an array buffer\n * @param array array buffer\n * @param offset current offset in the data view\n * @returns an uint16\n */\nexport function ParseUint8Array(array, offset) {\n const value = array[offset.value];\n offset.value += INT8_SIZE;\n return value;\n}\n/**\n * Parse an int64 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns an int64\n */\nexport function ParseInt64(dataView, offset) {\n let int;\n if (\"getBigInt64\" in DataView.prototype) {\n int = Number(dataView.getBigInt64(offset.value, true));\n }\n else {\n int = dataView.getUint32(offset.value + 4, true) + Number(dataView.getUint32(offset.value, true) << 32);\n }\n offset.value += ULONG_SIZE;\n return int;\n}\n/**\n * Parse a float32 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns a float32\n */\nexport function ParseFloat32(dataView, offset) {\n const value = dataView.getFloat32(offset.value, true);\n offset.value += FLOAT32_SIZE;\n return value;\n}\n/**\n * Parse a float16 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns a float16\n */\nexport function ParseFloat16(dataView, offset) {\n return DecodeFloat16(ParseUint16(dataView, offset));\n}\nfunction DecodeFloat16(binary) {\n const exponent = (binary & 0x7c00) >> 10;\n const fraction = binary & 0x03ff;\n return ((binary >> 15 ? -1 : 1) *\n (exponent ? (exponent === 0x1f ? (fraction ? NaN : Infinity) : Math.pow(2, exponent - 15) * (1 + fraction / 0x400)) : 6.103515625e-5 * (fraction / 0x400)));\n}\nfunction ToHalfFloat(value) {\n if (Math.abs(value) > 65504) {\n throw new Error(\"Value out of range.Consider using float instead of half-float.\");\n }\n value = Clamp(value, -65504, 65504);\n _tables.floatView[0] = value;\n const f = _tables.uint32View[0];\n const e = (f >> 23) & 0x1ff;\n return _tables.baseTable[e] + ((f & 0x007fffff) >> _tables.shiftTable[e]);\n}\n/**\n * Decode a float32 from the buffer\n * @param dataView dataview on the data\n * @param offset current offset in the data view\n * @returns a float32\n */\nexport function DecodeFloat32(dataView, offset) {\n return ToHalfFloat(ParseFloat32(dataView, offset));\n}\nfunction ParseFixedLengthString(buffer, offset, size) {\n const stringValue = new TextDecoder().decode(new Uint8Array(buffer).slice(offset.value, offset.value + size));\n offset.value = offset.value + size;\n return stringValue;\n}\nfunction ParseRational(dataView, offset) {\n const x = ParseInt32(dataView, offset);\n const y = ParseUint32(dataView, offset);\n return [x, y];\n}\nfunction ParseTimecode(dataView, offset) {\n const x = ParseUint32(dataView, offset);\n const y = ParseUint32(dataView, offset);\n return [x, y];\n}\nfunction ParseV2f(dataView, offset) {\n const x = ParseFloat32(dataView, offset);\n const y = ParseFloat32(dataView, offset);\n return [x, y];\n}\nfunction ParseV3f(dataView, offset) {\n const x = ParseFloat32(dataView, offset);\n const y = ParseFloat32(dataView, offset);\n const z = ParseFloat32(dataView, offset);\n return [x, y, z];\n}\nfunction ParseChlist(dataView, offset, size) {\n const startOffset = offset.value;\n const channels = [];\n while (offset.value < startOffset + size - 1) {\n const name = ParseNullTerminatedString(dataView.buffer, offset);\n const pixelType = ParseInt32(dataView, offset);\n const pLinear = ParseUint8(dataView, offset);\n offset.value += 3; // reserved, three chars\n const xSampling = ParseInt32(dataView, offset);\n const ySampling = ParseInt32(dataView, offset);\n channels.push({\n name: name,\n pixelType: pixelType,\n pLinear: pLinear,\n xSampling: xSampling,\n ySampling: ySampling,\n });\n }\n offset.value += 1;\n return channels;\n}\nfunction ParseChromaticities(dataView, offset) {\n const redX = ParseFloat32(dataView, offset);\n const redY = ParseFloat32(dataView, offset);\n const greenX = ParseFloat32(dataView, offset);\n const greenY = ParseFloat32(dataView, offset);\n const blueX = ParseFloat32(dataView, offset);\n const blueY = ParseFloat32(dataView, offset);\n const whiteX = ParseFloat32(dataView, offset);\n const whiteY = ParseFloat32(dataView, offset);\n return { redX: redX, redY: redY, greenX: greenX, greenY: greenY, blueX: blueX, blueY: blueY, whiteX: whiteX, whiteY: whiteY };\n}\nfunction ParseCompression(dataView, offset) {\n return ParseUint8(dataView, offset);\n}\nfunction ParseBox2i(dataView, offset) {\n const xMin = ParseInt32(dataView, offset);\n const yMin = ParseInt32(dataView, offset);\n const xMax = ParseInt32(dataView, offset);\n const yMax = ParseInt32(dataView, offset);\n return { xMin: xMin, yMin: yMin, xMax: xMax, yMax: yMax };\n}\nfunction ParseLineOrder(dataView, offset) {\n const lineOrder = ParseUint8(dataView, offset);\n return LineOrders[lineOrder];\n}\n/**\n * Parse a value from the data view\n * @param dataView defines the data view to read from\n * @param offset defines the current offset in the data view\n * @param type defines the type of the value to read\n * @param size defines the size of the value to read\n * @returns the parsed value\n */\nexport function ParseValue(dataView, offset, type, size) {\n switch (type) {\n case \"string\":\n case \"stringvector\":\n case \"iccProfile\":\n return ParseFixedLengthString(dataView.buffer, offset, size);\n case \"chlist\":\n return ParseChlist(dataView, offset, size);\n case \"chromaticities\":\n return ParseChromaticities(dataView, offset);\n case \"compression\":\n return ParseCompression(dataView, offset);\n case \"box2i\":\n return ParseBox2i(dataView, offset);\n case \"lineOrder\":\n return ParseLineOrder(dataView, offset);\n case \"float\":\n return ParseFloat32(dataView, offset);\n case \"v2f\":\n return ParseV2f(dataView, offset);\n case \"v3f\":\n return ParseV3f(dataView, offset);\n case \"int\":\n return ParseInt32(dataView, offset);\n case \"rational\":\n return ParseRational(dataView, offset);\n case \"timecode\":\n return ParseTimecode(dataView, offset);\n case \"preview\":\n offset.value += size;\n return \"skipped\";\n default:\n offset.value += size;\n return undefined;\n }\n}\n/**\n * Revert the endianness of the data\n * @param source defines the source\n */\nexport function Predictor(source) {\n for (let t = 1; t < source.length; t++) {\n const d = source[t - 1] + source[t] - 128;\n source[t] = d;\n }\n}\n/**\n * Interleave pixels\n * @param source defines the data source\n * @param out defines the output\n */\nexport function InterleaveScalar(source, out) {\n let t1 = 0;\n let t2 = Math.floor((source.length + 1) / 2);\n let s = 0;\n const stop = source.length - 1;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (s > stop) {\n break;\n }\n out[s++] = source[t1++];\n if (s > stop) {\n break;\n }\n out[s++] = source[t2++];\n }\n}\n//# sourceMappingURL=exrLoader.core.js.map","import { ParseUint32, ParseUint8Array } from \"./exrLoader.core\";\nimport { HUF_DECBITS, HUF_DECMASK, HUF_DECSIZE, HUF_ENCSIZE, LONG_ZEROCODE_RUN, SHORT_ZEROCODE_RUN, SHORTEST_LONG_RUN, USHORT_RANGE } from \"./exrLoader.interfaces\";\n/**\n * Inspired by https://github.com/sciecode/three.js/blob/dev/examples/jsm/loaders/EXRLoader.js\n * Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita\n * implementation.\n */\n// /*\n// Copyright (c) 2014 - 2017, Syoyo Fujita\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of the Syoyo Fujita nor the\n// names of its contributors may be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// */\n// // TinyEXR contains some OpenEXR code, which is licensed under ------------\n// ///////////////////////////////////////////////////////////////////////////\n// //\n// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas\n// // Digital Ltd. LLC\n// //\n// // All rights reserved.\n// //\n// // Redistribution and use in source and binary forms, with or without\n// // modification, are permitted provided that the following conditions are\n// // met:\n// // * Redistributions of source code must retain the above copyright\n// // notice, this list of conditions and the following disclaimer.\n// // * Redistributions in binary form must reproduce the above\n// // copyright notice, this list of conditions and the following disclaimer\n// // in the documentation and/or other materials provided with the\n// // distribution.\n// // * Neither the name of Industrial Light & Magic nor the names of\n// // its contributors may be used to endorse or promote products derived\n// // from this software without specific prior written permission.\n// //\n// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// // \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// //\n// ///////////////////////////////////////////////////////////////////////////\n// // End of OpenEXR license -------------------------------------------------\nconst NBITS = 16;\nconst A_OFFSET = 1 << (NBITS - 1);\nconst MOD_MASK = (1 << NBITS) - 1;\n/** @internal */\nexport function ReverseLutFromBitmap(bitmap, lut) {\n let k = 0;\n for (let i = 0; i < USHORT_RANGE; ++i) {\n if (i == 0 || bitmap[i >> 3] & (1 << (i & 7))) {\n lut[k++] = i;\n }\n }\n const n = k - 1;\n while (k < USHORT_RANGE)\n lut[k++] = 0;\n return n;\n}\nfunction HufClearDecTable(hdec) {\n for (let i = 0; i < HUF_DECSIZE; i++) {\n hdec[i] = {};\n hdec[i].len = 0;\n hdec[i].lit = 0;\n hdec[i].p = null;\n }\n}\nfunction GetBits(nBits, c, lc, array, offset) {\n while (lc < nBits) {\n c = (c << 8) | ParseUint8Array(array, offset);\n lc += 8;\n }\n lc -= nBits;\n return {\n l: (c >> lc) & ((1 << nBits) - 1),\n c,\n lc,\n };\n}\nfunction GetChar(c, lc, array, offset) {\n c = (c << 8) | ParseUint8Array(array, offset);\n lc += 8;\n return {\n c,\n lc,\n };\n}\nfunction GetCode(po, rlc, c, lc, array, offset, outBuffer, outBufferOffset, outBufferEndOffset) {\n if (po == rlc) {\n if (lc < 8) {\n const gc = GetChar(c, lc, array, offset);\n c = gc.c;\n lc = gc.lc;\n }\n lc -= 8;\n let cs = c >> lc;\n cs = new Uint8Array([cs])[0];\n if (outBufferOffset.value + cs > outBufferEndOffset) {\n return null;\n }\n const s = outBuffer[outBufferOffset.value - 1];\n while (cs-- > 0) {\n outBuffer[outBufferOffset.value++] = s;\n }\n }\n else if (outBufferOffset.value < outBufferEndOffset) {\n outBuffer[outBufferOffset.value++] = po;\n }\n else {\n return null;\n }\n return { c, lc };\n}\nconst HufTableBuffer = new Array(59);\nfunction HufCanonicalCodeTable(hcode) {\n for (let i = 0; i <= 58; ++i)\n HufTableBuffer[i] = 0;\n for (let i = 0; i < HUF_ENCSIZE; ++i)\n HufTableBuffer[hcode[i]] += 1;\n let c = 0;\n for (let i = 58; i > 0; --i) {\n const nc = (c + HufTableBuffer[i]) >> 1;\n HufTableBuffer[i] = c;\n c = nc;\n }\n for (let i = 0; i < HUF_ENCSIZE; ++i) {\n const l = hcode[i];\n if (l > 0)\n hcode[i] = l | (HufTableBuffer[l]++ << 6);\n }\n}\nfunction HufUnpackEncTable(array, offset, ni, im, iM, hcode) {\n const p = offset;\n let c = 0;\n let lc = 0;\n for (; im <= iM; im++) {\n if (p.value - offset.value > ni) {\n return;\n }\n let gb = GetBits(6, c, lc, array, p);\n const l = gb.l;\n c = gb.c;\n lc = gb.lc;\n hcode[im] = l;\n if (l == LONG_ZEROCODE_RUN) {\n if (p.value - offset.value > ni) {\n throw new Error(\"Error in HufUnpackEncTable\");\n }\n gb = GetBits(8, c, lc, array, p);\n let zerun = gb.l + SHORTEST_LONG_RUN;\n c = gb.c;\n lc = gb.lc;\n if (im + zerun > iM + 1) {\n throw new Error(\"Error in HufUnpackEncTable\");\n }\n while (zerun--)\n hcode[im++] = 0;\n im--;\n }\n else if (l >= SHORT_ZEROCODE_RUN) {\n let zerun = l - SHORT_ZEROCODE_RUN + 2;\n if (im + zerun > iM + 1) {\n throw new Error(\"Error in HufUnpackEncTable\");\n }\n while (zerun--)\n hcode[im++] = 0;\n im--;\n }\n }\n HufCanonicalCodeTable(hcode);\n}\nfunction HufLength(code) {\n return code & 63;\n}\nfunction HufCode(code) {\n return code >> 6;\n}\nfunction HufBuildDecTable(hcode, im, iM, hdecod) {\n for (; im <= iM; im++) {\n const c = HufCode(hcode[im]);\n const l = HufLength(hcode[im]);\n if (c >> l) {\n throw new Error(\"Invalid table entry\");\n }\n if (l > HUF_DECBITS) {\n const pl = hdecod[c >> (l - HUF_DECBITS)];\n if (pl.len) {\n throw new Error(\"Invalid table entry\");\n }\n pl.lit++;\n if (pl.p) {\n const p = pl.p;\n pl.p = new Array(pl.lit);\n for (let i = 0; i < pl.lit - 1; ++i) {\n pl.p[i] = p[i];\n }\n }\n else {\n pl.p = new Array(1);\n }\n pl.p[pl.lit - 1] = im;\n }\n else if (l) {\n let plOffset = 0;\n for (let i = 1 << (HUF_DECBITS - l); i > 0; i--) {\n const pl = hdecod[(c << (HUF_DECBITS - l)) + plOffset];\n if (pl.len || pl.p) {\n throw new Error(\"Invalid table entry\");\n }\n pl.len = l;\n pl.lit = im;\n plOffset++;\n }\n }\n }\n return true;\n}\nfunction HufDecode(encodingTable, decodingTable, array, offset, ni, rlc, no, outBuffer, outOffset) {\n let c = 0;\n let lc = 0;\n const outBufferEndOffset = no;\n const inOffsetEnd = Math.trunc(offset.value + (ni + 7) / 8);\n while (offset.value < inOffsetEnd) {\n let gc = GetChar(c, lc, array, offset);\n c = gc.c;\n lc = gc.lc;\n while (lc >= HUF_DECBITS) {\n const index = (c >> (lc - HUF_DECBITS)) & HUF_DECMASK;\n const pl = decodingTable[index];\n if (pl.len) {\n lc -= pl.len;\n const gCode = GetCode(pl.lit, rlc, c, lc, array, offset, outBuffer, outOffset, outBufferEndOffset);\n if (gCode) {\n c = gCode.c;\n lc = gCode.lc;\n }\n }\n else {\n if (!pl.p) {\n throw new Error(\"hufDecode issues\");\n }\n let j;\n for (j = 0; j < pl.lit; j++) {\n const l = HufLength(encodingTable[pl.p[j]]);\n while (lc < l && offset.value < inOffsetEnd) {\n gc = GetChar(c, lc, array, offset);\n c = gc.c;\n lc = gc.lc;\n }\n if (lc >= l) {\n if (HufCode(encodingTable[pl.p[j]]) == ((c >> (lc - l)) & ((1 << l) - 1))) {\n lc -= l;\n const gCode = GetCode(pl.p[j], rlc, c, lc, array, offset, outBuffer, outOffset, outBufferEndOffset);\n if (gCode) {\n c = gCode.c;\n lc = gCode.lc;\n }\n break;\n }\n }\n }\n if (j == pl.lit) {\n throw new Error(\"HufDecode issues\");\n }\n }\n }\n }\n const i = (8 - ni) & 7;\n c >>= i;\n lc -= i;\n while (lc > 0) {\n const pl = decodingTable[(c << (HUF_DECBITS - lc)) & HUF_DECMASK];\n if (pl.len) {\n lc -= pl.len;\n const gCode = GetCode(pl.lit, rlc, c, lc, array, offset, outBuffer, outOffset, outBufferEndOffset);\n if (gCode) {\n c = gCode.c;\n lc = gCode.lc;\n }\n }\n else {\n throw new Error(\"HufDecode issues\");\n }\n }\n return true;\n}\n/** @internal */\nexport function HufUncompress(array, dataView, offset, nCompressed, outBuffer, nRaw) {\n const outOffset = { value: 0 };\n const initialInOffset = offset.value;\n const im = ParseUint32(dataView, offset);\n const iM = ParseUint32(dataView, offset);\n offset.value += 4;\n const nBits = ParseUint32(dataView, offset);\n offset.value += 4;\n if (im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE) {\n throw new Error(\"Wrong HUF_ENCSIZE\");\n }\n const freq = new Array(HUF_ENCSIZE);\n const hdec = new Array(HUF_DECSIZE);\n HufClearDecTable(hdec);\n const ni = nCompressed - (offset.value - initialInOffset);\n HufUnpackEncTable(array, offset, ni, im, iM, freq);\n if (nBits > 8 * (nCompressed - (offset.value - initialInOffset))) {\n throw new Error(\"Wrong hufUncompress\");\n }\n HufBuildDecTable(freq, im, iM, hdec);\n HufDecode(freq, hdec, array, offset, nBits, iM, nRaw, outBuffer, outOffset);\n}\nfunction UInt16(value) {\n return value & 0xffff;\n}\nfunction Int16(value) {\n const ref = UInt16(value);\n return ref > 0x7fff ? ref - 0x10000 : ref;\n}\nfunction Wdec14(l, h) {\n const ls = Int16(l);\n const hs = Int16(h);\n const hi = hs;\n const ai = ls + (hi & 1) + (hi >> 1);\n const as = ai;\n const bs = ai - hi;\n return { a: as, b: bs };\n}\nfunction Wdec16(l, h) {\n const m = UInt16(l);\n const d = UInt16(h);\n const bb = (m - (d >> 1)) & MOD_MASK;\n const aa = (d + bb - A_OFFSET) & MOD_MASK;\n return { a: aa, b: bb };\n}\n/** @internal */\nexport function Wav2Decode(buffer, j, nx, ox, ny, oy, mx) {\n const w14 = mx < 1 << 14;\n const n = nx > ny ? ny : nx;\n let p = 1;\n let p2;\n let py;\n while (p <= n)\n p <<= 1;\n p >>= 1;\n p2 = p;\n p >>= 1;\n while (p >= 1) {\n py = 0;\n const ey = py + oy * (ny - p2);\n const oy1 = oy * p;\n const oy2 = oy * p2;\n const ox1 = ox * p;\n const ox2 = ox * p2;\n let i00, i01, i10, i11;\n for (; py <= ey; py += oy2) {\n let px = py;\n const ex = py + ox * (nx - p2);\n for (; px <= ex; px += ox2) {\n const p01 = px + ox1;\n const p10 = px + oy1;\n const p11 = p10 + ox1;\n if (w14) {\n let result = Wdec14(buffer[px + j], buffer[p10 + j]);\n i00 = result.a;\n i10 = result.b;\n result = Wdec14(buffer[p01 + j], buffer[p11 + j]);\n i01 = result.a;\n i11 = result.b;\n result = Wdec14(i00, i01);\n buffer[px + j] = result.a;\n buffer[p01 + j] = result.b;\n result = Wdec14(i10, i11);\n buffer[p10 + j] = result.a;\n buffer[p11 + j] = result.b;\n }\n else {\n let result = Wdec16(buffer[px + j], buffer[p10 + j]);\n i00 = result.a;\n i10 = result.b;\n result = Wdec16(buffer[p01 + j], buffer[p11 + j]);\n i01 = result.a;\n i11 = result.b;\n result = Wdec16(i00, i01);\n buffer[px + j] = result.a;\n buffer[p01 + j] = result.b;\n result = Wdec16(i10, i11);\n buffer[p10 + j] = result.a;\n buffer[p11 + j] = result.b;\n }\n }\n if (nx & p) {\n const p10 = px + oy1;\n let result;\n if (w14) {\n result = Wdec14(buffer[px + j], buffer[p10 + j]);\n }\n else {\n result = Wdec16(buffer[px + j], buffer[p10 + j]);\n }\n i00 = result.a;\n buffer[p10 + j] = result.b;\n buffer[px + j] = i00;\n }\n }\n if (ny & p) {\n let px = py;\n const ex = py + ox * (nx - p2);\n for (; px <= ex; px += ox2) {\n const p01 = px + ox1;\n let result;\n if (w14) {\n result = Wdec14(buffer[px + j], buffer[p01 + j]);\n }\n else {\n result = Wdec16(buffer[px + j], buffer[p01 + j]);\n }\n i00 = result.a;\n buffer[p01 + j] = result.b;\n buffer[px + j] = i00;\n }\n }\n p2 = p;\n p >>= 1;\n }\n return py;\n}\n/** @internal */\nexport function ApplyLut(lut, data, nData) {\n for (let i = 0; i < nData; ++i) {\n data[i] = lut[data[i]];\n }\n}\n//# sourceMappingURL=exrLoader.compression.huf.js.map","import { ApplyLut, HufUncompress, ReverseLutFromBitmap, Wav2Decode } from \"./exrLoader.compression.huf\";\nimport { DecodeRunLength } from \"./exrLoader.compression.rle\";\nimport { InterleaveScalar, ParseUint16, ParseUint32, ParseUint8, Predictor } from \"./exrLoader.core\";\nimport { BITMAP_SIZE, INT16_SIZE, USHORT_RANGE } from \"./exrLoader.interfaces\";\n/**\n * No compression\n * @param decoder defines the decoder to use\n * @returns a decompressed data view\n */\nexport function UncompressRAW(decoder) {\n return new DataView(decoder.array.buffer, decoder.offset.value, decoder.size);\n}\n/**\n * RLE compression\n * @param decoder defines the decoder to use\n * @returns a decompressed data view\n */\nexport function UncompressRLE(decoder) {\n const compressed = decoder.viewer.buffer.slice(decoder.offset.value, decoder.offset.value + decoder.size);\n const rawBuffer = new Uint8Array(DecodeRunLength(compressed));\n const tmpBuffer = new Uint8Array(rawBuffer.length);\n Predictor(rawBuffer);\n InterleaveScalar(rawBuffer, tmpBuffer);\n return new DataView(tmpBuffer.buffer);\n}\n/**\n * Zip compression\n * @param decoder defines the decoder to use\n * @returns a decompressed data view\n */\nexport function UncompressZIP(decoder) {\n const compressed = decoder.array.slice(decoder.offset.value, decoder.offset.value + decoder.size);\n const rawBuffer = fflate.unzlibSync(compressed);\n const tmpBuffer = new Uint8Array(rawBuffer.length);\n Predictor(rawBuffer);\n InterleaveScalar(rawBuffer, tmpBuffer);\n return new DataView(tmpBuffer.buffer);\n}\n/**\n * PXR compression\n * @param decoder defines the decoder to use\n * @returns a decompressed data view\n */\nexport function UncompressPXR(decoder) {\n const compressed = decoder.array.slice(decoder.offset.value, decoder.offset.value + decoder.size);\n const rawBuffer = fflate.unzlibSync(compressed);\n const sz = decoder.lines * decoder.channels * decoder.width;\n const tmpBuffer = decoder.type == 1 ? new Uint16Array(sz) : new Uint32Array(sz);\n let tmpBufferEnd = 0;\n let writePtr = 0;\n const ptr = new Array(4);\n for (let y = 0; y < decoder.lines; y++) {\n for (let c = 0; c < decoder.channels; c++) {\n let pixel = 0;\n switch (decoder.type) {\n case 1:\n ptr[0] = tmpBufferEnd;\n ptr[1] = ptr[0] + decoder.width;\n tmpBufferEnd = ptr[1] + decoder.width;\n for (let j = 0; j < decoder.width; ++j) {\n const diff = (rawBuffer[ptr[0]++] << 8) | rawBuffer[ptr[1]++];\n pixel += diff;\n tmpBuffer[writePtr] = pixel;\n writePtr++;\n }\n break;\n case 2:\n ptr[0] = tmpBufferEnd;\n ptr[1] = ptr[0] + decoder.width;\n ptr[2] = ptr[1] + decoder.width;\n tmpBufferEnd = ptr[2] + decoder.width;\n for (let j = 0; j < decoder.width; ++j) {\n const diff = (rawBuffer[ptr[0]++] << 24) | (rawBuffer[ptr[1]++] << 16) | (rawBuffer[ptr[2]++] << 8);\n pixel += diff;\n tmpBuffer[writePtr] = pixel;\n writePtr++;\n }\n break;\n }\n }\n }\n return new DataView(tmpBuffer.buffer);\n}\n/**\n * PIZ compression\n * @param decoder defines the decoder to use\n * @returns a decompressed data view\n */\nexport function UncompressPIZ(decoder) {\n const inDataView = decoder.viewer;\n const inOffset = { value: decoder.offset.value };\n const outBuffer = new Uint16Array(decoder.width * decoder.scanlineBlockSize * (decoder.channels * decoder.type));\n const bitmap = new Uint8Array(BITMAP_SIZE);\n // Setup channel info\n let outBufferEnd = 0;\n const pizChannelData = new Array(decoder.channels);\n for (let i = 0; i < decoder.channels; i++) {\n pizChannelData[i] = {};\n pizChannelData[i][\"start\"] = outBufferEnd;\n pizChannelData[i][\"end\"] = pizChannelData[i][\"start\"];\n pizChannelData[i][\"nx\"] = decoder.width;\n pizChannelData[i][\"ny\"] = decoder.lines;\n pizChannelData[i][\"size\"] = decoder.type;\n outBufferEnd += pizChannelData[i].nx * pizChannelData[i].ny * pizChannelData[i].size;\n }\n // Read range compression data\n const minNonZero = ParseUint16(inDataView, inOffset);\n const maxNonZero = ParseUint16(inDataView, inOffset);\n if (maxNonZero >= BITMAP_SIZE) {\n throw new Error(\"Wrong PIZ_COMPRESSION BITMAP_SIZE\");\n }\n if (minNonZero <= maxNonZero) {\n for (let i = 0; i < maxNonZero - minNonZero + 1; i++) {\n bitmap[i + minNonZero] = ParseUint8(inDataView, inOffset);\n }\n }\n // Reverse LUT\n const lut = new Uint16Array(USHORT_RANGE);\n const maxValue = ReverseLutFromBitmap(bitmap, lut);\n const length = ParseUint32(inDataView, inOffset);\n // Huffman decoding\n HufUncompress(decoder.array, inDataView, inOffset, length, outBuffer, outBufferEnd);\n // Wavelet decoding\n for (let i = 0; i < decoder.channels; ++i) {\n const cd = pizChannelData[i];\n for (let j = 0; j < pizChannelData[i].size; ++j) {\n Wav2Decode(outBuffer, cd.start + j, cd.nx, cd.size, cd.ny, cd.nx * cd.size, maxValue);\n }\n }\n // Expand the pixel data to their original range\n ApplyLut(lut, outBuffer, outBufferEnd);\n // Rearrange the pixel data into the format expected by the caller.\n let tmpOffset = 0;\n const tmpBuffer = new Uint8Array(outBuffer.buffer.byteLength);\n for (let y = 0; y < decoder.lines; y++) {\n for (let c = 0; c < decoder.channels; c++) {\n const cd = pizChannelData[c];\n const n = cd.nx * cd.size;\n const cp = new Uint8Array(outBuffer.buffer, cd.end * INT16_SIZE, n * INT16_SIZE);\n tmpBuffer.set(cp, tmpOffset);\n tmpOffset += n * INT16_SIZE;\n cd.end += n;\n }\n }\n return new DataView(tmpBuffer.buffer);\n}\n//# sourceMappingURL=exrLoader.compression.js.map","/**\n * Inspired by https://github.com/sciecode/three.js/blob/dev/examples/jsm/loaders/EXRLoader.js\n * Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita\n * implementation.\n */\n// /*\n// Copyright (c) 2014 - 2017, Syoyo Fujita\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of the Syoyo Fujita nor the\n// names of its contributors may be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// */\n// // TinyEXR contains some OpenEXR code, which is licensed under ------------\n// ///////////////////////////////////////////////////////////////////////////\n// //\n// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas\n// // Digital Ltd. LLC\n// //\n// // All rights reserved.\n// //\n// // Redistribution and use in source and binary forms, with or without\n// // modification, are permitted provided that the following conditions are\n// // met:\n// // * Redistributions of source code must retain the above copyright\n// // notice, this list of conditions and the following disclaimer.\n// // * Redistributions in binary form must reproduce the above\n// // copyright notice, this list of conditions and the following disclaimer\n// // in the documentation and/or other materials provided with the\n// // distribution.\n// // * Neither the name of Industrial Light & Magic nor the names of\n// // its contributors may be used to endorse or promote products derived\n// // from this software without specific prior written permission.\n// //\n// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// // \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// //\n// ///////////////////////////////////////////////////////////////////////////\n// // End of OpenEXR license -------------------------------------------------\n/** @internal */\nexport function DecodeRunLength(source) {\n let size = source.byteLength;\n const out = new Array();\n let p = 0;\n const reader = new DataView(source);\n while (size > 0) {\n const l = reader.getInt8(p++);\n if (l < 0) {\n const count = -l;\n size -= count + 1;\n for (let i = 0; i < count; i++) {\n out.push(reader.getUint8(p++));\n }\n }\n else {\n const count = l;\n size -= 2;\n const value = reader.getUint8(p++);\n for (let i = 0; i < count + 1; i++) {\n out.push(value);\n }\n }\n }\n return out;\n}\n//# sourceMappingURL=exrLoader.compression.rle.js.map","export var EXROutputType;\n(function (EXROutputType) {\n EXROutputType[EXROutputType[\"Float\"] = 0] = \"Float\";\n EXROutputType[EXROutputType[\"HalfFloat\"] = 1] = \"HalfFloat\";\n})(EXROutputType || (EXROutputType = {}));\n/**\n * Class used to store configuration of the exr loader\n */\nexport class ExrLoaderGlobalConfiguration {\n}\n/**\n * Defines the default output type to use (Half float by default)\n */\nExrLoaderGlobalConfiguration.DefaultOutputType = EXROutputType.HalfFloat;\n/**\n * Url to use to load the fflate library (for zip decompression)\n */\nExrLoaderGlobalConfiguration.FFLATEUrl = \"https://unpkg.com/fflate@0.8.2\";\n//# sourceMappingURL=exrLoader.configuration.js.map","import { GetExrHeader } from \"./EXR/exrLoader.header\";\nimport { CreateDecoderAsync, ScanData } from \"./EXR/exrLoader.decoder\";\nimport { ExrLoaderGlobalConfiguration } from \"./EXR/exrLoader.configuration\";\n/**\n * Inspired by https://github.com/sciecode/three.js/blob/dev/examples/jsm/loaders/EXRLoader.js\n * Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita\n * implementation.\n */\n// /*\n// Copyright (c) 2014 - 2017, Syoyo Fujita\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of the Syoyo Fujita nor the\n// names of its contributors may be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// */\n// // TinyEXR contains some OpenEXR code, which is licensed under ------------\n// ///////////////////////////////////////////////////////////////////////////\n// //\n// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas\n// // Digital Ltd. LLC\n// //\n// // All rights reserved.\n// //\n// // Redistribution and use in source and binary forms, with or without\n// // modification, are permitted provided that the following conditions are\n// // met:\n// // * Redistributions of source code must retain the above copyright\n// // notice, this list of conditions and the following disclaimer.\n// // * Redistributions in binary form must reproduce the above\n// // copyright notice, this list of conditions and the following disclaimer\n// // in the documentation and/or other materials provided with the\n// // distribution.\n// // * Neither the name of Industrial Light & Magic nor the names of\n// // its contributors may be used to endorse or promote products derived\n// // from this software without specific prior written permission.\n// //\n// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// // \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// //\n// ///////////////////////////////////////////////////////////////////////////\n// // End of OpenEXR license -------------------------------------------------\n/**\n * Loader for .exr file format\n * #4RN0VF#151: PIZ compression\n * #4RN0VF#146: ZIP compression\n * #4RN0VF#149: RLE compression\n * #4RN0VF#150: PXR24 compression\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class _ExrTextureLoader {\n constructor() {\n /**\n * Defines whether the loader supports cascade loading the different faces.\n */\n this.supportCascades = false;\n }\n /**\n * Uploads the cube texture data to the WebGL texture. It has already been bound.\n * @param _data contains the texture data\n * @param _texture defines the BabylonJS internal texture\n * @param _createPolynomials will be true if polynomials have been requested\n * @param _onLoad defines the callback to trigger once the texture is ready\n * @param _onError defines the callback to trigger in case of error\n */\n loadCubeData(_data, _texture, _createPolynomials, _onLoad, _onError) {\n // eslint-disable-next-line no-throw-literal\n throw \".exr not supported in Cube.\";\n }\n /**\n * Uploads the 2D texture data to the WebGL texture. It has already been bound once in the callback.\n * @param data contains the texture data\n * @param texture defines the BabylonJS internal texture\n * @param callback defines the method to call once ready to upload\n */\n async loadData(data, texture, callback) {\n const dataView = new DataView(data.buffer);\n const offset = { value: 0 };\n const header = GetExrHeader(dataView, offset);\n const decoder = await CreateDecoderAsync(header, dataView, offset, ExrLoaderGlobalConfiguration.DefaultOutputType);\n ScanData(decoder, header, dataView, offset);\n // Updating texture\n const width = header.dataWindow.xMax - header.dataWindow.xMin + 1;\n const height = header.dataWindow.yMax - header.dataWindow.yMin + 1;\n callback(width, height, texture.generateMipMaps, false, () => {\n const engine = texture.getEngine();\n texture.format = header.format;\n texture.type = decoder.textureType;\n texture.invertY = false;\n texture._gammaSpace = !header.linearSpace;\n if (decoder.byteArray) {\n engine._uploadDataToTextureDirectly(texture, decoder.byteArray, 0, 0, undefined, true);\n }\n });\n }\n}\n//# sourceMappingURL=exrTextureLoader.js.map","/* eslint-disable @typescript-eslint/naming-convention */\nimport { Logger } from \"core/Misc/logger\";\nimport { ParseNullTerminatedString, ParseUint32, ParseValue } from \"./exrLoader.core\";\n/**\n * Inspired by https://github.com/sciecode/three.js/blob/dev/examples/jsm/loaders/EXRLoader.js\n * Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita\n * implementation.\n */\n// /*\n// Copyright (c) 2014 - 2017, Syoyo Fujita\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of the Syoyo Fujita nor the\n// names of its contributors may be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// */\n// // TinyEXR contains some OpenEXR code, which is licensed under ------------\n// ///////////////////////////////////////////////////////////////////////////\n// //\n// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas\n// // Digital Ltd. LLC\n// //\n// // All rights reserved.\n// //\n// // Redistribution and use in source and binary forms, with or without\n// // modification, are permitted provided that the following conditions are\n// // met:\n// // * Redistributions of source code must retain the above copyright\n// // notice, this list of conditions and the following disclaimer.\n// // * Redistributions in binary form must reproduce the above\n// // copyright notice, this list of conditions and the following disclaimer\n// // in the documentation and/or other materials provided with the\n// // distribution.\n// // * Neither the name of Industrial Light & Magic nor the names of\n// // its contributors may be used to endorse or promote products derived\n// // from this software without specific prior written permission.\n// //\n// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// // \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// //\n// ///////////////////////////////////////////////////////////////////////////\n// // End of OpenEXR license -------------------------------------------------\nconst EXR_MAGIC = 20000630;\n/**\n * Gets the EXR header\n * @param dataView defines the data view to read from\n * @param offset defines the offset to start reading from\n * @returns the header\n */\nexport function GetExrHeader(dataView, offset) {\n if (dataView.getUint32(0, true) != EXR_MAGIC) {\n throw new Error(\"Incorrect OpenEXR format\");\n }\n const version = dataView.getUint8(4);\n const specData = dataView.getUint8(5); // fullMask\n const spec = {\n singleTile: !!(specData & 2),\n longName: !!(specData & 4),\n deepFormat: !!(specData & 8),\n multiPart: !!(specData & 16),\n };\n offset.value = 8;\n const headerData = {};\n let keepReading = true;\n while (keepReading) {\n const attributeName = ParseNullTerminatedString(dataView.buffer, offset);\n if (!attributeName) {\n keepReading = false;\n }\n else {\n const attributeType = ParseNullTerminatedString(dataView.buffer, offset);\n const attributeSize = ParseUint32(dataView, offset);\n const attributeValue = ParseValue(dataView, offset, attributeType, attributeSize);\n if (attributeValue === undefined) {\n Logger.Warn(`Unknown header attribute type ${attributeType}'.`);\n }\n else {\n headerData[attributeName] = attributeValue;\n }\n }\n }\n if ((specData & ~0x04) != 0) {\n throw new Error(\"Unsupported file format\");\n }\n return { version: version, spec: spec, ...headerData };\n}\n//# sourceMappingURL=exrLoader.header.js.map","import { CompressionCodes, DecodeFloat32, ParseFloat16, ParseFloat32, ParseInt32, ParseInt64, ParseUint16, ParseUint32 } from \"./exrLoader.core\";\nimport { UncompressPIZ, UncompressPXR, UncompressRAW, UncompressRLE, UncompressZIP } from \"./exrLoader.compression\";\nimport { FLOAT32_SIZE, INT16_SIZE } from \"./exrLoader.interfaces\";\nimport { Constants } from \"core/Engines/constants\";\nimport { Tools } from \"core/Misc/tools\";\nimport { ExrLoaderGlobalConfiguration, EXROutputType } from \"./exrLoader.configuration\";\n/**\n * Inspired by https://github.com/sciecode/three.js/blob/dev/examples/jsm/loaders/EXRLoader.js\n * Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita\n * implementation.\n */\n// /*\n// Copyright (c) 2014 - 2017, Syoyo Fujita\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of the Syoyo Fujita nor the\n// names of its contributors may be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// */\n// // TinyEXR contains some OpenEXR code, which is licensed under ------------\n// ///////////////////////////////////////////////////////////////////////////\n// //\n// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas\n// // Digital Ltd. LLC\n// //\n// // All rights reserved.\n// //\n// // Redistribution and use in source and binary forms, with or without\n// // modification, are permitted provided that the following conditions are\n// // met:\n// // * Redistributions of source code must retain the above copyright\n// // notice, this list of conditions and the following disclaimer.\n// // * Redistributions in binary form must reproduce the above\n// // copyright notice, this list of conditions and the following disclaimer\n// // in the documentation and/or other materials provided with the\n// // distribution.\n// // * Neither the name of Industrial Light & Magic nor the names of\n// // its contributors may be used to endorse or promote products derived\n// // from this software without specific prior written permission.\n// //\n// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// // \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// //\n// ///////////////////////////////////////////////////////////////////////////\n// // End of OpenEXR license -------------------------------------------------\n/**\n * Create a decoder for the exr file\n * @param header header of the exr file\n * @param dataView dataview of the exr file\n * @param offset current offset\n * @param outputType expected output type (float or half float)\n * @returns a promise that resolves with the decoder\n */\nexport async function CreateDecoderAsync(header, dataView, offset, outputType) {\n const decoder = {\n size: 0,\n viewer: dataView,\n array: new Uint8Array(dataView.buffer),\n offset: offset,\n width: header.dataWindow.xMax - header.dataWindow.xMin + 1,\n height: header.dataWindow.yMax - header.dataWindow.yMin + 1,\n channels: header.channels.length,\n channelLineOffsets: {},\n scanOrder: () => 0,\n bytesPerLine: 0,\n outLineWidth: 0,\n lines: 0,\n scanlineBlockSize: 0,\n inputSize: null,\n type: 0,\n uncompress: null,\n getter: () => 0,\n format: Constants.TEXTUREFORMAT_RGBA,\n outputChannels: 0,\n decodeChannels: {},\n blockCount: null,\n byteArray: null,\n linearSpace: false,\n textureType: 0,\n };\n switch (header.compression) {\n case CompressionCodes.NO_COMPRESSION:\n decoder.lines = 1;\n decoder.uncompress = UncompressRAW;\n break;\n case CompressionCodes.RLE_COMPRESSION:\n decoder.lines = 1;\n decoder.uncompress = UncompressRLE;\n break;\n case CompressionCodes.ZIPS_COMPRESSION:\n decoder.lines = 1;\n decoder.uncompress = UncompressZIP;\n await Tools.LoadScriptAsync(ExrLoaderGlobalConfiguration.FFLATEUrl);\n break;\n case CompressionCodes.ZIP_COMPRESSION:\n decoder.lines = 16;\n decoder.uncompress = UncompressZIP;\n await Tools.LoadScriptAsync(ExrLoaderGlobalConfiguration.FFLATEUrl);\n break;\n case CompressionCodes.PIZ_COMPRESSION:\n decoder.lines = 32;\n decoder.uncompress = UncompressPIZ;\n break;\n case CompressionCodes.PXR24_COMPRESSION:\n decoder.lines = 16;\n decoder.uncompress = UncompressPXR;\n await Tools.LoadScriptAsync(ExrLoaderGlobalConfiguration.FFLATEUrl);\n break;\n default:\n throw new Error(CompressionCodes[header.compression] + \" is unsupported\");\n }\n decoder.scanlineBlockSize = decoder.lines;\n const channels = {};\n for (const channel of header.channels) {\n switch (channel.name) {\n case \"Y\":\n case \"R\":\n case \"G\":\n case \"B\":\n case \"A\":\n channels[channel.name] = true;\n decoder.type = channel.pixelType;\n }\n }\n // RGB images will be converted to RGBA format, preventing software emulation in select devices.\n let fillAlpha = false;\n if (channels.R && channels.G && channels.B) {\n fillAlpha = !channels.A;\n decoder.outputChannels = 4;\n decoder.decodeChannels = { R: 0, G: 1, B: 2, A: 3 };\n }\n else if (channels.Y) {\n decoder.outputChannels = 1;\n decoder.decodeChannels = { Y: 0 };\n }\n else {\n throw new Error(\"EXRLoader.parse: file contains unsupported data channels.\");\n }\n if (decoder.type === 1) {\n // half\n switch (outputType) {\n case EXROutputType.Float:\n decoder.getter = ParseFloat16;\n decoder.inputSize = INT16_SIZE;\n break;\n case EXROutputType.HalfFloat:\n decoder.getter = ParseUint16;\n decoder.inputSize = INT16_SIZE;\n break;\n }\n }\n else if (decoder.type === 2) {\n // float\n switch (outputType) {\n case EXROutputType.Float:\n decoder.getter = ParseFloat32;\n decoder.inputSize = FLOAT32_SIZE;\n break;\n case EXROutputType.HalfFloat:\n decoder.getter = DecodeFloat32;\n decoder.inputSize = FLOAT32_SIZE;\n }\n }\n else {\n throw new Error(\"Unsupported pixelType \" + decoder.type + \" for \" + header.compression);\n }\n decoder.blockCount = decoder.height / decoder.scanlineBlockSize;\n for (let i = 0; i < decoder.blockCount; i++) {\n ParseInt64(dataView, offset); // scanlineOffset\n }\n // we should be passed the scanline offset table, ready to start reading pixel data.\n const size = decoder.width * decoder.height * decoder.outputChannels;\n switch (outputType) {\n case EXROutputType.Float:\n decoder.byteArray = new Float32Array(size);\n decoder.textureType = Constants.TEXTURETYPE_FLOAT;\n // Fill initially with 1s for the alpha value if the texture is not RGBA, RGB values will be overwritten\n if (fillAlpha) {\n decoder.byteArray.fill(1, 0, size);\n }\n break;\n case EXROutputType.HalfFloat:\n decoder.byteArray = new Uint16Array(size);\n decoder.textureType = Constants.TEXTURETYPE_HALF_FLOAT;\n if (fillAlpha) {\n decoder.byteArray.fill(0x3c00, 0, size); // Uint16Array holds half float data, 0x3C00 is 1\n }\n break;\n default:\n throw new Error(\"Unsupported type: \" + outputType);\n }\n let byteOffset = 0;\n for (const channel of header.channels) {\n if (decoder.decodeChannels[channel.name] !== undefined) {\n decoder.channelLineOffsets[channel.name] = byteOffset * decoder.width;\n }\n byteOffset += channel.pixelType * 2;\n }\n decoder.bytesPerLine = decoder.width * byteOffset;\n decoder.outLineWidth = decoder.width * decoder.outputChannels;\n if (header.lineOrder === \"INCREASING_Y\") {\n decoder.scanOrder = (y) => y;\n }\n else {\n decoder.scanOrder = (y) => decoder.height - 1 - y;\n }\n if (decoder.outputChannels == 4) {\n decoder.format = Constants.TEXTUREFORMAT_RGBA;\n decoder.linearSpace = true;\n }\n else {\n decoder.format = Constants.TEXTUREFORMAT_R;\n decoder.linearSpace = false;\n }\n return decoder;\n}\n/**\n * Scan the data of the exr file\n * @param decoder decoder to use\n * @param header header of the exr file\n * @param dataView dataview of the exr file\n * @param offset current offset\n */\nexport function ScanData(decoder, header, dataView, offset) {\n const tmpOffset = { value: 0 };\n for (let scanlineBlockIdx = 0; scanlineBlockIdx < decoder.height / decoder.scanlineBlockSize; scanlineBlockIdx++) {\n const line = ParseInt32(dataView, offset) - header.dataWindow.yMin; // line_no\n decoder.size = ParseUint32(dataView, offset); // data_len\n decoder.lines = line + decoder.scanlineBlockSize > decoder.height ? decoder.height - line : decoder.scanlineBlockSize;\n const isCompressed = decoder.size < decoder.lines * decoder.bytesPerLine;\n const viewer = isCompressed && decoder.uncompress ? decoder.uncompress(decoder) : UncompressRAW(decoder);\n offset.value += decoder.size;\n for (let line_y = 0; line_y < decoder.scanlineBlockSize; line_y++) {\n const scan_y = scanlineBlockIdx * decoder.scanlineBlockSize;\n const true_y = line_y + decoder.scanOrder(scan_y);\n if (true_y >= decoder.height) {\n continue;\n }\n const lineOffset = line_y * decoder.bytesPerLine;\n const outLineOffset = (decoder.height - 1 - true_y) * decoder.outLineWidth;\n for (let channelID = 0; channelID < decoder.channels; channelID++) {\n const name = header.channels[channelID].name;\n const lOff = decoder.channelLineOffsets[name];\n const cOff = decoder.decodeChannels[name];\n if (cOff === undefined) {\n continue;\n }\n tmpOffset.value = lineOffset + lOff;\n for (let x = 0; x < decoder.width; x++) {\n const outIndex = outLineOffset + x * decoder.outputChannels + cOff;\n if (decoder.byteArray) {\n decoder.byteArray[outIndex] = decoder.getter(viewer, tmpOffset);\n }\n }\n }\n }\n }\n}\n//# sourceMappingURL=exrLoader.decoder.js.map"],"names":["INT32_SIZE","FLOAT32_SIZE","INT8_SIZE","INT16_SIZE","ULONG_SIZE","USHORT_RANGE","BITMAP_SIZE","HUF_DECBITS","HUF_ENCSIZE","HUF_DECSIZE","HUF_DECMASK","SHORT_ZEROCODE_RUN","LONG_ZEROCODE_RUN","SHORTEST_LONG_RUN","CompressionCodes","LineOrders","_tables","buffer","ArrayBuffer","floatView","Float32Array","uint32View","Uint32Array","baseTable","shiftTable","i","e","mantissaTable","exponentTable","offsetTable","m","_GenerateTables","ParseNullTerminatedString","offset","uintBuffer","Uint8Array","endOffset","value","stringValue","TextDecoder","decode","slice","ParseInt32","dataView","getInt32","ParseUint32","getUint32","ParseUint8","getUint8","ParseUint16","getUint16","ParseUint8Array","array","ParseInt64","int","DataView","prototype","Number","getBigInt64","ParseFloat32","getFloat32","ParseFloat16","binary","exponent","fraction","NaN","Infinity","Math","pow","DecodeFloat16","DecodeFloat32","abs","Error","Clamp","f","ToHalfFloat","ParseValue","type","size","ParseFixedLengthString","startOffset","channels","name","pixelType","pLinear","xSampling","ySampling","push","ParseChlist","redX","redY","greenX","greenY","blueX","blueY","whiteX","whiteY","ParseChromaticities","ParseCompression","xMin","yMin","xMax","yMax","ParseBox2i","lineOrder","ParseLineOrder","ParseV2f","ParseV3f","ParseRational","ParseTimecode","Predictor","source","t","length","d","InterleaveScalar","out","t1","t2","floor","s","stop","A_OFFSET","MOD_MASK","GetBits","nBits","c","lc","l","GetChar","GetCode","po","rlc","outBuffer","outBufferOffset","outBufferEndOffset","gc","cs","HufTableBuffer","Array","HufUnpackEncTable","ni","im","iM","hcode","p","gb","zerun","nc","HufCanonicalCodeTable","HufLength","code","HufCode","HufUncompress","nCompressed","nRaw","initialInOffset","freq","hdec","len","lit","HufClearDecTable","hdecod","pl","plOffset","HufBuildDecTable","encodingTable","decodingTable","no","outOffset","inOffsetEnd","trunc","gCode","j","HufDecode","UInt16","Int16","ref","Wdec14","h","ls","hs","ai","a","b","Wdec16","bb","Wav2Decode","nx","ox","ny","oy","mx","w14","n","p2","py","ey","oy1","oy2","ox1","ox2","i00","i01","i10","i11","px","ex","p01","p10","p11","result","UncompressRAW","decoder","UncompressRLE","compressed","viewer","rawBuffer","byteLength","reader","getInt8","count","DecodeRunLength","tmpBuffer","UncompressZIP","fflate","unzlibSync","UncompressPXR","sz","lines","width","Uint16Array","tmpBufferEnd","writePtr","ptr","y","pixel","UncompressPIZ","inDataView","inOffset","scanlineBlockSize","bitmap","outBufferEnd","pizChannelData","minNonZero","maxNonZero","lut","maxValue","k","ReverseLutFromBitmap","cd","start","data","nData","ApplyLut","tmpOffset","cp","end","set","EXROutputType","ExrLoaderGlobalConfiguration","DefaultOutputType","HalfFloat","FFLATEUrl","_ExrTextureLoader","constructor","this","supportCascades","loadCubeData","_data","_texture","_createPolynomials","_onLoad","_onError","loadData","texture","callback","header","version","specData","spec","singleTile","longName","deepFormat","multiPart","headerData","keepReading","attributeName","attributeType","attributeValue","undefined","Logger","Warn","GetExrHeader","async","outputType","dataWindow","height","channelLineOffsets","scanOrder","bytesPerLine","outLineWidth","inputSize","uncompress","getter","format","Constants","TEXTUREFORMAT_RGBA","outputChannels","decodeChannels","blockCount","byteArray","linearSpace","textureType","compression","NO_COMPRESSION","RLE_COMPRESSION","ZIPS_COMPRESSION","Tools","LoadScriptAsync","ZIP_COMPRESSION","PIZ_COMPRESSION","PXR24_COMPRESSION","channel","fillAlpha","R","G","B","A","Y","Float","TEXTURETYPE_FLOAT","fill","TEXTURETYPE_HALF_FLOAT","byteOffset","TEXTUREFORMAT_R","CreateDecoderAsync","scanlineBlockIdx","line","line_y","scan_y","true_y","lineOffset","outLineOffset","channelID","lOff","cOff","x","outIndex","ScanData","generateMipMaps","engine","getEngine","invertY","_gammaSpace","_uploadDataToTextureDirectly"],"mappings":"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"}
|