This commit is contained in:
Akko
2025-08-04 18:57:35 +02:00
parent 8cf6e78a79
commit 9495868c2e
5030 changed files with 518594 additions and 17609 deletions

View File

@@ -0,0 +1,4 @@
import type { TextureStyle } from '../../../shared/texture/TextureStyle';
export declare function applyStyleParams(style: TextureStyle, gl: WebGL2RenderingContext, mipmaps: boolean, anisotropicExt: EXT_texture_filter_anisotropic, glFunctionName: 'samplerParameteri' | 'texParameteri', firstParam: 3553 | WebGLSampler, forceClamp: boolean,
/** if true we can skip setting certain values if the values is the same as the default gl values */
firstCreation: boolean): void;

View File

@@ -0,0 +1,38 @@
'use strict';
var pixiToGlMaps = require('./pixiToGlMaps.js');
"use strict";
function applyStyleParams(style, gl, mipmaps, anisotropicExt, glFunctionName, firstParam, forceClamp, firstCreation) {
const castParam = firstParam;
if (!firstCreation || style.addressModeU !== "repeat" || style.addressModeV !== "repeat" || style.addressModeW !== "repeat") {
const wrapModeS = pixiToGlMaps.wrapModeToGlAddress[forceClamp ? "clamp-to-edge" : style.addressModeU];
const wrapModeT = pixiToGlMaps.wrapModeToGlAddress[forceClamp ? "clamp-to-edge" : style.addressModeV];
const wrapModeR = pixiToGlMaps.wrapModeToGlAddress[forceClamp ? "clamp-to-edge" : style.addressModeW];
gl[glFunctionName](castParam, gl.TEXTURE_WRAP_S, wrapModeS);
gl[glFunctionName](castParam, gl.TEXTURE_WRAP_T, wrapModeT);
if (gl.TEXTURE_WRAP_R)
gl[glFunctionName](castParam, gl.TEXTURE_WRAP_R, wrapModeR);
}
if (!firstCreation || style.magFilter !== "linear") {
gl[glFunctionName](castParam, gl.TEXTURE_MAG_FILTER, pixiToGlMaps.scaleModeToGlFilter[style.magFilter]);
}
if (mipmaps) {
if (!firstCreation || style.mipmapFilter !== "linear") {
const glFilterMode = pixiToGlMaps.mipmapScaleModeToGlFilter[style.minFilter][style.mipmapFilter];
gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, glFilterMode);
}
} else {
gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, pixiToGlMaps.scaleModeToGlFilter[style.minFilter]);
}
if (anisotropicExt && style.maxAnisotropy > 1) {
const level = Math.min(style.maxAnisotropy, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));
gl[glFunctionName](castParam, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);
}
if (style.compare) {
gl[glFunctionName](castParam, gl.TEXTURE_COMPARE_FUNC, pixiToGlMaps.compareModeToGlCompare[style.compare]);
}
}
exports.applyStyleParams = applyStyleParams;
//# sourceMappingURL=applyStyleParams.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"applyStyleParams.js","sources":["../../../../../../src/rendering/renderers/gl/texture/utils/applyStyleParams.ts"],"sourcesContent":["import {\n compareModeToGlCompare,\n mipmapScaleModeToGlFilter,\n scaleModeToGlFilter,\n wrapModeToGlAddress\n} from './pixiToGlMaps';\n\nimport type { TextureStyle } from '../../../shared/texture/TextureStyle';\n\nexport function applyStyleParams(\n style: TextureStyle,\n gl: WebGL2RenderingContext,\n mipmaps: boolean,\n // eslint-disable-next-line camelcase\n anisotropicExt: EXT_texture_filter_anisotropic,\n glFunctionName: 'samplerParameteri' | 'texParameteri',\n firstParam: 3553 | WebGLSampler,\n forceClamp: boolean,\n /** if true we can skip setting certain values if the values is the same as the default gl values */\n firstCreation: boolean\n)\n{\n const castParam = firstParam as 3553;\n\n if (!firstCreation\n || style.addressModeU !== 'repeat'\n || style.addressModeV !== 'repeat'\n || style.addressModeW !== 'repeat'\n )\n {\n // 1. set the wrapping mode\n const wrapModeS = wrapModeToGlAddress[forceClamp ? 'clamp-to-edge' : style.addressModeU];\n const wrapModeT = wrapModeToGlAddress[forceClamp ? 'clamp-to-edge' : style.addressModeV];\n const wrapModeR = wrapModeToGlAddress[forceClamp ? 'clamp-to-edge' : style.addressModeW];\n\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_S, wrapModeS);\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_T, wrapModeT);\n\n // does not exist in webGL1\n if (gl.TEXTURE_WRAP_R) gl[glFunctionName](castParam, gl.TEXTURE_WRAP_R, wrapModeR);\n }\n\n if (!firstCreation || style.magFilter !== 'linear')\n {\n // 2. set the filtering mode\n gl[glFunctionName](castParam, gl.TEXTURE_MAG_FILTER, scaleModeToGlFilter[style.magFilter]);\n }\n\n // assuming the currently bound texture is the one we want to set the filter for\n // the only smelly part of this code, WebGPU is much better here :P\n if (mipmaps)\n {\n if (!firstCreation || style.mipmapFilter !== 'linear')\n {\n const glFilterMode = mipmapScaleModeToGlFilter[style.minFilter][style.mipmapFilter];\n\n gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, glFilterMode);\n }\n }\n\n else\n {\n gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, scaleModeToGlFilter[style.minFilter]);\n }\n\n // 3. set the anisotropy\n if (anisotropicExt && style.maxAnisotropy > 1)\n {\n const level = Math.min(style.maxAnisotropy, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));\n\n gl[glFunctionName](castParam, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);\n }\n\n // 4. set the compare mode\n if (style.compare)\n {\n gl[glFunctionName](castParam, gl.TEXTURE_COMPARE_FUNC, compareModeToGlCompare[style.compare]);\n }\n}\n"],"names":["wrapModeToGlAddress","scaleModeToGlFilter","mipmapScaleModeToGlFilter","compareModeToGlCompare"],"mappings":";;;;;AASgB,SAAA,gBAAA,CACZ,OACA,EACA,EAAA,OAAA,EAEA,gBACA,cACA,EAAA,UAAA,EACA,YAEA,aAEJ,EAAA;AACI,EAAA,MAAM,SAAY,GAAA,UAAA,CAAA;AAElB,EAAI,IAAA,CAAC,aACE,IAAA,KAAA,CAAM,YAAiB,KAAA,QAAA,IACvB,MAAM,YAAiB,KAAA,QAAA,IACvB,KAAM,CAAA,YAAA,KAAiB,QAE9B,EAAA;AAEI,IAAA,MAAM,SAAY,GAAAA,gCAAA,CAAoB,UAAa,GAAA,eAAA,GAAkB,MAAM,YAAY,CAAA,CAAA;AACvF,IAAA,MAAM,SAAY,GAAAA,gCAAA,CAAoB,UAAa,GAAA,eAAA,GAAkB,MAAM,YAAY,CAAA,CAAA;AACvF,IAAA,MAAM,SAAY,GAAAA,gCAAA,CAAoB,UAAa,GAAA,eAAA,GAAkB,MAAM,YAAY,CAAA,CAAA;AAEvF,IAAA,EAAA,CAAG,cAAc,CAAA,CAAE,SAAW,EAAA,EAAA,CAAG,gBAAgB,SAAS,CAAA,CAAA;AAC1D,IAAA,EAAA,CAAG,cAAc,CAAA,CAAE,SAAW,EAAA,EAAA,CAAG,gBAAgB,SAAS,CAAA,CAAA;AAG1D,IAAA,IAAI,EAAG,CAAA,cAAA;AAAgB,MAAA,EAAA,CAAG,cAAc,CAAA,CAAE,SAAW,EAAA,EAAA,CAAG,gBAAgB,SAAS,CAAA,CAAA;AAAA,GACrF;AAEA,EAAA,IAAI,CAAC,aAAA,IAAiB,KAAM,CAAA,SAAA,KAAc,QAC1C,EAAA;AAEI,IAAG,EAAA,CAAA,cAAc,EAAE,SAAW,EAAA,EAAA,CAAG,oBAAoBC,gCAAoB,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA,CAAA;AAAA,GAC7F;AAIA,EAAA,IAAI,OACJ,EAAA;AACI,IAAA,IAAI,CAAC,aAAA,IAAiB,KAAM,CAAA,YAAA,KAAiB,QAC7C,EAAA;AACI,MAAA,MAAM,eAAeC,sCAA0B,CAAA,KAAA,CAAM,SAAS,CAAA,CAAE,MAAM,YAAY,CAAA,CAAA;AAElF,MAAA,EAAA,CAAG,cAAc,CAAA,CAAE,SAAW,EAAA,EAAA,CAAG,oBAAoB,YAAY,CAAA,CAAA;AAAA,KACrE;AAAA,GAIJ,MAAA;AACI,IAAG,EAAA,CAAA,cAAc,EAAE,SAAW,EAAA,EAAA,CAAG,oBAAoBD,gCAAoB,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA,CAAA;AAAA,GAC7F;AAGA,EAAI,IAAA,cAAA,IAAkB,KAAM,CAAA,aAAA,GAAgB,CAC5C,EAAA;AACI,IAAM,MAAA,KAAA,GAAQ,KAAK,GAAI,CAAA,KAAA,CAAM,eAAe,EAAG,CAAA,YAAA,CAAa,cAAe,CAAA,8BAA8B,CAAC,CAAA,CAAA;AAE1G,IAAA,EAAA,CAAG,cAAc,CAAA,CAAE,SAAW,EAAA,cAAA,CAAe,4BAA4B,KAAK,CAAA,CAAA;AAAA,GAClF;AAGA,EAAA,IAAI,MAAM,OACV,EAAA;AACI,IAAG,EAAA,CAAA,cAAc,EAAE,SAAW,EAAA,EAAA,CAAG,sBAAsBE,mCAAuB,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAAA,GAChG;AACJ;;;;"}

View File

