{"version":3,"file":"glUploadImageResource.mjs","sources":["../../../../../../src/rendering/renderers/gl/texture/uploaders/glUploadImageResource.ts"],"sourcesContent":["import type { CanvasSource } from '../../../shared/texture/sources/CanvasSource';\nimport type { ImageSource } from '../../../shared/texture/sources/ImageSource';\nimport type { GlRenderingContext } from '../../context/GlRenderingContext';\nimport type { GlTexture } from '../GlTexture';\nimport type { GLTextureUploader } from './GLTextureUploader';\n\nexport const glUploadImageResource = {\n\n    id: 'image',\n\n    upload(source: ImageSource | CanvasSource, glTexture: GlTexture, gl: GlRenderingContext, webGLVersion: number)\n    {\n        const premultipliedAlpha = source.alphaMode === 'premultiply-alpha-on-upload';\n\n        gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultipliedAlpha);\n\n        const glWidth = glTexture.width;\n        const glHeight = glTexture.height;\n\n        const textureWidth = source.pixelWidth;\n        const textureHeight = source.pixelHeight;\n\n        const resourceWidth = source.resourceWidth;\n        const resourceHeight = source.resourceHeight;\n\n        if (resourceWidth < textureWidth || resourceHeight < textureHeight)\n        {\n            if (glWidth !== textureWidth || glHeight !== textureHeight)\n            {\n                gl.texImage2D(\n                    glTexture.target,\n                    0,\n                    glTexture.internalFormat,\n                    textureWidth,\n                    textureHeight,\n                    0,\n                    glTexture.format,\n                    glTexture.type,\n                    null\n                );\n            }\n\n            if (webGLVersion === 2)\n            {\n                gl.texSubImage2D(\n                    gl.TEXTURE_2D,\n                    0,\n                    0,\n                    0,\n                    resourceWidth,\n                    resourceHeight,\n                    glTexture.format,\n                    glTexture.type,\n                    source.resource as TexImageSource\n                );\n            }\n            else\n            {\n                gl.texSubImage2D(\n                    gl.TEXTURE_2D,\n                    0,\n                    0,\n                    0,\n                    glTexture.format,\n                    glTexture.type,\n                    source.resource as TexImageSource\n                );\n            }\n        }\n        else if (glWidth === textureWidth || glHeight === textureHeight)\n        {\n            gl.texSubImage2D(\n                gl.TEXTURE_2D,\n                0,\n                0,\n                0,\n                glTexture.format,\n                glTexture.type,\n                source.resource as TexImageSource\n            );\n        }\n        else if (webGLVersion === 2)\n        {\n            gl.texImage2D(\n                glTexture.target,\n                0,\n                glTexture.internalFormat,\n                textureWidth,\n                textureHeight,\n                0,\n                glTexture.format,\n                glTexture.type,\n                source.resource as TexImageSource\n            );\n        }\n        else\n        {\n            gl.texImage2D(\n                glTexture.target,\n                0,\n                glTexture.internalFormat,\n                glTexture.format,\n                glTexture.type,\n                source.resource as TexImageSource\n            );\n        }\n\n        glTexture.width = textureWidth;\n        glTexture.height = textureHeight;\n    }\n} as GLTextureUploader;\n\n"],"names":[],"mappings":"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"}