three-stdlib 2.35.3 → 2.35.4
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/_polyfill/CapsuleGeometry.cjs +20 -17
- package/_polyfill/CapsuleGeometry.cjs.map +1 -1
- package/_polyfill/CapsuleGeometry.js +20 -17
- package/_polyfill/CapsuleGeometry.js.map +1 -1
- package/_polyfill/constants.cjs +1 -1
- package/_polyfill/constants.cjs.map +1 -1
- package/_polyfill/constants.js +1 -1
- package/_polyfill/constants.js.map +1 -1
- package/animation/AnimationClipCreator.cjs +13 -13
- package/animation/AnimationClipCreator.cjs.map +1 -1
- package/animation/AnimationClipCreator.js +13 -13
- package/animation/AnimationClipCreator.js.map +1 -1
- package/animation/CCDIKSolver.cjs +11 -11
- package/animation/CCDIKSolver.cjs.map +1 -1
- package/animation/CCDIKSolver.js +12 -12
- package/animation/CCDIKSolver.js.map +1 -1
- package/animation/MMDAnimationHelper.cjs +1 -1
- package/animation/MMDAnimationHelper.cjs.map +1 -1
- package/animation/MMDAnimationHelper.js +1 -1
- package/animation/MMDAnimationHelper.js.map +1 -1
- package/animation/MMDPhysics.cjs +4 -4
- package/animation/MMDPhysics.cjs.map +1 -1
- package/animation/MMDPhysics.js +4 -4
- package/animation/MMDPhysics.js.map +1 -1
- package/controls/ArcballControls.cjs +2 -2
- package/controls/ArcballControls.cjs.map +1 -1
- package/controls/ArcballControls.js +3 -3
- package/controls/ArcballControls.js.map +1 -1
- package/controls/FirstPersonControls.cjs +1 -1
- package/controls/FirstPersonControls.cjs.map +1 -1
- package/controls/FirstPersonControls.js +1 -1
- package/controls/FirstPersonControls.js.map +1 -1
- package/controls/OrbitControls.cjs +2 -2
- package/controls/OrbitControls.cjs.map +1 -1
- package/controls/OrbitControls.js +3 -3
- package/controls/OrbitControls.js.map +1 -1
- package/controls/PointerLockControls.cjs +2 -2
- package/controls/PointerLockControls.cjs.map +1 -1
- package/controls/PointerLockControls.js +3 -3
- package/controls/PointerLockControls.js.map +1 -1
- package/csm/CSM.cjs +4 -4
- package/csm/CSM.cjs.map +1 -1
- package/csm/CSM.js +5 -5
- package/csm/CSM.js.map +1 -1
- package/csm/CSMFrustum.cjs +1 -1
- package/csm/CSMFrustum.cjs.map +1 -1
- package/csm/CSMFrustum.js +2 -2
- package/csm/CSMFrustum.js.map +1 -1
- package/deprecated/Geometry.cjs +722 -715
- package/deprecated/Geometry.cjs.map +1 -1
- package/deprecated/Geometry.js +723 -716
- package/deprecated/Geometry.js.map +1 -1
- package/effects/AnaglyphEffect.cjs +2 -1
- package/effects/AnaglyphEffect.cjs.map +1 -1
- package/effects/AnaglyphEffect.js +3 -2
- package/effects/AnaglyphEffect.js.map +1 -1
- package/effects/OutlineEffect.cjs +2 -1
- package/effects/OutlineEffect.cjs.map +1 -1
- package/effects/OutlineEffect.js +3 -2
- package/effects/OutlineEffect.js.map +1 -1
- package/effects/ParallaxBarrierEffect.cjs +2 -1
- package/effects/ParallaxBarrierEffect.cjs.map +1 -1
- package/effects/ParallaxBarrierEffect.js +3 -2
- package/effects/ParallaxBarrierEffect.js.map +1 -1
- package/exporters/DRACOExporter.cjs +133 -122
- package/exporters/DRACOExporter.cjs.map +1 -1
- package/exporters/DRACOExporter.d.ts +23 -21
- package/exporters/DRACOExporter.js +133 -122
- package/exporters/DRACOExporter.js.map +1 -1
- package/exporters/GLTFExporter.cjs +170 -167
- package/exporters/GLTFExporter.cjs.map +1 -1
- package/exporters/GLTFExporter.js +170 -167
- package/exporters/GLTFExporter.js.map +1 -1
- package/geometries/LightningStrike.cjs +524 -515
- package/geometries/LightningStrike.cjs.map +1 -1
- package/geometries/LightningStrike.js +524 -515
- package/geometries/LightningStrike.js.map +1 -1
- package/geometries/RoundedBoxGeometry.cjs +1 -1
- package/geometries/RoundedBoxGeometry.cjs.map +1 -1
- package/geometries/RoundedBoxGeometry.js +2 -2
- package/geometries/RoundedBoxGeometry.js.map +1 -1
- package/helpers/RaycasterHelper.cjs +2 -2
- package/helpers/RaycasterHelper.cjs.map +1 -1
- package/helpers/RaycasterHelper.js +3 -3
- package/helpers/RaycasterHelper.js.map +1 -1
- package/helpers/VertexNormalsHelper.cjs +3 -3
- package/helpers/VertexNormalsHelper.cjs.map +1 -1
- package/helpers/VertexNormalsHelper.js +4 -4
- package/helpers/VertexNormalsHelper.js.map +1 -1
- package/helpers/VertexTangentsHelper.cjs +2 -2
- package/helpers/VertexTangentsHelper.cjs.map +1 -1
- package/helpers/VertexTangentsHelper.js +3 -3
- package/helpers/VertexTangentsHelper.js.map +1 -1
- package/interactive/InteractiveGroup.cjs +1 -1
- package/interactive/InteractiveGroup.cjs.map +1 -1
- package/interactive/InteractiveGroup.js +2 -2
- package/interactive/InteractiveGroup.js.map +1 -1
- package/interactive/SelectionBox.cjs +15 -15
- package/interactive/SelectionBox.cjs.map +1 -1
- package/interactive/SelectionBox.js +16 -16
- package/interactive/SelectionBox.js.map +1 -1
- package/libs/chevrotain.cjs +1 -1
- package/libs/chevrotain.cjs.map +1 -1
- package/libs/chevrotain.js +1 -1
- package/libs/chevrotain.js.map +1 -1
- package/libs/lottie.cjs +1 -1
- package/libs/lottie.cjs.map +1 -1
- package/libs/lottie.js +1 -1
- package/libs/lottie.js.map +1 -1
- package/libs/opentype.cjs +1 -1
- package/libs/opentype.cjs.map +1 -1
- package/libs/opentype.js +1 -1
- package/libs/opentype.js.map +1 -1
- package/lights/LightProbeGenerator.cjs +5 -5
- package/lights/LightProbeGenerator.cjs.map +1 -1
- package/lights/LightProbeGenerator.js +5 -5
- package/lights/LightProbeGenerator.js.map +1 -1
- package/lights/RectAreaLightUniformsLib.cjs +3 -3
- package/lights/RectAreaLightUniformsLib.cjs.map +1 -1
- package/lights/RectAreaLightUniformsLib.js +3 -3
- package/lights/RectAreaLightUniformsLib.js.map +1 -1
- package/lines/LineMaterial.cjs +2 -1
- package/lines/LineMaterial.cjs.map +1 -1
- package/lines/LineMaterial.js +3 -2
- package/lines/LineMaterial.js.map +1 -1
- package/lines/LineSegments2.cjs +13 -13
- package/lines/LineSegments2.cjs.map +1 -1
- package/lines/LineSegments2.js +14 -14
- package/lines/LineSegments2.js.map +1 -1
- package/lines/LineSegmentsGeometry.cjs +2 -2
- package/lines/LineSegmentsGeometry.cjs.map +1 -1
- package/lines/LineSegmentsGeometry.js +3 -3
- package/lines/LineSegmentsGeometry.js.map +1 -1
- package/lines/Wireframe.cjs +3 -3
- package/lines/Wireframe.cjs.map +1 -1
- package/lines/Wireframe.js +4 -4
- package/lines/Wireframe.js.map +1 -1
- package/loaders/BasisTextureLoader.cjs +441 -435
- package/loaders/BasisTextureLoader.cjs.map +1 -1
- package/loaders/BasisTextureLoader.js +441 -435
- package/loaders/BasisTextureLoader.js.map +1 -1
- package/loaders/EXRLoader.cjs +2 -1
- package/loaders/EXRLoader.cjs.map +1 -1
- package/loaders/EXRLoader.js +3 -2
- package/loaders/EXRLoader.js.map +1 -1
- package/loaders/FBXLoader.cjs +2 -2
- package/loaders/FBXLoader.cjs.map +1 -1
- package/loaders/FBXLoader.js +2 -2
- package/loaders/FBXLoader.js.map +1 -1
- package/loaders/FontLoader.cjs +2 -2
- package/loaders/FontLoader.cjs.map +1 -1
- package/loaders/FontLoader.d.ts +2 -2
- package/loaders/FontLoader.js +2 -2
- package/loaders/FontLoader.js.map +1 -1
- package/loaders/GLTFLoader.cjs +2 -2
- package/loaders/GLTFLoader.cjs.map +1 -1
- package/loaders/GLTFLoader.js +2 -2
- package/loaders/GLTFLoader.js.map +1 -1
- package/loaders/KTX2Loader.cjs +377 -374
- package/loaders/KTX2Loader.cjs.map +1 -1
- package/loaders/KTX2Loader.js +377 -374
- package/loaders/KTX2Loader.js.map +1 -1
- package/loaders/LDrawLoader.cjs +5 -4
- package/loaders/LDrawLoader.cjs.map +1 -1
- package/loaders/LDrawLoader.js +6 -5
- package/loaders/LDrawLoader.js.map +1 -1
- package/loaders/OBJLoader.cjs +5 -5
- package/loaders/OBJLoader.cjs.map +1 -1
- package/loaders/OBJLoader.js +6 -6
- package/loaders/OBJLoader.js.map +1 -1
- package/loaders/PRWMLoader.cjs +46 -43
- package/loaders/PRWMLoader.cjs.map +1 -1
- package/loaders/PRWMLoader.js +46 -43
- package/loaders/PRWMLoader.js.map +1 -1
- package/loaders/SVGLoader.cjs +1694 -1688
- package/loaders/SVGLoader.cjs.map +1 -1
- package/loaders/SVGLoader.js +1694 -1688
- package/loaders/SVGLoader.js.map +1 -1
- package/loaders/XLoader.cjs +1 -1
- package/loaders/XLoader.cjs.map +1 -1
- package/loaders/XLoader.js +1 -1
- package/loaders/XLoader.js.map +1 -1
- package/math/Capsule.cjs +3 -3
- package/math/Capsule.cjs.map +1 -1
- package/math/Capsule.js +3 -3
- package/math/Capsule.js.map +1 -1
- package/math/ColorConverter.cjs +9 -9
- package/math/ColorConverter.cjs.map +1 -1
- package/math/ColorConverter.js +9 -9
- package/math/ColorConverter.js.map +1 -1
- package/math/ConvexHull.cjs +53 -50
- package/math/ConvexHull.cjs.map +1 -1
- package/math/ConvexHull.js +53 -50
- package/math/ConvexHull.js.map +1 -1
- package/math/ImprovedNoise.cjs +1 -1
- package/math/ImprovedNoise.cjs.map +1 -1
- package/math/ImprovedNoise.js +1 -1
- package/math/ImprovedNoise.js.map +1 -1
- package/math/MeshSurfaceSampler.cjs +2 -2
- package/math/MeshSurfaceSampler.cjs.map +1 -1
- package/math/MeshSurfaceSampler.js +2 -2
- package/math/MeshSurfaceSampler.js.map +1 -1
- package/math/OBB.cjs +14 -14
- package/math/OBB.cjs.map +1 -1
- package/math/OBB.js +15 -15
- package/math/OBB.js.map +1 -1
- package/math/Octree.cjs +7 -7
- package/math/Octree.cjs.map +1 -1
- package/math/Octree.js +8 -8
- package/math/Octree.js.map +1 -1
- package/misc/ConvexObjectBreaker.cjs +271 -268
- package/misc/ConvexObjectBreaker.cjs.map +1 -1
- package/misc/ConvexObjectBreaker.js +272 -269
- package/misc/ConvexObjectBreaker.js.map +1 -1
- package/misc/Gyroscope.cjs +6 -6
- package/misc/Gyroscope.cjs.map +1 -1
- package/misc/Gyroscope.js +7 -7
- package/misc/Gyroscope.js.map +1 -1
- package/modifiers/CurveModifier.cjs +1 -1
- package/modifiers/CurveModifier.cjs.map +1 -1
- package/modifiers/CurveModifier.js +2 -2
- package/modifiers/CurveModifier.js.map +1 -1
- package/modifiers/SimplifyModifier.cjs +2 -2
- package/modifiers/SimplifyModifier.cjs.map +1 -1
- package/modifiers/SimplifyModifier.js +2 -2
- package/modifiers/SimplifyModifier.js.map +1 -1
- package/objects/BatchedMesh.cjs +2 -2
- package/objects/BatchedMesh.cjs.map +1 -1
- package/objects/BatchedMesh.js +3 -3
- package/objects/BatchedMesh.js.map +1 -1
- package/objects/GroundProjectedEnv.cjs +2 -1
- package/objects/GroundProjectedEnv.cjs.map +1 -1
- package/objects/GroundProjectedEnv.js +3 -2
- package/objects/GroundProjectedEnv.js.map +1 -1
- package/objects/Lensflare.cjs +209 -206
- package/objects/Lensflare.cjs.map +1 -1
- package/objects/Lensflare.js +209 -206
- package/objects/Lensflare.js.map +1 -1
- package/objects/Reflector.cjs +154 -146
- package/objects/Reflector.cjs.map +1 -1
- package/objects/Reflector.js +154 -146
- package/objects/Reflector.js.map +1 -1
- package/objects/ReflectorForSSRPass.cjs +183 -180
- package/objects/ReflectorForSSRPass.cjs.map +1 -1
- package/objects/ReflectorForSSRPass.js +183 -180
- package/objects/ReflectorForSSRPass.js.map +1 -1
- package/objects/Refractor.cjs +164 -161
- package/objects/Refractor.cjs.map +1 -1
- package/objects/Refractor.js +164 -161
- package/objects/Refractor.js.map +1 -1
- package/objects/ShadowMesh.cjs +1 -1
- package/objects/ShadowMesh.cjs.map +1 -1
- package/objects/ShadowMesh.js +2 -2
- package/objects/ShadowMesh.js.map +1 -1
- package/objects/Sky.cjs +35 -32
- package/objects/Sky.cjs.map +1 -1
- package/objects/Sky.d.ts +100 -6
- package/objects/Sky.js +35 -32
- package/objects/Sky.js.map +1 -1
- package/objects/Water.cjs +2 -1
- package/objects/Water.cjs.map +1 -1
- package/objects/Water.js +3 -2
- package/objects/Water.js.map +1 -1
- package/objects/Water2.cjs +143 -140
- package/objects/Water2.cjs.map +1 -1
- package/objects/Water2.js +143 -140
- package/objects/Water2.js.map +1 -1
- package/package.json +1 -1
- package/postprocessing/SAOPass.cjs +267 -264
- package/postprocessing/SAOPass.cjs.map +1 -1
- package/postprocessing/SAOPass.js +267 -264
- package/postprocessing/SAOPass.js.map +1 -1
- package/postprocessing/SSAOPass.cjs +253 -250
- package/postprocessing/SSAOPass.cjs.map +1 -1
- package/postprocessing/SSAOPass.js +253 -250
- package/postprocessing/SSAOPass.js.map +1 -1
- package/postprocessing/SSRPass.cjs +379 -376
- package/postprocessing/SSRPass.cjs.map +1 -1
- package/postprocessing/SSRPass.js +379 -376
- package/postprocessing/SSRPass.js.map +1 -1
- package/postprocessing/UnrealBloomPass.cjs +205 -202
- package/postprocessing/UnrealBloomPass.cjs.map +1 -1
- package/postprocessing/UnrealBloomPass.js +205 -202
- package/postprocessing/UnrealBloomPass.js.map +1 -1
- package/renderers/CSS2DRenderer.cjs +5 -5
- package/renderers/CSS2DRenderer.cjs.map +1 -1
- package/renderers/CSS2DRenderer.js +5 -5
- package/renderers/CSS2DRenderer.js.map +1 -1
- package/renderers/CSS3DRenderer.cjs +5 -5
- package/renderers/CSS3DRenderer.cjs.map +1 -1
- package/renderers/CSS3DRenderer.js +6 -6
- package/renderers/CSS3DRenderer.js.map +1 -1
- package/shaders/ACESFilmicToneMappingShader.cjs +71 -46
- package/shaders/ACESFilmicToneMappingShader.cjs.map +1 -1
- package/shaders/ACESFilmicToneMappingShader.js +71 -46
- package/shaders/ACESFilmicToneMappingShader.js.map +1 -1
- package/shaders/AfterimageShader.cjs +41 -22
- package/shaders/AfterimageShader.cjs.map +1 -1
- package/shaders/AfterimageShader.js +41 -22
- package/shaders/AfterimageShader.js.map +1 -1
- package/shaders/BasicShader.cjs +20 -6
- package/shaders/BasicShader.cjs.map +1 -1
- package/shaders/BasicShader.js +20 -6
- package/shaders/BasicShader.js.map +1 -1
- package/shaders/BleachBypassShader.cjs +46 -26
- package/shaders/BleachBypassShader.cjs.map +1 -1
- package/shaders/BleachBypassShader.js +46 -26
- package/shaders/BleachBypassShader.js.map +1 -1
- package/shaders/BlendShader.cjs +33 -19
- package/shaders/BlendShader.cjs.map +1 -1
- package/shaders/BlendShader.js +33 -19
- package/shaders/BlendShader.js.map +1 -1
- package/shaders/BokehShader.cjs +117 -90
- package/shaders/BokehShader.cjs.map +1 -1
- package/shaders/BokehShader.js +117 -90
- package/shaders/BokehShader.js.map +1 -1
- package/shaders/BokehShader2.cjs +333 -232
- package/shaders/BokehShader2.cjs.map +1 -1
- package/shaders/BokehShader2.js +333 -232
- package/shaders/BokehShader2.js.map +1 -1
- package/shaders/BrightnessContrastShader.cjs +38 -22
- package/shaders/BrightnessContrastShader.cjs.map +1 -1
- package/shaders/BrightnessContrastShader.js +38 -22
- package/shaders/BrightnessContrastShader.js.map +1 -1
- package/shaders/ColorCorrectionShader.cjs +35 -21
- package/shaders/ColorCorrectionShader.cjs.map +1 -1
- package/shaders/ColorCorrectionShader.js +35 -21
- package/shaders/ColorCorrectionShader.js.map +1 -1
- package/shaders/ColorifyShader.cjs +34 -19
- package/shaders/ColorifyShader.cjs.map +1 -1
- package/shaders/ColorifyShader.js +34 -19
- package/shaders/ColorifyShader.js.map +1 -1
- package/shaders/ConvolutionShader.cjs +43 -24
- package/shaders/ConvolutionShader.cjs.map +1 -1
- package/shaders/ConvolutionShader.js +43 -24
- package/shaders/ConvolutionShader.js.map +1 -1
- package/shaders/CopyShader.cjs +30 -16
- package/shaders/CopyShader.cjs.map +1 -1
- package/shaders/CopyShader.js +30 -16
- package/shaders/CopyShader.js.map +1 -1
- package/shaders/DOFMipMapShader.cjs +38 -21
- package/shaders/DOFMipMapShader.cjs.map +1 -1
- package/shaders/DOFMipMapShader.js +38 -21
- package/shaders/DOFMipMapShader.js.map +1 -1
- package/shaders/DepthLimitedBlurShader.cjs +98 -69
- package/shaders/DepthLimitedBlurShader.cjs.map +1 -1
- package/shaders/DepthLimitedBlurShader.js +98 -69
- package/shaders/DepthLimitedBlurShader.js.map +1 -1
- package/shaders/DigitalGlitch.cjs +70 -59
- package/shaders/DigitalGlitch.cjs.map +1 -1
- package/shaders/DigitalGlitch.js +70 -59
- package/shaders/DigitalGlitch.js.map +1 -1
- package/shaders/DotScreenShader.cjs +49 -28
- package/shaders/DotScreenShader.cjs.map +1 -1
- package/shaders/DotScreenShader.js +49 -28
- package/shaders/DotScreenShader.js.map +1 -1
- package/shaders/FXAAShader.cjs +1098 -1089
- package/shaders/FXAAShader.cjs.map +1 -1
- package/shaders/FXAAShader.js +1098 -1089
- package/shaders/FXAAShader.js.map +1 -1
- package/shaders/FilmShader.cjs +57 -29
- package/shaders/FilmShader.cjs.map +1 -1
- package/shaders/FilmShader.js +57 -29
- package/shaders/FilmShader.js.map +1 -1
- package/shaders/FocusShader.cjs +70 -43
- package/shaders/FocusShader.cjs.map +1 -1
- package/shaders/FocusShader.js +70 -43
- package/shaders/FocusShader.js.map +1 -1
- package/shaders/FreiChenShader.cjs +74 -53
- package/shaders/FreiChenShader.cjs.map +1 -1
- package/shaders/FreiChenShader.js +74 -53
- package/shaders/FreiChenShader.js.map +1 -1
- package/shaders/FresnelShader.cjs +55 -35
- package/shaders/FresnelShader.cjs.map +1 -1
- package/shaders/FresnelShader.js +55 -35
- package/shaders/FresnelShader.js.map +1 -1
- package/shaders/GammaCorrectionShader.cjs +33 -19
- package/shaders/GammaCorrectionShader.cjs.map +1 -1
- package/shaders/GammaCorrectionShader.js +33 -19
- package/shaders/GammaCorrectionShader.js.map +1 -1
- package/shaders/GodRaysShader.cjs +193 -116
- package/shaders/GodRaysShader.cjs.map +1 -1
- package/shaders/GodRaysShader.js +193 -116
- package/shaders/GodRaysShader.js.map +1 -1
- package/shaders/HalftoneShader.cjs +270 -192
- package/shaders/HalftoneShader.cjs.map +1 -1
- package/shaders/HalftoneShader.js +270 -192
- package/shaders/HalftoneShader.js.map +1 -1
- package/shaders/HorizontalTiltShiftShader.cjs +43 -27
- package/shaders/HorizontalTiltShiftShader.cjs.map +1 -1
- package/shaders/HorizontalTiltShiftShader.js +43 -27
- package/shaders/HorizontalTiltShiftShader.js.map +1 -1
- package/shaders/HueSaturationShader.cjs +47 -31
- package/shaders/HueSaturationShader.cjs.map +1 -1
- package/shaders/HueSaturationShader.js +47 -31
- package/shaders/HueSaturationShader.js.map +1 -1
- package/shaders/KaleidoShader.cjs +37 -24
- package/shaders/KaleidoShader.cjs.map +1 -1
- package/shaders/KaleidoShader.js +37 -24
- package/shaders/KaleidoShader.js.map +1 -1
- package/shaders/LuminosityHighPassShader.cjs +43 -24
- package/shaders/LuminosityHighPassShader.cjs.map +1 -1
- package/shaders/LuminosityHighPassShader.js +43 -24
- package/shaders/LuminosityHighPassShader.js.map +1 -1
- package/shaders/LuminosityShader.cjs +34 -17
- package/shaders/LuminosityShader.cjs.map +1 -1
- package/shaders/LuminosityShader.js +34 -17
- package/shaders/LuminosityShader.js.map +1 -1
- package/shaders/MirrorShader.cjs +39 -26
- package/shaders/MirrorShader.cjs.map +1 -1
- package/shaders/MirrorShader.js +39 -26
- package/shaders/MirrorShader.js.map +1 -1
- package/shaders/NormalMapShader.cjs +36 -21
- package/shaders/NormalMapShader.cjs.map +1 -1
- package/shaders/NormalMapShader.js +36 -21
- package/shaders/NormalMapShader.js.map +1 -1
- package/shaders/ParallaxShader.cjs +147 -97
- package/shaders/ParallaxShader.cjs.map +1 -1
- package/shaders/ParallaxShader.js +147 -97
- package/shaders/ParallaxShader.js.map +1 -1
- package/shaders/PixelShader.cjs +31 -18
- package/shaders/PixelShader.cjs.map +1 -1
- package/shaders/PixelShader.js +31 -18
- package/shaders/PixelShader.js.map +1 -1
- package/shaders/RGBShiftShader.cjs +33 -20
- package/shaders/RGBShiftShader.cjs.map +1 -1
- package/shaders/RGBShiftShader.js +33 -20
- package/shaders/RGBShiftShader.js.map +1 -1
- package/shaders/SAOShader.cjs +154 -117
- package/shaders/SAOShader.cjs.map +1 -1
- package/shaders/SAOShader.js +154 -117
- package/shaders/SAOShader.js.map +1 -1
- package/shaders/SMAAShader.cjs +358 -270
- package/shaders/SMAAShader.cjs.map +1 -1
- package/shaders/SMAAShader.js +358 -270
- package/shaders/SMAAShader.js.map +1 -1
- package/shaders/SSAOShader.cjs +236 -142
- package/shaders/SSAOShader.cjs.map +1 -1
- package/shaders/SSAOShader.js +236 -142
- package/shaders/SSAOShader.js.map +1 -1
- package/shaders/SSRShader.cjs +4 -4
- package/shaders/SSRShader.cjs.map +1 -1
- package/shaders/SSRShader.js +4 -4
- package/shaders/SSRShader.js.map +1 -1
- package/shaders/SepiaShader.cjs +36 -20
- package/shaders/SepiaShader.cjs.map +1 -1
- package/shaders/SepiaShader.js +36 -20
- package/shaders/SepiaShader.js.map +1 -1
- package/shaders/SobelOperatorShader.cjs +64 -37
- package/shaders/SobelOperatorShader.cjs.map +1 -1
- package/shaders/SobelOperatorShader.js +64 -37
- package/shaders/SobelOperatorShader.js.map +1 -1
- package/shaders/TechnicolorShader.cjs +29 -16
- package/shaders/TechnicolorShader.cjs.map +1 -1
- package/shaders/TechnicolorShader.js +29 -16
- package/shaders/TechnicolorShader.js.map +1 -1
- package/shaders/ToneMapShader.cjs +55 -35
- package/shaders/ToneMapShader.cjs.map +1 -1
- package/shaders/ToneMapShader.js +55 -35
- package/shaders/ToneMapShader.js.map +1 -1
- package/shaders/ToonShader.cjs +275 -165
- package/shaders/ToonShader.cjs.map +1 -1
- package/shaders/ToonShader.js +275 -165
- package/shaders/ToonShader.js.map +1 -1
- package/shaders/TriangleBlurShader.cjs +50 -27
- package/shaders/TriangleBlurShader.cjs.map +1 -1
- package/shaders/TriangleBlurShader.js +50 -27
- package/shaders/TriangleBlurShader.js.map +1 -1
- package/shaders/UnpackDepthRGBAShader.cjs +32 -17
- package/shaders/UnpackDepthRGBAShader.cjs.map +1 -1
- package/shaders/UnpackDepthRGBAShader.js +32 -17
- package/shaders/UnpackDepthRGBAShader.js.map +1 -1
- package/shaders/VerticalTiltShiftShader.cjs +43 -27
- package/shaders/VerticalTiltShiftShader.cjs.map +1 -1
- package/shaders/VerticalTiltShiftShader.js +43 -27
- package/shaders/VerticalTiltShiftShader.js.map +1 -1
- package/shaders/VignetteShader.cjs +43 -27
- package/shaders/VignetteShader.cjs.map +1 -1
- package/shaders/VignetteShader.js +43 -27
- package/shaders/VignetteShader.js.map +1 -1
- package/shaders/VolumeShader.cjs +264 -213
- package/shaders/VolumeShader.cjs.map +1 -1
- package/shaders/VolumeShader.js +264 -213
- package/shaders/VolumeShader.js.map +1 -1
- package/shaders/WaterRefractionShader.cjs +63 -35
- package/shaders/WaterRefractionShader.cjs.map +1 -1
- package/shaders/WaterRefractionShader.js +63 -35
- package/shaders/WaterRefractionShader.js.map +1 -1
- package/utils/GeometryCompressionUtils.cjs +2 -1
- package/utils/GeometryCompressionUtils.cjs.map +1 -1
- package/utils/GeometryCompressionUtils.js +3 -2
- package/utils/GeometryCompressionUtils.js.map +1 -1
- package/utils/RoughnessMipmapper.cjs +3 -3
- package/utils/RoughnessMipmapper.cjs.map +1 -1
- package/utils/RoughnessMipmapper.js +4 -4
- package/utils/RoughnessMipmapper.js.map +1 -1
- package/webxr/ARButton.cjs +109 -106
- package/webxr/ARButton.cjs.map +1 -1
- package/webxr/ARButton.d.ts +4 -3
- package/webxr/ARButton.js +109 -106
- package/webxr/ARButton.js.map +1 -1
- package/webxr/OculusHandPointerModel.cjs +2 -2
- package/webxr/OculusHandPointerModel.cjs.map +1 -1
- package/webxr/OculusHandPointerModel.js +2 -2
- package/webxr/OculusHandPointerModel.js.map +1 -1
- package/webxr/VRButton.cjs +98 -95
- package/webxr/VRButton.cjs.map +1 -1
- package/webxr/VRButton.d.ts +6 -5
- package/webxr/VRButton.js +98 -95
- package/webxr/VRButton.js.map +1 -1
- package/webxr/XRHandPrimitiveModel.cjs +2 -2
- package/webxr/XRHandPrimitiveModel.cjs.map +1 -1
- package/webxr/XRHandPrimitiveModel.js +3 -3
- package/webxr/XRHandPrimitiveModel.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KTX2Loader.js","sources":["../../src/loaders/KTX2Loader.js"],"sourcesContent":["/**\n * Loader for KTX 2.0 GPU Texture containers.\n *\n * KTX 2.0 is a container format for various GPU texture formats. The loader\n * supports Basis Universal GPU textures, which can be quickly transcoded to\n * a wide variety of GPU texture compression formats, as well as some\n * uncompressed DataTexture and Data3DTexture formats.\n *\n * References:\n * - KTX: http://github.khronos.org/KTX-Specification/\n * - DFD: https://www.khronos.org/registry/DataFormat/specs/1.3/dataformat.1.3.html#basicdescriptor\n */\n\nimport {\n CompressedTexture,\n DataTexture,\n FileLoader,\n FloatType,\n HalfFloatType,\n LinearFilter,\n LinearMipmapLinearFilter,\n Loader,\n RedFormat,\n RGB_ETC1_Format,\n RGB_ETC2_Format,\n RGB_PVRTC_4BPPV1_Format,\n RGB_S3TC_DXT1_Format,\n RGBA_ASTC_4x4_Format,\n RGBA_ASTC_6x6_Format,\n RGBA_BPTC_Format,\n RGBA_ETC2_EAC_Format,\n RGBA_PVRTC_4BPPV1_Format,\n RGBA_S3TC_DXT5_Format,\n RGBAFormat,\n RGFormat,\n UnsignedByteType,\n} from 'three'\nimport { WorkerPool } from '../utils/WorkerPool'\nimport {\n read,\n KHR_DF_FLAG_ALPHA_PREMULTIPLIED,\n KHR_DF_TRANSFER_SRGB,\n KHR_SUPERCOMPRESSION_NONE,\n KHR_SUPERCOMPRESSION_ZSTD,\n VK_FORMAT_UNDEFINED,\n VK_FORMAT_R16_SFLOAT,\n VK_FORMAT_R16G16_SFLOAT,\n VK_FORMAT_R16G16B16A16_SFLOAT,\n VK_FORMAT_R32_SFLOAT,\n VK_FORMAT_R32G32_SFLOAT,\n VK_FORMAT_R32G32B32A32_SFLOAT,\n VK_FORMAT_R8_SRGB,\n VK_FORMAT_R8_UNORM,\n VK_FORMAT_R8G8_SRGB,\n VK_FORMAT_R8G8_UNORM,\n VK_FORMAT_R8G8B8A8_SRGB,\n VK_FORMAT_R8G8B8A8_UNORM,\n VK_FORMAT_ASTC_6x6_SRGB_BLOCK,\n VK_FORMAT_ASTC_6x6_UNORM_BLOCK,\n KHR_DF_PRIMARIES_UNSPECIFIED,\n KHR_DF_PRIMARIES_BT709,\n KHR_DF_PRIMARIES_DISPLAYP3,\n} from '../libs/ktx-parse'\nimport { ZSTDDecoder } from '../libs/zstddec'\nimport { CompressedCubeTexture } from '../_polyfill/CompressedCubeTexture'\nimport { CompressedArrayTexture } from '../_polyfill/CompressedArrayTexture'\nimport { Data3DTexture } from '../_polyfill/Data3DTexture'\n\nconst LinearEncoding = 3000\nconst sRGBEncoding = 3001\n\nconst NoColorSpace = ''\nconst DisplayP3ColorSpace = 'display-p3'\nconst LinearDisplayP3ColorSpace = 'display-p3-linear'\nconst LinearSRGBColorSpace = 'srgb-linear'\nconst SRGBColorSpace = 'srgb'\n\nconst _taskCache = new WeakMap()\n\nlet _activeLoaders = 0\n\nlet _zstd\n\nclass KTX2Loader extends Loader {\n /* CONSTANTS */\n\n static BasisFormat = {\n ETC1S: 0,\n UASTC_4x4: 1,\n }\n\n static TranscoderFormat = {\n ETC1: 0,\n ETC2: 1,\n BC1: 2,\n BC3: 3,\n BC4: 4,\n BC5: 5,\n BC7_M6_OPAQUE_ONLY: 6,\n BC7_M5: 7,\n PVRTC1_4_RGB: 8,\n PVRTC1_4_RGBA: 9,\n ASTC_4x4: 10,\n ATC_RGB: 11,\n ATC_RGBA_INTERPOLATED_ALPHA: 12,\n RGBA32: 13,\n RGB565: 14,\n BGR565: 15,\n RGBA4444: 16,\n }\n\n static EngineFormat = {\n RGBAFormat: RGBAFormat,\n RGBA_ASTC_4x4_Format: RGBA_ASTC_4x4_Format,\n RGBA_BPTC_Format: RGBA_BPTC_Format,\n RGBA_ETC2_EAC_Format: RGBA_ETC2_EAC_Format,\n RGBA_PVRTC_4BPPV1_Format: RGBA_PVRTC_4BPPV1_Format,\n RGBA_S3TC_DXT5_Format: RGBA_S3TC_DXT5_Format,\n RGB_ETC1_Format: RGB_ETC1_Format,\n RGB_ETC2_Format: RGB_ETC2_Format,\n RGB_PVRTC_4BPPV1_Format: RGB_PVRTC_4BPPV1_Format,\n RGB_S3TC_DXT1_Format: RGB_S3TC_DXT1_Format,\n }\n\n /* WEB WORKER */\n\n static BasisWorker = function () {\n let config\n let transcoderPending\n let BasisModule\n\n /** @type KTX2Loader.EngineFormat */\n const EngineFormat = _EngineFormat\n /** @type KTX2Loader.TranscoderFormat */\n const TranscoderFormat = _TranscoderFormat\n /** @type KTX2Loader.BasisFormat */\n const BasisFormat = _BasisFormat\n\n self.addEventListener('message', function (e) {\n const message = e.data\n\n switch (message.type) {\n case 'init':\n config = message.config\n init(message.transcoderBinary)\n break\n\n case 'transcode':\n transcoderPending.then(() => {\n try {\n const { faces, buffers, width, height, hasAlpha, format, dfdFlags } = transcode(message.buffer)\n\n self.postMessage(\n { type: 'transcode', id: message.id, faces, width, height, hasAlpha, format, dfdFlags },\n buffers,\n )\n } catch (error) {\n console.error(error)\n\n self.postMessage({ type: 'error', id: message.id, error: error.message })\n }\n })\n break\n }\n })\n\n function init(wasmBinary) {\n transcoderPending = new Promise((resolve) => {\n BasisModule = { wasmBinary, onRuntimeInitialized: resolve }\n BASIS(BasisModule)\n }).then(() => {\n BasisModule.initializeBasis()\n\n if (BasisModule.KTX2File === undefined) {\n console.warn('THREE.KTX2Loader: Please update Basis Universal transcoder.')\n }\n })\n }\n\n function transcode(buffer) {\n const ktx2File = new BasisModule.KTX2File(new Uint8Array(buffer))\n\n function cleanup() {\n ktx2File.close()\n ktx2File.delete()\n }\n\n if (!ktx2File.isValid()) {\n cleanup()\n throw new Error('THREE.KTX2Loader:\tInvalid or unsupported .ktx2 file')\n }\n\n const basisFormat = ktx2File.isUASTC() ? BasisFormat.UASTC_4x4 : BasisFormat.ETC1S\n const width = ktx2File.getWidth()\n const height = ktx2File.getHeight()\n const layerCount = ktx2File.getLayers() || 1\n const levelCount = ktx2File.getLevels()\n const faceCount = ktx2File.getFaces()\n const hasAlpha = ktx2File.getHasAlpha()\n const dfdFlags = ktx2File.getDFDFlags()\n\n const { transcoderFormat, engineFormat } = getTranscoderFormat(basisFormat, width, height, hasAlpha)\n\n if (!width || !height || !levelCount) {\n cleanup()\n throw new Error('THREE.KTX2Loader:\tInvalid texture')\n }\n\n if (!ktx2File.startTranscoding()) {\n cleanup()\n throw new Error('THREE.KTX2Loader: .startTranscoding failed')\n }\n\n const faces = []\n const buffers = []\n\n for (let face = 0; face < faceCount; face++) {\n const mipmaps = []\n\n for (let mip = 0; mip < levelCount; mip++) {\n const layerMips = []\n\n let mipWidth, mipHeight\n\n for (let layer = 0; layer < layerCount; layer++) {\n const levelInfo = ktx2File.getImageLevelInfo(mip, layer, face)\n\n if (\n face === 0 &&\n mip === 0 &&\n layer === 0 &&\n (levelInfo.origWidth % 4 !== 0 || levelInfo.origHeight % 4 !== 0)\n ) {\n console.warn('THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions.')\n }\n\n if (levelCount > 1) {\n mipWidth = levelInfo.origWidth\n mipHeight = levelInfo.origHeight\n } else {\n // Handles non-multiple-of-four dimensions in textures without mipmaps. Textures with\n // mipmaps must use multiple-of-four dimensions, for some texture formats and APIs.\n // See mrdoob/three.js#25908.\n mipWidth = levelInfo.width\n mipHeight = levelInfo.height\n }\n\n const dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, transcoderFormat))\n const status = ktx2File.transcodeImage(dst, mip, layer, face, transcoderFormat, 0, -1, -1)\n\n if (!status) {\n cleanup()\n throw new Error('THREE.KTX2Loader: .transcodeImage failed.')\n }\n\n layerMips.push(dst)\n }\n\n const mipData = concat(layerMips)\n\n mipmaps.push({ data: mipData, width: mipWidth, height: mipHeight })\n buffers.push(mipData.buffer)\n }\n\n faces.push({ mipmaps, width, height, format: engineFormat })\n }\n\n cleanup()\n\n return { faces, buffers, width, height, hasAlpha, format: engineFormat, dfdFlags }\n }\n\n //\n\n // Optimal choice of a transcoder target format depends on the Basis format (ETC1S or UASTC),\n // device capabilities, and texture dimensions. The list below ranks the formats separately\n // for ETC1S and UASTC.\n //\n // In some cases, transcoding UASTC to RGBA32 might be preferred for higher quality (at\n // significant memory cost) compared to ETC1/2, BC1/3, and PVRTC. The transcoder currently\n // chooses RGBA32 only as a last resort and does not expose that option to the caller.\n const FORMAT_OPTIONS = [\n {\n if: 'astcSupported',\n basisFormat: [BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.ASTC_4x4, TranscoderFormat.ASTC_4x4],\n engineFormat: [EngineFormat.RGBA_ASTC_4x4_Format, EngineFormat.RGBA_ASTC_4x4_Format],\n priorityETC1S: Infinity,\n priorityUASTC: 1,\n needsPowerOfTwo: false,\n },\n {\n if: 'bptcSupported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.BC7_M5, TranscoderFormat.BC7_M5],\n engineFormat: [EngineFormat.RGBA_BPTC_Format, EngineFormat.RGBA_BPTC_Format],\n priorityETC1S: 3,\n priorityUASTC: 2,\n needsPowerOfTwo: false,\n },\n {\n if: 'dxtSupported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.BC1, TranscoderFormat.BC3],\n engineFormat: [EngineFormat.RGB_S3TC_DXT1_Format, EngineFormat.RGBA_S3TC_DXT5_Format],\n priorityETC1S: 4,\n priorityUASTC: 5,\n needsPowerOfTwo: false,\n },\n {\n if: 'etc2Supported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.ETC1, TranscoderFormat.ETC2],\n engineFormat: [EngineFormat.RGB_ETC2_Format, EngineFormat.RGBA_ETC2_EAC_Format],\n priorityETC1S: 1,\n priorityUASTC: 3,\n needsPowerOfTwo: false,\n },\n {\n if: 'etc1Supported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.ETC1],\n engineFormat: [EngineFormat.RGB_ETC1_Format],\n priorityETC1S: 2,\n priorityUASTC: 4,\n needsPowerOfTwo: false,\n },\n {\n if: 'pvrtcSupported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.PVRTC1_4_RGB, TranscoderFormat.PVRTC1_4_RGBA],\n engineFormat: [EngineFormat.RGB_PVRTC_4BPPV1_Format, EngineFormat.RGBA_PVRTC_4BPPV1_Format],\n priorityETC1S: 5,\n priorityUASTC: 6,\n needsPowerOfTwo: true,\n },\n ]\n\n const ETC1S_OPTIONS = FORMAT_OPTIONS.sort(function (a, b) {\n return a.priorityETC1S - b.priorityETC1S\n })\n const UASTC_OPTIONS = FORMAT_OPTIONS.sort(function (a, b) {\n return a.priorityUASTC - b.priorityUASTC\n })\n\n function getTranscoderFormat(basisFormat, width, height, hasAlpha) {\n let transcoderFormat\n let engineFormat\n\n const options = basisFormat === BasisFormat.ETC1S ? ETC1S_OPTIONS : UASTC_OPTIONS\n\n for (let i = 0; i < options.length; i++) {\n const opt = options[i]\n\n if (!config[opt.if]) continue\n if (!opt.basisFormat.includes(basisFormat)) continue\n if (hasAlpha && opt.transcoderFormat.length < 2) continue\n if (opt.needsPowerOfTwo && !(isPowerOfTwo(width) && isPowerOfTwo(height))) continue\n\n transcoderFormat = opt.transcoderFormat[hasAlpha ? 1 : 0]\n engineFormat = opt.engineFormat[hasAlpha ? 1 : 0]\n\n return { transcoderFormat, engineFormat }\n }\n\n console.warn('THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32.')\n\n transcoderFormat = TranscoderFormat.RGBA32\n engineFormat = EngineFormat.RGBAFormat\n\n return { transcoderFormat, engineFormat }\n }\n\n function isPowerOfTwo(value) {\n if (value <= 2) return true\n\n return (value & (value - 1)) === 0 && value !== 0\n }\n\n /** Concatenates N byte arrays. */\n function concat(arrays) {\n if (arrays.length === 1) return arrays[0]\n\n let totalByteLength = 0\n\n for (let i = 0; i < arrays.length; i++) {\n const array = arrays[i]\n totalByteLength += array.byteLength\n }\n\n const result = new Uint8Array(totalByteLength)\n\n let byteOffset = 0\n\n for (let i = 0; i < arrays.length; i++) {\n const array = arrays[i]\n result.set(array, byteOffset)\n\n byteOffset += array.byteLength\n }\n\n return result\n }\n }\n\n constructor(manager) {\n super(manager)\n\n this.transcoderPath = ''\n this.transcoderBinary = null\n this.transcoderPending = null\n\n this.workerPool = new WorkerPool()\n this.workerSourceURL = ''\n this.workerConfig = null\n\n if (typeof MSC_TRANSCODER !== 'undefined') {\n console.warn(\n 'THREE.KTX2Loader: Please update to latest \"basis_transcoder\".' +\n ' \"msc_basis_transcoder\" is no longer supported in three.js r125+.',\n )\n }\n }\n\n setTranscoderPath(path) {\n this.transcoderPath = path\n\n return this\n }\n\n setWorkerLimit(num) {\n this.workerPool.setWorkerLimit(num)\n\n return this\n }\n\n detectSupport(renderer) {\n this.workerConfig = {\n astcSupported: renderer.extensions.has('WEBGL_compressed_texture_astc'),\n etc1Supported: renderer.extensions.has('WEBGL_compressed_texture_etc1'),\n etc2Supported: renderer.extensions.has('WEBGL_compressed_texture_etc'),\n dxtSupported: renderer.extensions.has('WEBGL_compressed_texture_s3tc'),\n bptcSupported: renderer.extensions.has('EXT_texture_compression_bptc'),\n pvrtcSupported:\n renderer.extensions.has('WEBGL_compressed_texture_pvrtc') ||\n renderer.extensions.has('WEBKIT_WEBGL_compressed_texture_pvrtc'),\n }\n\n if (renderer.capabilities.isWebGL2) {\n // https://github.com/mrdoob/three.js/pull/22928\n this.workerConfig.etc1Supported = false\n }\n\n return this\n }\n\n init() {\n if (!this.transcoderPending) {\n // Load transcoder wrapper.\n const jsLoader = new FileLoader(this.manager)\n jsLoader.setPath(this.transcoderPath)\n jsLoader.setWithCredentials(this.withCredentials)\n const jsContent = jsLoader.loadAsync('basis_transcoder.js')\n\n // Load transcoder WASM binary.\n const binaryLoader = new FileLoader(this.manager)\n binaryLoader.setPath(this.transcoderPath)\n binaryLoader.setResponseType('arraybuffer')\n binaryLoader.setWithCredentials(this.withCredentials)\n const binaryContent = binaryLoader.loadAsync('basis_transcoder.wasm')\n\n this.transcoderPending = Promise.all([jsContent, binaryContent]).then(([jsContent, binaryContent]) => {\n const fn = KTX2Loader.BasisWorker.toString()\n\n const body = [\n '/* constants */',\n 'let _EngineFormat = ' + JSON.stringify(KTX2Loader.EngineFormat),\n 'let _TranscoderFormat = ' + JSON.stringify(KTX2Loader.TranscoderFormat),\n 'let _BasisFormat = ' + JSON.stringify(KTX2Loader.BasisFormat),\n '/* basis_transcoder.js */',\n jsContent,\n '/* worker */',\n fn.substring(fn.indexOf('{') + 1, fn.lastIndexOf('}')),\n ].join('\\n')\n\n this.workerSourceURL = URL.createObjectURL(new Blob([body]))\n this.transcoderBinary = binaryContent\n\n this.workerPool.setWorkerCreator(() => {\n const worker = new Worker(this.workerSourceURL)\n const transcoderBinary = this.transcoderBinary.slice(0)\n\n worker.postMessage({ type: 'init', config: this.workerConfig, transcoderBinary }, [transcoderBinary])\n\n return worker\n })\n })\n\n if (_activeLoaders > 0) {\n // Each instance loads a transcoder and allocates workers, increasing network and memory cost.\n\n console.warn(\n 'THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues.' +\n ' Use a single KTX2Loader instance, or call .dispose() on old instances.',\n )\n }\n\n _activeLoaders++\n }\n\n return this.transcoderPending\n }\n\n load(url, onLoad, onProgress, onError) {\n if (this.workerConfig === null) {\n throw new Error('THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.')\n }\n\n const loader = new FileLoader(this.manager)\n\n loader.setResponseType('arraybuffer')\n loader.setWithCredentials(this.withCredentials)\n\n loader.load(\n url,\n (buffer) => {\n // Check for an existing task using this buffer. A transferred buffer cannot be transferred\n // again from this thread.\n if (_taskCache.has(buffer)) {\n const cachedTask = _taskCache.get(buffer)\n\n return cachedTask.promise.then(onLoad).catch(onError)\n }\n\n this._createTexture(buffer)\n .then((texture) => (onLoad ? onLoad(texture) : null))\n .catch(onError)\n },\n onProgress,\n onError,\n )\n }\n\n _createTextureFrom(transcodeResult, container) {\n const { faces, width, height, format, type, error, dfdFlags } = transcodeResult\n\n if (type === 'error') return Promise.reject(error)\n\n let texture\n\n if (container.faceCount === 6) {\n texture = new CompressedCubeTexture(faces, format, UnsignedByteType)\n } else {\n const mipmaps = faces[0].mipmaps\n\n texture =\n container.layerCount > 1\n ? new CompressedArrayTexture(mipmaps, width, height, container.layerCount, format, UnsignedByteType)\n : new CompressedTexture(mipmaps, width, height, format, UnsignedByteType)\n }\n\n texture.minFilter = faces[0].mipmaps.length === 1 ? LinearFilter : LinearMipmapLinearFilter\n texture.magFilter = LinearFilter\n texture.generateMipmaps = false\n texture.needsUpdate = true\n\n const colorSpace = parseColorSpace(container)\n if ('colorSpace' in texture) texture.colorSpace = colorSpace\n else texture.encoding = colorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding\n\n texture.premultiplyAlpha = !!(dfdFlags & KHR_DF_FLAG_ALPHA_PREMULTIPLIED)\n\n return texture\n }\n\n /**\n * @param {ArrayBuffer} buffer\n * @param {object?} config\n * @return {Promise<CompressedTexture|CompressedArrayTexture|DataTexture|Data3DTexture>}\n */\n async _createTexture(buffer, config = {}) {\n const container = read(new Uint8Array(buffer))\n\n if (container.vkFormat !== VK_FORMAT_UNDEFINED) {\n return createRawTexture(container)\n }\n\n //\n\n const taskConfig = config\n const texturePending = this.init()\n .then(() => {\n return this.workerPool.postMessage({ type: 'transcode', buffer, taskConfig: taskConfig }, [buffer])\n })\n .then((e) => this._createTextureFrom(e.data, container))\n\n // Cache the task result.\n _taskCache.set(buffer, { promise: texturePending })\n\n return texturePending\n }\n\n dispose() {\n this.workerPool.dispose()\n if (this.workerSourceURL) URL.revokeObjectURL(this.workerSourceURL)\n\n _activeLoaders--\n\n return this\n }\n}\n\n//\n// Parsing for non-Basis textures. These textures are may have supercompression\n// like Zstd, but they do not require transcoding.\n\nconst UNCOMPRESSED_FORMATS = new Set([RGBAFormat, RGFormat, RedFormat])\n\nconst FORMAT_MAP = {\n [VK_FORMAT_R32G32B32A32_SFLOAT]: RGBAFormat,\n [VK_FORMAT_R16G16B16A16_SFLOAT]: RGBAFormat,\n [VK_FORMAT_R8G8B8A8_UNORM]: RGBAFormat,\n [VK_FORMAT_R8G8B8A8_SRGB]: RGBAFormat,\n\n [VK_FORMAT_R32G32_SFLOAT]: RGFormat,\n [VK_FORMAT_R16G16_SFLOAT]: RGFormat,\n [VK_FORMAT_R8G8_UNORM]: RGFormat,\n [VK_FORMAT_R8G8_SRGB]: RGFormat,\n\n [VK_FORMAT_R32_SFLOAT]: RedFormat,\n [VK_FORMAT_R16_SFLOAT]: RedFormat,\n [VK_FORMAT_R8_SRGB]: RedFormat,\n [VK_FORMAT_R8_UNORM]: RedFormat,\n\n [VK_FORMAT_ASTC_6x6_SRGB_BLOCK]: RGBA_ASTC_6x6_Format,\n [VK_FORMAT_ASTC_6x6_UNORM_BLOCK]: RGBA_ASTC_6x6_Format,\n}\n\nconst TYPE_MAP = {\n [VK_FORMAT_R32G32B32A32_SFLOAT]: FloatType,\n [VK_FORMAT_R16G16B16A16_SFLOAT]: HalfFloatType,\n [VK_FORMAT_R8G8B8A8_UNORM]: UnsignedByteType,\n [VK_FORMAT_R8G8B8A8_SRGB]: UnsignedByteType,\n\n [VK_FORMAT_R32G32_SFLOAT]: FloatType,\n [VK_FORMAT_R16G16_SFLOAT]: HalfFloatType,\n [VK_FORMAT_R8G8_UNORM]: UnsignedByteType,\n [VK_FORMAT_R8G8_SRGB]: UnsignedByteType,\n\n [VK_FORMAT_R32_SFLOAT]: FloatType,\n [VK_FORMAT_R16_SFLOAT]: HalfFloatType,\n [VK_FORMAT_R8_SRGB]: UnsignedByteType,\n [VK_FORMAT_R8_UNORM]: UnsignedByteType,\n\n [VK_FORMAT_ASTC_6x6_SRGB_BLOCK]: UnsignedByteType,\n [VK_FORMAT_ASTC_6x6_UNORM_BLOCK]: UnsignedByteType,\n}\n\nasync function createRawTexture(container) {\n const { vkFormat } = container\n\n if (FORMAT_MAP[vkFormat] === undefined) {\n throw new Error('THREE.KTX2Loader: Unsupported vkFormat.')\n }\n\n //\n\n let zstd\n\n if (container.supercompressionScheme === KHR_SUPERCOMPRESSION_ZSTD) {\n if (!_zstd) {\n _zstd = new Promise(async (resolve) => {\n const zstd = new ZSTDDecoder()\n await zstd.init()\n resolve(zstd)\n })\n }\n\n zstd = await _zstd\n }\n\n //\n\n const mipmaps = []\n\n for (let levelIndex = 0; levelIndex < container.levels.length; levelIndex++) {\n const levelWidth = Math.max(1, container.pixelWidth >> levelIndex)\n const levelHeight = Math.max(1, container.pixelHeight >> levelIndex)\n const levelDepth = container.pixelDepth ? Math.max(1, container.pixelDepth >> levelIndex) : 0\n\n const level = container.levels[levelIndex]\n\n let levelData\n\n if (container.supercompressionScheme === KHR_SUPERCOMPRESSION_NONE) {\n levelData = level.levelData\n } else if (container.supercompressionScheme === KHR_SUPERCOMPRESSION_ZSTD) {\n levelData = zstd.decode(level.levelData, level.uncompressedByteLength)\n } else {\n throw new Error('THREE.KTX2Loader: Unsupported supercompressionScheme.')\n }\n\n let data\n\n if (TYPE_MAP[vkFormat] === FloatType) {\n data = new Float32Array(\n levelData.buffer,\n levelData.byteOffset,\n levelData.byteLength / Float32Array.BYTES_PER_ELEMENT,\n )\n } else if (TYPE_MAP[vkFormat] === HalfFloatType) {\n data = new Uint16Array(\n levelData.buffer,\n levelData.byteOffset,\n levelData.byteLength / Uint16Array.BYTES_PER_ELEMENT,\n )\n } else {\n data = levelData\n }\n\n mipmaps.push({\n data: data,\n width: levelWidth,\n height: levelHeight,\n depth: levelDepth,\n })\n }\n\n let texture\n\n if (UNCOMPRESSED_FORMATS.has(FORMAT_MAP[vkFormat])) {\n texture =\n container.pixelDepth === 0\n ? new DataTexture(mipmaps[0].data, container.pixelWidth, container.pixelHeight)\n : new Data3DTexture(mipmaps[0].data, container.pixelWidth, container.pixelHeight, container.pixelDepth)\n } else {\n if (container.pixelDepth > 0) throw new Error('THREE.KTX2Loader: Unsupported pixelDepth.')\n\n texture = new CompressedTexture(mipmaps, container.pixelWidth, container.pixelHeight)\n }\n\n texture.mipmaps = mipmaps\n\n texture.type = TYPE_MAP[vkFormat]\n texture.format = FORMAT_MAP[vkFormat]\n texture.needsUpdate = true\n\n const colorSpace = parseColorSpace(container)\n if ('colorSpace' in texture) texture.colorSpace = colorSpace\n else texture.encoding = colorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding\n\n //\n\n return Promise.resolve(texture)\n}\n\nfunction parseColorSpace(container) {\n const dfd = container.dataFormatDescriptor[0]\n\n if (dfd.colorPrimaries === KHR_DF_PRIMARIES_BT709) {\n return dfd.transferFunction === KHR_DF_TRANSFER_SRGB ? SRGBColorSpace : LinearSRGBColorSpace\n } else if (dfd.colorPrimaries === KHR_DF_PRIMARIES_DISPLAYP3) {\n return dfd.transferFunction === KHR_DF_TRANSFER_SRGB ? DisplayP3ColorSpace : LinearDisplayP3ColorSpace\n } else if (dfd.colorPrimaries === KHR_DF_PRIMARIES_UNSPECIFIED) {\n return NoColorSpace\n } else {\n console.warn(`THREE.KTX2Loader: Unsupported color primaries, \"${dfd.colorPrimaries}\"`)\n return NoColorSpace\n }\n}\n\nexport { KTX2Loader }\n"],"names":["jsContent","binaryContent","zstd"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"KTX2Loader.js","sources":["../../src/loaders/KTX2Loader.js"],"sourcesContent":["/**\n * Loader for KTX 2.0 GPU Texture containers.\n *\n * KTX 2.0 is a container format for various GPU texture formats. The loader\n * supports Basis Universal GPU textures, which can be quickly transcoded to\n * a wide variety of GPU texture compression formats, as well as some\n * uncompressed DataTexture and Data3DTexture formats.\n *\n * References:\n * - KTX: http://github.khronos.org/KTX-Specification/\n * - DFD: https://www.khronos.org/registry/DataFormat/specs/1.3/dataformat.1.3.html#basicdescriptor\n */\n\nimport {\n CompressedTexture,\n DataTexture,\n FileLoader,\n FloatType,\n HalfFloatType,\n LinearFilter,\n LinearMipmapLinearFilter,\n Loader,\n RedFormat,\n RGB_ETC1_Format,\n RGB_ETC2_Format,\n RGB_PVRTC_4BPPV1_Format,\n RGB_S3TC_DXT1_Format,\n RGBA_ASTC_4x4_Format,\n RGBA_ASTC_6x6_Format,\n RGBA_BPTC_Format,\n RGBA_ETC2_EAC_Format,\n RGBA_PVRTC_4BPPV1_Format,\n RGBA_S3TC_DXT5_Format,\n RGBAFormat,\n RGFormat,\n UnsignedByteType,\n} from 'three'\nimport { WorkerPool } from '../utils/WorkerPool'\nimport {\n read,\n KHR_DF_FLAG_ALPHA_PREMULTIPLIED,\n KHR_DF_TRANSFER_SRGB,\n KHR_SUPERCOMPRESSION_NONE,\n KHR_SUPERCOMPRESSION_ZSTD,\n VK_FORMAT_UNDEFINED,\n VK_FORMAT_R16_SFLOAT,\n VK_FORMAT_R16G16_SFLOAT,\n VK_FORMAT_R16G16B16A16_SFLOAT,\n VK_FORMAT_R32_SFLOAT,\n VK_FORMAT_R32G32_SFLOAT,\n VK_FORMAT_R32G32B32A32_SFLOAT,\n VK_FORMAT_R8_SRGB,\n VK_FORMAT_R8_UNORM,\n VK_FORMAT_R8G8_SRGB,\n VK_FORMAT_R8G8_UNORM,\n VK_FORMAT_R8G8B8A8_SRGB,\n VK_FORMAT_R8G8B8A8_UNORM,\n VK_FORMAT_ASTC_6x6_SRGB_BLOCK,\n VK_FORMAT_ASTC_6x6_UNORM_BLOCK,\n KHR_DF_PRIMARIES_UNSPECIFIED,\n KHR_DF_PRIMARIES_BT709,\n KHR_DF_PRIMARIES_DISPLAYP3,\n} from '../libs/ktx-parse'\nimport { ZSTDDecoder } from '../libs/zstddec'\nimport { CompressedCubeTexture } from '../_polyfill/CompressedCubeTexture'\nimport { CompressedArrayTexture } from '../_polyfill/CompressedArrayTexture'\nimport { Data3DTexture } from '../_polyfill/Data3DTexture'\n\nconst LinearEncoding = 3000\nconst sRGBEncoding = 3001\n\nconst NoColorSpace = ''\nconst DisplayP3ColorSpace = 'display-p3'\nconst LinearDisplayP3ColorSpace = 'display-p3-linear'\nconst LinearSRGBColorSpace = 'srgb-linear'\nconst SRGBColorSpace = 'srgb'\n\nconst _taskCache = new WeakMap()\n\nlet _activeLoaders = 0\n\nlet _zstd\n\nconst KTX2Loader = /* @__PURE__ */ (() => {\n class KTX2Loader extends Loader {\n /* CONSTANTS */\n\n static BasisFormat = {\n ETC1S: 0,\n UASTC_4x4: 1,\n }\n\n static TranscoderFormat = {\n ETC1: 0,\n ETC2: 1,\n BC1: 2,\n BC3: 3,\n BC4: 4,\n BC5: 5,\n BC7_M6_OPAQUE_ONLY: 6,\n BC7_M5: 7,\n PVRTC1_4_RGB: 8,\n PVRTC1_4_RGBA: 9,\n ASTC_4x4: 10,\n ATC_RGB: 11,\n ATC_RGBA_INTERPOLATED_ALPHA: 12,\n RGBA32: 13,\n RGB565: 14,\n BGR565: 15,\n RGBA4444: 16,\n }\n\n static EngineFormat = {\n RGBAFormat: RGBAFormat,\n RGBA_ASTC_4x4_Format: RGBA_ASTC_4x4_Format,\n RGBA_BPTC_Format: RGBA_BPTC_Format,\n RGBA_ETC2_EAC_Format: RGBA_ETC2_EAC_Format,\n RGBA_PVRTC_4BPPV1_Format: RGBA_PVRTC_4BPPV1_Format,\n RGBA_S3TC_DXT5_Format: RGBA_S3TC_DXT5_Format,\n RGB_ETC1_Format: RGB_ETC1_Format,\n RGB_ETC2_Format: RGB_ETC2_Format,\n RGB_PVRTC_4BPPV1_Format: RGB_PVRTC_4BPPV1_Format,\n RGB_S3TC_DXT1_Format: RGB_S3TC_DXT1_Format,\n }\n\n /* WEB WORKER */\n\n static BasisWorker = function () {\n let config\n let transcoderPending\n let BasisModule\n\n /** @type KTX2Loader.EngineFormat */\n const EngineFormat = _EngineFormat\n /** @type KTX2Loader.TranscoderFormat */\n const TranscoderFormat = _TranscoderFormat\n /** @type KTX2Loader.BasisFormat */\n const BasisFormat = _BasisFormat\n\n self.addEventListener('message', function (e) {\n const message = e.data\n\n switch (message.type) {\n case 'init':\n config = message.config\n init(message.transcoderBinary)\n break\n\n case 'transcode':\n transcoderPending.then(() => {\n try {\n const { faces, buffers, width, height, hasAlpha, format, dfdFlags } = transcode(message.buffer)\n\n self.postMessage(\n { type: 'transcode', id: message.id, faces, width, height, hasAlpha, format, dfdFlags },\n buffers,\n )\n } catch (error) {\n console.error(error)\n\n self.postMessage({ type: 'error', id: message.id, error: error.message })\n }\n })\n break\n }\n })\n\n function init(wasmBinary) {\n transcoderPending = new Promise((resolve) => {\n BasisModule = { wasmBinary, onRuntimeInitialized: resolve }\n BASIS(BasisModule)\n }).then(() => {\n BasisModule.initializeBasis()\n\n if (BasisModule.KTX2File === undefined) {\n console.warn('THREE.KTX2Loader: Please update Basis Universal transcoder.')\n }\n })\n }\n\n function transcode(buffer) {\n const ktx2File = new BasisModule.KTX2File(new Uint8Array(buffer))\n\n function cleanup() {\n ktx2File.close()\n ktx2File.delete()\n }\n\n if (!ktx2File.isValid()) {\n cleanup()\n throw new Error('THREE.KTX2Loader:\tInvalid or unsupported .ktx2 file')\n }\n\n const basisFormat = ktx2File.isUASTC() ? BasisFormat.UASTC_4x4 : BasisFormat.ETC1S\n const width = ktx2File.getWidth()\n const height = ktx2File.getHeight()\n const layerCount = ktx2File.getLayers() || 1\n const levelCount = ktx2File.getLevels()\n const faceCount = ktx2File.getFaces()\n const hasAlpha = ktx2File.getHasAlpha()\n const dfdFlags = ktx2File.getDFDFlags()\n\n const { transcoderFormat, engineFormat } = getTranscoderFormat(basisFormat, width, height, hasAlpha)\n\n if (!width || !height || !levelCount) {\n cleanup()\n throw new Error('THREE.KTX2Loader:\tInvalid texture')\n }\n\n if (!ktx2File.startTranscoding()) {\n cleanup()\n throw new Error('THREE.KTX2Loader: .startTranscoding failed')\n }\n\n const faces = []\n const buffers = []\n\n for (let face = 0; face < faceCount; face++) {\n const mipmaps = []\n\n for (let mip = 0; mip < levelCount; mip++) {\n const layerMips = []\n\n let mipWidth, mipHeight\n\n for (let layer = 0; layer < layerCount; layer++) {\n const levelInfo = ktx2File.getImageLevelInfo(mip, layer, face)\n\n if (\n face === 0 &&\n mip === 0 &&\n layer === 0 &&\n (levelInfo.origWidth % 4 !== 0 || levelInfo.origHeight % 4 !== 0)\n ) {\n console.warn('THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions.')\n }\n\n if (levelCount > 1) {\n mipWidth = levelInfo.origWidth\n mipHeight = levelInfo.origHeight\n } else {\n // Handles non-multiple-of-four dimensions in textures without mipmaps. Textures with\n // mipmaps must use multiple-of-four dimensions, for some texture formats and APIs.\n // See mrdoob/three.js#25908.\n mipWidth = levelInfo.width\n mipHeight = levelInfo.height\n }\n\n const dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, transcoderFormat))\n const status = ktx2File.transcodeImage(dst, mip, layer, face, transcoderFormat, 0, -1, -1)\n\n if (!status) {\n cleanup()\n throw new Error('THREE.KTX2Loader: .transcodeImage failed.')\n }\n\n layerMips.push(dst)\n }\n\n const mipData = concat(layerMips)\n\n mipmaps.push({ data: mipData, width: mipWidth, height: mipHeight })\n buffers.push(mipData.buffer)\n }\n\n faces.push({ mipmaps, width, height, format: engineFormat })\n }\n\n cleanup()\n\n return { faces, buffers, width, height, hasAlpha, format: engineFormat, dfdFlags }\n }\n\n //\n\n // Optimal choice of a transcoder target format depends on the Basis format (ETC1S or UASTC),\n // device capabilities, and texture dimensions. The list below ranks the formats separately\n // for ETC1S and UASTC.\n //\n // In some cases, transcoding UASTC to RGBA32 might be preferred for higher quality (at\n // significant memory cost) compared to ETC1/2, BC1/3, and PVRTC. The transcoder currently\n // chooses RGBA32 only as a last resort and does not expose that option to the caller.\n const FORMAT_OPTIONS = [\n {\n if: 'astcSupported',\n basisFormat: [BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.ASTC_4x4, TranscoderFormat.ASTC_4x4],\n engineFormat: [EngineFormat.RGBA_ASTC_4x4_Format, EngineFormat.RGBA_ASTC_4x4_Format],\n priorityETC1S: Infinity,\n priorityUASTC: 1,\n needsPowerOfTwo: false,\n },\n {\n if: 'bptcSupported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.BC7_M5, TranscoderFormat.BC7_M5],\n engineFormat: [EngineFormat.RGBA_BPTC_Format, EngineFormat.RGBA_BPTC_Format],\n priorityETC1S: 3,\n priorityUASTC: 2,\n needsPowerOfTwo: false,\n },\n {\n if: 'dxtSupported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.BC1, TranscoderFormat.BC3],\n engineFormat: [EngineFormat.RGB_S3TC_DXT1_Format, EngineFormat.RGBA_S3TC_DXT5_Format],\n priorityETC1S: 4,\n priorityUASTC: 5,\n needsPowerOfTwo: false,\n },\n {\n if: 'etc2Supported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.ETC1, TranscoderFormat.ETC2],\n engineFormat: [EngineFormat.RGB_ETC2_Format, EngineFormat.RGBA_ETC2_EAC_Format],\n priorityETC1S: 1,\n priorityUASTC: 3,\n needsPowerOfTwo: false,\n },\n {\n if: 'etc1Supported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.ETC1],\n engineFormat: [EngineFormat.RGB_ETC1_Format],\n priorityETC1S: 2,\n priorityUASTC: 4,\n needsPowerOfTwo: false,\n },\n {\n if: 'pvrtcSupported',\n basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n transcoderFormat: [TranscoderFormat.PVRTC1_4_RGB, TranscoderFormat.PVRTC1_4_RGBA],\n engineFormat: [EngineFormat.RGB_PVRTC_4BPPV1_Format, EngineFormat.RGBA_PVRTC_4BPPV1_Format],\n priorityETC1S: 5,\n priorityUASTC: 6,\n needsPowerOfTwo: true,\n },\n ]\n\n const ETC1S_OPTIONS = FORMAT_OPTIONS.sort(function (a, b) {\n return a.priorityETC1S - b.priorityETC1S\n })\n const UASTC_OPTIONS = FORMAT_OPTIONS.sort(function (a, b) {\n return a.priorityUASTC - b.priorityUASTC\n })\n\n function getTranscoderFormat(basisFormat, width, height, hasAlpha) {\n let transcoderFormat\n let engineFormat\n\n const options = basisFormat === BasisFormat.ETC1S ? ETC1S_OPTIONS : UASTC_OPTIONS\n\n for (let i = 0; i < options.length; i++) {\n const opt = options[i]\n\n if (!config[opt.if]) continue\n if (!opt.basisFormat.includes(basisFormat)) continue\n if (hasAlpha && opt.transcoderFormat.length < 2) continue\n if (opt.needsPowerOfTwo && !(isPowerOfTwo(width) && isPowerOfTwo(height))) continue\n\n transcoderFormat = opt.transcoderFormat[hasAlpha ? 1 : 0]\n engineFormat = opt.engineFormat[hasAlpha ? 1 : 0]\n\n return { transcoderFormat, engineFormat }\n }\n\n console.warn('THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32.')\n\n transcoderFormat = TranscoderFormat.RGBA32\n engineFormat = EngineFormat.RGBAFormat\n\n return { transcoderFormat, engineFormat }\n }\n\n function isPowerOfTwo(value) {\n if (value <= 2) return true\n\n return (value & (value - 1)) === 0 && value !== 0\n }\n\n /** Concatenates N byte arrays. */\n function concat(arrays) {\n if (arrays.length === 1) return arrays[0]\n\n let totalByteLength = 0\n\n for (let i = 0; i < arrays.length; i++) {\n const array = arrays[i]\n totalByteLength += array.byteLength\n }\n\n const result = new Uint8Array(totalByteLength)\n\n let byteOffset = 0\n\n for (let i = 0; i < arrays.length; i++) {\n const array = arrays[i]\n result.set(array, byteOffset)\n\n byteOffset += array.byteLength\n }\n\n return result\n }\n }\n\n constructor(manager) {\n super(manager)\n\n this.transcoderPath = ''\n this.transcoderBinary = null\n this.transcoderPending = null\n\n this.workerPool = new WorkerPool()\n this.workerSourceURL = ''\n this.workerConfig = null\n\n if (typeof MSC_TRANSCODER !== 'undefined') {\n console.warn(\n 'THREE.KTX2Loader: Please update to latest \"basis_transcoder\".' +\n ' \"msc_basis_transcoder\" is no longer supported in three.js r125+.',\n )\n }\n }\n\n setTranscoderPath(path) {\n this.transcoderPath = path\n\n return this\n }\n\n setWorkerLimit(num) {\n this.workerPool.setWorkerLimit(num)\n\n return this\n }\n\n detectSupport(renderer) {\n this.workerConfig = {\n astcSupported: renderer.extensions.has('WEBGL_compressed_texture_astc'),\n etc1Supported: renderer.extensions.has('WEBGL_compressed_texture_etc1'),\n etc2Supported: renderer.extensions.has('WEBGL_compressed_texture_etc'),\n dxtSupported: renderer.extensions.has('WEBGL_compressed_texture_s3tc'),\n bptcSupported: renderer.extensions.has('EXT_texture_compression_bptc'),\n pvrtcSupported:\n renderer.extensions.has('WEBGL_compressed_texture_pvrtc') ||\n renderer.extensions.has('WEBKIT_WEBGL_compressed_texture_pvrtc'),\n }\n\n if (renderer.capabilities.isWebGL2) {\n // https://github.com/mrdoob/three.js/pull/22928\n this.workerConfig.etc1Supported = false\n }\n\n return this\n }\n\n init() {\n if (!this.transcoderPending) {\n // Load transcoder wrapper.\n const jsLoader = new FileLoader(this.manager)\n jsLoader.setPath(this.transcoderPath)\n jsLoader.setWithCredentials(this.withCredentials)\n const jsContent = jsLoader.loadAsync('basis_transcoder.js')\n\n // Load transcoder WASM binary.\n const binaryLoader = new FileLoader(this.manager)\n binaryLoader.setPath(this.transcoderPath)\n binaryLoader.setResponseType('arraybuffer')\n binaryLoader.setWithCredentials(this.withCredentials)\n const binaryContent = binaryLoader.loadAsync('basis_transcoder.wasm')\n\n this.transcoderPending = Promise.all([jsContent, binaryContent]).then(([jsContent, binaryContent]) => {\n const fn = KTX2Loader.BasisWorker.toString()\n\n const body = [\n '/* constants */',\n 'let _EngineFormat = ' + JSON.stringify(KTX2Loader.EngineFormat),\n 'let _TranscoderFormat = ' + JSON.stringify(KTX2Loader.TranscoderFormat),\n 'let _BasisFormat = ' + JSON.stringify(KTX2Loader.BasisFormat),\n '/* basis_transcoder.js */',\n jsContent,\n '/* worker */',\n fn.substring(fn.indexOf('{') + 1, fn.lastIndexOf('}')),\n ].join('\\n')\n\n this.workerSourceURL = URL.createObjectURL(new Blob([body]))\n this.transcoderBinary = binaryContent\n\n this.workerPool.setWorkerCreator(() => {\n const worker = new Worker(this.workerSourceURL)\n const transcoderBinary = this.transcoderBinary.slice(0)\n\n worker.postMessage({ type: 'init', config: this.workerConfig, transcoderBinary }, [transcoderBinary])\n\n return worker\n })\n })\n\n if (_activeLoaders > 0) {\n // Each instance loads a transcoder and allocates workers, increasing network and memory cost.\n\n console.warn(\n 'THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues.' +\n ' Use a single KTX2Loader instance, or call .dispose() on old instances.',\n )\n }\n\n _activeLoaders++\n }\n\n return this.transcoderPending\n }\n\n load(url, onLoad, onProgress, onError) {\n if (this.workerConfig === null) {\n throw new Error('THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.')\n }\n\n const loader = new FileLoader(this.manager)\n\n loader.setResponseType('arraybuffer')\n loader.setWithCredentials(this.withCredentials)\n\n loader.load(\n url,\n (buffer) => {\n // Check for an existing task using this buffer. A transferred buffer cannot be transferred\n // again from this thread.\n if (_taskCache.has(buffer)) {\n const cachedTask = _taskCache.get(buffer)\n\n return cachedTask.promise.then(onLoad).catch(onError)\n }\n\n this._createTexture(buffer)\n .then((texture) => (onLoad ? onLoad(texture) : null))\n .catch(onError)\n },\n onProgress,\n onError,\n )\n }\n\n _createTextureFrom(transcodeResult, container) {\n const { faces, width, height, format, type, error, dfdFlags } = transcodeResult\n\n if (type === 'error') return Promise.reject(error)\n\n let texture\n\n if (container.faceCount === 6) {\n texture = new CompressedCubeTexture(faces, format, UnsignedByteType)\n } else {\n const mipmaps = faces[0].mipmaps\n\n texture =\n container.layerCount > 1\n ? new CompressedArrayTexture(mipmaps, width, height, container.layerCount, format, UnsignedByteType)\n : new CompressedTexture(mipmaps, width, height, format, UnsignedByteType)\n }\n\n texture.minFilter = faces[0].mipmaps.length === 1 ? LinearFilter : LinearMipmapLinearFilter\n texture.magFilter = LinearFilter\n texture.generateMipmaps = false\n texture.needsUpdate = true\n\n const colorSpace = parseColorSpace(container)\n if ('colorSpace' in texture) texture.colorSpace = colorSpace\n else texture.encoding = colorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding\n\n texture.premultiplyAlpha = !!(dfdFlags & KHR_DF_FLAG_ALPHA_PREMULTIPLIED)\n\n return texture\n }\n\n /**\n * @param {ArrayBuffer} buffer\n * @param {object?} config\n * @return {Promise<CompressedTexture|CompressedArrayTexture|DataTexture|Data3DTexture>}\n */\n async _createTexture(buffer, config = {}) {\n const container = read(new Uint8Array(buffer))\n\n if (container.vkFormat !== VK_FORMAT_UNDEFINED) {\n return createRawTexture(container)\n }\n\n //\n\n const taskConfig = config\n const texturePending = this.init()\n .then(() => {\n return this.workerPool.postMessage({ type: 'transcode', buffer, taskConfig: taskConfig }, [buffer])\n })\n .then((e) => this._createTextureFrom(e.data, container))\n\n // Cache the task result.\n _taskCache.set(buffer, { promise: texturePending })\n\n return texturePending\n }\n\n dispose() {\n this.workerPool.dispose()\n if (this.workerSourceURL) URL.revokeObjectURL(this.workerSourceURL)\n\n _activeLoaders--\n\n return this\n }\n }\n\n return KTX2Loader\n})()\n\n//\n// Parsing for non-Basis textures. These textures are may have supercompression\n// like Zstd, but they do not require transcoding.\n\nconst UNCOMPRESSED_FORMATS = new Set([RGBAFormat, RGFormat, RedFormat])\n\nconst FORMAT_MAP = {\n [VK_FORMAT_R32G32B32A32_SFLOAT]: RGBAFormat,\n [VK_FORMAT_R16G16B16A16_SFLOAT]: RGBAFormat,\n [VK_FORMAT_R8G8B8A8_UNORM]: RGBAFormat,\n [VK_FORMAT_R8G8B8A8_SRGB]: RGBAFormat,\n\n [VK_FORMAT_R32G32_SFLOAT]: RGFormat,\n [VK_FORMAT_R16G16_SFLOAT]: RGFormat,\n [VK_FORMAT_R8G8_UNORM]: RGFormat,\n [VK_FORMAT_R8G8_SRGB]: RGFormat,\n\n [VK_FORMAT_R32_SFLOAT]: RedFormat,\n [VK_FORMAT_R16_SFLOAT]: RedFormat,\n [VK_FORMAT_R8_SRGB]: RedFormat,\n [VK_FORMAT_R8_UNORM]: RedFormat,\n\n [VK_FORMAT_ASTC_6x6_SRGB_BLOCK]: RGBA_ASTC_6x6_Format,\n [VK_FORMAT_ASTC_6x6_UNORM_BLOCK]: RGBA_ASTC_6x6_Format,\n}\n\nconst TYPE_MAP = {\n [VK_FORMAT_R32G32B32A32_SFLOAT]: FloatType,\n [VK_FORMAT_R16G16B16A16_SFLOAT]: HalfFloatType,\n [VK_FORMAT_R8G8B8A8_UNORM]: UnsignedByteType,\n [VK_FORMAT_R8G8B8A8_SRGB]: UnsignedByteType,\n\n [VK_FORMAT_R32G32_SFLOAT]: FloatType,\n [VK_FORMAT_R16G16_SFLOAT]: HalfFloatType,\n [VK_FORMAT_R8G8_UNORM]: UnsignedByteType,\n [VK_FORMAT_R8G8_SRGB]: UnsignedByteType,\n\n [VK_FORMAT_R32_SFLOAT]: FloatType,\n [VK_FORMAT_R16_SFLOAT]: HalfFloatType,\n [VK_FORMAT_R8_SRGB]: UnsignedByteType,\n [VK_FORMAT_R8_UNORM]: UnsignedByteType,\n\n [VK_FORMAT_ASTC_6x6_SRGB_BLOCK]: UnsignedByteType,\n [VK_FORMAT_ASTC_6x6_UNORM_BLOCK]: UnsignedByteType,\n}\n\nasync function createRawTexture(container) {\n const { vkFormat } = container\n\n if (FORMAT_MAP[vkFormat] === undefined) {\n throw new Error('THREE.KTX2Loader: Unsupported vkFormat.')\n }\n\n //\n\n let zstd\n\n if (container.supercompressionScheme === KHR_SUPERCOMPRESSION_ZSTD) {\n if (!_zstd) {\n _zstd = new Promise(async (resolve) => {\n const zstd = new ZSTDDecoder()\n await zstd.init()\n resolve(zstd)\n })\n }\n\n zstd = await _zstd\n }\n\n //\n\n const mipmaps = []\n\n for (let levelIndex = 0; levelIndex < container.levels.length; levelIndex++) {\n const levelWidth = Math.max(1, container.pixelWidth >> levelIndex)\n const levelHeight = Math.max(1, container.pixelHeight >> levelIndex)\n const levelDepth = container.pixelDepth ? Math.max(1, container.pixelDepth >> levelIndex) : 0\n\n const level = container.levels[levelIndex]\n\n let levelData\n\n if (container.supercompressionScheme === KHR_SUPERCOMPRESSION_NONE) {\n levelData = level.levelData\n } else if (container.supercompressionScheme === KHR_SUPERCOMPRESSION_ZSTD) {\n levelData = zstd.decode(level.levelData, level.uncompressedByteLength)\n } else {\n throw new Error('THREE.KTX2Loader: Unsupported supercompressionScheme.')\n }\n\n let data\n\n if (TYPE_MAP[vkFormat] === FloatType) {\n data = new Float32Array(\n levelData.buffer,\n levelData.byteOffset,\n levelData.byteLength / Float32Array.BYTES_PER_ELEMENT,\n )\n } else if (TYPE_MAP[vkFormat] === HalfFloatType) {\n data = new Uint16Array(\n levelData.buffer,\n levelData.byteOffset,\n levelData.byteLength / Uint16Array.BYTES_PER_ELEMENT,\n )\n } else {\n data = levelData\n }\n\n mipmaps.push({\n data: data,\n width: levelWidth,\n height: levelHeight,\n depth: levelDepth,\n })\n }\n\n let texture\n\n if (UNCOMPRESSED_FORMATS.has(FORMAT_MAP[vkFormat])) {\n texture =\n container.pixelDepth === 0\n ? new DataTexture(mipmaps[0].data, container.pixelWidth, container.pixelHeight)\n : new Data3DTexture(mipmaps[0].data, container.pixelWidth, container.pixelHeight, container.pixelDepth)\n } else {\n if (container.pixelDepth > 0) throw new Error('THREE.KTX2Loader: Unsupported pixelDepth.')\n\n texture = new CompressedTexture(mipmaps, container.pixelWidth, container.pixelHeight)\n }\n\n texture.mipmaps = mipmaps\n\n texture.type = TYPE_MAP[vkFormat]\n texture.format = FORMAT_MAP[vkFormat]\n texture.needsUpdate = true\n\n const colorSpace = parseColorSpace(container)\n if ('colorSpace' in texture) texture.colorSpace = colorSpace\n else texture.encoding = colorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding\n\n //\n\n return Promise.resolve(texture)\n}\n\nfunction parseColorSpace(container) {\n const dfd = container.dataFormatDescriptor[0]\n\n if (dfd.colorPrimaries === KHR_DF_PRIMARIES_BT709) {\n return dfd.transferFunction === KHR_DF_TRANSFER_SRGB ? SRGBColorSpace : LinearSRGBColorSpace\n } else if (dfd.colorPrimaries === KHR_DF_PRIMARIES_DISPLAYP3) {\n return dfd.transferFunction === KHR_DF_TRANSFER_SRGB ? DisplayP3ColorSpace : LinearDisplayP3ColorSpace\n } else if (dfd.colorPrimaries === KHR_DF_PRIMARIES_UNSPECIFIED) {\n return NoColorSpace\n } else {\n console.warn(`THREE.KTX2Loader: Unsupported color primaries, \"${dfd.colorPrimaries}\"`)\n return NoColorSpace\n }\n}\n\nexport { KTX2Loader }\n"],"names":["jsContent","binaryContent","KTX2Loader","zstd"],"mappings":"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"}
|
package/loaders/LDrawLoader.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const THREE = require("three");
|
|
4
|
+
const constants = require("../_polyfill/constants.cjs");
|
|
4
5
|
const FINISH_TYPE_DEFAULT = 0;
|
|
5
6
|
const FINISH_TYPE_CHROME = 1;
|
|
6
7
|
const FINISH_TYPE_PEARLESCENT = 2;
|
|
@@ -16,8 +17,8 @@ const FILE_LOCATION_TRY_ABSOLUTE = 5;
|
|
|
16
17
|
const FILE_LOCATION_NOT_FOUND = 6;
|
|
17
18
|
const MAIN_COLOUR_CODE = "16";
|
|
18
19
|
const MAIN_EDGE_COLOUR_CODE = "24";
|
|
19
|
-
const _tempVec0 = new THREE.Vector3();
|
|
20
|
-
const _tempVec1 = new THREE.Vector3();
|
|
20
|
+
const _tempVec0 = /* @__PURE__ */ new THREE.Vector3();
|
|
21
|
+
const _tempVec1 = /* @__PURE__ */ new THREE.Vector3();
|
|
21
22
|
class LDrawConditionalLineMaterial extends THREE.ShaderMaterial {
|
|
22
23
|
constructor(parameters) {
|
|
23
24
|
super({
|
|
@@ -107,7 +108,7 @@ class LDrawConditionalLineMaterial extends THREE.ShaderMaterial {
|
|
|
107
108
|
outgoingLight = diffuseColor.rgb; // simple shader
|
|
108
109
|
gl_FragColor = vec4(outgoingLight, diffuseColor.a);
|
|
109
110
|
#include <tonemapping_fragment>
|
|
110
|
-
#include <${
|
|
111
|
+
#include <${constants.version >= 154 ? "colorspace_fragment" : "encodings_fragment"}>
|
|
111
112
|
#include <fog_fragment>
|
|
112
113
|
#include <premultiplied_alpha_fragment>
|
|
113
114
|
}
|
|
@@ -151,7 +152,7 @@ function generateFaceNormals(faces) {
|
|
|
151
152
|
face.faceNormal = new THREE.Vector3().crossVectors(_tempVec0, _tempVec1).normalize();
|
|
152
153
|
}
|
|
153
154
|
}
|
|
154
|
-
const _ray = new THREE.Ray();
|
|
155
|
+
const _ray = /* @__PURE__ */ new THREE.Ray();
|
|
155
156
|
function smoothNormals(faces, lineSegments, checkSubSegments = false) {
|
|
156
157
|
const hashMultiplier = (1 + 1e-10) * 100;
|
|
157
158
|
function hashVertex(v) {
|