@@ -0,0 +1,36 @@
import { wrapModeToGlAddress, scaleModeToGlFilter, mipmapScaleModeToGlFilter, compareModeToGlCompare } from './pixiToGlMaps.mjs';
"use strict";
function applyStyleParams(style, gl, mipmaps, anisotropicExt, glFunctionName, firstParam, forceClamp, firstCreation) {
const castParam = firstParam;
if (!firstCreation || style.addressModeU !== "repeat" || style.addressModeV !== "repeat" || style.addressModeW !== "repeat") {
const wrapModeS = wrapModeToGlAddress[forceClamp ? "clamp-to-edge" : style.addressModeU];
const wrapModeT = wrapModeToGlAddress[forceClamp ? "clamp-to-edge" : style.addressModeV];
const wrapModeR = wrapModeToGlAddress[forceClamp ? "clamp-to-edge" : style.addressModeW];
gl[glFunctionName](castParam, gl.TEXTURE_WRAP_S, wrapModeS);
gl[glFunctionName](castParam, gl.TEXTURE_WRAP_T, wrapModeT);
if (gl.TEXTURE_WRAP_R)
gl[glFunctionName](castParam, gl.TEXTURE_WRAP_R, wrapModeR);
}
if (!firstCreation || style.magFilter !== "linear") {
gl[glFunctionName](castParam, gl.TEXTURE_MAG_FILTER, scaleModeToGlFilter[style.magFilter]);
}
if (mipmaps) {
if (!firstCreation || style.mipmapFilter !== "linear") {
const glFilterMode = mipmapScaleModeToGlFilter[style.minFilter][style.mipmapFilter];
gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, glFilterMode);
}
} else {
gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, scaleModeToGlFilter[style.minFilter]);
}
if (anisotropicExt && style.maxAnisotropy > 1) {
const level = Math.min(style.maxAnisotropy, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));
gl[glFunctionName](castParam, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);
}
if (style.compare) {
gl[glFunctionName](castParam, gl.TEXTURE_COMPARE_FUNC, compareModeToGlCompare[style.compare]);
}
}
export { applyStyleParams };
//# sourceMappingURL=applyStyleParams.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"applyStyleParams.mjs","sources":["../../../../../../src/rendering/renderers/gl/texture/utils/applyStyleParams.ts"],"sourcesContent":["import {\n compareModeToGlCompare,\n mipmapScaleModeToGlFilter,\n scaleModeToGlFilter,\n wrapModeToGlAddress\n} from './pixiToGlMaps';\n\nimport type { TextureStyle } from '../../../shared/texture/TextureStyle';\n\nexport function applyStyleParams(\n style: TextureStyle,\n gl: WebGL2RenderingContext,\n mipmaps: boolean,\n // eslint-disable-next-line camelcase\n anisotropicExt: EXT_texture_filter_anisotropic,\n glFunctionName: 'samplerParameteri' | 'texParameteri',\n firstParam: 3553 | WebGLSampler,\n forceClamp: boolean,\n /** if true we can skip setting certain values if the values is the same as the default gl values */\n firstCreation: boolean\n)\n{\n const castParam = firstParam as 3553;\n\n if (!firstCreation\n || style.addressModeU !== 'repeat'\n || style.addressModeV !== 'repeat'\n || style.addressModeW !== 'repeat'\n )\n {\n // 1. set the wrapping mode\n const wrapModeS = wrapModeToGlAddress[forceClamp ? 'clamp-to-edge' : style.addressModeU];\n const wrapModeT = wrapModeToGlAddress[forceClamp ? 'clamp-to-edge' : style.addressModeV];\n const wrapModeR = wrapModeToGlAddress[forceClamp ? 'clamp-to-edge' : style.addressModeW];\n\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_S, wrapModeS);\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_T, wrapModeT);\n\n // does not exist in webGL1\n if (gl.TEXTURE_WRAP_R) gl[glFunctionName](castParam, gl.TEXTURE_WRAP_R, wrapModeR);\n }\n\n if (!firstCreation || style.magFilter !== 'linear')\n {\n // 2. set the filtering mode\n gl[glFunctionName](castParam, gl.TEXTURE_MAG_FILTER, scaleModeToGlFilter[style.magFilter]);\n }\n\n // assuming the currently bound texture is the one we want to set the filter for\n // the only smelly part of this code, WebGPU is much better here :P\n if (mipmaps)\n {\n if (!firstCreation || style.mipmapFilter !== 'linear')\n {\n const glFilterMode = mipmapScaleModeToGlFilter[style.minFilter][style.mipmapFilter];\n\n gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, glFilterMode);\n }\n }\n\n else\n {\n gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, scaleModeToGlFilter[style.minFilter]);\n }\n\n // 3. set the anisotropy\n if (anisotropicExt && style.maxAnisotropy > 1)\n {\n const level = Math.min(style.maxAnisotropy, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));\n\n gl[glFunctionName](castParam, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);\n }\n\n // 4. set the compare mode\n if (style.compare)\n {\n gl[glFunctionName](castParam, gl.TEXTURE_COMPARE_FUNC, compareModeToGlCompare[style.compare]);\n }\n}\n"],"names":[],"mappings":";;;AASgB,SAAA,gBAAA,CACZ,OACA,EACA,EAAA,OAAA,EAEA,gBACA,cACA,EAAA,UAAA,EACA,YAEA,aAEJ,EAAA;AACI,EAAA,MAAM,SAAY,GAAA,UAAA,CAAA;AAElB,EAAI,IAAA,CAAC,aACE,IAAA,KAAA,CAAM,YAAiB,KAAA,QAAA,IACvB,MAAM,YAAiB,KAAA,QAAA,IACvB,KAAM,CAAA,YAAA,KAAiB,QAE9B,EAAA;AAEI,IAAA,MAAM,SAAY,GAAA,mBAAA,CAAoB,UAAa,GAAA,eAAA,GAAkB,MAAM,YAAY,CAAA,CAAA;AACvF,IAAA,MAAM,SAAY,GAAA,mBAAA,CAAoB,UAAa,GAAA,eAAA,GAAkB,MAAM,YAAY,CAAA,CAAA;AACvF,IAAA,MAAM,SAAY,GAAA,mBAAA,CAAoB,UAAa,GAAA,eAAA,GAAkB,MAAM,YAAY,CAAA,CAAA;AAEvF,IAAA,EAAA,CAAG,cAAc,CAAA,CAAE,SAAW,EAAA,EAAA,CAAG,gBAAgB,SAAS,CAAA,CAAA;AAC1D,IAAA,EAAA,CAAG,cAAc,CAAA,CAAE,SAAW,EAAA,EAAA,CAAG,gBAAgB,SAAS,CAAA,CAAA;AAG1D,IAAA,IAAI,EAAG,CAAA,cAAA;AAAgB,MAAA,EAAA,CAAG,cAAc,CAAA,CAAE,SAAW,EAAA,EAAA,CAAG,gBAAgB,SAAS,CAAA,CAAA;AAAA,GACrF;AAEA,EAAA,IAAI,CAAC,aAAA,IAAiB,KAAM,CAAA,SAAA,KAAc,QAC1C,EAAA;AAEI,IAAG,EAAA,CAAA,cAAc,EAAE,SAAW,EAAA,EAAA,CAAG,oBAAoB,mBAAoB,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA,CAAA;AAAA,GAC7F;AAIA,EAAA,IAAI,OACJ,EAAA;AACI,IAAA,IAAI,CAAC,aAAA,IAAiB,KAAM,CAAA,YAAA,KAAiB,QAC7C,EAAA;AACI,MAAA,MAAM,eAAe,yBAA0B,CAAA,KAAA,CAAM,SAAS,CAAA,CAAE,MAAM,YAAY,CAAA,CAAA;AAElF,MAAA,EAAA,CAAG,cAAc,CAAA,CAAE,SAAW,EAAA,EAAA,CAAG,oBAAoB,YAAY,CAAA,CAAA;AAAA,KACrE;AAAA,GAIJ,MAAA;AACI,IAAG,EAAA,CAAA,cAAc,EAAE,SAAW,EAAA,EAAA,CAAG,oBAAoB,mBAAoB,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA,CAAA;AAAA,GAC7F;AAGA,EAAI,IAAA,cAAA,IAAkB,KAAM,CAAA,aAAA,GAAgB,CAC5C,EAAA;AACI,IAAM,MAAA,KAAA,GAAQ,KAAK,GAAI,CAAA,KAAA,CAAM,eAAe,EAAG,CAAA,YAAA,CAAa,cAAe,CAAA,8BAA8B,CAAC,CAAA,CAAA;AAE1G,IAAA,EAAA,CAAG,cAAc,CAAA,CAAE,SAAW,EAAA,cAAA,CAAe,4BAA4B,KAAK,CAAA,CAAA;AAAA,GAClF;AAGA,EAAA,IAAI,MAAM,OACV,EAAA;AACI,IAAG,EAAA,CAAA,cAAc,EAAE,SAAW,EAAA,EAAA,CAAG,sBAAsB,sBAAuB,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAAA,GAChG;AACJ;;;;"}

View File

@@ -0,0 +1,2 @@
import type { TEXTURE_FORMATS } from '../../../shared/texture/const';
export declare function getSupportedGlCompressedTextureFormats(): TEXTURE_FORMATS[];

View File

