@luma.gl/webgl 9.0.0-alpha.21 → 9.0.0-alpha.24
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/dist/adapter/converters/device-parameters.d.ts +1 -1
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +9 -9
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts +1 -1
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +1 -1
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/texture-formats.d.ts +29 -40
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +152 -114
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts +1 -1
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/helpers/attribute-utils.d.ts +1 -1
- package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -1
- package/dist/adapter/helpers/attribute-utils.js +1 -1
- package/dist/adapter/helpers/attribute-utils.js.map +1 -1
- package/dist/adapter/helpers/get-shader-info.d.ts +1 -1
- package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-info.js.map +1 -1
- package/dist/adapter/helpers/uniforms.d.ts +7 -8
- package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
- package/dist/adapter/helpers/uniforms.js +4 -4
- package/dist/adapter/helpers/uniforms.js.map +1 -1
- package/dist/adapter/objects/constants-to-keys.d.ts +0 -2
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +0 -20
- package/dist/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +12 -9
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +29 -19
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +0 -1
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +4 -7
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +3 -2
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.d.ts +13 -7
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +168 -25
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts +3 -2
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +6 -2
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +11 -14
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +29 -79
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts +16 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +80 -0
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +5 -5
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +1 -1
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +43 -23
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +32 -30
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/webgl-canvas-context.d.ts +1 -2
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +13 -6
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +20 -2
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/buffer.d.ts +1 -2
- package/dist/classic/buffer.d.ts.map +1 -1
- package/dist/classic/buffer.js +0 -6
- package/dist/classic/buffer.js.map +1 -1
- package/dist/classic/clear.d.ts +22 -0
- package/dist/classic/clear.d.ts.map +1 -0
- package/dist/classic/clear.js +88 -0
- package/dist/classic/clear.js.map +1 -0
- package/dist/classic/copy-and-blit.d.ts +45 -0
- package/dist/classic/copy-and-blit.d.ts.map +1 -0
- package/dist/classic/copy-and-blit.js +136 -0
- package/dist/classic/copy-and-blit.js.map +1 -0
- package/dist/classic/format-utils.d.ts +3 -0
- package/dist/classic/format-utils.d.ts.map +1 -0
- package/dist/classic/format-utils.js +38 -0
- package/dist/classic/format-utils.js.map +1 -0
- package/dist/classic/typed-array-utils.d.ts +15 -17
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +1 -1
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/context/create-browser-context.d.ts +17 -19
- package/dist/context/context/create-browser-context.d.ts.map +1 -1
- package/dist/context/context/create-browser-context.js +4 -4
- package/dist/context/context/create-browser-context.js.map +1 -1
- package/dist/context/context/create-headless-context.d.ts +1 -1
- package/dist/context/context/create-headless-context.d.ts.map +1 -1
- package/dist/context/debug/spector.d.ts +1 -3
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +2 -3
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/dist.dev.js +1306 -659
- package/dist/index.cjs +1269 -897
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist.min.js +22 -21
- package/package.json +7 -4
- package/src/adapter/converters/device-parameters.ts +46 -22
- package/src/adapter/converters/sampler-parameters.ts +1 -2
- package/src/adapter/converters/texture-formats.ts +242 -161
- package/src/adapter/helpers/attribute-utils.ts +1 -2
- package/src/adapter/helpers/get-shader-info.ts +3 -0
- package/src/adapter/helpers/uniforms.ts +9 -10
- package/src/adapter/objects/constants-to-keys.ts +0 -25
- package/src/adapter/objects/webgl-renderbuffer.ts +32 -29
- package/src/adapter/objects/webgl-resource.ts +4 -8
- package/src/adapter/resources/webgl-buffer.ts +4 -5
- package/src/adapter/resources/webgl-command-buffer.ts +328 -21
- package/src/adapter/resources/webgl-command-encoder.ts +7 -2
- package/src/adapter/resources/webgl-framebuffer.ts +63 -111
- package/src/adapter/resources/webgl-render-pass.ts +146 -2
- package/src/adapter/resources/webgl-render-pipeline.ts +7 -4
- package/src/adapter/resources/webgl-sampler.ts +1 -2
- package/src/adapter/resources/webgl-texture.ts +61 -43
- package/src/adapter/webgl-canvas-context.ts +2 -2
- package/src/adapter/webgl-device.ts +37 -8
- package/src/classic/buffer.ts +3 -3
- package/src/classic/clear.ts +110 -0
- package/src/classic/copy-and-blit.ts +189 -0
- package/src/classic/format-utils.ts +43 -0
- package/src/classic/typed-array-utils.ts +15 -26
- package/src/context/context/create-browser-context.ts +37 -30
- package/src/context/parameters/unified-parameter-api.ts +1 -1
- package/src/context/parameters/webgl-parameter-tables.ts +2 -2
- package/src/index.ts +10 -3
- package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
- package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
- package/dist/adapter/converters/renderbuffer-formats.js +0 -180
- package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
- package/dist/types/webgl.d.ts +0 -145
- package/dist/types/webgl.d.ts.map +0 -1
- package/dist/types/webgl.js +0 -2
- package/dist/types/webgl.js.map +0 -1
- package/src/.DS_Store +0 -0
- package/src/adapter/.DS_Store +0 -0
- package/src/adapter/converters/renderbuffer-formats.ts +0 -90
- package/src/context/.DS_Store +0 -0
- package/src/types/webgl.ts +0 -286
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Device, Parameters, CompareFunction } from '@luma.gl/api';
|
|
2
2
|
import GL from '@luma.gl/constants';
|
|
3
|
-
import type { GLParameters } from '
|
|
3
|
+
import type { GLParameters } from '@luma.gl/constants';
|
|
4
4
|
/**
|
|
5
5
|
* Execute a function with a set of temporary WebGL parameter overrides
|
|
6
6
|
* - Saves current "global" WebGL context settings
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/device-parameters.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"device-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/device-parameters.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,UAAU,EACV,eAAe,EAIhB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAOrD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAC1C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EACxB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAgBH;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,OAAO,EAC9C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAgBH;AAED,kCAAkC;AAClC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,QA+GzE;AAyBD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,EAAE,CAWpF;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,eAAe,CAWtF"}
|
|
@@ -88,14 +88,14 @@ export function setDeviceParameters(device, parameters) {
|
|
|
88
88
|
}
|
|
89
89
|
export function convertCompareFunction(parameter, value) {
|
|
90
90
|
return map(parameter, value, {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
never: GL.NEVER,
|
|
92
|
+
less: GL.LESS,
|
|
93
|
+
equal: GL.EQUAL,
|
|
94
94
|
'less-equal': GL.LEQUAL,
|
|
95
|
-
|
|
95
|
+
greater: GL.GREATER,
|
|
96
96
|
'not-equal': GL.NOTEQUAL,
|
|
97
97
|
'greater-equal': GL.GEQUAL,
|
|
98
|
-
|
|
98
|
+
always: GL.ALWAYS
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
101
|
export function convertToCompareFunction(parameter, value) {
|
|
@@ -112,10 +112,10 @@ export function convertToCompareFunction(parameter, value) {
|
|
|
112
112
|
}
|
|
113
113
|
function convertStencilOperation(parameter, value) {
|
|
114
114
|
return map(parameter, value, {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
115
|
+
keep: GL.KEEP,
|
|
116
|
+
zero: GL.ZERO,
|
|
117
|
+
replace: GL.REPLACE,
|
|
118
|
+
invert: GL.INVERT,
|
|
119
119
|
'increment-clamp': GL.INCR,
|
|
120
120
|
'decrement-clamp': GL.DECR,
|
|
121
121
|
'increment-wrap': GL.INCR_WRAP,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-parameters.js","names":["log","isObjectEmpty","GL","pushContextState","popContextState","setParameters","WebGLDevice","withGLParameters","device","parameters","func","gl","withDeviceParameters","setDeviceParameters","webglDevice","attach","cullMode","disable","CULL_FACE","enable","cullFace","FRONT","BACK","frontFace","map","ccw","CCW","cw","CW","depthBias","undefined","polygonOffset","depthBiasSlopeScale","depthWriteEnabled","depthMask","mapBoolean","depthCompare","DEPTH_TEST","depthFunc","convertCompareFunction","stencilWriteMask","mask","stencilMaskSeparate","stencilReadMask","warn","stencilCompare","glValue","STENCIL_TEST","stencilFuncSeparate","stencilPassOperation","stencilFailOperation","stencilDepthFailOperation","dppass","convertStencilOperation","sfail","dpfail","stencilOpSeparate","parameter","value","NEVER","LESS","EQUAL","LEQUAL","GREATER","NOTEQUAL","GEQUAL","ALWAYS","convertToCompareFunction","KEEP","ZERO","REPLACE","INVERT","INCR","DECR","INCR_WRAP","DECR_WRAP","message","concat","valueMap","Error"],"sources":["../../../src/adapter/converters/device-parameters.ts"],"sourcesContent":["import {Device, Parameters, CompareFunction, StencilOperation, log, isObjectEmpty} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport type { GLParameters } from '../../types/webgl';\nimport {pushContextState, popContextState} from '../../context/state-tracker/track-context-state';\nimport {setParameters} from '../../context/parameters/unified-parameter-api';\nimport {WebGLDevice} from '../webgl-device';\n\n/* eslint-disable no-unused-expressions */ // For expression ? gl.enable() : gl.disable()\n\n/**\n * Execute a function with a set of temporary WebGL parameter overrides\n * - Saves current \"global\" WebGL context settings\n * - Sets the supplies WebGL context parameters,\n * - Executes supplied function\n * - Restores parameters\n * - Returns the return value of the supplied function\n * @deprecated use withDeviceParameters instead\n */\nexport function withGLParameters<T = unknown>(device: Device, parameters: GLParameters, func: (device?: Device) => T): T {\n if (isObjectEmpty(parameters)) {\n // Avoid setting state if no parameters provided. Just call and return\n return func(device);\n }\n\n // Wrap in a try-catch to ensure that parameters are restored on exceptions\n // @ts-expect-error\n pushContextState(device.gl);\n try {\n setParameters(device, parameters);\n return func(device);\n } finally {\n // @ts-expect-error\n popContextState(device.gl);\n }\n}\n\n/**\n * Execute a function with a set of temporary WebGL parameter overrides\n * - Saves current \"global\" WebGL context settings\n * - Sets the supplies WebGL context parameters,\n * - Executes supplied function\n * - Restores parameters\n * - Returns the return value of the supplied function\n */\nexport function withDeviceParameters<T = unknown>(device: Device, parameters: Parameters, func: (device?: Device) => T): T {\n if (isObjectEmpty(parameters)) {\n // Avoid setting state if no parameters provided. Just call and return\n return func(device);\n }\n\n // Wrap in a try-catch to ensure that parameters are restored on exceptions\n // @ts-expect-error\n pushContextState(device.gl);\n try {\n setDeviceParameters(device, parameters);\n return func(device);\n } finally {\n // @ts-expect-error\n popContextState(device.gl);\n }\n}\n\n\n/** Set WebGPU Style Parameters */\nexport function setDeviceParameters(device: Device, parameters: Parameters) {\n const webglDevice = WebGLDevice.attach(device);\n const {gl} = webglDevice;\n\n // RASTERIZATION SETTINGS\n if (parameters.cullMode) {\n switch (parameters.cullMode) {\n case 'none':\n gl.disable(GL.CULL_FACE);\n break;\n case 'front':\n gl.enable(GL.CULL_FACE);\n gl.cullFace(GL.FRONT);\n break;\n case 'back':\n gl.enable(GL.CULL_FACE);\n gl.cullFace(GL.BACK);\n break;\n }\n }\n\n if (parameters.frontFace) {\n gl.frontFace(map('frontFace', parameters.frontFace, {\n ccw: GL.CCW,\n cw: GL.CW\n }));\n }\n\n if (parameters.depthBias !== undefined) {\n gl.polygonOffset(parameters.depthBias, parameters.depthBiasSlopeScale || 0);\n }\n\n // depthBiasSlopeScale: {\n // // Handled by depthBias\n // },\n\n // DEPTH STENCIL\n\n if (parameters.depthWriteEnabled !== undefined) {\n gl.depthMask(mapBoolean('depthWriteEnabled', parameters.depthWriteEnabled));\n }\n\n if (parameters.depthCompare) {\n\n parameters.depthCompare !== 'always' ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST);\n gl.depthFunc(convertCompareFunction('depthCompare', parameters.depthCompare));\n }\n\n if (parameters.stencilWriteMask) {\n const mask = parameters.stencilWriteMask;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, mask);\n }\n\n if (parameters.stencilReadMask) {\n // stencilReadMask is handle inside stencil***Compare.\n log.warn('stencilReadMask not supported under WebGL');\n }\n\n if (parameters.stencilCompare) {\n const mask = parameters.stencilReadMask || 0xffffffff;\n const glValue = convertCompareFunction('depthCompare', parameters.stencilCompare);\n // TODO - ensure back doesn't overwrite\n parameters.stencilCompare !== 'always' ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST);\n gl.stencilFuncSeparate(GL.FRONT, glValue, 0, mask);\n gl.stencilFuncSeparate(GL.BACK, glValue, 0, mask);\n }\n\n if (parameters.stencilPassOperation && parameters.stencilFailOperation && parameters.stencilDepthFailOperation) {\n const dppass = convertStencilOperation('stencilPassOperation', parameters.stencilPassOperation);\n const sfail = convertStencilOperation('stencilFailOperation', parameters.stencilFailOperation);\n const dpfail = convertStencilOperation('stencilDepthFailOperation', parameters.stencilDepthFailOperation);\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, sfail, dpfail, dppass);\n }\n\n // stencilDepthFailOperation() {\n // // handled by stencilPassOperation\n // },\n\n // stencilFailOperation() {\n // // handled by stencilPassOperation\n // },\n\n // COLOR STATE\n\n // if (parameters.blend) {\n // gl.enable(GL.BLEND);\n\n // const blend = parameters.blend;\n\n // let colorEquation = (blend && blend.color && blend.color.operation) || 'add';\n // let alphaEquation = (blend && blend.alpha && blend.alpha.operation) || 'add';\n // gl.blendEquationSeparate(colorEquation, alphaEquation);\n\n // let colorSrcFactor = (blend && blend.color && blend.color.srcFactor) || 'one';\n // let colorDstFactor = (blend && blend.color && blend.color.dstFactor) || 'zero';\n // let alphaSrcFactor = (blend && blend.alpha && blend.alpha.srcFactor) || 'one';\n // let alphaDstFactor = (blend && blend.alpha && blend.alpha.dstFactor) || 'zero';\n // gl.blendFuncSeparate(colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor);\n // }\n}\n\n/*\n rasterizationState: {\n cullMode: \"back\",\n },\n\n depthStencilState: {\n depthWriteEnabled: true,\n depthCompare: \"less\",\n format: \"depth24plus-stencil8\",\n },\n\n colorStates: [\n {\n format: \"bgra8unorm\",\n // colorBlend.srcFactor = wgpu::BlendFactor::SrcAlpha;\n // colorBlend.dstFactor = wgpu::BlendFactor::OneMinusSrcAlpha;\n // alphaBlend.srcFactor = wgpu::BlendFactor::SrcAlpha;\n // alphaBlend.dstFactor = wgpu::BlendFactor::OneMinusSrcAlpha;\n },\n ],\n });\n*/\n\nexport function convertCompareFunction(parameter: string, value: CompareFunction): GL {\n return map(parameter, value, {\n 'never': GL.NEVER,\n 'less': GL.LESS,\n 'equal': GL.EQUAL,\n 'less-equal': GL.LEQUAL,\n 'greater': GL.GREATER,\n 'not-equal': GL.NOTEQUAL,\n 'greater-equal': GL.GEQUAL,\n 'always': GL.ALWAYS\n });\n}\n\nexport function convertToCompareFunction(parameter: string, value: GL): CompareFunction {\n return map(parameter, value, {\n [GL.NEVER]: 'never',\n [GL.LESS]: 'less',\n [GL.EQUAL]: 'equal',\n [GL.LEQUAL]: 'less-equal',\n [GL.GREATER]: 'greater',\n [GL.NOTEQUAL]: 'not-equal',\n [GL.GEQUAL]: 'greater-equal',\n [GL.ALWAYS]: 'always'\n });\n}\n\nfunction convertStencilOperation(parameter: string, value: StencilOperation): GL {\n return map(parameter, value, {\n 'keep': GL.KEEP,\n 'zero': GL.ZERO,\n 'replace': GL.REPLACE,\n 'invert': GL.INVERT,\n 'increment-clamp': GL.INCR,\n 'decrement-clamp': GL.DECR,\n 'increment-wrap': GL.INCR_WRAP,\n 'decrement-wrap': GL.DECR_WRAP\n });\n}\n\n// function convertBlendOperationToEquation(parameter: string, value: string): number {\n// return map(parameter, value, {\n// 'add': GL.FUNC_ADD,\n// 'sub': GL.FUNC_SUBTRACT,\n// 'reverse-subtract': GL.FUNC_REVERSE_SUBTRACT,\n// // When using a WebGL 2 context, the following values are available additionally:\n// 'min': GL.MIN,\n// 'max': GL.MAX\n// });\n// }\n\nfunction message(parameter: string, value: any): string {\n return `Illegal parameter ${value} for ${parameter}`;\n}\n\nfunction map(parameter: string, value: any, valueMap: Record<string, any>): any {\n if (!(value in valueMap)) {\n throw new Error(message(parameter, value));\n }\n return valueMap[value];\n}\n\nfunction mapBoolean(parameter: string, value: boolean): boolean {\n return value;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"device-parameters.js","names":["log","isObjectEmpty","GL","pushContextState","popContextState","setParameters","WebGLDevice","withGLParameters","device","parameters","func","gl","withDeviceParameters","setDeviceParameters","webglDevice","attach","cullMode","disable","CULL_FACE","enable","cullFace","FRONT","BACK","frontFace","map","ccw","CCW","cw","CW","depthBias","undefined","polygonOffset","depthBiasSlopeScale","depthWriteEnabled","depthMask","mapBoolean","depthCompare","DEPTH_TEST","depthFunc","convertCompareFunction","stencilWriteMask","mask","stencilMaskSeparate","stencilReadMask","warn","stencilCompare","glValue","STENCIL_TEST","stencilFuncSeparate","stencilPassOperation","stencilFailOperation","stencilDepthFailOperation","dppass","convertStencilOperation","sfail","dpfail","stencilOpSeparate","parameter","value","never","NEVER","less","LESS","equal","EQUAL","LEQUAL","greater","GREATER","NOTEQUAL","GEQUAL","always","ALWAYS","convertToCompareFunction","keep","KEEP","zero","ZERO","replace","REPLACE","invert","INVERT","INCR","DECR","INCR_WRAP","DECR_WRAP","message","concat","valueMap","Error"],"sources":["../../../src/adapter/converters/device-parameters.ts"],"sourcesContent":["import {\n Device,\n Parameters,\n CompareFunction,\n StencilOperation,\n log,\n isObjectEmpty\n} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport type {GLParameters} from '@luma.gl/constants';\nimport {pushContextState, popContextState} from '../../context/state-tracker/track-context-state';\nimport {setParameters} from '../../context/parameters/unified-parameter-api';\nimport {WebGLDevice} from '../webgl-device';\n\n/* eslint-disable no-unused-expressions */ // For expression ? gl.enable() : gl.disable()\n\n/**\n * Execute a function with a set of temporary WebGL parameter overrides\n * - Saves current \"global\" WebGL context settings\n * - Sets the supplies WebGL context parameters,\n * - Executes supplied function\n * - Restores parameters\n * - Returns the return value of the supplied function\n * @deprecated use withDeviceParameters instead\n */\nexport function withGLParameters<T = unknown>(\n device: Device,\n parameters: GLParameters,\n func: (device?: Device) => T\n): T {\n if (isObjectEmpty(parameters)) {\n // Avoid setting state if no parameters provided. Just call and return\n return func(device);\n }\n\n // Wrap in a try-catch to ensure that parameters are restored on exceptions\n // @ts-expect-error\n pushContextState(device.gl);\n try {\n setParameters(device, parameters);\n return func(device);\n } finally {\n // @ts-expect-error\n popContextState(device.gl);\n }\n}\n\n/**\n * Execute a function with a set of temporary WebGL parameter overrides\n * - Saves current \"global\" WebGL context settings\n * - Sets the supplies WebGL context parameters,\n * - Executes supplied function\n * - Restores parameters\n * - Returns the return value of the supplied function\n */\nexport function withDeviceParameters<T = unknown>(\n device: Device,\n parameters: Parameters,\n func: (device?: Device) => T\n): T {\n if (isObjectEmpty(parameters)) {\n // Avoid setting state if no parameters provided. Just call and return\n return func(device);\n }\n\n // Wrap in a try-catch to ensure that parameters are restored on exceptions\n // @ts-expect-error\n pushContextState(device.gl);\n try {\n setDeviceParameters(device, parameters);\n return func(device);\n } finally {\n // @ts-expect-error\n popContextState(device.gl);\n }\n}\n\n/** Set WebGPU Style Parameters */\nexport function setDeviceParameters(device: Device, parameters: Parameters) {\n const webglDevice = WebGLDevice.attach(device);\n const {gl} = webglDevice;\n\n // RASTERIZATION SETTINGS\n if (parameters.cullMode) {\n switch (parameters.cullMode) {\n case 'none':\n gl.disable(GL.CULL_FACE);\n break;\n case 'front':\n gl.enable(GL.CULL_FACE);\n gl.cullFace(GL.FRONT);\n break;\n case 'back':\n gl.enable(GL.CULL_FACE);\n gl.cullFace(GL.BACK);\n break;\n }\n }\n\n if (parameters.frontFace) {\n gl.frontFace(\n map('frontFace', parameters.frontFace, {\n ccw: GL.CCW,\n cw: GL.CW\n })\n );\n }\n\n if (parameters.depthBias !== undefined) {\n gl.polygonOffset(parameters.depthBias, parameters.depthBiasSlopeScale || 0);\n }\n\n // depthBiasSlopeScale: {\n // // Handled by depthBias\n // },\n\n // DEPTH STENCIL\n\n if (parameters.depthWriteEnabled !== undefined) {\n gl.depthMask(mapBoolean('depthWriteEnabled', parameters.depthWriteEnabled));\n }\n\n if (parameters.depthCompare) {\n parameters.depthCompare !== 'always' ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST);\n gl.depthFunc(convertCompareFunction('depthCompare', parameters.depthCompare));\n }\n\n if (parameters.stencilWriteMask) {\n const mask = parameters.stencilWriteMask;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, mask);\n }\n\n if (parameters.stencilReadMask) {\n // stencilReadMask is handle inside stencil***Compare.\n log.warn('stencilReadMask not supported under WebGL');\n }\n\n if (parameters.stencilCompare) {\n const mask = parameters.stencilReadMask || 0xffffffff;\n const glValue = convertCompareFunction('depthCompare', parameters.stencilCompare);\n // TODO - ensure back doesn't overwrite\n parameters.stencilCompare !== 'always'\n ? gl.enable(GL.STENCIL_TEST)\n : gl.disable(GL.STENCIL_TEST);\n gl.stencilFuncSeparate(GL.FRONT, glValue, 0, mask);\n gl.stencilFuncSeparate(GL.BACK, glValue, 0, mask);\n }\n\n if (\n parameters.stencilPassOperation &&\n parameters.stencilFailOperation &&\n parameters.stencilDepthFailOperation\n ) {\n const dppass = convertStencilOperation('stencilPassOperation', parameters.stencilPassOperation);\n const sfail = convertStencilOperation('stencilFailOperation', parameters.stencilFailOperation);\n const dpfail = convertStencilOperation(\n 'stencilDepthFailOperation',\n parameters.stencilDepthFailOperation\n );\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, sfail, dpfail, dppass);\n }\n\n // stencilDepthFailOperation() {\n // // handled by stencilPassOperation\n // },\n\n // stencilFailOperation() {\n // // handled by stencilPassOperation\n // },\n\n // COLOR STATE\n\n // if (parameters.blend) {\n // gl.enable(GL.BLEND);\n\n // const blend = parameters.blend;\n\n // let colorEquation = (blend && blend.color && blend.color.operation) || 'add';\n // let alphaEquation = (blend && blend.alpha && blend.alpha.operation) || 'add';\n // gl.blendEquationSeparate(colorEquation, alphaEquation);\n\n // let colorSrcFactor = (blend && blend.color && blend.color.srcFactor) || 'one';\n // let colorDstFactor = (blend && blend.color && blend.color.dstFactor) || 'zero';\n // let alphaSrcFactor = (blend && blend.alpha && blend.alpha.srcFactor) || 'one';\n // let alphaDstFactor = (blend && blend.alpha && blend.alpha.dstFactor) || 'zero';\n // gl.blendFuncSeparate(colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor);\n // }\n}\n\n/*\n rasterizationState: {\n cullMode: \"back\",\n },\n\n depthStencilState: {\n depthWriteEnabled: true,\n depthCompare: \"less\",\n format: \"depth24plus-stencil8\",\n },\n\n colorStates: [\n {\n format: \"bgra8unorm\",\n // colorBlend.srcFactor = wgpu::BlendFactor::SrcAlpha;\n // colorBlend.dstFactor = wgpu::BlendFactor::OneMinusSrcAlpha;\n // alphaBlend.srcFactor = wgpu::BlendFactor::SrcAlpha;\n // alphaBlend.dstFactor = wgpu::BlendFactor::OneMinusSrcAlpha;\n },\n ],\n });\n*/\n\nexport function convertCompareFunction(parameter: string, value: CompareFunction): GL {\n return map(parameter, value, {\n never: GL.NEVER,\n less: GL.LESS,\n equal: GL.EQUAL,\n 'less-equal': GL.LEQUAL,\n greater: GL.GREATER,\n 'not-equal': GL.NOTEQUAL,\n 'greater-equal': GL.GEQUAL,\n always: GL.ALWAYS\n });\n}\n\nexport function convertToCompareFunction(parameter: string, value: GL): CompareFunction {\n return map(parameter, value, {\n [GL.NEVER]: 'never',\n [GL.LESS]: 'less',\n [GL.EQUAL]: 'equal',\n [GL.LEQUAL]: 'less-equal',\n [GL.GREATER]: 'greater',\n [GL.NOTEQUAL]: 'not-equal',\n [GL.GEQUAL]: 'greater-equal',\n [GL.ALWAYS]: 'always'\n });\n}\n\nfunction convertStencilOperation(parameter: string, value: StencilOperation): GL {\n return map(parameter, value, {\n keep: GL.KEEP,\n zero: GL.ZERO,\n replace: GL.REPLACE,\n invert: GL.INVERT,\n 'increment-clamp': GL.INCR,\n 'decrement-clamp': GL.DECR,\n 'increment-wrap': GL.INCR_WRAP,\n 'decrement-wrap': GL.DECR_WRAP\n });\n}\n\n// function convertBlendOperationToEquation(parameter: string, value: string): number {\n// return map(parameter, value, {\n// 'add': GL.FUNC_ADD,\n// 'sub': GL.FUNC_SUBTRACT,\n// 'reverse-subtract': GL.FUNC_REVERSE_SUBTRACT,\n// // When using a WebGL 2 context, the following values are available additionally:\n// 'min': GL.MIN,\n// 'max': GL.MAX\n// });\n// }\n\nfunction message(parameter: string, value: any): string {\n return `Illegal parameter ${value} for ${parameter}`;\n}\n\nfunction map(parameter: string, value: any, valueMap: Record<string, any>): any {\n if (!(value in valueMap)) {\n throw new Error(message(parameter, value));\n }\n return valueMap[value];\n}\n\nfunction mapBoolean(parameter: string, value: boolean): boolean {\n return value;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sampler-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/sampler-parameters.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sampler-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/sampler-parameters.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAK,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAK3D;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,iBAAiB,GAAG,mBAAmB,CAoC7F;AAkCD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,mBAAmB,GAAG,iBAAiB,CAqCzF;AA+CD;;EAEE;AACF,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,mBAAmB,GAAG,mBAAmB,CAUnG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sampler-parameters.js","names":["GL","convertCompareFunction","convertToCompareFunction","convertSamplerParametersToWebGL","props","params","addressModeU","TEXTURE_WRAP_S","convertAddressMode","addressModeV","TEXTURE_WRAP_T","addressModeW","TEXTURE_WRAP_R","magFilter","TEXTURE_MAG_FILTER","convertMaxFilterMode","minFilter","mipmapFilter","TEXTURE_MIN_FILTER","convertMinFilterMode","lodMinClamp","undefined","TEXTURE_MIN_LOD","lodMaxClamp","TEXTURE_MAX_LOD","type","TEXTURE_COMPARE_MODE","COMPARE_REF_TO_TEXTURE","compare","TEXTURE_COMPARE_FUNC","maxAnisotropy","TEXTURE_MAX_ANISOTROPY_EXT","addressMode","CLAMP_TO_EDGE","REPEAT","MIRRORED_REPEAT","maxFilter","NEAREST","LINEAR","NEAREST_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","LINEAR_MIPMAP_LINEAR","convertToSamplerParameters","convertToAddressMode","convertToMaxFilterMode","convertToMinFilterMode","convertToMipmapFilterMode","Error","filterMode","updateSamplerParametersForNPOT","parameters","newParameters"],"sources":["../../../src/adapter/converters/sampler-parameters.ts"],"sourcesContent":["// SAMPLER FILTERS\nimport {SamplerParameters} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {GLSamplerParameters} from '../../types/webgl';\nimport {convertCompareFunction, convertToCompareFunction} from './device-parameters';\n\n/* eslint-disable consistent-return */\n\n/**\n * Convert WebGPU-style sampler props to WebGL\n * @param props\n * @returns\n */\nexport function convertSamplerParametersToWebGL(props: SamplerParameters): GLSamplerParameters {\n const params: Record<number, number> = {};\n if (props.addressModeU) {\n params[GL.TEXTURE_WRAP_S] = convertAddressMode(props.addressModeU);\n }\n if (props.addressModeV) {\n params[GL.TEXTURE_WRAP_T] = convertAddressMode(props.addressModeV);\n }\n if (props.addressModeW) {\n params[GL.TEXTURE_WRAP_R] = convertAddressMode(props.addressModeW);\n }\n if (props.magFilter) {\n params[GL.TEXTURE_MAG_FILTER] = convertMaxFilterMode(props.magFilter);\n }\n if (props.minFilter || props.mipmapFilter) {\n // TODO - arbitrary choice of linear?\n params[GL.TEXTURE_MIN_FILTER] = convertMinFilterMode(props.minFilter || 'linear', props.mipmapFilter);\n }\n if (props.lodMinClamp !== undefined) {\n params[GL.TEXTURE_MIN_LOD] = props.lodMinClamp;\n }\n if (props.lodMaxClamp !== undefined) {\n params[GL.TEXTURE_MAX_LOD] = props.lodMaxClamp;\n }\n if (props.type === 'comparison-sampler') {\n // Setting prop.compare turns this into a comparison sampler\n params[GL.TEXTURE_COMPARE_MODE] = GL.COMPARE_REF_TO_TEXTURE;\n }\n if (props.compare) {\n params[GL.TEXTURE_COMPARE_FUNC] = convertCompareFunction('compare', props.compare);\n }\n // Note depends on WebGL extension\n if (props.maxAnisotropy) {\n params[GL.TEXTURE_MAX_ANISOTROPY_EXT] = props.maxAnisotropy;\n }\n return params;\n}\n\n/** Convert address more */\nfunction convertAddressMode(addressMode: 'clamp-to-edge' | 'repeat' | 'mirror-repeat'): GL {\n switch (addressMode) {\n case 'clamp-to-edge': return GL.CLAMP_TO_EDGE;\n case 'repeat': return GL.REPEAT;\n case 'mirror-repeat': return GL.MIRRORED_REPEAT;\n }\n}\n\nfunction convertMaxFilterMode(maxFilter: 'nearest' | 'linear'): GL {\n switch (maxFilter) {\n case 'nearest': return GL.NEAREST;\n case 'linear': return GL.LINEAR;\n }\n}\n\n/** \n * WebGPU has separate min filter and mipmap filter, \n * WebGL is combined and effectively offers 6 options\n */\nfunction convertMinFilterMode(minFilter: 'nearest' | 'linear', mipmapFilter?: 'nearest' | 'linear'): GL {\n if (!mipmapFilter) {\n return convertMaxFilterMode(minFilter);\n }\n switch (minFilter) {\n case 'nearest': return mipmapFilter === 'nearest' ? GL.NEAREST_MIPMAP_NEAREST : GL.NEAREST_MIPMAP_LINEAR;\n case 'linear': return mipmapFilter === 'nearest' ? GL.LINEAR_MIPMAP_NEAREST : GL.LINEAR_MIPMAP_LINEAR;\n }\n}\n\n// Convert from WebGL to WebGPU\n\n/**\n * Convert WebGL-style sampler props to WebGPU\n * @param props\n * @returns\n */\nexport function convertToSamplerParameters(params: GLSamplerParameters): SamplerParameters {\n const props: SamplerParameters = {};\n if (params[GL.TEXTURE_WRAP_S]) {\n props.addressModeU = convertToAddressMode(params[GL.TEXTURE_WRAP_S]);\n }\n if (params[GL.TEXTURE_WRAP_T]) {\n props.addressModeV = convertToAddressMode(params[GL.TEXTURE_WRAP_T]);\n }\n if (params[GL.TEXTURE_WRAP_R]) {\n props.addressModeW = convertToAddressMode(params[GL.TEXTURE_WRAP_R]);\n }\n if (params[GL.TEXTURE_MAG_FILTER]) {\n props.magFilter = convertToMaxFilterMode(params[GL.TEXTURE_MAG_FILTER]);\n }\n if (params[GL.TEXTURE_MIN_FILTER]) {\n props.minFilter = convertToMinFilterMode(params[GL.TEXTURE_MIN_FILTER]);\n }\n if (params[GL.TEXTURE_MIN_FILTER]) {\n props.mipmapFilter = convertToMipmapFilterMode(params[GL.TEXTURE_MIN_FILTER]);\n }\n if (params[GL.TEXTURE_MIN_LOD]) {\n props.lodMinClamp = params[GL.TEXTURE_MIN_LOD];\n }\n if (params[GL.TEXTURE_MAX_LOD]) {\n props.lodMaxClamp = params[GL.TEXTURE_MAX_LOD];\n }\n if (params[GL.TEXTURE_COMPARE_MODE]) {\n props.type = params[GL.TEXTURE_COMPARE_MODE] === GL.COMPARE_REF_TO_TEXTURE ? 'comparison-sampler' : 'color-sampler';\n }\n if (params[GL.TEXTURE_COMPARE_FUNC]) {\n props.compare = convertToCompareFunction('compare', params[GL.TEXTURE_COMPARE_FUNC]);\n }\n // NOTE depends on extension (very common)\n if (params[GL.TEXTURE_MAX_ANISOTROPY_EXT]) {\n props.maxAnisotropy = params[GL.TEXTURE_MAX_ANISOTROPY_EXT];\n }\n return props;\n}\n\n/** Convert address more */\nfunction convertToAddressMode(addressMode: number): 'clamp-to-edge' | 'repeat' | 'mirror-repeat' {\n switch (addressMode) {\n case GL.CLAMP_TO_EDGE: return 'clamp-to-edge';\n case GL.REPEAT: return 'repeat';\n case GL.MIRRORED_REPEAT: return 'mirror-repeat';\n default: throw new Error('address');\n }\n}\n\nfunction convertToMaxFilterMode(filterMode: number): 'nearest' | 'linear' {\n switch (filterMode) {\n case GL.NEAREST: return 'nearest';\n case GL.LINEAR: return 'linear';\n default: throw new Error('maxfilter');\n }\n}\n\n/** WebGPU has separate min filter and mipmap filter, WebGL is combined */\nfunction convertToMinFilterMode(filterMode: number): 'nearest' | 'linear' {\n switch (filterMode) {\n // TODO is this correct?\n case GL.NEAREST: return 'nearest';\n case GL.LINEAR: return 'linear';\n case GL.NEAREST_MIPMAP_NEAREST: return 'nearest';\n case GL.LINEAR_MIPMAP_NEAREST: return 'linear';\n case GL.NEAREST_MIPMAP_LINEAR: return 'nearest';\n case GL.LINEAR_MIPMAP_LINEAR: return 'linear';\n default: throw new Error('minfilter');\n }\n}\n\nfunction convertToMipmapFilterMode(filterMode: number): 'nearest' | 'linear' {\n switch (filterMode) {\n // TODO is this correct?\n case GL.NEAREST: return 'nearest';\n case GL.LINEAR: return 'linear';\n case GL.NEAREST_MIPMAP_NEAREST: return 'nearest';\n case GL.LINEAR_MIPMAP_NEAREST: return 'nearest';\n case GL.NEAREST_MIPMAP_LINEAR: return 'linear';\n case GL.LINEAR_MIPMAP_LINEAR: return 'linear';\n default: throw new Error('mipmap');\n }\n}\n\n/**\n * Override sampler settings that are not supported by Non-Power-of-Two textures in WebGL1.\n*/\nexport function updateSamplerParametersForNPOT(parameters: GLSamplerParameters): GLSamplerParameters {\n const newParameters = {...parameters};\n if (parameters[GL.TEXTURE_MIN_FILTER] !== GL.NEAREST) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n newParameters[GL.TEXTURE_MIN_FILTER] = GL.LINEAR;\n }\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_S to CLAMP_TO_EDGE`)();\n newParameters[GL.TEXTURE_WRAP_S] = GL.CLAMP_TO_EDGE;\n newParameters[GL.TEXTURE_WRAP_T] = GL.CLAMP_TO_EDGE;\n return newParameters;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sampler-parameters.js","names":["GL","convertCompareFunction","convertToCompareFunction","convertSamplerParametersToWebGL","props","params","addressModeU","TEXTURE_WRAP_S","convertAddressMode","addressModeV","TEXTURE_WRAP_T","addressModeW","TEXTURE_WRAP_R","magFilter","TEXTURE_MAG_FILTER","convertMaxFilterMode","minFilter","mipmapFilter","TEXTURE_MIN_FILTER","convertMinFilterMode","lodMinClamp","undefined","TEXTURE_MIN_LOD","lodMaxClamp","TEXTURE_MAX_LOD","type","TEXTURE_COMPARE_MODE","COMPARE_REF_TO_TEXTURE","compare","TEXTURE_COMPARE_FUNC","maxAnisotropy","TEXTURE_MAX_ANISOTROPY_EXT","addressMode","CLAMP_TO_EDGE","REPEAT","MIRRORED_REPEAT","maxFilter","NEAREST","LINEAR","NEAREST_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","LINEAR_MIPMAP_LINEAR","convertToSamplerParameters","convertToAddressMode","convertToMaxFilterMode","convertToMinFilterMode","convertToMipmapFilterMode","Error","filterMode","updateSamplerParametersForNPOT","parameters","newParameters"],"sources":["../../../src/adapter/converters/sampler-parameters.ts"],"sourcesContent":["// SAMPLER FILTERS\nimport {SamplerParameters} from '@luma.gl/api';\nimport {GL, GLSamplerParameters} from '@luma.gl/constants';\nimport {convertCompareFunction, convertToCompareFunction} from './device-parameters';\n\n/* eslint-disable consistent-return */\n\n/**\n * Convert WebGPU-style sampler props to WebGL\n * @param props\n * @returns\n */\nexport function convertSamplerParametersToWebGL(props: SamplerParameters): GLSamplerParameters {\n const params: Record<number, number> = {};\n if (props.addressModeU) {\n params[GL.TEXTURE_WRAP_S] = convertAddressMode(props.addressModeU);\n }\n if (props.addressModeV) {\n params[GL.TEXTURE_WRAP_T] = convertAddressMode(props.addressModeV);\n }\n if (props.addressModeW) {\n params[GL.TEXTURE_WRAP_R] = convertAddressMode(props.addressModeW);\n }\n if (props.magFilter) {\n params[GL.TEXTURE_MAG_FILTER] = convertMaxFilterMode(props.magFilter);\n }\n if (props.minFilter || props.mipmapFilter) {\n // TODO - arbitrary choice of linear?\n params[GL.TEXTURE_MIN_FILTER] = convertMinFilterMode(props.minFilter || 'linear', props.mipmapFilter);\n }\n if (props.lodMinClamp !== undefined) {\n params[GL.TEXTURE_MIN_LOD] = props.lodMinClamp;\n }\n if (props.lodMaxClamp !== undefined) {\n params[GL.TEXTURE_MAX_LOD] = props.lodMaxClamp;\n }\n if (props.type === 'comparison-sampler') {\n // Setting prop.compare turns this into a comparison sampler\n params[GL.TEXTURE_COMPARE_MODE] = GL.COMPARE_REF_TO_TEXTURE;\n }\n if (props.compare) {\n params[GL.TEXTURE_COMPARE_FUNC] = convertCompareFunction('compare', props.compare);\n }\n // Note depends on WebGL extension\n if (props.maxAnisotropy) {\n params[GL.TEXTURE_MAX_ANISOTROPY_EXT] = props.maxAnisotropy;\n }\n return params;\n}\n\n/** Convert address more */\nfunction convertAddressMode(addressMode: 'clamp-to-edge' | 'repeat' | 'mirror-repeat'): GL {\n switch (addressMode) {\n case 'clamp-to-edge': return GL.CLAMP_TO_EDGE;\n case 'repeat': return GL.REPEAT;\n case 'mirror-repeat': return GL.MIRRORED_REPEAT;\n }\n}\n\nfunction convertMaxFilterMode(maxFilter: 'nearest' | 'linear'): GL {\n switch (maxFilter) {\n case 'nearest': return GL.NEAREST;\n case 'linear': return GL.LINEAR;\n }\n}\n\n/** \n * WebGPU has separate min filter and mipmap filter, \n * WebGL is combined and effectively offers 6 options\n */\nfunction convertMinFilterMode(minFilter: 'nearest' | 'linear', mipmapFilter?: 'nearest' | 'linear'): GL {\n if (!mipmapFilter) {\n return convertMaxFilterMode(minFilter);\n }\n switch (minFilter) {\n case 'nearest': return mipmapFilter === 'nearest' ? GL.NEAREST_MIPMAP_NEAREST : GL.NEAREST_MIPMAP_LINEAR;\n case 'linear': return mipmapFilter === 'nearest' ? GL.LINEAR_MIPMAP_NEAREST : GL.LINEAR_MIPMAP_LINEAR;\n }\n}\n\n// Convert from WebGL to WebGPU\n\n/**\n * Convert WebGL-style sampler props to WebGPU\n * @param props\n * @returns\n */\nexport function convertToSamplerParameters(params: GLSamplerParameters): SamplerParameters {\n const props: SamplerParameters = {};\n if (params[GL.TEXTURE_WRAP_S]) {\n props.addressModeU = convertToAddressMode(params[GL.TEXTURE_WRAP_S]);\n }\n if (params[GL.TEXTURE_WRAP_T]) {\n props.addressModeV = convertToAddressMode(params[GL.TEXTURE_WRAP_T]);\n }\n if (params[GL.TEXTURE_WRAP_R]) {\n props.addressModeW = convertToAddressMode(params[GL.TEXTURE_WRAP_R]);\n }\n if (params[GL.TEXTURE_MAG_FILTER]) {\n props.magFilter = convertToMaxFilterMode(params[GL.TEXTURE_MAG_FILTER]);\n }\n if (params[GL.TEXTURE_MIN_FILTER]) {\n props.minFilter = convertToMinFilterMode(params[GL.TEXTURE_MIN_FILTER]);\n }\n if (params[GL.TEXTURE_MIN_FILTER]) {\n props.mipmapFilter = convertToMipmapFilterMode(params[GL.TEXTURE_MIN_FILTER]);\n }\n if (params[GL.TEXTURE_MIN_LOD]) {\n props.lodMinClamp = params[GL.TEXTURE_MIN_LOD];\n }\n if (params[GL.TEXTURE_MAX_LOD]) {\n props.lodMaxClamp = params[GL.TEXTURE_MAX_LOD];\n }\n if (params[GL.TEXTURE_COMPARE_MODE]) {\n props.type = params[GL.TEXTURE_COMPARE_MODE] === GL.COMPARE_REF_TO_TEXTURE ? 'comparison-sampler' : 'color-sampler';\n }\n if (params[GL.TEXTURE_COMPARE_FUNC]) {\n props.compare = convertToCompareFunction('compare', params[GL.TEXTURE_COMPARE_FUNC]);\n }\n // NOTE depends on extension (very common)\n if (params[GL.TEXTURE_MAX_ANISOTROPY_EXT]) {\n props.maxAnisotropy = params[GL.TEXTURE_MAX_ANISOTROPY_EXT];\n }\n return props;\n}\n\n/** Convert address more */\nfunction convertToAddressMode(addressMode: number): 'clamp-to-edge' | 'repeat' | 'mirror-repeat' {\n switch (addressMode) {\n case GL.CLAMP_TO_EDGE: return 'clamp-to-edge';\n case GL.REPEAT: return 'repeat';\n case GL.MIRRORED_REPEAT: return 'mirror-repeat';\n default: throw new Error('address');\n }\n}\n\nfunction convertToMaxFilterMode(filterMode: number): 'nearest' | 'linear' {\n switch (filterMode) {\n case GL.NEAREST: return 'nearest';\n case GL.LINEAR: return 'linear';\n default: throw new Error('maxfilter');\n }\n}\n\n/** WebGPU has separate min filter and mipmap filter, WebGL is combined */\nfunction convertToMinFilterMode(filterMode: number): 'nearest' | 'linear' {\n switch (filterMode) {\n // TODO is this correct?\n case GL.NEAREST: return 'nearest';\n case GL.LINEAR: return 'linear';\n case GL.NEAREST_MIPMAP_NEAREST: return 'nearest';\n case GL.LINEAR_MIPMAP_NEAREST: return 'linear';\n case GL.NEAREST_MIPMAP_LINEAR: return 'nearest';\n case GL.LINEAR_MIPMAP_LINEAR: return 'linear';\n default: throw new Error('minfilter');\n }\n}\n\nfunction convertToMipmapFilterMode(filterMode: number): 'nearest' | 'linear' {\n switch (filterMode) {\n // TODO is this correct?\n case GL.NEAREST: return 'nearest';\n case GL.LINEAR: return 'linear';\n case GL.NEAREST_MIPMAP_NEAREST: return 'nearest';\n case GL.LINEAR_MIPMAP_NEAREST: return 'nearest';\n case GL.NEAREST_MIPMAP_LINEAR: return 'linear';\n case GL.LINEAR_MIPMAP_LINEAR: return 'linear';\n default: throw new Error('mipmap');\n }\n}\n\n/**\n * Override sampler settings that are not supported by Non-Power-of-Two textures in WebGL1.\n*/\nexport function updateSamplerParametersForNPOT(parameters: GLSamplerParameters): GLSamplerParameters {\n const newParameters = {...parameters};\n if (parameters[GL.TEXTURE_MIN_FILTER] !== GL.NEAREST) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n newParameters[GL.TEXTURE_MIN_FILTER] = GL.LINEAR;\n }\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_S to CLAMP_TO_EDGE`)();\n newParameters[GL.TEXTURE_WRAP_S] = GL.CLAMP_TO_EDGE;\n newParameters[GL.TEXTURE_WRAP_T] = GL.CLAMP_TO_EDGE;\n return newParameters;\n}\n"],"mappings":"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"}
|
|
@@ -4,60 +4,54 @@ export declare function checkTextureFeature(gl: WebGLRenderingContext, feature:
|
|
|
4
4
|
/** Return a list of texture feature strings (for Device.features). Mainly compressed texture support */
|
|
5
5
|
export declare function getTextureFeatures(gl: WebGLRenderingContext): DeviceFeature[];
|
|
6
6
|
/** Map a format to webgl and constants */
|
|
7
|
-
|
|
7
|
+
type Format = {
|
|
8
8
|
gl?: GL;
|
|
9
9
|
/** If a different unsized format is needed in WebGL1 */
|
|
10
10
|
gl1?: GL;
|
|
11
11
|
gl1ext?: string;
|
|
12
|
+
/** format requires WebGL2, when using a WebGL 1 context, color renderbuffer formats are limited */
|
|
12
13
|
gl2ext?: string;
|
|
14
|
+
/** (bytes per pixel), for memory usage calculations. */
|
|
13
15
|
b?: number;
|
|
14
16
|
/** channels */
|
|
15
17
|
c?: number;
|
|
16
18
|
bpp?: number;
|
|
17
19
|
/** packed */
|
|
18
20
|
p?: number;
|
|
21
|
+
/** compressed */
|
|
19
22
|
x?: string;
|
|
23
|
+
/** for compressed texture formats */
|
|
20
24
|
f?: DeviceFeature;
|
|
25
|
+
/** renderable if feature is present */
|
|
21
26
|
render?: DeviceFeature;
|
|
27
|
+
/** filterable if feature is present */
|
|
22
28
|
filter?: DeviceFeature;
|
|
29
|
+
/** If not supported on WebGPU */
|
|
23
30
|
wgpu?: false;
|
|
24
31
|
types?: number[];
|
|
25
32
|
dataFormat?: GL;
|
|
33
|
+
/** Depth and stencil format attachment points. If set, needs to be a Renderbuffer unless depthTexture is set */
|
|
26
34
|
attachment?: GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT;
|
|
35
|
+
/** if depthTexture is set this is a depth/stencil format that can be set to a texture */
|
|
36
|
+
depthTexture?: boolean;
|
|
37
|
+
renderbuffer?: boolean;
|
|
27
38
|
};
|
|
28
|
-
/**
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// R
|
|
33
|
-
[GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},
|
|
34
|
-
[GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},
|
|
35
|
-
[GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},
|
|
36
|
-
// // RG
|
|
37
|
-
[GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},
|
|
38
|
-
[GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},
|
|
39
|
-
[GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},
|
|
40
|
-
// // RGB
|
|
41
|
-
[GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true},
|
|
42
|
-
[GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},
|
|
43
|
-
[GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},
|
|
44
|
-
[GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},
|
|
45
|
-
// // RGBA
|
|
46
|
-
|
|
47
|
-
[GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},
|
|
48
|
-
[GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},
|
|
49
|
-
[GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},
|
|
50
|
-
[GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true},
|
|
51
|
-
[GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1ext: EXT_SRGB},
|
|
52
|
-
[GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},
|
|
53
|
-
[GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},
|
|
54
|
-
[GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1ext: EXT_HALF_FLOAT_WEBGL1},
|
|
55
|
-
[GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}
|
|
56
|
-
*/
|
|
57
|
-
/** Texture format data */
|
|
39
|
+
/**
|
|
40
|
+
* Texture format data -
|
|
41
|
+
* Exported but can change without notice
|
|
42
|
+
*/
|
|
58
43
|
export declare const TEXTURE_FORMATS: Record<TextureFormat, Format>;
|
|
59
44
|
/** Checks if a texture format is supported */
|
|
60
45
|
export declare function isTextureFormatSupported(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): boolean;
|
|
46
|
+
export declare function isRenderbufferFormatSupported(gl: WebGLRenderingContext, format: TextureFormat): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Map WebGL texture formats (GL constants) to WebGPU-style TextureFormat strings
|
|
49
|
+
*/
|
|
50
|
+
export declare function convertGLToTextureFormat(format: GL | TextureFormat): TextureFormat;
|
|
51
|
+
/**
|
|
52
|
+
* Map WebGPU style texture format strings to GL constants
|
|
53
|
+
*/
|
|
54
|
+
export declare function convertTextureFormatToGL(format: TextureFormat, isWebGL2: boolean): GL | undefined;
|
|
61
55
|
/** Checks if a texture format is supported */
|
|
62
56
|
export declare function getTextureFormatSupport(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): {
|
|
63
57
|
supported: boolean;
|
|
@@ -69,25 +63,20 @@ export declare function getTextureFormatSupport(gl: WebGLRenderingContext, forma
|
|
|
69
63
|
/** Checks whether linear filtering (interpolated sampling) is available for floating point textures */
|
|
70
64
|
export declare function isTextureFormatFilterable(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): boolean;
|
|
71
65
|
export declare function isTextureFormatRenderable(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): boolean;
|
|
72
|
-
|
|
73
|
-
* Converts WebGPU string style texture formats to GL constants
|
|
74
|
-
* Pass through GL constants
|
|
75
|
-
*/
|
|
76
|
-
export declare function getWebGLTextureFormat(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): GL | undefined;
|
|
77
|
-
export declare function getWebGLTextureParameters(gl: WebGLRenderingContext, formatOrGL: TextureFormat | GL): {
|
|
66
|
+
export declare function getWebGLTextureParameters(formatOrGL: TextureFormat | GL, isWebGL2: boolean): {
|
|
78
67
|
format: GL;
|
|
79
68
|
dataFormat: GL;
|
|
80
69
|
type: GL;
|
|
81
70
|
compressed: any;
|
|
82
71
|
};
|
|
83
|
-
export declare function
|
|
72
|
+
export declare function getDepthStencilAttachmentWebGL(format: TextureFormat): GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT;
|
|
84
73
|
/**
|
|
85
74
|
* function to test if Float 32 bit format texture can be bound as color attachment
|
|
86
75
|
* @todo Generalize to check arbitrary formats?
|
|
87
76
|
*/
|
|
88
|
-
export declare function _checkFloat32ColorAttachment(gl: WebGLRenderingContext, internalFormat?:
|
|
77
|
+
export declare function _checkFloat32ColorAttachment(gl: WebGLRenderingContext, internalFormat?: 6408, srcFormat?: GL, srcType?: GL): boolean;
|
|
89
78
|
/** TODO - VERY roundabout legacy way of calculating bytes per pixel */
|
|
90
|
-
export declare function getTextureFormatBytesPerPixel(
|
|
79
|
+
export declare function getTextureFormatBytesPerPixel(formatOrGL: TextureFormat | GL, isWebGL2: boolean): number;
|
|
91
80
|
export declare function getWebGLDataType(dataType: string): GL;
|
|
92
81
|
export {};
|
|
93
82
|
//# sourceMappingURL=texture-formats.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texture-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/texture-formats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAiEpC,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAE9F;AAKD,wGAAwG;AACxG,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,qBAAqB,GAAG,aAAa,EAAE,CAG7E;AAID,0CAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"texture-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/texture-formats.ts"],"names":[],"mappings":"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"}
|