@@ -0,0 +1,101 @@
'use strict';
"use strict";
let supportedGLCompressedTextureFormats;
function getSupportedGlCompressedTextureFormats() {
if (supportedGLCompressedTextureFormats)
return supportedGLCompressedTextureFormats;
const canvas = document.createElement("canvas");
const gl = canvas.getContext("webgl");
if (!gl) {
return [];
}
supportedGLCompressedTextureFormats = [
// BC compressed formats usable if "texture-compression-bc" is both
// supported by the device/user agent and enabled in requestDevice.
// 'bc6h-rgb-ufloat'
// 'bc6h-rgb-float'
// 'bc7-rgba-unorm',
// 'bc7-rgba-unorm-srgb',
...gl.getExtension("EXT_texture_compression_bptc") ? [
"bc6h-rgb-ufloat",
"bc6h-rgb-float",
"bc7-rgba-unorm",
"bc7-rgba-unorm-srgb"
] : [],
// BC compressed formats usable if "texture-compression-bc" is both
// supported by the device/user agent and enabled in requestDevice.
// 'bc1-rgba-unorm',
// 'bc1-rgba-unorm-srgb',
// 'bc4-r-unorm'
// 'bc4-r-snorm'
// 'bc5-rg-unorm'
// 'bc5-rg-snorm'
...gl.getExtension("WEBGL_compressed_texture_s3tc") ? [
"bc1-rgba-unorm",
"bc2-rgba-unorm",
"bc3-rgba-unorm"
] : [],
...gl.getExtension("WEBGL_compressed_texture_s3tc_srgb") ? [
"bc1-rgba-unorm-srgb",
"bc2-rgba-unorm-srgb",
"bc3-rgba-unorm-srgb"
] : [],
...gl.getExtension("EXT_texture_compression_rgtc") ? [
"bc4-r-unorm",
"bc4-r-snorm",
"bc5-rg-unorm",
"bc5-rg-snorm"
] : [],
// ETC2 compressed formats usable if "texture-compression-etc2" is both
// supported by the device/user agent and enabled in requestDevice.
...gl.getExtension("WEBGL_compressed_texture_etc") ? [
"etc2-rgb8unorm",
"etc2-rgb8unorm-srgb",
"etc2-rgba8unorm",
"etc2-rgba8unorm-srgb",
"etc2-rgb8a1unorm",
"etc2-rgb8a1unorm-srgb",
"eac-r11unorm",
"eac-rg11unorm"
] : [],
// 'eac-r11snorm',
// 'eac-rg11snorm',
// ASTC compressed formats usable if "texture-compression-astc" is both
// supported by the device/user agent and enabled in requestDevice.
...gl.getExtension("WEBGL_compressed_texture_astc") ? [
"astc-4x4-unorm",
"astc-4x4-unorm-srgb",
"astc-5x4-unorm",
"astc-5x4-unorm-srgb",
"astc-5x5-unorm",
"astc-5x5-unorm-srgb",
"astc-6x5-unorm",
"astc-6x5-unorm-srgb",
"astc-6x6-unorm",
"astc-6x6-unorm-srgb",
"astc-8x5-unorm",
"astc-8x5-unorm-srgb",
"astc-8x6-unorm",
"astc-8x6-unorm-srgb",
"astc-8x8-unorm",
"astc-8x8-unorm-srgb",
"astc-10x5-unorm",
"astc-10x5-unorm-srgb",
"astc-10x6-unorm",
"astc-10x6-unorm-srgb",
"astc-10x8-unorm",
"astc-10x8-unorm-srgb",
"astc-10x10-unorm",
"astc-10x10-unorm-srgb",
"astc-12x10-unorm",
"astc-12x10-unorm-srgb",
"astc-12x12-unorm",
"astc-12x12-unorm-srgb"
] : []
];
return supportedGLCompressedTextureFormats;
}
exports.getSupportedGlCompressedTextureFormats = getSupportedGlCompressedTextureFormats;
//# sourceMappingURL=getSupportedGlCompressedTextureFormats.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,99 @@
"use strict";
let supportedGLCompressedTextureFormats;
function getSupportedGlCompressedTextureFormats() {
if (supportedGLCompressedTextureFormats)
return supportedGLCompressedTextureFormats;
const canvas = document.createElement("canvas");
const gl = canvas.getContext("webgl");
if (!gl) {
return [];
}
supportedGLCompressedTextureFormats = [
// BC compressed formats usable if "texture-compression-bc" is both
// supported by the device/user agent and enabled in requestDevice.
// 'bc6h-rgb-ufloat'
// 'bc6h-rgb-float'
// 'bc7-rgba-unorm',
// 'bc7-rgba-unorm-srgb',
...gl.getExtension("EXT_texture_compression_bptc") ? [
"bc6h-rgb-ufloat",
"bc6h-rgb-float",
"bc7-rgba-unorm",
"bc7-rgba-unorm-srgb"
] : [],
// BC compressed formats usable if "texture-compression-bc" is both
// supported by the device/user agent and enabled in requestDevice.
// 'bc1-rgba-unorm',
// 'bc1-rgba-unorm-srgb',
// 'bc4-r-unorm'
// 'bc4-r-snorm'
// 'bc5-rg-unorm'
// 'bc5-rg-snorm'
...gl.getExtension("WEBGL_compressed_texture_s3tc") ? [
"bc1-rgba-unorm",
"bc2-rgba-unorm",
"bc3-rgba-unorm"
] : [],
...gl.getExtension("WEBGL_compressed_texture_s3tc_srgb") ? [
"bc1-rgba-unorm-srgb",
"bc2-rgba-unorm-srgb",
"bc3-rgba-unorm-srgb"
] : [],
...gl.getExtension("EXT_texture_compression_rgtc") ? [
"bc4-r-unorm",
"bc4-r-snorm",
"bc5-rg-unorm",
"bc5-rg-snorm"
] : [],
// ETC2 compressed formats usable if "texture-compression-etc2" is both
// supported by the device/user agent and enabled in requestDevice.
...gl.getExtension("WEBGL_compressed_texture_etc") ? [
"etc2-rgb8unorm",
"etc2-rgb8unorm-srgb",
"etc2-rgba8unorm",
"etc2-rgba8unorm-srgb",
"etc2-rgb8a1unorm",
"etc2-rgb8a1unorm-srgb",
"eac-r11unorm",
"eac-rg11unorm"
] : [],
// 'eac-r11snorm',
// 'eac-rg11snorm',
// ASTC compressed formats usable if "texture-compression-astc" is both
// supported by the device/user agent and enabled in requestDevice.
...gl.getExtension("WEBGL_compressed_texture_astc") ? [
"astc-4x4-unorm",
"astc-4x4-unorm-srgb",
"astc-5x4-unorm",
"astc-5x4-unorm-srgb",
"astc-5x5-unorm",
"astc-5x5-unorm-srgb",
"astc-6x5-unorm",
"astc-6x5-unorm-srgb",
"astc-6x6-unorm",
"astc-6x6-unorm-srgb",
"astc-8x5-unorm",
"astc-8x5-unorm-srgb",
"astc-8x6-unorm",
"astc-8x6-unorm-srgb",
"astc-8x8-unorm",
"astc-8x8-unorm-srgb",
"astc-10x5-unorm",
"astc-10x5-unorm-srgb",
"astc-10x6-unorm",
"astc-10x6-unorm-srgb",
"astc-10x8-unorm",
"astc-10x8-unorm-srgb",
"astc-10x10-unorm",
"astc-10x10-unorm-srgb",
"astc-12x10-unorm",
"astc-12x10-unorm-srgb",
"astc-12x12-unorm",
"astc-12x12-unorm-srgb"
] : []
];
return supportedGLCompressedTextureFormats;
}
export { getSupportedGlCompressedTextureFormats };
//# sourceMappingURL=getSupportedGlCompressedTextureFormats.mjs.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,9 @@
import type { GlRenderingContext } from '../../context/GlRenderingContext';
/**
* Returns a lookup table that maps each type-format pair to a compatible internal format.
* @function mapTypeAndFormatToInternalFormat
* @private
* @param {WebGLRenderingContext} gl - The rendering context.
* @returns Lookup table.
*/
export declare function mapFormatToGlFormat(gl: GlRenderingContext): Record<string, number>;

View File

@@ -0,0 +1,59 @@
'use strict';
"use strict";
function mapFormatToGlFormat(gl) {
return {
// 8-bit formats
r8unorm: gl.RED,
r8snorm: gl.RED,
r8uint: gl.RED,
r8sint: gl.RED,
// 16-bit formats
r16uint: gl.RED,
r16sint: gl.RED,
r16float: gl.RED,
rg8unorm: gl.RG,
rg8snorm: gl.RG,
rg8uint: gl.RG,
rg8sint: gl.RG,
// 32-bit formats
r32uint: gl.RED,
r32sint: gl.RED,
r32float: gl.RED,
rg16uint: gl.RG,
rg16sint: gl.RG,
rg16float: gl.RG,
rgba8unorm: gl.RGBA,
"rgba8unorm-srgb": gl.RGBA,
// Packed 32-bit formats
rgba8snorm: gl.RGBA,
rgba8uint: gl.RGBA,
rgba8sint: gl.RGBA,
bgra8unorm: gl.RGBA,
"bgra8unorm-srgb": gl.RGBA,
rgb9e5ufloat: gl.RGB,
rgb10a2unorm: gl.RGBA,
rg11b10ufloat: gl.RGB,
// 64-bit formats
rg32uint: gl.RG,
rg32sint: gl.RG,
rg32float: gl.RG,
rgba16uint: gl.RGBA,
rgba16sint: gl.RGBA,
rgba16float: gl.RGBA,
// 128-bit formats
rgba32uint: gl.RGBA,
rgba32sint: gl.RGBA,
rgba32float: gl.RGBA,
// Depth/stencil formats
stencil8: gl.STENCIL_INDEX8,
depth16unorm: gl.DEPTH_COMPONENT,
depth24plus: gl.DEPTH_COMPONENT,
"depth24plus-stencil8": gl.DEPTH_STENCIL,
depth32float: gl.DEPTH_COMPONENT,
"depth32float-stencil8": gl.DEPTH_STENCIL
};
}
exports.mapFormatToGlFormat = mapFormatToGlFormat;
//# sourceMappingURL=mapFormatToGlFormat.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"mapFormatToGlFormat.js","sources":["../../../../../../src/rendering/renderers/gl/texture/utils/mapFormatToGlFormat.ts"],"sourcesContent":["import type { GlRenderingContext } from '../../context/GlRenderingContext';\n\n/**\n * Returns a lookup table that maps each type-format pair to a compatible internal format.\n * @function mapTypeAndFormatToInternalFormat\n * @private\n * @param {WebGLRenderingContext} gl - The rendering context.\n * @returns Lookup table.\n */\nexport function mapFormatToGlFormat(gl: GlRenderingContext): Record<string, number>\n{\n return {\n // 8-bit formats\n r8unorm: gl.RED,\n r8snorm: gl.RED,\n r8uint: gl.RED,\n r8sint: gl.RED,\n\n // 16-bit formats\n r16uint: gl.RED,\n r16sint: gl.RED,\n r16float: gl.RED,\n rg8unorm: gl.RG,\n rg8snorm: gl.RG,\n rg8uint: gl.RG,\n rg8sint: gl.RG,\n\n // 32-bit formats\n r32uint: gl.RED,\n r32sint: gl.RED,\n r32float: gl.RED,\n rg16uint: gl.RG,\n rg16sint: gl.RG,\n rg16float: gl.RG,\n rgba8unorm: gl.RGBA,\n 'rgba8unorm-srgb': gl.RGBA,\n\n // Packed 32-bit formats\n rgba8snorm: gl.RGBA,\n rgba8uint: gl.RGBA,\n rgba8sint: gl.RGBA,\n bgra8unorm: gl.RGBA,\n 'bgra8unorm-srgb': gl.RGBA,\n rgb9e5ufloat: gl.RGB,\n rgb10a2unorm: gl.RGBA,\n rg11b10ufloat: gl.RGB,\n\n // 64-bit formats\n rg32uint: gl.RG,\n rg32sint: gl.RG,\n rg32float: gl.RG,\n rgba16uint: gl.RGBA,\n rgba16sint: gl.RGBA,\n rgba16float: gl.RGBA,\n\n // 128-bit formats\n rgba32uint: gl.RGBA,\n rgba32sint: gl.RGBA,\n rgba32float: gl.RGBA,\n\n // Depth/stencil formats\n stencil8: gl.STENCIL_INDEX8,\n depth16unorm: gl.DEPTH_COMPONENT,\n depth24plus: gl.DEPTH_COMPONENT,\n 'depth24plus-stencil8': gl.DEPTH_STENCIL,\n depth32float: gl.DEPTH_COMPONENT,\n 'depth32float-stencil8': gl.DEPTH_STENCIL,\n\n };\n}\n"],"names":[],"mappings":";;;AASO,SAAS,oBAAoB,EACpC,EAAA;AACI,EAAO,OAAA;AAAA;AAAA,IAEH,SAAS,EAAG,CAAA,GAAA;AAAA,IACZ,SAAS,EAAG,CAAA,GAAA;AAAA,IACZ,QAAQ,EAAG,CAAA,GAAA;AAAA,IACX,QAAQ,EAAG,CAAA,GAAA;AAAA;AAAA,IAGX,SAAS,EAAG,CAAA,GAAA;AAAA,IACZ,SAAY,EAAG,CAAA,GAAA;AAAA,IACf,UAAU,EAAG,CAAA,GAAA;AAAA,IACb,UAAW,EAAG,CAAA,EAAA;AAAA,IACd,UAAY,EAAG,CAAA,EAAA;AAAA,IACf,SAAU,EAAG,CAAA,EAAA;AAAA,IACb,SAAU,EAAG,CAAA,EAAA;AAAA;AAAA,IAGb,SAAS,EAAG,CAAA,GAAA;AAAA,IACZ,SAAS,EAAG,CAAA,GAAA;AAAA,IACZ,UAAU,EAAG,CAAA,GAAA;AAAA,IACb,UAAY,EAAG,CAAA,EAAA;AAAA,IACf,UAAW,EAAG,CAAA,EAAA;AAAA,IACd,WAAY,EAAG,CAAA,EAAA;AAAA,IACf,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,mBAAmB,EAAG,CAAA,IAAA;AAAA;AAAA,IAGtB,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,WAAW,EAAG,CAAA,IAAA;AAAA,IACd,WAAW,EAAG,CAAA,IAAA;AAAA,IACd,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,mBAAmB,EAAG,CAAA,IAAA;AAAA,IACtB,cAAc,EAAG,CAAA,GAAA;AAAA,IACjB,cAAc,EAAG,CAAA,IAAA;AAAA,IACjB,eAAe,EAAG,CAAA,GAAA;AAAA;AAAA,IAGlB,UAAU,EAAG,CAAA,EAAA;AAAA,IACb,UAAU,EAAG,CAAA,EAAA;AAAA,IACb,WAAY,EAAG,CAAA,EAAA;AAAA,IACf,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,aAAa,EAAG,CAAA,IAAA;AAAA;AAAA,IAGhB,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,aAAa,EAAG,CAAA,IAAA;AAAA;AAAA,IAGhB,UAAU,EAAG,CAAA,cAAA;AAAA,IACb,cAAc,EAAG,CAAA,eAAA;AAAA,IACjB,aAAa,EAAG,CAAA,eAAA;AAAA,IAChB,wBAAwB,EAAG,CAAA,aAAA;AAAA,IAC3B,cAAc,EAAG,CAAA,eAAA;AAAA,IACjB,yBAAyB,EAAG,CAAA,aAAA;AAAA,GAEhC,CAAA;AACJ;;;;"}

View File

@@ -0,0 +1,57 @@
"use strict";
function mapFormatToGlFormat(gl) {
return {
// 8-bit formats
r8unorm: gl.RED,
r8snorm: gl.RED,
r8uint: gl.RED,
r8sint: gl.RED,
// 16-bit formats
r16uint: gl.RED,
r16sint: gl.RED,
r16float: gl.RED,
rg8unorm: gl.RG,
rg8snorm: gl.RG,
rg8uint: gl.RG,
rg8sint: gl.RG,
// 32-bit formats
r32uint: gl.RED,
r32sint: gl.RED,
r32float: gl.RED,
rg16uint: gl.RG,
rg16sint: gl.RG,
rg16float: gl.RG,
rgba8unorm: gl.RGBA,
"rgba8unorm-srgb": gl.RGBA,
// Packed 32-bit formats
rgba8snorm: gl.RGBA,
rgba8uint: gl.RGBA,
rgba8sint: gl.RGBA,
bgra8unorm: gl.RGBA,
"bgra8unorm-srgb": gl.RGBA,
rgb9e5ufloat: gl.RGB,
rgb10a2unorm: gl.RGBA,
rg11b10ufloat: gl.RGB,
// 64-bit formats
rg32uint: gl.RG,
rg32sint: gl.RG,
rg32float: gl.RG,
rgba16uint: gl.RGBA,
rgba16sint: gl.RGBA,
rgba16float: gl.RGBA,
// 128-bit formats
rgba32uint: gl.RGBA,
rgba32sint: gl.RGBA,
rgba32float: gl.RGBA,
// Depth/stencil formats
stencil8: gl.STENCIL_INDEX8,
depth16unorm: gl.DEPTH_COMPONENT,
depth24plus: gl.DEPTH_COMPONENT,
"depth24plus-stencil8": gl.DEPTH_STENCIL,
depth32float: gl.DEPTH_COMPONENT,
"depth32float-stencil8": gl.DEPTH_STENCIL
};
}
export { mapFormatToGlFormat };
//# sourceMappingURL=mapFormatToGlFormat.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"mapFormatToGlFormat.mjs","sources":["../../../../../../src/rendering/renderers/gl/texture/utils/mapFormatToGlFormat.ts"],"sourcesContent":["import type { GlRenderingContext } from '../../context/GlRenderingContext';\n\n/**\n * Returns a lookup table that maps each type-format pair to a compatible internal format.\n * @function mapTypeAndFormatToInternalFormat\n * @private\n * @param {WebGLRenderingContext} gl - The rendering context.\n * @returns Lookup table.\n */\nexport function mapFormatToGlFormat(gl: GlRenderingContext): Record<string, number>\n{\n return {\n // 8-bit formats\n r8unorm: gl.RED,\n r8snorm: gl.RED,\n r8uint: gl.RED,\n r8sint: gl.RED,\n\n // 16-bit formats\n r16uint: gl.RED,\n r16sint: gl.RED,\n r16float: gl.RED,\n rg8unorm: gl.RG,\n rg8snorm: gl.RG,\n rg8uint: gl.RG,\n rg8sint: gl.RG,\n\n // 32-bit formats\n r32uint: gl.RED,\n r32sint: gl.RED,\n r32float: gl.RED,\n rg16uint: gl.RG,\n rg16sint: gl.RG,\n rg16float: gl.RG,\n rgba8unorm: gl.RGBA,\n 'rgba8unorm-srgb': gl.RGBA,\n\n // Packed 32-bit formats\n rgba8snorm: gl.RGBA,\n rgba8uint: gl.RGBA,\n rgba8sint: gl.RGBA,\n bgra8unorm: gl.RGBA,\n 'bgra8unorm-srgb': gl.RGBA,\n rgb9e5ufloat: gl.RGB,\n rgb10a2unorm: gl.RGBA,\n rg11b10ufloat: gl.RGB,\n\n // 64-bit formats\n rg32uint: gl.RG,\n rg32sint: gl.RG,\n rg32float: gl.RG,\n rgba16uint: gl.RGBA,\n rgba16sint: gl.RGBA,\n rgba16float: gl.RGBA,\n\n // 128-bit formats\n rgba32uint: gl.RGBA,\n rgba32sint: gl.RGBA,\n rgba32float: gl.RGBA,\n\n // Depth/stencil formats\n stencil8: gl.STENCIL_INDEX8,\n depth16unorm: gl.DEPTH_COMPONENT,\n depth24plus: gl.DEPTH_COMPONENT,\n 'depth24plus-stencil8': gl.DEPTH_STENCIL,\n depth32float: gl.DEPTH_COMPONENT,\n 'depth32float-stencil8': gl.DEPTH_STENCIL,\n\n };\n}\n"],"names":[],"mappings":";AASO,SAAS,oBAAoB,EACpC,EAAA;AACI,EAAO,OAAA;AAAA;AAAA,IAEH,SAAS,EAAG,CAAA,GAAA;AAAA,IACZ,SAAS,EAAG,CAAA,GAAA;AAAA,IACZ,QAAQ,EAAG,CAAA,GAAA;AAAA,IACX,QAAQ,EAAG,CAAA,GAAA;AAAA;AAAA,IAGX,SAAS,EAAG,CAAA,GAAA;AAAA,IACZ,SAAY,EAAG,CAAA,GAAA;AAAA,IACf,UAAU,EAAG,CAAA,GAAA;AAAA,IACb,UAAW,EAAG,CAAA,EAAA;AAAA,IACd,UAAY,EAAG,CAAA,EAAA;AAAA,IACf,SAAU,EAAG,CAAA,EAAA;AAAA,IACb,SAAU,EAAG,CAAA,EAAA;AAAA;AAAA,IAGb,SAAS,EAAG,CAAA,GAAA;AAAA,IACZ,SAAS,EAAG,CAAA,GAAA;AAAA,IACZ,UAAU,EAAG,CAAA,GAAA;AAAA,IACb,UAAY,EAAG,CAAA,EAAA;AAAA,IACf,UAAW,EAAG,CAAA,EAAA;AAAA,IACd,WAAY,EAAG,CAAA,EAAA;AAAA,IACf,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,mBAAmB,EAAG,CAAA,IAAA;AAAA;AAAA,IAGtB,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,WAAW,EAAG,CAAA,IAAA;AAAA,IACd,WAAW,EAAG,CAAA,IAAA;AAAA,IACd,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,mBAAmB,EAAG,CAAA,IAAA;AAAA,IACtB,cAAc,EAAG,CAAA,GAAA;AAAA,IACjB,cAAc,EAAG,CAAA,IAAA;AAAA,IACjB,eAAe,EAAG,CAAA,GAAA;AAAA;AAAA,IAGlB,UAAU,EAAG,CAAA,EAAA;AAAA,IACb,UAAU,EAAG,CAAA,EAAA;AAAA,IACb,WAAY,EAAG,CAAA,EAAA;AAAA,IACf,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,aAAa,EAAG,CAAA,IAAA;AAAA;AAAA,IAGhB,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,aAAa,EAAG,CAAA,IAAA;AAAA;AAAA,IAGhB,UAAU,EAAG,CAAA,cAAA;AAAA,IACb,cAAc,EAAG,CAAA,eAAA;AAAA,IACjB,aAAa,EAAG,CAAA,eAAA;AAAA,IAChB,wBAAwB,EAAG,CAAA,aAAA;AAAA,IAC3B,cAAc,EAAG,CAAA,eAAA;AAAA,IACjB,yBAAyB,EAAG,CAAA,aAAA;AAAA,GAEhC,CAAA;AACJ;;;;"}

View File

@@ -0,0 +1,11 @@
import type { GlRenderingContext } from '../../context/GlRenderingContext';
import type { WebGLExtensions } from '../../context/WebGLExtensions';
/**
* Returns a lookup table that maps each type-format pair to a compatible internal format.
* @function mapTypeAndFormatToInternalFormat
* @private
* @param gl - The rendering context.
* @param extensions - The WebGL extensions.
* @returns Lookup table.
*/
export declare function mapFormatToGlInternalFormat(gl: GlRenderingContext, extensions: WebGLExtensions): Record<string, number>;

View File

@@ -0,0 +1,139 @@
'use strict';
var adapter = require('../../../../../environment/adapter.js');
"use strict";
function mapFormatToGlInternalFormat(gl, extensions) {
let srgb = {};
let bgra8unorm = gl.RGBA;
if (!(gl instanceof adapter.DOMAdapter.get().getWebGLRenderingContext())) {
srgb = {
"rgba8unorm-srgb": gl.SRGB8_ALPHA8,
"bgra8unorm-srgb": gl.SRGB8_ALPHA8
};
bgra8unorm = gl.RGBA8;
} else if (extensions.srgb) {
srgb = {
"rgba8unorm-srgb": extensions.srgb.SRGB8_ALPHA8_EXT,
"bgra8unorm-srgb": extensions.srgb.SRGB8_ALPHA8_EXT
};
}
return {
// 8-bit formats
r8unorm: gl.R8,
r8snorm: gl.R8_SNORM,
r8uint: gl.R8UI,
r8sint: gl.R8I,
// 16-bit formats
r16uint: gl.R16UI,
r16sint: gl.R16I,
r16float: gl.R16F,
rg8unorm: gl.RG8,
rg8snorm: gl.RG8_SNORM,
rg8uint: gl.RG8UI,
rg8sint: gl.RG8I,
// 32-bit formats
r32uint: gl.R32UI,
r32sint: gl.R32I,
r32float: gl.R32F,
rg16uint: gl.RG16UI,
rg16sint: gl.RG16I,
rg16float: gl.RG16F,
rgba8unorm: gl.RGBA,
...srgb,
// Packed 32-bit formats
rgba8snorm: gl.RGBA8_SNORM,
rgba8uint: gl.RGBA8UI,
rgba8sint: gl.RGBA8I,
bgra8unorm,
rgb9e5ufloat: gl.RGB9_E5,
rgb10a2unorm: gl.RGB10_A2,
rg11b10ufloat: gl.R11F_G11F_B10F,
// 64-bit formats
rg32uint: gl.RG32UI,
rg32sint: gl.RG32I,
rg32float: gl.RG32F,
rgba16uint: gl.RGBA16UI,
rgba16sint: gl.RGBA16I,
rgba16float: gl.RGBA16F,
// 128-bit formats
rgba32uint: gl.RGBA32UI,
rgba32sint: gl.RGBA32I,
rgba32float: gl.RGBA32F,
// Depth/stencil formats
stencil8: gl.STENCIL_INDEX8,
depth16unorm: gl.DEPTH_COMPONENT16,
depth24plus: gl.DEPTH_COMPONENT24,
"depth24plus-stencil8": gl.DEPTH24_STENCIL8,
depth32float: gl.DEPTH_COMPONENT32F,
"depth32float-stencil8": gl.DEPTH32F_STENCIL8,
// Compressed formats
...extensions.s3tc ? {
"bc1-rgba-unorm": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,
"bc2-rgba-unorm": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,
"bc3-rgba-unorm": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT
} : {},
...extensions.s3tc_sRGB ? {
"bc1-rgba-unorm-srgb": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
"bc2-rgba-unorm-srgb": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
"bc3-rgba-unorm-srgb": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT
} : {},
...extensions.rgtc ? {
"bc4-r-unorm": extensions.rgtc.COMPRESSED_RED_RGTC1_EXT,
"bc4-r-snorm": extensions.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,
"bc5-rg-unorm": extensions.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,
"bc5-rg-snorm": extensions.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT
} : {},
...extensions.bptc ? {
"bc6h-rgb-float": extensions.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,
"bc6h-rgb-ufloat": extensions.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,
"bc7-rgba-unorm": extensions.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,
"bc7-rgba-unorm-srgb": extensions.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT
} : {},
...extensions.etc ? {
"etc2-rgb8unorm": extensions.etc.COMPRESSED_RGB8_ETC2,
"etc2-rgb8unorm-srgb": extensions.etc.COMPRESSED_SRGB8_ETC2,
"etc2-rgb8a1unorm": extensions.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
"etc2-rgb8a1unorm-srgb": extensions.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
"etc2-rgba8unorm": extensions.etc.COMPRESSED_RGBA8_ETC2_EAC,
"etc2-rgba8unorm-srgb": extensions.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
"eac-r11unorm": extensions.etc.COMPRESSED_R11_EAC,
// 'eac-r11snorm'
"eac-rg11unorm": extensions.etc.COMPRESSED_SIGNED_RG11_EAC
// 'eac-rg11snorm'
} : {},
...extensions.astc ? {
"astc-4x4-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,
"astc-4x4-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
"astc-5x4-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,
"astc-5x4-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,
"astc-5x5-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,
"astc-5x5-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
"astc-6x5-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,
"astc-6x5-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
"astc-6x6-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,
"astc-6x6-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
"astc-8x5-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,
"astc-8x5-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
"astc-8x6-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,
"astc-8x6-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
"astc-8x8-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,
"astc-8x8-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
"astc-10x5-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,
"astc-10x5-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
"astc-10x6-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,
"astc-10x6-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
"astc-10x8-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,
"astc-10x8-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
"astc-10x10-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,
"astc-10x10-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
"astc-12x10-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,
"astc-12x10-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
"astc-12x12-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,
"astc-12x12-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
} : {}
};
}
exports.mapFormatToGlInternalFormat = mapFormatToGlInternalFormat;
//# sourceMappingURL=mapFormatToGlInternalFormat.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,137 @@
import { DOMAdapter } from '../../../../../environment/adapter.mjs';
"use strict";
function mapFormatToGlInternalFormat(gl, extensions) {
let srgb = {};
let bgra8unorm = gl.RGBA;
if (!(gl instanceof DOMAdapter.get().getWebGLRenderingContext())) {
srgb = {
"rgba8unorm-srgb": gl.SRGB8_ALPHA8,
"bgra8unorm-srgb": gl.SRGB8_ALPHA8
};
bgra8unorm = gl.RGBA8;
} else if (extensions.srgb) {
srgb = {
"rgba8unorm-srgb": extensions.srgb.SRGB8_ALPHA8_EXT,
"bgra8unorm-srgb": extensions.srgb.SRGB8_ALPHA8_EXT
};
}
return {
// 8-bit formats
r8unorm: gl.R8,
r8snorm: gl.R8_SNORM,
r8uint: gl.R8UI,
r8sint: gl.R8I,
// 16-bit formats
r16uint: gl.R16UI,
r16sint: gl.R16I,
r16float: gl.R16F,
rg8unorm: gl.RG8,
rg8snorm: gl.RG8_SNORM,
rg8uint: gl.RG8UI,
rg8sint: gl.RG8I,
// 32-bit formats
r32uint: gl.R32UI,
r32sint: gl.R32I,
r32float: gl.R32F,
rg16uint: gl.RG16UI,
rg16sint: gl.RG16I,
rg16float: gl.RG16F,
rgba8unorm: gl.RGBA,
...srgb,
// Packed 32-bit formats
rgba8snorm: gl.RGBA8_SNORM,
rgba8uint: gl.RGBA8UI,
rgba8sint: gl.RGBA8I,
bgra8unorm,
rgb9e5ufloat: gl.RGB9_E5,
rgb10a2unorm: gl.RGB10_A2,
rg11b10ufloat: gl.R11F_G11F_B10F,
// 64-bit formats
rg32uint: gl.RG32UI,
rg32sint: gl.RG32I,
rg32float: gl.RG32F,
rgba16uint: gl.RGBA16UI,
rgba16sint: gl.RGBA16I,
rgba16float: gl.RGBA16F,
// 128-bit formats
rgba32uint: gl.RGBA32UI,
rgba32sint: gl.RGBA32I,
rgba32float: gl.RGBA32F,
// Depth/stencil formats
stencil8: gl.STENCIL_INDEX8,
depth16unorm: gl.DEPTH_COMPONENT16,
depth24plus: gl.DEPTH_COMPONENT24,
"depth24plus-stencil8": gl.DEPTH24_STENCIL8,
depth32float: gl.DEPTH_COMPONENT32F,
"depth32float-stencil8": gl.DEPTH32F_STENCIL8,
// Compressed formats
...extensions.s3tc ? {
"bc1-rgba-unorm": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,
"bc2-rgba-unorm": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,
"bc3-rgba-unorm": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT
} : {},
...extensions.s3tc_sRGB ? {
"bc1-rgba-unorm-srgb": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
"bc2-rgba-unorm-srgb": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
"bc3-rgba-unorm-srgb": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT
} : {},
...extensions.rgtc ? {
"bc4-r-unorm": extensions.rgtc.COMPRESSED_RED_RGTC1_EXT,
"bc4-r-snorm": extensions.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,
"bc5-rg-unorm": extensions.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,
"bc5-rg-snorm": extensions.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT
} : {},
...extensions.bptc ? {
"bc6h-rgb-float": extensions.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,
"bc6h-rgb-ufloat": extensions.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,
"bc7-rgba-unorm": extensions.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,
"bc7-rgba-unorm-srgb": extensions.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT
} : {},
...extensions.etc ? {
"etc2-rgb8unorm": extensions.etc.COMPRESSED_RGB8_ETC2,
"etc2-rgb8unorm-srgb": extensions.etc.COMPRESSED_SRGB8_ETC2,
"etc2-rgb8a1unorm": extensions.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
"etc2-rgb8a1unorm-srgb": extensions.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
"etc2-rgba8unorm": extensions.etc.COMPRESSED_RGBA8_ETC2_EAC,
"etc2-rgba8unorm-srgb": extensions.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
"eac-r11unorm": extensions.etc.COMPRESSED_R11_EAC,
// 'eac-r11snorm'
"eac-rg11unorm": extensions.etc.COMPRESSED_SIGNED_RG11_EAC
// 'eac-rg11snorm'
} : {},
...extensions.astc ? {
"astc-4x4-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,
"astc-4x4-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
"astc-5x4-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,
"astc-5x4-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,
"astc-5x5-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,
"astc-5x5-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
"astc-6x5-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,
"astc-6x5-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
"astc-6x6-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,
"astc-6x6-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
"astc-8x5-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,
"astc-8x5-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
"astc-8x6-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,
"astc-8x6-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
"astc-8x8-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,
"astc-8x8-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
"astc-10x5-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,
"astc-10x5-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
"astc-10x6-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,
"astc-10x6-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
"astc-10x8-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,
"astc-10x8-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
"astc-10x10-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,
"astc-10x10-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
"astc-12x10-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,
"astc-12x10-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
"astc-12x12-unorm": extensions.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,
"astc-12x12-unorm-srgb": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
} : {}
};
}
export { mapFormatToGlInternalFormat };
//# sourceMappingURL=mapFormatToGlInternalFormat.mjs.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,9 @@
import type { GlRenderingContext } from '../../context/GlRenderingContext';
/**
* Returns a lookup table that maps each type-format pair to a compatible internal format.
* @function mapTypeAndFormatToInternalFormat
* @private
* @param {WebGLRenderingContext} gl - The rendering context.
* @returns Lookup table.
*/
export declare function mapFormatToGlType(gl: GlRenderingContext): Record<string, number>;

View File

@@ -0,0 +1,59 @@
'use strict';
"use strict";
function mapFormatToGlType(gl) {
return {
// 8-bit formats
r8unorm: gl.UNSIGNED_BYTE,
r8snorm: gl.BYTE,
r8uint: gl.UNSIGNED_BYTE,
r8sint: gl.BYTE,
// 16-bit formats
r16uint: gl.UNSIGNED_SHORT,
r16sint: gl.SHORT,
r16float: gl.HALF_FLOAT,
rg8unorm: gl.UNSIGNED_BYTE,
rg8snorm: gl.BYTE,
rg8uint: gl.UNSIGNED_BYTE,
rg8sint: gl.BYTE,
// 32-bit formats
r32uint: gl.UNSIGNED_INT,
r32sint: gl.INT,
r32float: gl.FLOAT,
rg16uint: gl.UNSIGNED_SHORT,
rg16sint: gl.SHORT,
rg16float: gl.HALF_FLOAT,
rgba8unorm: gl.UNSIGNED_BYTE,
"rgba8unorm-srgb": gl.UNSIGNED_BYTE,
// Packed 32-bit formats
rgba8snorm: gl.BYTE,
rgba8uint: gl.UNSIGNED_BYTE,
rgba8sint: gl.BYTE,
bgra8unorm: gl.UNSIGNED_BYTE,
"bgra8unorm-srgb": gl.UNSIGNED_BYTE,
rgb9e5ufloat: gl.UNSIGNED_INT_5_9_9_9_REV,
rgb10a2unorm: gl.UNSIGNED_INT_2_10_10_10_REV,
rg11b10ufloat: gl.UNSIGNED_INT_10F_11F_11F_REV,
// 64-bit formats
rg32uint: gl.UNSIGNED_INT,
rg32sint: gl.INT,
rg32float: gl.FLOAT,
rgba16uint: gl.UNSIGNED_SHORT,
rgba16sint: gl.SHORT,
rgba16float: gl.HALF_FLOAT,
// 128-bit formats
rgba32uint: gl.UNSIGNED_INT,
rgba32sint: gl.INT,
rgba32float: gl.FLOAT,
// Depth/stencil formats
stencil8: gl.UNSIGNED_BYTE,
depth16unorm: gl.UNSIGNED_SHORT,
depth24plus: gl.UNSIGNED_INT,
"depth24plus-stencil8": gl.UNSIGNED_INT_24_8,
depth32float: gl.FLOAT,
"depth32float-stencil8": gl.FLOAT_32_UNSIGNED_INT_24_8_REV
};
}
exports.mapFormatToGlType = mapFormatToGlType;
//# sourceMappingURL=mapFormatToGlType.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"mapFormatToGlType.js","sources":["../../../../../../src/rendering/renderers/gl/texture/utils/mapFormatToGlType.ts"],"sourcesContent":["import type { GlRenderingContext } from '../../context/GlRenderingContext';\n\n/**\n * Returns a lookup table that maps each type-format pair to a compatible internal format.\n * @function mapTypeAndFormatToInternalFormat\n * @private\n * @param {WebGLRenderingContext} gl - The rendering context.\n * @returns Lookup table.\n */\nexport function mapFormatToGlType(gl: GlRenderingContext): Record<string, number>\n{\n return {\n // 8-bit formats\n r8unorm: gl.UNSIGNED_BYTE,\n r8snorm: gl.BYTE,\n r8uint: gl.UNSIGNED_BYTE,\n r8sint: gl.BYTE,\n\n // 16-bit formats\n r16uint: gl.UNSIGNED_SHORT,\n r16sint: gl.SHORT,\n r16float: gl.HALF_FLOAT,\n rg8unorm: gl.UNSIGNED_BYTE,\n rg8snorm: gl.BYTE,\n rg8uint: gl.UNSIGNED_BYTE,\n rg8sint: gl.BYTE,\n\n // 32-bit formats\n r32uint: gl.UNSIGNED_INT,\n r32sint: gl.INT,\n r32float: gl.FLOAT,\n rg16uint: gl.UNSIGNED_SHORT,\n rg16sint: gl.SHORT,\n rg16float: gl.HALF_FLOAT,\n rgba8unorm: gl.UNSIGNED_BYTE,\n 'rgba8unorm-srgb': gl.UNSIGNED_BYTE,\n\n // Packed 32-bit formats\n rgba8snorm: gl.BYTE,\n rgba8uint: gl.UNSIGNED_BYTE,\n rgba8sint: gl.BYTE,\n bgra8unorm: gl.UNSIGNED_BYTE,\n 'bgra8unorm-srgb': gl.UNSIGNED_BYTE,\n rgb9e5ufloat: gl.UNSIGNED_INT_5_9_9_9_REV,\n rgb10a2unorm: gl.UNSIGNED_INT_2_10_10_10_REV,\n rg11b10ufloat: gl.UNSIGNED_INT_10F_11F_11F_REV,\n\n // 64-bit formats\n rg32uint: gl.UNSIGNED_INT,\n rg32sint: gl.INT,\n rg32float: gl.FLOAT,\n rgba16uint: gl.UNSIGNED_SHORT,\n rgba16sint: gl.SHORT,\n rgba16float: gl.HALF_FLOAT,\n\n // 128-bit formats\n rgba32uint: gl.UNSIGNED_INT,\n rgba32sint: gl.INT,\n rgba32float: gl.FLOAT,\n\n // Depth/stencil formats\n stencil8: gl.UNSIGNED_BYTE,\n depth16unorm: gl.UNSIGNED_SHORT,\n depth24plus: gl.UNSIGNED_INT,\n 'depth24plus-stencil8': gl.UNSIGNED_INT_24_8,\n depth32float: gl.FLOAT,\n 'depth32float-stencil8': gl.FLOAT_32_UNSIGNED_INT_24_8_REV,\n\n };\n}\n"],"names":[],"mappings":";;;AASO,SAAS,kBAAkB,EAClC,EAAA;AACI,EAAO,OAAA;AAAA;AAAA,IAEH,SAAS,EAAG,CAAA,aAAA;AAAA,IACZ,SAAS,EAAG,CAAA,IAAA;AAAA,IACZ,QAAQ,EAAG,CAAA,aAAA;AAAA,IACX,QAAQ,EAAG,CAAA,IAAA;AAAA;AAAA,IAGX,SAAS,EAAG,CAAA,cAAA;AAAA,IACZ,SAAS,EAAG,CAAA,KAAA;AAAA,IACZ,UAAU,EAAG,CAAA,UAAA;AAAA,IACb,UAAU,EAAG,CAAA,aAAA;AAAA,IACb,UAAU,EAAG,CAAA,IAAA;AAAA,IACb,SAAS,EAAG,CAAA,aAAA;AAAA,IACZ,SAAS,EAAG,CAAA,IAAA;AAAA;AAAA,IAGZ,SAAS,EAAG,CAAA,YAAA;AAAA,IACZ,SAAS,EAAG,CAAA,GAAA;AAAA,IACZ,UAAU,EAAG,CAAA,KAAA;AAAA,IACb,UAAU,EAAG,CAAA,cAAA;AAAA,IACb,UAAU,EAAG,CAAA,KAAA;AAAA,IACb,WAAW,EAAG,CAAA,UAAA;AAAA,IACd,YAAY,EAAG,CAAA,aAAA;AAAA,IACf,mBAAmB,EAAG,CAAA,aAAA;AAAA;AAAA,IAGtB,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,WAAW,EAAG,CAAA,aAAA;AAAA,IACd,WAAW,EAAG,CAAA,IAAA;AAAA,IACd,YAAY,EAAG,CAAA,aAAA;AAAA,IACf,mBAAmB,EAAG,CAAA,aAAA;AAAA,IACtB,cAAc,EAAG,CAAA,wBAAA;AAAA,IACjB,cAAc,EAAG,CAAA,2BAAA;AAAA,IACjB,eAAe,EAAG,CAAA,4BAAA;AAAA;AAAA,IAGlB,UAAU,EAAG,CAAA,YAAA;AAAA,IACb,UAAU,EAAG,CAAA,GAAA;AAAA,IACb,WAAW,EAAG,CAAA,KAAA;AAAA,IACd,YAAY,EAAG,CAAA,cAAA;AAAA,IACf,YAAY,EAAG,CAAA,KAAA;AAAA,IACf,aAAa,EAAG,CAAA,UAAA;AAAA;AAAA,IAGhB,YAAY,EAAG,CAAA,YAAA;AAAA,IACf,YAAY,EAAG,CAAA,GAAA;AAAA,IACf,aAAa,EAAG,CAAA,KAAA;AAAA;AAAA,IAGhB,UAAU,EAAG,CAAA,aAAA;AAAA,IACb,cAAc,EAAG,CAAA,cAAA;AAAA,IACjB,aAAa,EAAG,CAAA,YAAA;AAAA,IAChB,wBAAwB,EAAG,CAAA,iBAAA;AAAA,IAC3B,cAAc,EAAG,CAAA,KAAA;AAAA,IACjB,yBAAyB,EAAG,CAAA,8BAAA;AAAA,GAEhC,CAAA;AACJ;;;;"}

View File

@@ -0,0 +1,57 @@
"use strict";
function mapFormatToGlType(gl) {
return {
// 8-bit formats
r8unorm: gl.UNSIGNED_BYTE,
r8snorm: gl.BYTE,
r8uint: gl.UNSIGNED_BYTE,
r8sint: gl.BYTE,
// 16-bit formats
r16uint: gl.UNSIGNED_SHORT,
r16sint: gl.SHORT,
r16float: gl.HALF_FLOAT,
rg8unorm: gl.UNSIGNED_BYTE,
rg8snorm: gl.BYTE,
rg8uint: gl.UNSIGNED_BYTE,
rg8sint: gl.BYTE,
// 32-bit formats
r32uint: gl.UNSIGNED_INT,
r32sint: gl.INT,
r32float: gl.FLOAT,
rg16uint: gl.UNSIGNED_SHORT,
rg16sint: gl.SHORT,
rg16float: gl.HALF_FLOAT,
rgba8unorm: gl.UNSIGNED_BYTE,
"rgba8unorm-srgb": gl.UNSIGNED_BYTE,
// Packed 32-bit formats
rgba8snorm: gl.BYTE,
rgba8uint: gl.UNSIGNED_BYTE,
rgba8sint: gl.BYTE,
bgra8unorm: gl.UNSIGNED_BYTE,
"bgra8unorm-srgb": gl.UNSIGNED_BYTE,
rgb9e5ufloat: gl.UNSIGNED_INT_5_9_9_9_REV,
rgb10a2unorm: gl.UNSIGNED_INT_2_10_10_10_REV,
rg11b10ufloat: gl.UNSIGNED_INT_10F_11F_11F_REV,
// 64-bit formats
rg32uint: gl.UNSIGNED_INT,
rg32sint: gl.INT,
rg32float: gl.FLOAT,
rgba16uint: gl.UNSIGNED_SHORT,
rgba16sint: gl.SHORT,
rgba16float: gl.HALF_FLOAT,
// 128-bit formats
rgba32uint: gl.UNSIGNED_INT,
rgba32sint: gl.INT,
rgba32float: gl.FLOAT,
// Depth/stencil formats
stencil8: gl.UNSIGNED_BYTE,
depth16unorm: gl.UNSIGNED_SHORT,
depth24plus: gl.UNSIGNED_INT,
"depth24plus-stencil8": gl.UNSIGNED_INT_24_8,
depth32float: gl.FLOAT,
"depth32float-stencil8": gl.FLOAT_32_UNSIGNED_INT_24_8_REV
};
}
export { mapFormatToGlType };
//# sourceMappingURL=mapFormatToGlType.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"mapFormatToGlType.mjs","sources":["../../../../../../src/rendering/renderers/gl/texture/utils/mapFormatToGlType.ts"],"sourcesContent":["import type { GlRenderingContext } from '../../context/GlRenderingContext';\n\n/**\n * Returns a lookup table that maps each type-format pair to a compatible internal format.\n * @function mapTypeAndFormatToInternalFormat\n * @private\n * @param {WebGLRenderingContext} gl - The rendering context.\n * @returns Lookup table.\n */\nexport function mapFormatToGlType(gl: GlRenderingContext): Record<string, number>\n{\n return {\n // 8-bit formats\n r8unorm: gl.UNSIGNED_BYTE,\n r8snorm: gl.BYTE,\n r8uint: gl.UNSIGNED_BYTE,\n r8sint: gl.BYTE,\n\n // 16-bit formats\n r16uint: gl.UNSIGNED_SHORT,\n r16sint: gl.SHORT,\n r16float: gl.HALF_FLOAT,\n rg8unorm: gl.UNSIGNED_BYTE,\n rg8snorm: gl.BYTE,\n rg8uint: gl.UNSIGNED_BYTE,\n rg8sint: gl.BYTE,\n\n // 32-bit formats\n r32uint: gl.UNSIGNED_INT,\n r32sint: gl.INT,\n r32float: gl.FLOAT,\n rg16uint: gl.UNSIGNED_SHORT,\n rg16sint: gl.SHORT,\n rg16float: gl.HALF_FLOAT,\n rgba8unorm: gl.UNSIGNED_BYTE,\n 'rgba8unorm-srgb': gl.UNSIGNED_BYTE,\n\n // Packed 32-bit formats\n rgba8snorm: gl.BYTE,\n rgba8uint: gl.UNSIGNED_BYTE,\n rgba8sint: gl.BYTE,\n bgra8unorm: gl.UNSIGNED_BYTE,\n 'bgra8unorm-srgb': gl.UNSIGNED_BYTE,\n rgb9e5ufloat: gl.UNSIGNED_INT_5_9_9_9_REV,\n rgb10a2unorm: gl.UNSIGNED_INT_2_10_10_10_REV,\n rg11b10ufloat: gl.UNSIGNED_INT_10F_11F_11F_REV,\n\n // 64-bit formats\n rg32uint: gl.UNSIGNED_INT,\n rg32sint: gl.INT,\n rg32float: gl.FLOAT,\n rgba16uint: gl.UNSIGNED_SHORT,\n rgba16sint: gl.SHORT,\n rgba16float: gl.HALF_FLOAT,\n\n // 128-bit formats\n rgba32uint: gl.UNSIGNED_INT,\n rgba32sint: gl.INT,\n rgba32float: gl.FLOAT,\n\n // Depth/stencil formats\n stencil8: gl.UNSIGNED_BYTE,\n depth16unorm: gl.UNSIGNED_SHORT,\n depth24plus: gl.UNSIGNED_INT,\n 'depth24plus-stencil8': gl.UNSIGNED_INT_24_8,\n depth32float: gl.FLOAT,\n 'depth32float-stencil8': gl.FLOAT_32_UNSIGNED_INT_24_8_REV,\n\n };\n}\n"],"names":[],"mappings":";AASO,SAAS,kBAAkB,EAClC,EAAA;AACI,EAAO,OAAA;AAAA;AAAA,IAEH,SAAS,EAAG,CAAA,aAAA;AAAA,IACZ,SAAS,EAAG,CAAA,IAAA;AAAA,IACZ,QAAQ,EAAG,CAAA,aAAA;AAAA,IACX,QAAQ,EAAG,CAAA,IAAA;AAAA;AAAA,IAGX,SAAS,EAAG,CAAA,cAAA;AAAA,IACZ,SAAS,EAAG,CAAA,KAAA;AAAA,IACZ,UAAU,EAAG,CAAA,UAAA;AAAA,IACb,UAAU,EAAG,CAAA,aAAA;AAAA,IACb,UAAU,EAAG,CAAA,IAAA;AAAA,IACb,SAAS,EAAG,CAAA,aAAA;AAAA,IACZ,SAAS,EAAG,CAAA,IAAA;AAAA;AAAA,IAGZ,SAAS,EAAG,CAAA,YAAA;AAAA,IACZ,SAAS,EAAG,CAAA,GAAA;AAAA,IACZ,UAAU,EAAG,CAAA,KAAA;AAAA,IACb,UAAU,EAAG,CAAA,cAAA;AAAA,IACb,UAAU,EAAG,CAAA,KAAA;AAAA,IACb,WAAW,EAAG,CAAA,UAAA;AAAA,IACd,YAAY,EAAG,CAAA,aAAA;AAAA,IACf,mBAAmB,EAAG,CAAA,aAAA;AAAA;AAAA,IAGtB,YAAY,EAAG,CAAA,IAAA;AAAA,IACf,WAAW,EAAG,CAAA,aAAA;AAAA,IACd,WAAW,EAAG,CAAA,IAAA;AAAA,IACd,YAAY,EAAG,CAAA,aAAA;AAAA,IACf,mBAAmB,EAAG,CAAA,aAAA;AAAA,IACtB,cAAc,EAAG,CAAA,wBAAA;AAAA,IACjB,cAAc,EAAG,CAAA,2BAAA;AAAA,IACjB,eAAe,EAAG,CAAA,4BAAA;AAAA;AAAA,IAGlB,UAAU,EAAG,CAAA,YAAA;AAAA,IACb,UAAU,EAAG,CAAA,GAAA;AAAA,IACb,WAAW,EAAG,CAAA,KAAA;AAAA,IACd,YAAY,EAAG,CAAA,cAAA;AAAA,IACf,YAAY,EAAG,CAAA,KAAA;AAAA,IACf,aAAa,EAAG,CAAA,UAAA;AAAA;AAAA,IAGhB,YAAY,EAAG,CAAA,YAAA;AAAA,IACf,YAAY,EAAG,CAAA,GAAA;AAAA,IACf,aAAa,EAAG,CAAA,KAAA;AAAA;AAAA,IAGhB,UAAU,EAAG,CAAA,aAAA;AAAA,IACb,cAAc,EAAG,CAAA,cAAA;AAAA,IACjB,aAAa,EAAG,CAAA,YAAA;AAAA,IAChB,wBAAwB,EAAG,CAAA,iBAAA;AAAA,IAC3B,cAAc,EAAG,CAAA,KAAA;AAAA,IACjB,yBAAyB,EAAG,CAAA,8BAAA;AAAA,GAEhC,CAAA;AACJ;;;;"}

View File

@@ -0,0 +1,29 @@
export declare const scaleModeToGlFilter: {
linear: number;
nearest: number;
};
export declare const mipmapScaleModeToGlFilter: {
linear: {
linear: number;
nearest: number;
};
nearest: {
linear: number;
nearest: number;
};
};
export declare const wrapModeToGlAddress: {
'clamp-to-edge': number;
repeat: number;
'mirror-repeat': number;
};
export declare const compareModeToGlCompare: {
never: number;
less: number;
equal: number;
'less-equal': number;
greater: number;
'not-equal': number;
'greater-equal': number;
always: number;
};

View File

@@ -0,0 +1,38 @@
'use strict';
"use strict";
const scaleModeToGlFilter = {
linear: 9729,
nearest: 9728
};
const mipmapScaleModeToGlFilter = {
linear: {
linear: 9987,
nearest: 9985
},
nearest: {
linear: 9986,
nearest: 9984
}
};
const wrapModeToGlAddress = {
"clamp-to-edge": 33071,
repeat: 10497,
"mirror-repeat": 33648
};
const compareModeToGlCompare = {
never: 512,
less: 513,
equal: 514,
"less-equal": 515,
greater: 516,
"not-equal": 517,
"greater-equal": 518,
always: 519
};
exports.compareModeToGlCompare = compareModeToGlCompare;
exports.mipmapScaleModeToGlFilter = mipmapScaleModeToGlFilter;
exports.scaleModeToGlFilter = scaleModeToGlFilter;
exports.wrapModeToGlAddress = wrapModeToGlAddress;
//# sourceMappingURL=pixiToGlMaps.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"pixiToGlMaps.js","sources":["../../../../../../src/rendering/renderers/gl/texture/utils/pixiToGlMaps.ts"],"sourcesContent":["export const scaleModeToGlFilter = {\n linear: 9729,\n nearest: 9728,\n};\n\nexport const mipmapScaleModeToGlFilter = {\n linear: {\n linear: 9987,\n nearest: 9985,\n },\n nearest: {\n linear: 9986,\n nearest: 9984,\n }\n};\n\nexport const wrapModeToGlAddress = {\n 'clamp-to-edge': 33071,\n repeat: 10497,\n 'mirror-repeat': 33648,\n};\n\nexport const compareModeToGlCompare = {\n never: 512,\n less: 513,\n equal: 514,\n 'less-equal': 515,\n greater: 516,\n 'not-equal': 517,\n 'greater-equal': 518,\n always: 519,\n};\n\n"],"names":[],"mappings":";;;AAAO,MAAM,mBAAsB,GAAA;AAAA,EAC/B,MAAQ,EAAA,IAAA;AAAA,EACR,OAAS,EAAA,IAAA;AACb,EAAA;AAEO,MAAM,yBAA4B,GAAA;AAAA,EACrC,MAAQ,EAAA;AAAA,IACJ,MAAQ,EAAA,IAAA;AAAA,IACR,OAAS,EAAA,IAAA;AAAA,GACb;AAAA,EACA,OAAS,EAAA;AAAA,IACL,MAAQ,EAAA,IAAA;AAAA,IACR,OAAS,EAAA,IAAA;AAAA,GACb;AACJ,EAAA;AAEO,MAAM,mBAAsB,GAAA;AAAA,EAC/B,eAAiB,EAAA,KAAA;AAAA,EACjB,MAAQ,EAAA,KAAA;AAAA,EACR,eAAiB,EAAA,KAAA;AACrB,EAAA;AAEO,MAAM,sBAAyB,GAAA;AAAA,EAClC,KAAO,EAAA,GAAA;AAAA,EACP,IAAM,EAAA,GAAA;AAAA,EACN,KAAO,EAAA,GAAA;AAAA,EACP,YAAc,EAAA,GAAA;AAAA,EACd,OAAS,EAAA,GAAA;AAAA,EACT,WAAa,EAAA,GAAA;AAAA,EACb,eAAiB,EAAA,GAAA;AAAA,EACjB,MAAQ,EAAA,GAAA;AACZ;;;;;;;"}

View File

@@ -0,0 +1,33 @@
"use strict";
const scaleModeToGlFilter = {
linear: 9729,
nearest: 9728
};
const mipmapScaleModeToGlFilter = {
linear: {
linear: 9987,
nearest: 9985
},
nearest: {
linear: 9986,
nearest: 9984
}
};
const wrapModeToGlAddress = {
"clamp-to-edge": 33071,
repeat: 10497,
"mirror-repeat": 33648
};
const compareModeToGlCompare = {
never: 512,
less: 513,
equal: 514,
"less-equal": 515,
greater: 516,
"not-equal": 517,
"greater-equal": 518,
always: 519
};
export { compareModeToGlCompare, mipmapScaleModeToGlFilter, scaleModeToGlFilter, wrapModeToGlAddress };
//# sourceMappingURL=pixiToGlMaps.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"pixiToGlMaps.mjs","sources":["../../../../../../src/rendering/renderers/gl/texture/utils/pixiToGlMaps.ts"],"sourcesContent":["export const scaleModeToGlFilter = {\n linear: 9729,\n nearest: 9728,\n};\n\nexport const mipmapScaleModeToGlFilter = {\n linear: {\n linear: 9987,\n nearest: 9985,\n },\n nearest: {\n linear: 9986,\n nearest: 9984,\n }\n};\n\nexport const wrapModeToGlAddress = {\n 'clamp-to-edge': 33071,\n repeat: 10497,\n 'mirror-repeat': 33648,\n};\n\nexport const compareModeToGlCompare = {\n never: 512,\n less: 513,\n equal: 514,\n 'less-equal': 515,\n greater: 516,\n 'not-equal': 517,\n 'greater-equal': 518,\n always: 519,\n};\n\n"],"names":[],"mappings":";AAAO,MAAM,mBAAsB,GAAA;AAAA,EAC/B,MAAQ,EAAA,IAAA;AAAA,EACR,OAAS,EAAA,IAAA;AACb,EAAA;AAEO,MAAM,yBAA4B,GAAA;AAAA,EACrC,MAAQ,EAAA;AAAA,IACJ,MAAQ,EAAA,IAAA;AAAA,IACR,OAAS,EAAA,IAAA;AAAA,GACb;AAAA,EACA,OAAS,EAAA;AAAA,IACL,MAAQ,EAAA,IAAA;AAAA,IACR,OAAS,EAAA,IAAA;AAAA,GACb;AACJ,EAAA;AAEO,MAAM,mBAAsB,GAAA;AAAA,EAC/B,eAAiB,EAAA,KAAA;AAAA,EACjB,MAAQ,EAAA,KAAA;AAAA,EACR,eAAiB,EAAA,KAAA;AACrB,EAAA;AAEO,MAAM,sBAAyB,GAAA;AAAA,EAClC,KAAO,EAAA,GAAA;AAAA,EACP,IAAM,EAAA,GAAA;AAAA,EACN,KAAO,EAAA,GAAA;AAAA,EACP,YAAc,EAAA,GAAA;AAAA,EACd,OAAS,EAAA,GAAA;AAAA,EACT,WAAa,EAAA,GAAA;AAAA,EACb,eAAiB,EAAA,GAAA;AAAA,EACjB,MAAQ,EAAA,GAAA;AACZ;;;;"}

View File

@@ -0,0 +1 @@
export declare function unpremultiplyAlpha(pixels: Uint8Array | Uint8ClampedArray): void;

View File

@@ -0,0 +1,21 @@
'use strict';
"use strict";
function unpremultiplyAlpha(pixels) {
if (pixels instanceof Uint8ClampedArray) {
pixels = new Uint8Array(pixels.buffer);
}
const n = pixels.length;
for (let i = 0; i < n; i += 4) {
const alpha = pixels[i + 3];
if (alpha !== 0) {
const a = 255.001 / alpha;
pixels[i] = pixels[i] * a + 0.5;
pixels[i + 1] = pixels[i + 1] * a + 0.5;
pixels[i + 2] = pixels[i + 2] * a + 0.5;
}
}
}
exports.unpremultiplyAlpha = unpremultiplyAlpha;
//# sourceMappingURL=unpremultiplyAlpha.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"unpremultiplyAlpha.js","sources":["../../../../../../src/rendering/renderers/gl/texture/utils/unpremultiplyAlpha.ts"],"sourcesContent":["export function unpremultiplyAlpha(pixels: Uint8Array | Uint8ClampedArray): void\n{\n if (pixels instanceof Uint8ClampedArray)\n {\n pixels = new Uint8Array(pixels.buffer);\n }\n\n const n = pixels.length;\n\n for (let i = 0; i < n; i += 4)\n {\n const alpha = pixels[i + 3];\n\n if (alpha !== 0)\n {\n const a = 255.001 / alpha;\n\n pixels[i] = (pixels[i] * a) + 0.5;\n pixels[i + 1] = (pixels[i + 1] * a) + 0.5;\n pixels[i + 2] = (pixels[i + 2] * a) + 0.5;\n }\n }\n}\n"],"names":[],"mappings":";;;AAAO,SAAS,mBAAmB,MACnC,EAAA;AACI,EAAA,IAAI,kBAAkB,iBACtB,EAAA;AACI,IAAS,MAAA,GAAA,IAAI,UAAW,CAAA,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,GACzC;AAEA,EAAA,MAAM,IAAI,MAAO,CAAA,MAAA,CAAA;AAEjB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,CAAA,EAAG,KAAK,CAC5B,EAAA;AACI,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AAE1B,IAAA,IAAI,UAAU,CACd,EAAA;AACI,MAAA,MAAM,IAAI,OAAU,GAAA,KAAA,CAAA;AAEpB,MAAA,MAAA,CAAO,CAAC,CAAA,GAAK,MAAO,CAAA,CAAC,IAAI,CAAK,GAAA,GAAA,CAAA;AAC9B,MAAA,MAAA,CAAO,IAAI,CAAC,CAAA,GAAK,OAAO,CAAI,GAAA,CAAC,IAAI,CAAK,GAAA,GAAA,CAAA;AACtC,MAAA,MAAA,CAAO,IAAI,CAAC,CAAA,GAAK,OAAO,CAAI,GAAA,CAAC,IAAI,CAAK,GAAA,GAAA,CAAA;AAAA,KAC1C;AAAA,GACJ;AACJ;;;;"}

View File

@@ -0,0 +1,19 @@
"use strict";
function unpremultiplyAlpha(pixels) {
if (pixels instanceof Uint8ClampedArray) {
pixels = new Uint8Array(pixels.buffer);
}
const n = pixels.length;
for (let i = 0; i < n; i += 4) {
const alpha = pixels[i + 3];
if (alpha !== 0) {
const a = 255.001 / alpha;
pixels[i] = pixels[i] * a + 0.5;
pixels[i + 1] = pixels[i + 1] * a + 0.5;
pixels[i + 2] = pixels[i + 2] * a + 0.5;
}
}
}
export { unpremultiplyAlpha };
//# sourceMappingURL=unpremultiplyAlpha.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"unpremultiplyAlpha.mjs","sources":["../../../../../../src/rendering/renderers/gl/texture/utils/unpremultiplyAlpha.ts"],"sourcesContent":["export function unpremultiplyAlpha(pixels: Uint8Array | Uint8ClampedArray): void\n{\n if (pixels instanceof Uint8ClampedArray)\n {\n pixels = new Uint8Array(pixels.buffer);\n }\n\n const n = pixels.length;\n\n for (let i = 0; i < n; i += 4)\n {\n const alpha = pixels[i + 3];\n\n if (alpha !== 0)\n {\n const a = 255.001 / alpha;\n\n pixels[i] = (pixels[i] * a) + 0.5;\n pixels[i + 1] = (pixels[i + 1] * a) + 0.5;\n pixels[i + 2] = (pixels[i + 2] * a) + 0.5;\n }\n }\n}\n"],"names":[],"mappings":";AAAO,SAAS,mBAAmB,MACnC,EAAA;AACI,EAAA,IAAI,kBAAkB,iBACtB,EAAA;AACI,IAAS,MAAA,GAAA,IAAI,UAAW,CAAA,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,GACzC;AAEA,EAAA,MAAM,IAAI,MAAO,CAAA,MAAA,CAAA;AAEjB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,CAAA,EAAG,KAAK,CAC5B,EAAA;AACI,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AAE1B,IAAA,IAAI,UAAU,CACd,EAAA;AACI,MAAA,MAAM,IAAI,OAAU,GAAA,KAAA,CAAA;AAEpB,MAAA,MAAA,CAAO,CAAC,CAAA,GAAK,MAAO,CAAA,CAAC,IAAI,CAAK,GAAA,GAAA,CAAA;AAC9B,MAAA,MAAA,CAAO,IAAI,CAAC,CAAA,GAAK,OAAO,CAAI,GAAA,CAAC,IAAI,CAAK,GAAA,GAAA,CAAA;AACtC,MAAA,MAAA,CAAO,IAAI,CAAC,CAAA,GAAK,OAAO,CAAI,GAAA,CAAC,IAAI,CAAK,GAAA,GAAA,CAAA;AAAA,KAC1C;AAAA,GACJ;AACJ;;;;"}