@luma.gl/webgl 9.0.0-alpha.21 → 9.0.0-alpha.23

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.
Files changed (134) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +1 -1
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +9 -9
  4. package/dist/adapter/converters/device-parameters.js.map +1 -1
  5. package/dist/adapter/converters/sampler-parameters.d.ts +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  9. package/dist/adapter/converters/texture-formats.d.ts +27 -38
  10. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  11. package/dist/adapter/converters/texture-formats.js +152 -114
  12. package/dist/adapter/converters/texture-formats.js.map +1 -1
  13. package/dist/adapter/helpers/attribute-utils.d.ts +1 -1
  14. package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -1
  15. package/dist/adapter/helpers/attribute-utils.js +1 -1
  16. package/dist/adapter/helpers/attribute-utils.js.map +1 -1
  17. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -1
  18. package/dist/adapter/helpers/get-shader-info.js.map +1 -1
  19. package/dist/adapter/helpers/uniforms.d.ts +7 -8
  20. package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
  21. package/dist/adapter/helpers/uniforms.js +4 -4
  22. package/dist/adapter/helpers/uniforms.js.map +1 -1
  23. package/dist/adapter/objects/constants-to-keys.d.ts +0 -2
  24. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  25. package/dist/adapter/objects/constants-to-keys.js +0 -20
  26. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  27. package/dist/adapter/objects/webgl-renderbuffer.d.ts +11 -8
  28. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  29. package/dist/adapter/objects/webgl-renderbuffer.js +29 -19
  30. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  31. package/dist/adapter/objects/webgl-resource.d.ts +0 -1
  32. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  33. package/dist/adapter/objects/webgl-resource.js +4 -7
  34. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  35. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  36. package/dist/adapter/resources/webgl-buffer.js +3 -2
  37. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  38. package/dist/adapter/resources/webgl-command-buffer.d.ts +8 -2
  39. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  40. package/dist/adapter/resources/webgl-command-buffer.js +168 -25
  41. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  42. package/dist/adapter/resources/webgl-command-encoder.d.ts +3 -2
  43. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  44. package/dist/adapter/resources/webgl-command-encoder.js +6 -2
  45. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  46. package/dist/adapter/resources/webgl-framebuffer.d.ts +9 -12
  47. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  48. package/dist/adapter/resources/webgl-framebuffer.js +29 -79
  49. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  50. package/dist/adapter/resources/webgl-render-pass.d.ts +16 -1
  51. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  52. package/dist/adapter/resources/webgl-render-pass.js +80 -0
  53. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  54. package/dist/adapter/resources/webgl-render-pipeline.d.ts +1 -1
  55. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  56. package/dist/adapter/resources/webgl-render-pipeline.js +3 -4
  57. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  58. package/dist/adapter/resources/webgl-sampler.d.ts +1 -1
  59. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgl-sampler.js +1 -1
  61. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  62. package/dist/adapter/resources/webgl-texture.d.ts +39 -19
  63. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  64. package/dist/adapter/resources/webgl-texture.js +32 -30
  65. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  66. package/dist/adapter/webgl-canvas-context.d.ts +1 -2
  67. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  68. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  69. package/dist/adapter/webgl-device.d.ts +13 -6
  70. package/dist/adapter/webgl-device.d.ts.map +1 -1
  71. package/dist/adapter/webgl-device.js +20 -2
  72. package/dist/adapter/webgl-device.js.map +1 -1
  73. package/dist/classic/buffer.d.ts +0 -1
  74. package/dist/classic/buffer.d.ts.map +1 -1
  75. package/dist/classic/buffer.js +0 -6
  76. package/dist/classic/buffer.js.map +1 -1
  77. package/dist/classic/typed-array-utils.d.ts +15 -17
  78. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  79. package/dist/classic/typed-array-utils.js +1 -1
  80. package/dist/classic/typed-array-utils.js.map +1 -1
  81. package/dist/context/context/create-browser-context.js.map +1 -1
  82. package/dist/context/parameters/unified-parameter-api.d.ts +1 -1
  83. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  84. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  85. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -2
  86. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  87. package/dist/context/parameters/webgl-parameter-tables.js +1 -1
  88. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  89. package/dist/dist.dev.js +1102 -670
  90. package/dist/index.cjs +1085 -898
  91. package/dist/index.d.ts +3 -2
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +2 -1
  94. package/dist/index.js.map +1 -1
  95. package/dist.min.js +22 -21
  96. package/package.json +7 -4
  97. package/src/adapter/converters/device-parameters.ts +46 -22
  98. package/src/adapter/converters/sampler-parameters.ts +1 -2
  99. package/src/adapter/converters/texture-formats.ts +242 -161
  100. package/src/adapter/helpers/attribute-utils.ts +1 -2
  101. package/src/adapter/helpers/get-shader-info.ts +3 -0
  102. package/src/adapter/helpers/uniforms.ts +9 -10
  103. package/src/adapter/objects/constants-to-keys.ts +0 -25
  104. package/src/adapter/objects/webgl-renderbuffer.ts +32 -29
  105. package/src/adapter/objects/webgl-resource.ts +4 -8
  106. package/src/adapter/resources/webgl-buffer.ts +4 -5
  107. package/src/adapter/resources/webgl-command-buffer.ts +328 -21
  108. package/src/adapter/resources/webgl-command-encoder.ts +7 -2
  109. package/src/adapter/resources/webgl-framebuffer.ts +63 -111
  110. package/src/adapter/resources/webgl-render-pass.ts +146 -2
  111. package/src/adapter/resources/webgl-render-pipeline.ts +6 -3
  112. package/src/adapter/resources/webgl-sampler.ts +1 -2
  113. package/src/adapter/resources/webgl-texture.ts +61 -43
  114. package/src/adapter/webgl-canvas-context.ts +2 -2
  115. package/src/adapter/webgl-device.ts +37 -8
  116. package/src/classic/buffer.ts +3 -3
  117. package/src/classic/typed-array-utils.ts +15 -26
  118. package/src/context/context/create-browser-context.ts +2 -2
  119. package/src/context/parameters/unified-parameter-api.ts +1 -1
  120. package/src/context/parameters/webgl-parameter-tables.ts +2 -2
  121. package/src/index.ts +5 -3
  122. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  123. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  124. package/dist/adapter/converters/renderbuffer-formats.js +0 -180
  125. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  126. package/dist/types/webgl.d.ts +0 -145
  127. package/dist/types/webgl.d.ts.map +0 -1
  128. package/dist/types/webgl.js +0 -2
  129. package/dist/types/webgl.js.map +0 -1
  130. package/src/.DS_Store +0 -0
  131. package/src/adapter/.DS_Store +0 -0
  132. package/src/adapter/converters/renderbuffer-formats.ts +0 -90
  133. package/src/context/.DS_Store +0 -0
  134. package/src/types/webgl.ts +0 -286
@@ -1,11 +1,26 @@
1
- import { RenderPass, RenderPassProps } from '@luma.gl/api';
1
+ import { RenderPass, RenderPassProps, NumericArray, RenderPassParameters } from '@luma.gl/api';
2
2
  import { WebGLDevice } from '../webgl-device';
3
+ import { GLParameters } from '@luma.gl/constants';
3
4
  export declare class WEBGLRenderPass extends RenderPass {
4
5
  readonly device: WebGLDevice;
6
+ /** Parameters that should be applied before each draw call */
7
+ glParameters: GLParameters;
5
8
  constructor(device: WebGLDevice, props: RenderPassProps);
6
9
  end(): void;
7
10
  pushDebugGroup(groupLabel: string): void;
8
11
  popDebugGroup(): void;
9
12
  insertDebugMarker(markerLabel: string): void;
13
+ /**
14
+ * Maps RenderPass parameters to GL parameters
15
+ */
16
+ setParameters(parameters?: RenderPassParameters): void;
17
+ /**
18
+ * Optionally clears depth, color and stencil buffers based on parameters
19
+ */
20
+ protected clear(): void;
21
+ /**
22
+ * WebGL2 - clear a specific color buffer
23
+ */
24
+ protected clearColorBuffer(drawBuffer?: number, value?: NumericArray): void;
10
25
  }
11
26
  //# sourceMappingURL=webgl-render-pass.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pass.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;AACzD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAEjB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe;IAKvD,GAAG,IAAI,IAAI;IAEX,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACxC,aAAa,IAAI,IAAI;IACrB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;CAQ7C"}
1
+ {"version":3,"file":"webgl-render-pass.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAC,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAK,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAWpD,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,8DAA8D;IAC9D,YAAY,EAAE,YAAY,CAAC;gBAEf,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe;IAWvD,GAAG,IAAI,IAAI;IAIX,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACxC,aAAa,IAAI,IAAI;IACrB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAS5C;;OAEG;IACH,aAAa,CAAC,UAAU,GAAE,oBAAyB,GAAG,IAAI;IAyC1D;;OAEG;IACH,SAAS,CAAC,KAAK,IAAI,IAAI;IA+BvB;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,UAAU,GAAE,MAAU,EAAE,KAAK,GAAE,YAA2B;CAwCtF"}
@@ -1,14 +1,94 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import { RenderPass } from '@luma.gl/api';
3
+ import { GL } from '@luma.gl/constants';
4
+ import { withParameters } from "../../context/state-tracker/with-parameters.js";
5
+ const GL_DEPTH_BUFFER_BIT = 0x00000100;
6
+ const GL_STENCIL_BUFFER_BIT = 0x00000400;
7
+ const GL_COLOR_BUFFER_BIT = 0x00004000;
8
+ const GL_COLOR = 0x1800;
3
9
  export class WEBGLRenderPass extends RenderPass {
4
10
  constructor(device, props) {
5
11
  super(device, props);
6
12
  _defineProperty(this, "device", void 0);
13
+ _defineProperty(this, "glParameters", void 0);
7
14
  this.device = device;
15
+ this.setParameters(this.props.parameters);
16
+ this.clear();
8
17
  }
9
18
  end() {}
10
19
  pushDebugGroup(groupLabel) {}
11
20
  popDebugGroup() {}
12
21
  insertDebugMarker(markerLabel) {}
22
+ setParameters() {
23
+ let parameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
24
+ const glParameters = {};
25
+ if (this.props.framebuffer) {
26
+ glParameters.framebuffer = this.props.framebuffer;
27
+ }
28
+ if (this.props.depthReadOnly) {
29
+ glParameters.depthMask = !this.props.depthReadOnly;
30
+ }
31
+ glParameters.stencilMask = this.props.stencilReadOnly ? 0 : 1;
32
+ glParameters[GL.RASTERIZER_DISCARD] = this.props.discard;
33
+ if (parameters.viewport) {
34
+ glParameters.viewport = parameters.viewport;
35
+ glParameters.depthRange = [parameters.viewport[4], parameters.viewport[5]];
36
+ }
37
+ glParameters.scissorTest = Boolean(parameters.scissorRect);
38
+ if (parameters.scissorRect) {
39
+ glParameters.scissor = parameters.scissorRect;
40
+ }
41
+ if (parameters.blendConstant) {
42
+ glParameters.blendColor = parameters.blendConstant;
43
+ }
44
+ if (parameters.stencilReference) {
45
+ console.warn('RenderPassParameters.stencilReference not yet implemented in WebGL');
46
+ parameters[GL.STENCIL_REF] = parameters.stencilReference;
47
+ }
48
+ this.glParameters = glParameters;
49
+ }
50
+ clear() {
51
+ const glParameters = {
52
+ ...this.glParameters
53
+ };
54
+ let clearMask = 0;
55
+ if (this.props.clearColor !== false) {
56
+ clearMask |= GL_COLOR_BUFFER_BIT;
57
+ glParameters.clearColor = this.props.clearColor;
58
+ }
59
+ if (this.props.clearDepth !== false) {
60
+ clearMask |= GL_DEPTH_BUFFER_BIT;
61
+ glParameters.clearDepth = this.props.clearDepth;
62
+ }
63
+ if (this.props.clearStencil !== false) {
64
+ clearMask |= GL_STENCIL_BUFFER_BIT;
65
+ glParameters.clearStencil = this.props.clearStencil;
66
+ }
67
+ if (clearMask !== 0) {
68
+ withParameters(this.device, glParameters, () => {
69
+ this.device.gl.clear(clearMask);
70
+ });
71
+ }
72
+ }
73
+ clearColorBuffer() {
74
+ let drawBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
75
+ let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0, 0, 0];
76
+ withParameters(this.device.gl2, {
77
+ framebuffer: this.props.framebuffer
78
+ }, () => {
79
+ switch (value.constructor) {
80
+ case Int32Array:
81
+ this.device.gl2.clearBufferiv(GL_COLOR, drawBuffer, value);
82
+ break;
83
+ case Uint32Array:
84
+ this.device.gl2.clearBufferuiv(GL_COLOR, drawBuffer, value);
85
+ break;
86
+ case Float32Array:
87
+ default:
88
+ this.device.gl2.clearBufferfv(GL_COLOR, drawBuffer, value);
89
+ break;
90
+ }
91
+ });
92
+ }
13
93
  }
14
94
  //# sourceMappingURL=webgl-render-pass.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pass.js","names":["RenderPass","WEBGLRenderPass","constructor","device","props","_defineProperty","end","pushDebugGroup","groupLabel","popDebugGroup","insertDebugMarker","markerLabel"],"sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"sourcesContent":["import {RenderPass, RenderPassProps} from '@luma.gl/api';\nimport {WebGLDevice} from '../webgl-device';\n\nexport class WEBGLRenderPass extends RenderPass {\n readonly device: WebGLDevice;\n\n constructor(device: WebGLDevice, props: RenderPassProps) {\n super(device, props);\n this.device = device;\n }\n\n end(): void {}\n\n pushDebugGroup(groupLabel: string): void {}\n popDebugGroup(): void {}\n insertDebugMarker(markerLabel: string): void {}\n\n // writeTimestamp(querySet: GPUQuerySet, queryIndex: number): void;\n\n // beginOcclusionQuery(queryIndex: number): void;\n // endOcclusionQuery(): void;\n\n // executeBundles(bundles: Iterable<GPURenderBundle>): void;\n}\n"],"mappings":";AAAA,SAAQA,UAAU,QAAwB,cAAc;AAGxD,OAAO,MAAMC,eAAe,SAASD,UAAU,CAAC;EAG9CE,WAAWA,CAACC,MAAmB,EAAEC,KAAsB,EAAE;IACvD,KAAK,CAACD,MAAM,EAAEC,KAAK,CAAC;IAACC,eAAA;IACrB,IAAI,CAACF,MAAM,GAAGA,MAAM;EACtB;EAEAG,GAAGA,CAAA,EAAS,CAAC;EAEbC,cAAcA,CAACC,UAAkB,EAAQ,CAAC;EAC1CC,aAAaA,CAAA,EAAS,CAAC;EACvBC,iBAAiBA,CAACC,WAAmB,EAAQ,CAAC;AAQhD"}
1
+ {"version":3,"file":"webgl-render-pass.js","names":["RenderPass","GL","withParameters","GL_DEPTH_BUFFER_BIT","GL_STENCIL_BUFFER_BIT","GL_COLOR_BUFFER_BIT","GL_COLOR","WEBGLRenderPass","constructor","device","props","_defineProperty","setParameters","parameters","clear","end","pushDebugGroup","groupLabel","popDebugGroup","insertDebugMarker","markerLabel","arguments","length","undefined","glParameters","framebuffer","depthReadOnly","depthMask","stencilMask","stencilReadOnly","RASTERIZER_DISCARD","discard","viewport","depthRange","scissorTest","Boolean","scissorRect","scissor","blendConstant","blendColor","stencilReference","console","warn","STENCIL_REF","clearMask","clearColor","clearDepth","clearStencil","gl","clearColorBuffer","drawBuffer","value","gl2","Int32Array","clearBufferiv","Uint32Array","clearBufferuiv","Float32Array","clearBufferfv"],"sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"sourcesContent":["import {RenderPass, RenderPassProps, NumericArray, RenderPassParameters} from '@luma.gl/api';\nimport {WebGLDevice} from '../webgl-device';\nimport {GL, GLParameters} from '@luma.gl/constants';\nimport {withParameters} from '../../context/state-tracker/with-parameters';\n\n// Should collapse during minification\n\nconst GL_DEPTH_BUFFER_BIT = 0x00000100;\nconst GL_STENCIL_BUFFER_BIT = 0x00000400;\nconst GL_COLOR_BUFFER_BIT = 0x00004000;\n\nconst GL_COLOR = 0x1800;\n\nexport class WEBGLRenderPass extends RenderPass {\n readonly device: WebGLDevice;\n\n /** Parameters that should be applied before each draw call */\n glParameters: GLParameters;\n\n constructor(device: WebGLDevice, props: RenderPassProps) {\n super(device, props);\n this.device = device;\n\n // TODO - do parameters (scissorRect) affect the clear operation?\n this.setParameters(this.props.parameters);\n\n // Hack - for now WebGL draws in \"immediate mode\" (instead of queueing the operations)...\n this.clear();\n }\n\n end(): void {\n // should add commands to CommandEncoder.\n }\n\n pushDebugGroup(groupLabel: string): void {}\n popDebugGroup(): void {}\n insertDebugMarker(markerLabel: string): void {}\n\n // writeTimestamp(querySet: GPUQuerySet, queryIndex: number): void;\n\n // beginOcclusionQuery(queryIndex: number): void;\n // endOcclusionQuery(): void;\n\n // executeBundles(bundles: Iterable<GPURenderBundle>): void;\n\n /**\n * Maps RenderPass parameters to GL parameters\n */\n setParameters(parameters: RenderPassParameters = {}): void {\n const glParameters: GLParameters = {};\n\n // Framebuffers are specified using parameters in WebGL\n if (this.props.framebuffer) {\n glParameters.framebuffer = this.props.framebuffer;\n }\n\n if (this.props.depthReadOnly) {\n glParameters.depthMask = !this.props.depthReadOnly;\n }\n\n glParameters.stencilMask = this.props.stencilReadOnly ? 0 : 1;\n\n glParameters[GL.RASTERIZER_DISCARD] = this.props.discard;\n\n // Map the four renderpass parameters to WebGL parameters\n if (parameters.viewport) {\n glParameters.viewport = parameters.viewport;\n glParameters.depthRange = [parameters.viewport[4], parameters.viewport[5]];\n }\n glParameters.scissorTest = Boolean(parameters.scissorRect);\n if (parameters.scissorRect) {\n glParameters.scissor = parameters.scissorRect;\n }\n if (parameters.blendConstant) {\n glParameters.blendColor = parameters.blendConstant;\n }\n if (parameters.stencilReference) {\n // eslint-disable-next-line no-console\n console.warn('RenderPassParameters.stencilReference not yet implemented in WebGL');\n // parameters.stencilFunc = [func, ref, mask];\n // Does this work?\n parameters[GL.STENCIL_REF] = parameters.stencilReference;\n }\n\n this.glParameters = glParameters;\n }\n\n // Internal\n\n /**\n * Optionally clears depth, color and stencil buffers based on parameters\n */\n protected clear(): void {\n const glParameters: GLParameters = {...this.glParameters};\n\n let clearMask = 0;\n\n if (this.props.clearColor !== false) {\n clearMask |= GL_COLOR_BUFFER_BIT;\n glParameters.clearColor = this.props.clearColor;\n }\n if (this.props.clearDepth !== false) {\n clearMask |= GL_DEPTH_BUFFER_BIT;\n glParameters.clearDepth = this.props.clearDepth;\n }\n if (this.props.clearStencil !== false) {\n clearMask |= GL_STENCIL_BUFFER_BIT;\n glParameters.clearStencil = this.props.clearStencil;\n }\n\n if (clearMask !== 0) {\n // Temporarily set any clear \"colors\" and call clear\n withParameters(this.device, glParameters, () => {\n this.device.gl.clear(clearMask);\n });\n\n // TODO - clear multiple color attachments\n // for (attachment of this.framebuffer.colorAttachments) {\n // this.clearColorBuffer \n // }\n }\n }\n\n /** \n * WebGL2 - clear a specific color buffer \n */\n protected clearColorBuffer(drawBuffer: number = 0, value: NumericArray = [0, 0, 0, 0]) {\n withParameters(this.device.gl2, {framebuffer: this.props.framebuffer}, () => {\n // Method selection per OpenGL ES 3 docs\n switch (value.constructor) {\n case Int32Array:\n this.device.gl2.clearBufferiv(GL_COLOR, drawBuffer, value);\n break;\n case Uint32Array:\n this.device.gl2.clearBufferuiv(GL_COLOR, drawBuffer, value);\n break;\n case Float32Array:\n default:\n this.device.gl2.clearBufferfv(GL_COLOR, drawBuffer, value);\n break;\n }\n });\n }\n\n // clearDepthStencil() {\n // const GL_DEPTH = 0x1801;\n // const GL_STENCIL = 0x1802;\n // const GL_DEPTH_STENCIL = 0x84f9;\n\n // case GL_DEPTH:\n // this.device.gl2.clearBufferfv(GL_DEPTH, 0, [value]);\n // break;\n\n // case GL_STENCIL:\n // this.device.gl2.clearBufferiv(GL_STENCIL, 0, [value]);\n // break;\n\n // case GL_DEPTH_STENCIL:\n // const [depth, stencil] = value;\n // this.device.gl2.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);\n // break;\n\n // default:\n // assert(false, ERR_ARGUMENTS);\n // }\n // });\n}\n\n"],"mappings":"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"}
@@ -32,7 +32,7 @@ export declare class WEBGLRenderPipeline extends RenderPipeline {
32
32
  * This function unifies those ways into a single call using common parameters with sane defaults
33
33
  */
34
34
  draw(options: {
35
- renderPass?: RenderPass;
35
+ renderPass: RenderPass;
36
36
  vertexCount?: number;
37
37
  indexCount?: number;
38
38
  instanceCount?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EACV,MAAM,EACN,OAAO,EACP,YAAY,EAIb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,cAAc,EAAgC,MAAM,cAAc,CAAC;AAS3E,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAC;AAI5E,oCAAoC;AACpC,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,EAAE,EAAE,WAAW,CAAC;IAChB,EAAE,EAAE,WAAW,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IAIrB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IACjC,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IACnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAC3C,oBAAoB,EAAE,MAAM,CAAK;IACjC,aAAa,EAAE,MAAM,CAAK;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAM;gBAEnC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB;IA2BlD,OAAO,IAAI,IAAI;IAQxB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMzC,sCAAsC;IACtC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAwBvD,sCAAsC;IACtC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAqCpD,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAKzC;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO;IA2EX,SAAS,CAAC,eAAe;IA0BzB;;;;OAIG;IACH,sBAAsB;IAkBtB,yBAAyB;IACzB,cAAc;IA6Dd,cAAc;CASf"}
1
+ {"version":3,"file":"webgl-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EACV,MAAM,EACN,OAAO,EACP,YAAY,EAIb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,cAAc,EAAgC,MAAM,cAAc,CAAC;AAS3E,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAC;AAK5E,oCAAoC;AACpC,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,EAAE,EAAE,WAAW,CAAC;IAChB,EAAE,EAAE,WAAW,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IAIrB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IACjC,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IACnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAC3C,oBAAoB,EAAE,MAAM,CAAK;IACjC,aAAa,EAAE,MAAM,CAAK;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAM;gBAEnC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB;IA2BlD,OAAO,IAAI,IAAI;IAQxB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMzC,sCAAsC;IACtC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAwBvD,sCAAsC;IACtC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAqCpD,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAKzC;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,EAAE,UAAU,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO;IA6EX,SAAS,CAAC,eAAe;IA0BzB;;;;OAIG;IACH,sBAAsB;IAkBtB,yBAAyB;IACzB,cAAc;IA6Dd,cAAc;CASf"}
@@ -123,7 +123,7 @@ export class WEBGLRenderPipeline extends RenderPipeline {
123
123
  draw(options) {
124
124
  var _this$_indexBuffer;
125
125
  const {
126
- renderPass = this.device.getDefaultRenderPass(),
126
+ renderPass,
127
127
  vertexCount,
128
128
  instanceCount,
129
129
  firstVertex = 0
@@ -144,10 +144,9 @@ export class WEBGLRenderPipeline extends RenderPipeline {
144
144
  }
145
145
  this._applyBindings();
146
146
  this._applyUniforms();
147
+ const webglRenderPass = renderPass;
147
148
  withDeviceParameters(this.device, this.props.parameters, () => {
148
- withGLParameters(this.device, {
149
- framebuffer: renderPass.props.framebuffer
150
- }, () => {
149
+ withGLParameters(this.device, webglRenderPass.glParameters, () => {
151
150
  if (isIndexed && isInstanced) {
152
151
  var _this$device$gl2;
153
152
  (_this$device$gl2 = this.device.gl2) === null || _this$device$gl2 === void 0 ? void 0 : _this$device$gl2.drawElementsInstanced(drawMode, vertexCount || 0, indexType, firstVertex, instanceCount || 0);
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pipeline.js","names":["RenderPipeline","cast","log","decodeVertexFormat","GL","getWebGLDataType","getShaderLayout","withDeviceParameters","withGLParameters","setUniform","WEBGLBuffer","WEBGLTexture","WEBGLVertexArrayObject","LOG_PROGRAM_PERF_PRIORITY","WEBGLRenderPipeline","constructor","device","props","_defineProperty","handle","gl","createProgram","setSpectorMetadata","id","vs","fs","varyings","bufferMode","SEPARATE_ATTRIBS","length","_this$device$gl","assertWebGL2","gl2","transformFeedbackVaryings","_compileAndLink","layout","vertexArrayObject","destroy","deleteProgram","destroyed","setIndexBuffer","indexBuffer","webglBuffer","setElementBuffer","_indexBuffer","setAttributes","attributes","name","buffer","Object","entries","attribute","getAttributeLayout","warn","concat","decoded","format","type","typeString","components","size","byteLength","stride","normalized","integer","divisor","stepMode","setBuffer","location","offset","setBindings","bindings","value","binding","find","Error","setUniforms","uniforms","assign","draw","options","_this$_indexBuffer","renderPass","getDefaultRenderPass","vertexCount","instanceCount","firstVertex","drawMode","getDrawMode","topology","isIndexed","Boolean","indexType","UNSIGNED_SHORT","UNSIGNED_INT","isInstanced","Number","_areTexturesRenderable","useProgram","bind","primitiveMode","getGLPrimitive","transformFeedback","begin","_applyBindings","_applyUniforms","parameters","framebuffer","_this$device$gl2","drawElementsInstanced","drawElements","_this$device$gl3","drawArraysInstanced","drawArrays","end","attachShader","time","linkProgram","timeEnd","debug","level","linked","getProgramParameter","LINK_STATUS","getProgramInfoLog","validateProgram","validated","VALIDATE_STATUS","texturesRenderable","texture","_textureUniforms","update","loaded","undefined","textureUnit","uniformBufferIndex","getUniformBlockIndex","INVALID_INDEX","uniformBlockBinding","bindBufferBase","UNIFORM_BUFFER","bindBufferRange","activeTexture","TEXTURE0","bindTexture","target","uniformLayout","POINTS","LINES","LINE_STRIP","LINE_LOOP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN"],"sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"sourcesContent":["import type {\n RenderPipelineProps,\n RenderPass,\n Buffer,\n Binding,\n ShaderLayout,\n PrimitiveTopology,\n // BindingLayout,\n AttributeLayout\n} from '@luma.gl/api';\nimport {RenderPipeline, cast, log, decodeVertexFormat} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\n\nimport {getWebGLDataType} from '../converters/texture-formats';\nimport {getShaderLayout} from '../helpers/get-shader-layout';\nimport {withDeviceParameters, withGLParameters} from '../converters/device-parameters';\nimport {setUniform} from '../helpers/set-uniform';\n// import {copyUniform, checkUniformValues} from '../../classes/uniforms';\n\nimport {WebGLDevice} from '../webgl-device';\nimport {WEBGLBuffer} from './webgl-buffer';\nimport {WEBGLShader} from './webgl-shader';\nimport {WEBGLTexture} from './webgl-texture';\nimport {WEBGLVertexArrayObject} from '../objects/webgl-vertex-array-object';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\n/** Creates a new render pipeline */\nexport class WEBGLRenderPipeline extends RenderPipeline {\n device: WebGLDevice;\n handle: WebGLProgram;\n vs: WEBGLShader;\n fs: WEBGLShader;\n layout: ShaderLayout;\n\n // configuration: ProgramConfiguration;\n // Experimental flag to avoid deleting Program object while it is cached\n varyings: string[] | null = null;\n vertexArrayObject: WEBGLVertexArrayObject;\n _indexBuffer?: Buffer;\n uniforms: Record<string, any> = {};\n bindings: Record<string, any> = {};\n _textureUniforms: Record<string, any> = {};\n _textureIndexCounter: number = 0;\n _uniformCount: number = 0;\n _uniformSetters: Record<string, Function> = {}; // TODO are these used?\n\n constructor(device: WebGLDevice, props: RenderPipelineProps) {\n super(device, props);\n this.device = device;\n this.handle = this.props.handle || this.device.gl.createProgram();\n this.device.setSpectorMetadata(this.handle, {id: this.props.id});\n\n // Create shaders if needed\n this.vs = cast<WEBGLShader>(props.vs);\n this.fs = cast<WEBGLShader>(props.fs);\n // assert(this.vs.stage === 'vertex');\n // assert(this.fs.stage === 'fragment');\n\n // Setup varyings if supplied\n // @ts-expect-error WebGL only\n const {varyings, bufferMode = GL.SEPARATE_ATTRIBS} = props;\n if (varyings && varyings.length > 0) {\n this.device.assertWebGL2();\n this.varyings = varyings;\n this.device.gl2?.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n\n this.layout = props.layout || getShaderLayout(this.device.gl, this.handle);\n this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);\n }\n\n override destroy(): void {\n if (this.handle) {\n this.device.gl.deleteProgram(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n setIndexBuffer(indexBuffer: Buffer): void {\n const webglBuffer = cast<WEBGLBuffer>(indexBuffer);\n this.vertexArrayObject.setElementBuffer(webglBuffer);\n this._indexBuffer = indexBuffer;\n }\n\n /** @todo needed for portable model */\n setAttributes(attributes: Record<string, Buffer>): void {\n for (const [name, buffer] of Object.entries(attributes)) {\n const webglBuffer = cast<WEBGLBuffer>(buffer);\n const attribute = getAttributeLayout(this.layout, name);\n if (!attribute) {\n log.warn(`Ignoring buffer supplied for unknown attribute \"${name}\" in pipeline \"${this.id}\" (buffer \"${buffer.id}\")`)();\n continue; // eslint-disable-line no-continue\n }\n const decoded = decodeVertexFormat(attribute.format);\n const {type: typeString, components: size, byteLength: stride, normalized, integer} = decoded;\n const divisor = attribute.stepMode === 'instance' ? 1 : 0;\n const type = getWebGLDataType(typeString);\n this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {\n size,\n type,\n stride,\n offset: 0,\n normalized,\n integer,\n divisor\n });\n }\n }\n\n /** @todo needed for portable model */\n setBindings(bindings: Record<string, Binding>): void {\n // if (log.priority >= 2) {\n // checkUniformValues(uniforms, this.id, this._uniformSetters);\n // }\n\n for (const [name, value] of Object.entries(bindings)) {\n const binding = this.layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n log.warn(`Unknown binding ${name} in render pipeline ${this.id}`)();\n continue; // eslint-disable-line no-continue\n }\n if (!value) {\n log.warn(`Unsetting binding ${name} in render pipeline ${this.id}`)();\n }\n switch (binding.type) {\n case 'uniform':\n // @ts-expect-error\n if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {\n throw new Error('buffer value');\n }\n break;\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture value');\n }\n break;\n case 'sampler':\n log.warn(`Ignoring sampler ${name}`)();\n break;\n default:\n throw new Error(binding.type);\n }\n\n this.bindings[name] = value;\n }\n }\n\n setUniforms(uniforms: Record<string, any>) {\n // TODO - check against layout\n Object.assign(this.uniforms, uniforms);\n }\n\n /** @todo needed for portable model\n * @note The WebGL API is offers many ways to draw things\n * This function unifies those ways into a single call using common parameters with sane defaults\n */\n draw(options: {\n renderPass?: RenderPass;\n vertexCount?: number;\n indexCount?: number;\n instanceCount?: number;\n firstVertex?: number;\n firstIndex?: number;\n firstInstance?: number;\n baseVertex?: number;\n }): boolean {\n const {\n renderPass = this.device.getDefaultRenderPass(),\n vertexCount,\n // indexCount,\n instanceCount,\n firstVertex = 0,\n // firstIndex,\n // firstInstance,\n // baseVertex\n } = options;\n\n const drawMode = getDrawMode(this.props.topology);\n const isIndexed: boolean = Boolean(this._indexBuffer);\n const indexType = this._indexBuffer?.props.indexType === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;\n const isInstanced: boolean = Number(options.instanceCount) > 0;\n\n // Avoid WebGL draw call when not rendering any data or values are incomplete\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n if (!this._areTexturesRenderable() || options.vertexCount === 0) {\n // (isInstanced && instanceCount === 0)\n return false;\n }\n\n this.device.gl.useProgram(this.handle);\n\n this.vertexArrayObject.bind(() => {\n const primitiveMode = getGLPrimitive(this.props.topology);\n const transformFeedback: any = null;\n if (transformFeedback) {\n transformFeedback.begin(primitiveMode);\n }\n\n // We have to apply bindings before every draw call since other draw calls will overwrite\n this._applyBindings();\n this._applyUniforms();\n\n // TODO - double context push/pop\n withDeviceParameters(this.device, this.props.parameters, () => {\n withGLParameters(this.device, {framebuffer: renderPass.props.framebuffer}, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n // ANGLE_instanced_arrays extension\n this.device.gl2?.drawElementsInstanced(\n drawMode,\n vertexCount || 0, // indexCount?\n indexType,\n firstVertex,\n instanceCount || 0\n );\n // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {\n // this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex); // indexCount?\n } else if (isInstanced) {\n this.device.gl2?.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);\n } else {\n this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n });\n\n return true;\n }\n\n // setAttributes(attributes: Record<string, Buffer>): void {}\n // setBindings(bindings: Record<string, Binding>): void {}\n\n protected _compileAndLink() {\n const {gl} = this.device;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n\n // Avoid checking program linking error in production\n // @ts-expect-error\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // PRIVATE METHODS\n\n /**\n * Checks if all texture-values uniforms are renderable (i.e. loaded)\n * Update a texture if needed (e.g. from video)\n * Note: This is currently done before every draw call\n */\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const [, texture] of Object.entries(this._textureUniforms)) {\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n for (const [, texture] of Object.entries(this.bindings)) {\n // texture.update();\n if (texture.loaded !== undefined) {\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n }\n\n return texturesRenderable;\n }\n\n /** Apply any bindings */\n _applyBindings() {\n this.device.gl.useProgram(this.handle);\n\n const {gl2} = this.device;\n if (!gl2) {\n throw new Error('bindings');\n }\n\n let textureUnit = 0;\n let uniformBufferIndex = 0;\n for (const binding of this.layout.bindings) {\n const value = this.bindings[binding.name];\n if (!value) {\n throw new Error(`No value for binding ${binding.name} in ${this.id}`);\n }\n switch (binding.type) {\n case 'uniform':\n // Set buffer\n const {name} = binding;\n const location = gl2.getUniformBlockIndex(this.handle, name);\n if (location === GL.INVALID_INDEX) {\n throw new Error(`Invalid uniform block name ${name}`);\n }\n gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);\n // console.debug(binding, location);\n if (value instanceof WEBGLBuffer) {\n gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);\n } else {\n gl2.bindBufferRange(\n GL.UNIFORM_BUFFER,\n uniformBufferIndex,\n value.buffer.handle,\n value.offset || 0,\n value.size || value.buffer.byteLength - value.offset\n );\n }\n uniformBufferIndex += 1;\n break;\n\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture');\n }\n const texture: WEBGLTexture = value;\n gl2.activeTexture(GL.TEXTURE0 + textureUnit);\n gl2.bindTexture(texture.target, texture.handle);\n // gl2.bindSampler(textureUnit, sampler.handle);\n textureUnit += 1;\n break;\n\n case 'sampler':\n // ignore\n break;\n\n case 'storage':\n case 'read-only-storage':\n throw new Error(`binding type '${binding.type}' not supported in WebGL`);\n }\n }\n }\n\n _applyUniforms() {\n for (const uniformLayout of this.layout.uniforms || []) {\n const {name, location, type, textureUnit} = uniformLayout;\n const value = this.uniforms[name] || textureUnit;\n if (value !== undefined) {\n setUniform(this.device.gl, location, type, value);\n }\n }\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getDrawMode(\n topology: PrimitiveTopology\n): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.LINE_LOOP | GL.TRIANGLES | GL.TRIANGLE_STRIP | GL.TRIANGLE_FAN {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINE_STRIP;\n case 'line-loop': return GL.LINE_LOOP;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLE_STRIP;\n case 'triangle-fan': return GL.TRIANGLE_FAN;\n default: throw new Error(topology);\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINES;\n case 'line-loop': return GL.LINES;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLES;\n case 'triangle-fan': return GL.TRIANGLES;\n default: throw new Error(topology);\n }\n}\n\n// function getAttributesByLocation(\n// attributes: Record<string, Buffer>,\n// layout: ShaderLayout\n// ): Record<number, Buffer> {\n// const byLocation: Record<number, Buffer> = {};\n// for (const [name, buffer] of Object.entries(attributes)) {\n// const attribute = getAttributeLayout(layout, name);\n// if (attribute) {\n// byLocation[attribute.location] = buffer;\n// }\n// }\n// return byLocation;\n// }\n\nfunction getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | null {\n return layout.attributes.find((binding) => binding.name === name) || null;\n}\n\n/* TODO\nfunction getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {\n const binding = layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n throw new Error(`Unknown binding ${name}`);\n }\n return binding;\n}\n*/\n"],"mappings":";AAUA,SAAQA,cAAc,EAAEC,IAAI,EAAEC,GAAG,EAAEC,kBAAkB,QAAO,cAAc;AAC1E,OAAOC,EAAE,MAAM,oBAAoB;AAAC,SAE5BC,gBAAgB;AAAA,SAChBC,eAAe;AAAA,SACfC,oBAAoB,EAAEC,gBAAgB;AAAA,SACtCC,UAAU;AAAA,SAIVC,WAAW;AAAA,SAEXC,YAAY;AAAA,SACZC,sBAAsB;AAE9B,MAAMC,yBAAyB,GAAG,CAAC;AAGnC,OAAO,MAAMC,mBAAmB,SAASd,cAAc,CAAC;EAmBtDe,WAAWA,CAACC,MAAmB,EAAEC,KAA0B,EAAE;IAC3D,KAAK,CAACD,MAAM,EAAEC,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,mBAXK,IAAI;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,mBAGA,CAAC,CAAC;IAAAA,eAAA,mBACF,CAAC,CAAC;IAAAA,eAAA,2BACM,CAAC,CAAC;IAAAA,eAAA,+BACX,CAAC;IAAAA,eAAA,wBACR,CAAC;IAAAA,eAAA,0BACmB,CAAC,CAAC;IAI5C,IAAI,CAACF,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACG,MAAM,GAAG,IAAI,CAACF,KAAK,CAACE,MAAM,IAAI,IAAI,CAACH,MAAM,CAACI,EAAE,CAACC,aAAa,EAAE;IACjE,IAAI,CAACL,MAAM,CAACM,kBAAkB,CAAC,IAAI,CAACH,MAAM,EAAE;MAACI,EAAE,EAAE,IAAI,CAACN,KAAK,CAACM;IAAE,CAAC,CAAC;IAGhE,IAAI,CAACC,EAAE,GAAGvB,IAAI,CAAcgB,KAAK,CAACO,EAAE,CAAC;IACrC,IAAI,CAACC,EAAE,GAAGxB,IAAI,CAAcgB,KAAK,CAACQ,EAAE,CAAC;IAMrC,MAAM;MAACC,QAAQ;MAAEC,UAAU,GAAGvB,EAAE,CAACwB;IAAgB,CAAC,GAAGX,KAAK;IAC1D,IAAIS,QAAQ,IAAIA,QAAQ,CAACG,MAAM,GAAG,CAAC,EAAE;MAAA,IAAAC,eAAA;MACnC,IAAI,CAACd,MAAM,CAACe,YAAY,EAAE;MAC1B,IAAI,CAACL,QAAQ,GAAGA,QAAQ;MACxB,CAAAI,eAAA,OAAI,CAACd,MAAM,CAACgB,GAAG,cAAAF,eAAA,uBAAfA,eAAA,CAAiBG,yBAAyB,CAAC,IAAI,CAACd,MAAM,EAAEO,QAAQ,EAAEC,UAAU,CAAC;IAC/E;IAEA,IAAI,CAACO,eAAe,EAAE;IAEtB,IAAI,CAACC,MAAM,GAAGlB,KAAK,CAACkB,MAAM,IAAI7B,eAAe,CAAC,IAAI,CAACU,MAAM,CAACI,EAAE,EAAE,IAAI,CAACD,MAAM,CAAC;IAC1E,IAAI,CAACiB,iBAAiB,GAAG,IAAIxB,sBAAsB,CAAC,IAAI,CAACI,MAAM,CAAC;EAClE;EAESqB,OAAOA,CAAA,EAAS;IACvB,IAAI,IAAI,CAAClB,MAAM,EAAE;MACf,IAAI,CAACH,MAAM,CAACI,EAAE,CAACkB,aAAa,CAAC,IAAI,CAACnB,MAAM,CAAC;MAEzC,IAAI,CAACoB,SAAS,GAAG,IAAI;IACvB;EACF;EAEAC,cAAcA,CAACC,WAAmB,EAAQ;IACxC,MAAMC,WAAW,GAAGzC,IAAI,CAAcwC,WAAW,CAAC;IAClD,IAAI,CAACL,iBAAiB,CAACO,gBAAgB,CAACD,WAAW,CAAC;IACpD,IAAI,CAACE,YAAY,GAAGH,WAAW;EACjC;EAGAI,aAAaA,CAACC,UAAkC,EAAQ;IACtD,KAAK,MAAM,CAACC,IAAI,EAAEC,MAAM,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACJ,UAAU,CAAC,EAAE;MACvD,MAAMJ,WAAW,GAAGzC,IAAI,CAAc+C,MAAM,CAAC;MAC7C,MAAMG,SAAS,GAAGC,kBAAkB,CAAC,IAAI,CAACjB,MAAM,EAAEY,IAAI,CAAC;MACvD,IAAI,CAACI,SAAS,EAAE;QACdjD,GAAG,CAACmD,IAAI,qDAAAC,MAAA,CAAoDP,IAAI,uBAAAO,MAAA,CAAkB,IAAI,CAAC/B,EAAE,mBAAA+B,MAAA,CAAcN,MAAM,CAACzB,EAAE,SAAK,EAAE;QACvH;MACF;MACA,MAAMgC,OAAO,GAAGpD,kBAAkB,CAACgD,SAAS,CAACK,MAAM,CAAC;MACpD,MAAM;QAACC,IAAI,EAAEC,UAAU;QAAEC,UAAU,EAAEC,IAAI;QAAEC,UAAU,EAAEC,MAAM;QAAEC,UAAU;QAAEC;MAAO,CAAC,GAAGT,OAAO;MAC7F,MAAMU,OAAO,GAAGd,SAAS,CAACe,QAAQ,KAAK,UAAU,GAAG,CAAC,GAAG,CAAC;MACzD,MAAMT,IAAI,GAAGpD,gBAAgB,CAACqD,UAAU,CAAC;MACzC,IAAI,CAACtB,iBAAiB,CAAC+B,SAAS,CAAChB,SAAS,CAACiB,QAAQ,EAAE1B,WAAW,EAAE;QAChEkB,IAAI;QACJH,IAAI;QACJK,MAAM;QACNO,MAAM,EAAE,CAAC;QACTN,UAAU;QACVC,OAAO;QACPC;MACF,CAAC,CAAC;IACJ;EACF;EAGAK,WAAWA,CAACC,QAAiC,EAAQ;IAKnD,KAAK,MAAM,CAACxB,IAAI,EAAEyB,KAAK,CAAC,IAAIvB,MAAM,CAACC,OAAO,CAACqB,QAAQ,CAAC,EAAE;MACpD,MAAME,OAAO,GAAG,IAAI,CAACtC,MAAM,CAACoC,QAAQ,CAACG,IAAI,CAAED,OAAO,IAAKA,OAAO,CAAC1B,IAAI,KAAKA,IAAI,CAAC;MAC7E,IAAI,CAAC0B,OAAO,EAAE;QACZvE,GAAG,CAACmD,IAAI,oBAAAC,MAAA,CAAoBP,IAAI,0BAAAO,MAAA,CAAuB,IAAI,CAAC/B,EAAE,EAAG,EAAE;QACnE;MACF;MACA,IAAI,CAACiD,KAAK,EAAE;QACVtE,GAAG,CAACmD,IAAI,sBAAAC,MAAA,CAAsBP,IAAI,0BAAAO,MAAA,CAAuB,IAAI,CAAC/B,EAAE,EAAG,EAAE;MACvE;MACA,QAAQkD,OAAO,CAAChB,IAAI;QAClB,KAAK,SAAS;UAEZ,IAAI,EAAEe,KAAK,YAAY9D,WAAW,CAAC,IAAI,EAAE8D,KAAK,CAACxB,MAAM,YAAYtC,WAAW,CAAC,EAAE;YAC7E,MAAM,IAAIiE,KAAK,CAAC,cAAc,CAAC;UACjC;UACA;QACF,KAAK,SAAS;UACZ,IAAI,EAAEH,KAAK,YAAY7D,YAAY,CAAC,EAAE;YACpC,MAAM,IAAIgE,KAAK,CAAC,eAAe,CAAC;UAClC;UACA;QACF,KAAK,SAAS;UACZzE,GAAG,CAACmD,IAAI,qBAAAC,MAAA,CAAqBP,IAAI,EAAG,EAAE;UACtC;QACF;UACE,MAAM,IAAI4B,KAAK,CAACF,OAAO,CAAChB,IAAI,CAAC;MAAC;MAGlC,IAAI,CAACc,QAAQ,CAACxB,IAAI,CAAC,GAAGyB,KAAK;IAC7B;EACF;EAEAI,WAAWA,CAACC,QAA6B,EAAE;IAEzC5B,MAAM,CAAC6B,MAAM,CAAC,IAAI,CAACD,QAAQ,EAAEA,QAAQ,CAAC;EACxC;EAMAE,IAAIA,CAACC,OASJ,EAAW;IAAA,IAAAC,kBAAA;IACV,MAAM;MACJC,UAAU,GAAG,IAAI,CAAClE,MAAM,CAACmE,oBAAoB,EAAE;MAC/CC,WAAW;MAEXC,aAAa;MACbC,WAAW,GAAG;IAIhB,CAAC,GAAGN,OAAO;IAEX,MAAMO,QAAQ,GAAGC,WAAW,CAAC,IAAI,CAACvE,KAAK,CAACwE,QAAQ,CAAC;IACjD,MAAMC,SAAkB,GAAGC,OAAO,CAAC,IAAI,CAAC/C,YAAY,CAAC;IACrD,MAAMgD,SAAS,GAAG,EAAAX,kBAAA,OAAI,CAACrC,YAAY,cAAAqC,kBAAA,uBAAjBA,kBAAA,CAAmBhE,KAAK,CAAC2E,SAAS,MAAK,QAAQ,GAAGxF,EAAE,CAACyF,cAAc,GAAGzF,EAAE,CAAC0F,YAAY;IACvG,MAAMC,WAAoB,GAAGC,MAAM,CAAChB,OAAO,CAACK,aAAa,CAAC,GAAG,CAAC;IAM9D,IAAI,CAAC,IAAI,CAACY,sBAAsB,EAAE,IAAIjB,OAAO,CAACI,WAAW,KAAK,CAAC,EAAE;MAE/D,OAAO,KAAK;IACd;IAEA,IAAI,CAACpE,MAAM,CAACI,EAAE,CAAC8E,UAAU,CAAC,IAAI,CAAC/E,MAAM,CAAC;IAEtC,IAAI,CAACiB,iBAAiB,CAAC+D,IAAI,CAAC,MAAM;MAChC,MAAMC,aAAa,GAAGC,cAAc,CAAC,IAAI,CAACpF,KAAK,CAACwE,QAAQ,CAAC;MACzD,MAAMa,iBAAsB,GAAG,IAAI;MACnC,IAAIA,iBAAiB,EAAE;QACrBA,iBAAiB,CAACC,KAAK,CAACH,aAAa,CAAC;MACxC;MAGA,IAAI,CAACI,cAAc,EAAE;MACrB,IAAI,CAACC,cAAc,EAAE;MAGrBlG,oBAAoB,CAAC,IAAI,CAACS,MAAM,EAAE,IAAI,CAACC,KAAK,CAACyF,UAAU,EAAE,MAAM;QAC7DlG,gBAAgB,CAAC,IAAI,CAACQ,MAAM,EAAE;UAAC2F,WAAW,EAAEzB,UAAU,CAACjE,KAAK,CAAC0F;QAAW,CAAC,EAAE,MAAM;UAE/E,IAAIjB,SAAS,IAAIK,WAAW,EAAE;YAAA,IAAAa,gBAAA;YAE5B,CAAAA,gBAAA,OAAI,CAAC5F,MAAM,CAACgB,GAAG,cAAA4E,gBAAA,uBAAfA,gBAAA,CAAiBC,qBAAqB,CACpCtB,QAAQ,EACRH,WAAW,IAAI,CAAC,EAChBQ,SAAS,EACTN,WAAW,EACXD,aAAa,IAAI,CAAC,CACnB;UAGH,CAAC,MAAM,IAAIK,SAAS,EAAE;YACpB,IAAI,CAAC1E,MAAM,CAACI,EAAE,CAAC0F,YAAY,CAACvB,QAAQ,EAAEH,WAAW,IAAI,CAAC,EAAEQ,SAAS,EAAEN,WAAW,CAAC;UACjF,CAAC,MAAM,IAAIS,WAAW,EAAE;YAAA,IAAAgB,gBAAA;YACtB,CAAAA,gBAAA,OAAI,CAAC/F,MAAM,CAACgB,GAAG,cAAA+E,gBAAA,uBAAfA,gBAAA,CAAiBC,mBAAmB,CAACzB,QAAQ,EAAED,WAAW,EAAEF,WAAW,IAAI,CAAC,EAAEC,aAAa,IAAI,CAAC,CAAC;UACnG,CAAC,MAAM;YACL,IAAI,CAACrE,MAAM,CAACI,EAAE,CAAC6F,UAAU,CAAC1B,QAAQ,EAAED,WAAW,EAAEF,WAAW,IAAI,CAAC,CAAC;UACpE;QACF,CAAC,CAAC;QAEF,IAAIkB,iBAAiB,EAAE;UACrBA,iBAAiB,CAACY,GAAG,EAAE;QACzB;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI;EACb;EAKUhF,eAAeA,CAAA,EAAG;IAC1B,MAAM;MAACd;IAAE,CAAC,GAAG,IAAI,CAACJ,MAAM;IACxBI,EAAE,CAAC+F,YAAY,CAAC,IAAI,CAAChG,MAAM,EAAE,IAAI,CAACK,EAAE,CAACL,MAAM,CAAC;IAC5CC,EAAE,CAAC+F,YAAY,CAAC,IAAI,CAAChG,MAAM,EAAE,IAAI,CAACM,EAAE,CAACN,MAAM,CAAC;IAC5CjB,GAAG,CAACkH,IAAI,CAACvG,yBAAyB,qBAAAyC,MAAA,CAAqB,IAAI,CAAC/B,EAAE,EAAG,EAAE;IACnEH,EAAE,CAACiG,WAAW,CAAC,IAAI,CAAClG,MAAM,CAAC;IAC3BjB,GAAG,CAACoH,OAAO,CAACzG,yBAAyB,qBAAAyC,MAAA,CAAqB,IAAI,CAAC/B,EAAE,EAAG,EAAE;IAItE,IAAIH,EAAE,CAACmG,KAAK,IAAIrH,GAAG,CAACsH,KAAK,GAAG,CAAC,EAAE;MAC7B,MAAMC,MAAM,GAAGrG,EAAE,CAACsG,mBAAmB,CAAC,IAAI,CAACvG,MAAM,EAAEC,EAAE,CAACuG,WAAW,CAAC;MAClE,IAAI,CAACF,MAAM,EAAE;QACX,MAAM,IAAI9C,KAAK,mBAAArB,MAAA,CAAmBlC,EAAE,CAACwG,iBAAiB,CAAC,IAAI,CAACzG,MAAM,CAAC,EAAG;MACxE;MAEAC,EAAE,CAACyG,eAAe,CAAC,IAAI,CAAC1G,MAAM,CAAC;MAC/B,MAAM2G,SAAS,GAAG1G,EAAE,CAACsG,mBAAmB,CAAC,IAAI,CAACvG,MAAM,EAAEC,EAAE,CAAC2G,eAAe,CAAC;MACzE,IAAI,CAACD,SAAS,EAAE;QACd,MAAM,IAAInD,KAAK,sBAAArB,MAAA,CAAsBlC,EAAE,CAACwG,iBAAiB,CAAC,IAAI,CAACzG,MAAM,CAAC,EAAG;MAC3E;IACF;EACF;EASA8E,sBAAsBA,CAAA,EAAG;IACvB,IAAI+B,kBAAkB,GAAG,IAAI;IAE7B,KAAK,MAAM,GAAGC,OAAO,CAAC,IAAIhF,MAAM,CAACC,OAAO,CAAC,IAAI,CAACgF,gBAAgB,CAAC,EAAE;MAC/DD,OAAO,CAACE,MAAM,EAAE;MAChBH,kBAAkB,GAAGA,kBAAkB,IAAIC,OAAO,CAACG,MAAM;IAC3D;IAEA,KAAK,MAAM,GAAGH,OAAO,CAAC,IAAIhF,MAAM,CAACC,OAAO,CAAC,IAAI,CAACqB,QAAQ,CAAC,EAAE;MAEvD,IAAI0D,OAAO,CAACG,MAAM,KAAKC,SAAS,EAAE;QAChCL,kBAAkB,GAAGA,kBAAkB,IAAIC,OAAO,CAACG,MAAM;MAC3D;IACF;IAEA,OAAOJ,kBAAkB;EAC3B;EAGAxB,cAAcA,CAAA,EAAG;IACf,IAAI,CAACxF,MAAM,CAACI,EAAE,CAAC8E,UAAU,CAAC,IAAI,CAAC/E,MAAM,CAAC;IAEtC,MAAM;MAACa;IAAG,CAAC,GAAG,IAAI,CAAChB,MAAM;IACzB,IAAI,CAACgB,GAAG,EAAE;MACR,MAAM,IAAI2C,KAAK,CAAC,UAAU,CAAC;IAC7B;IAEA,IAAI2D,WAAW,GAAG,CAAC;IACnB,IAAIC,kBAAkB,GAAG,CAAC;IAC1B,KAAK,MAAM9D,OAAO,IAAI,IAAI,CAACtC,MAAM,CAACoC,QAAQ,EAAE;MAC1C,MAAMC,KAAK,GAAG,IAAI,CAACD,QAAQ,CAACE,OAAO,CAAC1B,IAAI,CAAC;MACzC,IAAI,CAACyB,KAAK,EAAE;QACV,MAAM,IAAIG,KAAK,yBAAArB,MAAA,CAAyBmB,OAAO,CAAC1B,IAAI,UAAAO,MAAA,CAAO,IAAI,CAAC/B,EAAE,EAAG;MACvE;MACA,QAAQkD,OAAO,CAAChB,IAAI;QAClB,KAAK,SAAS;UAEZ,MAAM;YAACV;UAAI,CAAC,GAAG0B,OAAO;UACtB,MAAML,QAAQ,GAAGpC,GAAG,CAACwG,oBAAoB,CAAC,IAAI,CAACrH,MAAM,EAAE4B,IAAI,CAAC;UAC5D,IAAIqB,QAAQ,KAAKhE,EAAE,CAACqI,aAAa,EAAE;YACjC,MAAM,IAAI9D,KAAK,+BAAArB,MAAA,CAA+BP,IAAI,EAAG;UACvD;UACAf,GAAG,CAAC0G,mBAAmB,CAAC,IAAI,CAACvH,MAAM,EAAEoH,kBAAkB,EAAEnE,QAAQ,CAAC;UAElE,IAAII,KAAK,YAAY9D,WAAW,EAAE;YAChCsB,GAAG,CAAC2G,cAAc,CAACvI,EAAE,CAACwI,cAAc,EAAEL,kBAAkB,EAAE/D,KAAK,CAACrD,MAAM,CAAC;UACzE,CAAC,MAAM;YACLa,GAAG,CAAC6G,eAAe,CACjBzI,EAAE,CAACwI,cAAc,EACjBL,kBAAkB,EAClB/D,KAAK,CAACxB,MAAM,CAAC7B,MAAM,EACnBqD,KAAK,CAACH,MAAM,IAAI,CAAC,EACjBG,KAAK,CAACZ,IAAI,IAAIY,KAAK,CAACxB,MAAM,CAACa,UAAU,GAAGW,KAAK,CAACH,MAAM,CACrD;UACH;UACAkE,kBAAkB,IAAI,CAAC;UACvB;QAEF,KAAK,SAAS;UACZ,IAAI,EAAE/D,KAAK,YAAY7D,YAAY,CAAC,EAAE;YACpC,MAAM,IAAIgE,KAAK,CAAC,SAAS,CAAC;UAC5B;UACA,MAAMsD,OAAqB,GAAGzD,KAAK;UACnCxC,GAAG,CAAC8G,aAAa,CAAC1I,EAAE,CAAC2I,QAAQ,GAAGT,WAAW,CAAC;UAC5CtG,GAAG,CAACgH,WAAW,CAACf,OAAO,CAACgB,MAAM,EAAEhB,OAAO,CAAC9G,MAAM,CAAC;UAE/CmH,WAAW,IAAI,CAAC;UAChB;QAEF,KAAK,SAAS;UAEZ;QAEF,KAAK,SAAS;QACd,KAAK,mBAAmB;UACtB,MAAM,IAAI3D,KAAK,kBAAArB,MAAA,CAAkBmB,OAAO,CAAChB,IAAI,8BAA2B;MAAC;IAE/E;EACF;EAEAgD,cAAcA,CAAA,EAAG;IACf,KAAK,MAAMyC,aAAa,IAAI,IAAI,CAAC/G,MAAM,CAAC0C,QAAQ,IAAI,EAAE,EAAE;MACtD,MAAM;QAAC9B,IAAI;QAAEqB,QAAQ;QAAEX,IAAI;QAAE6E;MAAW,CAAC,GAAGY,aAAa;MACzD,MAAM1E,KAAK,GAAG,IAAI,CAACK,QAAQ,CAAC9B,IAAI,CAAC,IAAIuF,WAAW;MAChD,IAAI9D,KAAK,KAAK6D,SAAS,EAAE;QACvB5H,UAAU,CAAC,IAAI,CAACO,MAAM,CAACI,EAAE,EAAEgD,QAAQ,EAAEX,IAAI,EAAEe,KAAK,CAAC;MACnD;IACF;EACF;AACF;AAGA,SAASgB,WAAWA,CAClBC,QAA2B,EAC+E;EAE1G,QAAQA,QAAQ;IACd,KAAK,YAAY;MAAE,OAAOrF,EAAE,CAAC+I,MAAM;IACnC,KAAK,WAAW;MAAE,OAAO/I,EAAE,CAACgJ,KAAK;IACjC,KAAK,YAAY;MAAE,OAAOhJ,EAAE,CAACiJ,UAAU;IACvC,KAAK,WAAW;MAAE,OAAOjJ,EAAE,CAACkJ,SAAS;IACrC,KAAK,eAAe;MAAE,OAAOlJ,EAAE,CAACmJ,SAAS;IACzC,KAAK,gBAAgB;MAAE,OAAOnJ,EAAE,CAACoJ,cAAc;IAC/C,KAAK,cAAc;MAAE,OAAOpJ,EAAE,CAACqJ,YAAY;IAC3C;MAAS,MAAM,IAAI9E,KAAK,CAACc,QAAQ,CAAC;EAAC;AAEvC;AAGA,SAASY,cAAcA,CAACZ,QAA2B,EAAuC;EAExF,QAAQA,QAAQ;IACd,KAAK,YAAY;MAAE,OAAOrF,EAAE,CAAC+I,MAAM;IACnC,KAAK,WAAW;MAAE,OAAO/I,EAAE,CAACgJ,KAAK;IACjC,KAAK,YAAY;MAAE,OAAOhJ,EAAE,CAACgJ,KAAK;IAClC,KAAK,WAAW;MAAE,OAAOhJ,EAAE,CAACgJ,KAAK;IACjC,KAAK,eAAe;MAAE,OAAOhJ,EAAE,CAACmJ,SAAS;IACzC,KAAK,gBAAgB;MAAE,OAAOnJ,EAAE,CAACmJ,SAAS;IAC1C,KAAK,cAAc;MAAE,OAAOnJ,EAAE,CAACmJ,SAAS;IACxC;MAAS,MAAM,IAAI5E,KAAK,CAACc,QAAQ,CAAC;EAAC;AAEvC;AAgBA,SAASrC,kBAAkBA,CAACjB,MAAoB,EAAEY,IAAY,EAA0B;EACtF,OAAOZ,MAAM,CAACW,UAAU,CAAC4B,IAAI,CAAED,OAAO,IAAKA,OAAO,CAAC1B,IAAI,KAAKA,IAAI,CAAC,IAAI,IAAI;AAC3E"}
1
+ {"version":3,"file":"webgl-render-pipeline.js","names":["RenderPipeline","cast","log","decodeVertexFormat","GL","getWebGLDataType","getShaderLayout","withDeviceParameters","withGLParameters","setUniform","WEBGLBuffer","WEBGLTexture","WEBGLVertexArrayObject","LOG_PROGRAM_PERF_PRIORITY","WEBGLRenderPipeline","constructor","device","props","_defineProperty","handle","gl","createProgram","setSpectorMetadata","id","vs","fs","varyings","bufferMode","SEPARATE_ATTRIBS","length","_this$device$gl","assertWebGL2","gl2","transformFeedbackVaryings","_compileAndLink","layout","vertexArrayObject","destroy","deleteProgram","destroyed","setIndexBuffer","indexBuffer","webglBuffer","setElementBuffer","_indexBuffer","setAttributes","attributes","name","buffer","Object","entries","attribute","getAttributeLayout","warn","concat","decoded","format","type","typeString","components","size","byteLength","stride","normalized","integer","divisor","stepMode","setBuffer","location","offset","setBindings","bindings","value","binding","find","Error","setUniforms","uniforms","assign","draw","options","_this$_indexBuffer","renderPass","vertexCount","instanceCount","firstVertex","drawMode","getDrawMode","topology","isIndexed","Boolean","indexType","UNSIGNED_SHORT","UNSIGNED_INT","isInstanced","Number","_areTexturesRenderable","useProgram","bind","primitiveMode","getGLPrimitive","transformFeedback","begin","_applyBindings","_applyUniforms","webglRenderPass","parameters","glParameters","_this$device$gl2","drawElementsInstanced","drawElements","_this$device$gl3","drawArraysInstanced","drawArrays","end","attachShader","time","linkProgram","timeEnd","debug","level","linked","getProgramParameter","LINK_STATUS","getProgramInfoLog","validateProgram","validated","VALIDATE_STATUS","texturesRenderable","texture","_textureUniforms","update","loaded","undefined","textureUnit","uniformBufferIndex","getUniformBlockIndex","INVALID_INDEX","uniformBlockBinding","bindBufferBase","UNIFORM_BUFFER","bindBufferRange","activeTexture","TEXTURE0","bindTexture","target","uniformLayout","POINTS","LINES","LINE_STRIP","LINE_LOOP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN"],"sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"sourcesContent":["import type {\n RenderPipelineProps,\n RenderPass,\n Buffer,\n Binding,\n ShaderLayout,\n PrimitiveTopology,\n // BindingLayout,\n AttributeLayout\n} from '@luma.gl/api';\nimport {RenderPipeline, cast, log, decodeVertexFormat} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\n\nimport {getWebGLDataType} from '../converters/texture-formats';\nimport {getShaderLayout} from '../helpers/get-shader-layout';\nimport {withDeviceParameters, withGLParameters} from '../converters/device-parameters';\nimport {setUniform} from '../helpers/set-uniform';\n// import {copyUniform, checkUniformValues} from '../../classes/uniforms';\n\nimport {WebGLDevice} from '../webgl-device';\nimport {WEBGLBuffer} from './webgl-buffer';\nimport {WEBGLShader} from './webgl-shader';\nimport {WEBGLTexture} from './webgl-texture';\nimport {WEBGLVertexArrayObject} from '../objects/webgl-vertex-array-object';\nimport {WEBGLRenderPass} from './webgl-render-pass';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\n/** Creates a new render pipeline */\nexport class WEBGLRenderPipeline extends RenderPipeline {\n device: WebGLDevice;\n handle: WebGLProgram;\n vs: WEBGLShader;\n fs: WEBGLShader;\n layout: ShaderLayout;\n\n // configuration: ProgramConfiguration;\n // Experimental flag to avoid deleting Program object while it is cached\n varyings: string[] | null = null;\n vertexArrayObject: WEBGLVertexArrayObject;\n _indexBuffer?: Buffer;\n uniforms: Record<string, any> = {};\n bindings: Record<string, any> = {};\n _textureUniforms: Record<string, any> = {};\n _textureIndexCounter: number = 0;\n _uniformCount: number = 0;\n _uniformSetters: Record<string, Function> = {}; // TODO are these used?\n\n constructor(device: WebGLDevice, props: RenderPipelineProps) {\n super(device, props);\n this.device = device;\n this.handle = this.props.handle || this.device.gl.createProgram();\n this.device.setSpectorMetadata(this.handle, {id: this.props.id});\n\n // Create shaders if needed\n this.vs = cast<WEBGLShader>(props.vs);\n this.fs = cast<WEBGLShader>(props.fs);\n // assert(this.vs.stage === 'vertex');\n // assert(this.fs.stage === 'fragment');\n\n // Setup varyings if supplied\n // @ts-expect-error WebGL only\n const {varyings, bufferMode = GL.SEPARATE_ATTRIBS} = props;\n if (varyings && varyings.length > 0) {\n this.device.assertWebGL2();\n this.varyings = varyings;\n this.device.gl2?.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n\n this.layout = props.layout || getShaderLayout(this.device.gl, this.handle);\n this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);\n }\n\n override destroy(): void {\n if (this.handle) {\n this.device.gl.deleteProgram(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n setIndexBuffer(indexBuffer: Buffer): void {\n const webglBuffer = cast<WEBGLBuffer>(indexBuffer);\n this.vertexArrayObject.setElementBuffer(webglBuffer);\n this._indexBuffer = indexBuffer;\n }\n\n /** @todo needed for portable model */\n setAttributes(attributes: Record<string, Buffer>): void {\n for (const [name, buffer] of Object.entries(attributes)) {\n const webglBuffer = cast<WEBGLBuffer>(buffer);\n const attribute = getAttributeLayout(this.layout, name);\n if (!attribute) {\n log.warn(`Ignoring buffer supplied for unknown attribute \"${name}\" in pipeline \"${this.id}\" (buffer \"${buffer.id}\")`)();\n continue; // eslint-disable-line no-continue\n }\n const decoded = decodeVertexFormat(attribute.format);\n const {type: typeString, components: size, byteLength: stride, normalized, integer} = decoded;\n const divisor = attribute.stepMode === 'instance' ? 1 : 0;\n const type = getWebGLDataType(typeString);\n this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {\n size,\n type,\n stride,\n offset: 0,\n normalized,\n integer,\n divisor\n });\n }\n }\n\n /** @todo needed for portable model */\n setBindings(bindings: Record<string, Binding>): void {\n // if (log.priority >= 2) {\n // checkUniformValues(uniforms, this.id, this._uniformSetters);\n // }\n\n for (const [name, value] of Object.entries(bindings)) {\n const binding = this.layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n log.warn(`Unknown binding ${name} in render pipeline ${this.id}`)();\n continue; // eslint-disable-line no-continue\n }\n if (!value) {\n log.warn(`Unsetting binding ${name} in render pipeline ${this.id}`)();\n }\n switch (binding.type) {\n case 'uniform':\n // @ts-expect-error\n if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {\n throw new Error('buffer value');\n }\n break;\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture value');\n }\n break;\n case 'sampler':\n log.warn(`Ignoring sampler ${name}`)();\n break;\n default:\n throw new Error(binding.type);\n }\n\n this.bindings[name] = value;\n }\n }\n\n setUniforms(uniforms: Record<string, any>) {\n // TODO - check against layout\n Object.assign(this.uniforms, uniforms);\n }\n\n /** @todo needed for portable model\n * @note The WebGL API is offers many ways to draw things\n * This function unifies those ways into a single call using common parameters with sane defaults\n */\n draw(options: {\n renderPass: RenderPass;\n vertexCount?: number;\n indexCount?: number;\n instanceCount?: number;\n firstVertex?: number;\n firstIndex?: number;\n firstInstance?: number;\n baseVertex?: number;\n }): boolean {\n const {\n renderPass,\n vertexCount,\n // indexCount,\n instanceCount,\n firstVertex = 0,\n // firstIndex,\n // firstInstance,\n // baseVertex\n } = options;\n\n const drawMode = getDrawMode(this.props.topology);\n const isIndexed: boolean = Boolean(this._indexBuffer);\n const indexType = this._indexBuffer?.props.indexType === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;\n const isInstanced: boolean = Number(options.instanceCount) > 0;\n\n // Avoid WebGL draw call when not rendering any data or values are incomplete\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n if (!this._areTexturesRenderable() || options.vertexCount === 0) {\n // (isInstanced && instanceCount === 0)\n return false;\n }\n\n this.device.gl.useProgram(this.handle);\n\n this.vertexArrayObject.bind(() => {\n const primitiveMode = getGLPrimitive(this.props.topology);\n const transformFeedback: any = null;\n if (transformFeedback) {\n transformFeedback.begin(primitiveMode);\n }\n\n // We have to apply bindings before every draw call since other draw calls will overwrite\n this._applyBindings();\n this._applyUniforms();\n\n const webglRenderPass = renderPass as WEBGLRenderPass;\n\n // TODO - double context push/pop\n withDeviceParameters(this.device, this.props.parameters, () => {\n withGLParameters(this.device, webglRenderPass.glParameters, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n // ANGLE_instanced_arrays extension\n this.device.gl2?.drawElementsInstanced(\n drawMode,\n vertexCount || 0, // indexCount?\n indexType,\n firstVertex,\n instanceCount || 0\n );\n // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {\n // this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex); // indexCount?\n } else if (isInstanced) {\n this.device.gl2?.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);\n } else {\n this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n });\n\n return true;\n }\n\n // setAttributes(attributes: Record<string, Buffer>): void {}\n // setBindings(bindings: Record<string, Binding>): void {}\n\n protected _compileAndLink() {\n const {gl} = this.device;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n\n // Avoid checking program linking error in production\n // @ts-expect-error\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // PRIVATE METHODS\n\n /**\n * Checks if all texture-values uniforms are renderable (i.e. loaded)\n * Update a texture if needed (e.g. from video)\n * Note: This is currently done before every draw call\n */\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const [, texture] of Object.entries(this._textureUniforms)) {\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n for (const [, texture] of Object.entries(this.bindings)) {\n // texture.update();\n if (texture.loaded !== undefined) {\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n }\n\n return texturesRenderable;\n }\n\n /** Apply any bindings */\n _applyBindings() {\n this.device.gl.useProgram(this.handle);\n\n const {gl2} = this.device;\n if (!gl2) {\n throw new Error('bindings');\n }\n\n let textureUnit = 0;\n let uniformBufferIndex = 0;\n for (const binding of this.layout.bindings) {\n const value = this.bindings[binding.name];\n if (!value) {\n throw new Error(`No value for binding ${binding.name} in ${this.id}`);\n }\n switch (binding.type) {\n case 'uniform':\n // Set buffer\n const {name} = binding;\n const location = gl2.getUniformBlockIndex(this.handle, name);\n if (location === GL.INVALID_INDEX) {\n throw new Error(`Invalid uniform block name ${name}`);\n }\n gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);\n // console.debug(binding, location);\n if (value instanceof WEBGLBuffer) {\n gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);\n } else {\n gl2.bindBufferRange(\n GL.UNIFORM_BUFFER,\n uniformBufferIndex,\n value.buffer.handle,\n value.offset || 0,\n value.size || value.buffer.byteLength - value.offset\n );\n }\n uniformBufferIndex += 1;\n break;\n\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture');\n }\n const texture: WEBGLTexture = value;\n gl2.activeTexture(GL.TEXTURE0 + textureUnit);\n gl2.bindTexture(texture.target, texture.handle);\n // gl2.bindSampler(textureUnit, sampler.handle);\n textureUnit += 1;\n break;\n\n case 'sampler':\n // ignore\n break;\n\n case 'storage':\n case 'read-only-storage':\n throw new Error(`binding type '${binding.type}' not supported in WebGL`);\n }\n }\n }\n\n _applyUniforms() {\n for (const uniformLayout of this.layout.uniforms || []) {\n const {name, location, type, textureUnit} = uniformLayout;\n const value = this.uniforms[name] || textureUnit;\n if (value !== undefined) {\n setUniform(this.device.gl, location, type, value);\n }\n }\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getDrawMode(\n topology: PrimitiveTopology\n): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.LINE_LOOP | GL.TRIANGLES | GL.TRIANGLE_STRIP | GL.TRIANGLE_FAN {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINE_STRIP;\n case 'line-loop': return GL.LINE_LOOP;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLE_STRIP;\n case 'triangle-fan': return GL.TRIANGLE_FAN;\n default: throw new Error(topology);\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINES;\n case 'line-loop': return GL.LINES;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLES;\n case 'triangle-fan': return GL.TRIANGLES;\n default: throw new Error(topology);\n }\n}\n\n// function getAttributesByLocation(\n// attributes: Record<string, Buffer>,\n// layout: ShaderLayout\n// ): Record<number, Buffer> {\n// const byLocation: Record<number, Buffer> = {};\n// for (const [name, buffer] of Object.entries(attributes)) {\n// const attribute = getAttributeLayout(layout, name);\n// if (attribute) {\n// byLocation[attribute.location] = buffer;\n// }\n// }\n// return byLocation;\n// }\n\nfunction getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | null {\n return layout.attributes.find((binding) => binding.name === name) || null;\n}\n\n/* TODO\nfunction getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {\n const binding = layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n throw new Error(`Unknown binding ${name}`);\n }\n return binding;\n}\n*/\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Sampler, SamplerProps } from '@luma.gl/api';
2
- import type { GLSamplerParameters } from '../../types/webgl';
2
+ import { GLSamplerParameters } from '@luma.gl/constants';
3
3
  import type { WebGLDevice } from '../webgl-device';
4
4
  /**
5
5
  * Sampler object -
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-sampler.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,OAAO;IACvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;gBAE7B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY;IAU3C,OAAO,IAAI,IAAI;IAQf,QAAQ,IAAI,MAAM;IAI3B,4CAA4C;IAC5C,OAAO,CAAC,qBAAqB;CAgB9B"}
1
+ {"version":3,"file":"webgl-sampler.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,cAAc,CAAC;AACnD,OAAO,EAAK,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,OAAO;IACvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;gBAE7B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY;IAU3C,OAAO,IAAI,IAAI;IAQf,QAAQ,IAAI,MAAM;IAI3B,4CAA4C;IAC5C,OAAO,CAAC,qBAAqB;CAgB9B"}
@@ -1,6 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import { Sampler } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
3
+ import { GL } from '@luma.gl/constants';
4
4
  import { convertSamplerParametersToWebGL } from "../converters/sampler-parameters.js";
5
5
  export class WEBGLSampler extends Sampler {
6
6
  constructor(device, props) {
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-sampler.js","names":["Sampler","GL","convertSamplerParametersToWebGL","WEBGLSampler","constructor","device","props","_defineProperty","parameters","isWebGL2","handle","gl2","createSampler","_setSamplerParameters","destroy","deleteSampler","undefined","toString","concat","id","JSON","stringify","pname","value","Object","entries","param","Number","TEXTURE_MIN_LOD","TEXTURE_MAX_LOD","samplerParameterf","samplerParameteri"],"sources":["../../../src/adapter/resources/webgl-sampler.ts"],"sourcesContent":["// luma.gl, MIT license\n\nimport {Sampler, SamplerProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport type {GLSamplerParameters} from '../../types/webgl';\nimport {convertSamplerParametersToWebGL} from '../converters/sampler-parameters';\nimport type {WebGLDevice} from '../webgl-device';\n\n/**\n * Sampler object -\n * Under WebGL2 we create an actual WebGL sampler\n * Under WebGL1, we just store the sampler parameters\n * so that they can be set directly on the texture\n * https://github.com/WebGLSamples/WebGL2Samples/blob/master/samples/sampler_object.html\n */\nexport class WEBGLSampler extends Sampler {\n readonly device: WebGLDevice;\n readonly handle: WebGLSampler;\n readonly parameters: GLSamplerParameters;\n\n constructor(device: WebGLDevice, props: SamplerProps) {\n super(device, props);\n this.device = device;\n this.parameters = convertSamplerParametersToWebGL(props);\n if (this.device.isWebGL2) {\n this.handle = this.handle || this.device.gl2.createSampler();\n this._setSamplerParameters(this.parameters);\n }\n }\n\n override destroy(): void {\n if (this.handle) {\n this.device.gl2.deleteSampler(this.handle);\n // @ts-expect-error\n this.handle = undefined;\n }\n }\n\n override toString(): string {\n return `Sampler(${this.id},${JSON.stringify(this.props)})`;\n }\n\n /** Set sampler parameters on the sampler */\n private _setSamplerParameters(parameters: GLSamplerParameters): void {\n for (const [pname, value] of Object.entries(parameters)) {\n // Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.\n // For now, pick the float version for parameters specified as GLfloat.\n const param = Number(pname);\n switch (param) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.device.gl2.samplerParameterf(this.handle, param, value);\n break;\n default:\n this.device.gl2.samplerParameteri(this.handle, param, value);\n break;\n }\n }\n }\n}\n"],"mappings":";AAEA,SAAQA,OAAO,QAAqB,cAAc;AAClD,OAAOC,EAAE,MAAM,oBAAoB;AAAC,SAE5BC,+BAA+B;AAUvC,OAAO,MAAMC,YAAY,SAASH,OAAO,CAAC;EAKxCI,WAAWA,CAACC,MAAmB,EAAEC,KAAmB,EAAE;IACpD,KAAK,CAACD,MAAM,EAAEC,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACrB,IAAI,CAACF,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACG,UAAU,GAAGN,+BAA+B,CAACI,KAAK,CAAC;IACxD,IAAI,IAAI,CAACD,MAAM,CAACI,QAAQ,EAAE;MACxB,IAAI,CAACC,MAAM,GAAG,IAAI,CAACA,MAAM,IAAI,IAAI,CAACL,MAAM,CAACM,GAAG,CAACC,aAAa,EAAE;MAC5D,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACL,UAAU,CAAC;IAC7C;EACF;EAESM,OAAOA,CAAA,EAAS;IACvB,IAAI,IAAI,CAACJ,MAAM,EAAE;MACf,IAAI,CAACL,MAAM,CAACM,GAAG,CAACI,aAAa,CAAC,IAAI,CAACL,MAAM,CAAC;MAE1C,IAAI,CAACA,MAAM,GAAGM,SAAS;IACzB;EACF;EAESC,QAAQA,CAAA,EAAW;IAC1B,kBAAAC,MAAA,CAAkB,IAAI,CAACC,EAAE,OAAAD,MAAA,CAAIE,IAAI,CAACC,SAAS,CAAC,IAAI,CAACf,KAAK,CAAC;EACzD;EAGQO,qBAAqBA,CAACL,UAA+B,EAAQ;IACnE,KAAK,MAAM,CAACc,KAAK,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACjB,UAAU,CAAC,EAAE;MAGvD,MAAMkB,KAAK,GAAGC,MAAM,CAACL,KAAK,CAAC;MAC3B,QAAQI,KAAK;QACX,KAAKzB,EAAE,CAAC2B,eAAe;QACvB,KAAK3B,EAAE,CAAC4B,eAAe;UACrB,IAAI,CAACxB,MAAM,CAACM,GAAG,CAACmB,iBAAiB,CAAC,IAAI,CAACpB,MAAM,EAAEgB,KAAK,EAAEH,KAAK,CAAC;UAC5D;QACF;UACE,IAAI,CAAClB,MAAM,CAACM,GAAG,CAACoB,iBAAiB,CAAC,IAAI,CAACrB,MAAM,EAAEgB,KAAK,EAAEH,KAAK,CAAC;UAC5D;MAAM;IAEZ;EACF;AACF"}
1
+ {"version":3,"file":"webgl-sampler.js","names":["Sampler","GL","convertSamplerParametersToWebGL","WEBGLSampler","constructor","device","props","_defineProperty","parameters","isWebGL2","handle","gl2","createSampler","_setSamplerParameters","destroy","deleteSampler","undefined","toString","concat","id","JSON","stringify","pname","value","Object","entries","param","Number","TEXTURE_MIN_LOD","TEXTURE_MAX_LOD","samplerParameterf","samplerParameteri"],"sources":["../../../src/adapter/resources/webgl-sampler.ts"],"sourcesContent":["// luma.gl, MIT license\n\nimport {Sampler, SamplerProps} from '@luma.gl/api';\nimport {GL, GLSamplerParameters} from '@luma.gl/constants';\nimport {convertSamplerParametersToWebGL} from '../converters/sampler-parameters';\nimport type {WebGLDevice} from '../webgl-device';\n\n/**\n * Sampler object -\n * Under WebGL2 we create an actual WebGL sampler\n * Under WebGL1, we just store the sampler parameters\n * so that they can be set directly on the texture\n * https://github.com/WebGLSamples/WebGL2Samples/blob/master/samples/sampler_object.html\n */\nexport class WEBGLSampler extends Sampler {\n readonly device: WebGLDevice;\n readonly handle: WebGLSampler;\n readonly parameters: GLSamplerParameters;\n\n constructor(device: WebGLDevice, props: SamplerProps) {\n super(device, props);\n this.device = device;\n this.parameters = convertSamplerParametersToWebGL(props);\n if (this.device.isWebGL2) {\n this.handle = this.handle || this.device.gl2.createSampler();\n this._setSamplerParameters(this.parameters);\n }\n }\n\n override destroy(): void {\n if (this.handle) {\n this.device.gl2.deleteSampler(this.handle);\n // @ts-expect-error\n this.handle = undefined;\n }\n }\n\n override toString(): string {\n return `Sampler(${this.id},${JSON.stringify(this.props)})`;\n }\n\n /** Set sampler parameters on the sampler */\n private _setSamplerParameters(parameters: GLSamplerParameters): void {\n for (const [pname, value] of Object.entries(parameters)) {\n // Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.\n // For now, pick the float version for parameters specified as GLfloat.\n const param = Number(pname);\n switch (param) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.device.gl2.samplerParameterf(this.handle, param, value);\n break;\n default:\n this.device.gl2.samplerParameteri(this.handle, param, value);\n break;\n }\n }\n }\n}\n"],"mappings":";AAEA,SAAQA,OAAO,QAAqB,cAAc;AAClD,SAAQC,EAAE,QAA4B,oBAAoB;AAAC,SACnDC,+BAA+B;AAUvC,OAAO,MAAMC,YAAY,SAASH,OAAO,CAAC;EAKxCI,WAAWA,CAACC,MAAmB,EAAEC,KAAmB,EAAE;IACpD,KAAK,CAACD,MAAM,EAAEC,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACrB,IAAI,CAACF,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACG,UAAU,GAAGN,+BAA+B,CAACI,KAAK,CAAC;IACxD,IAAI,IAAI,CAACD,MAAM,CAACI,QAAQ,EAAE;MACxB,IAAI,CAACC,MAAM,GAAG,IAAI,CAACA,MAAM,IAAI,IAAI,CAACL,MAAM,CAACM,GAAG,CAACC,aAAa,EAAE;MAC5D,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACL,UAAU,CAAC;IAC7C;EACF;EAESM,OAAOA,CAAA,EAAS;IACvB,IAAI,IAAI,CAACJ,MAAM,EAAE;MACf,IAAI,CAACL,MAAM,CAACM,GAAG,CAACI,aAAa,CAAC,IAAI,CAACL,MAAM,CAAC;MAE1C,IAAI,CAACA,MAAM,GAAGM,SAAS;IACzB;EACF;EAESC,QAAQA,CAAA,EAAW;IAC1B,kBAAAC,MAAA,CAAkB,IAAI,CAACC,EAAE,OAAAD,MAAA,CAAIE,IAAI,CAACC,SAAS,CAAC,IAAI,CAACf,KAAK,CAAC;EACzD;EAGQO,qBAAqBA,CAACL,UAA+B,EAAQ;IACnE,KAAK,MAAM,CAACc,KAAK,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACjB,UAAU,CAAC,EAAE;MAGvD,MAAMkB,KAAK,GAAGC,MAAM,CAACL,KAAK,CAAC;MAC3B,QAAQI,KAAK;QACX,KAAKzB,EAAE,CAAC2B,eAAe;QACvB,KAAK3B,EAAE,CAAC4B,eAAe;UACrB,IAAI,CAACxB,MAAM,CAACM,GAAG,CAACmB,iBAAiB,CAAC,IAAI,CAACpB,MAAM,EAAEgB,KAAK,EAAEH,KAAK,CAAC;UAC5D;QACF;UACE,IAAI,CAAClB,MAAM,CAACM,GAAG,CAACoB,iBAAiB,CAAC,IAAI,CAACrB,MAAM,EAAEgB,KAAK,EAAEH,KAAK,CAAC;UAC5D;MAAM;IAEZ;EACF;AACF"}
@@ -1,10 +1,33 @@
1
1
  import { Device, TextureProps, Sampler, SamplerProps, TypedArray } from '@luma.gl/api';
2
2
  import { Texture } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import type { GLSamplerParameters } from '../../types/webgl';
3
+ import { GL, GLSamplerParameters } from '@luma.gl/constants';
5
4
  import { WebGLDevice } from '../webgl-device';
6
5
  import { WEBGLSampler } from './webgl-sampler';
7
- export type { TextureProps };
6
+ export declare type WEBGLTextureProps = TextureProps & {
7
+ /** @deprecated use props.sampler */
8
+ parameters?: Record<number, number>;
9
+ /** @deprecated use props.data */
10
+ pixels?: any;
11
+ /** @deprecated use props.format */
12
+ dataFormat?: number | null;
13
+ /** @deprecated rarely supported */
14
+ border?: number;
15
+ /** @deprecated WebGL only. */
16
+ pixelStore?: object;
17
+ /** @deprecated WebGL only. */
18
+ textureUnit?: number;
19
+ /** @deprecated WebGL only. Use dimension. */
20
+ target?: number;
21
+ };
22
+ export declare const DEFAULT_WEBGL_TEXTURE_PROPS: {
23
+ parameters: {};
24
+ pixelStore: {};
25
+ pixels: any;
26
+ border: number;
27
+ dataFormat: any;
28
+ textureUnit: any;
29
+ target: any;
30
+ };
8
31
  export declare type TextureSourceData = TypedArray | ImageData | HTMLImageElement | HTMLCanvasElement | ImageBitmap | HTMLVideoElement;
9
32
  declare type SetImageDataOptions = {
10
33
  target?: number;
@@ -13,7 +36,7 @@ declare type SetImageDataOptions = {
13
36
  width?: number;
14
37
  height?: number;
15
38
  depth?: number;
16
- format?: any;
39
+ glFormat?: GL;
17
40
  type?: any;
18
41
  offset?: number;
19
42
  data: any;
@@ -51,7 +74,7 @@ declare type SetSubImageDataOptions = {
51
74
  width?: number;
52
75
  height?: number;
53
76
  depth?: number;
54
- format?: any;
77
+ glFormat?: any;
55
78
  type?: any;
56
79
  offset?: number;
57
80
  data: any;
@@ -74,18 +97,16 @@ declare type SetImageData3DOptions = {
74
97
  data: any;
75
98
  parameters?: Record<GL, any>;
76
99
  };
77
- export declare class WEBGLTexture extends Texture {
100
+ export declare class WEBGLTexture extends Texture<WEBGLTextureProps> {
78
101
  static FACES: number[];
79
102
  readonly MAX_ATTRIBUTES: number;
80
103
  readonly device: WebGLDevice;
81
104
  readonly gl: WebGLRenderingContext;
82
105
  readonly gl2: WebGL2RenderingContext | null;
83
106
  readonly handle: WebGLTexture;
84
- data: any;
85
- width: number;
86
- height: number;
87
- depth: number;
88
- format: GL;
107
+ /** Sampler object (currently unused) */
108
+ sampler: WEBGLSampler;
109
+ glFormat: GL;
89
110
  type: GL;
90
111
  dataFormat: GL;
91
112
  mipmaps: boolean;
@@ -100,8 +121,6 @@ export declare class WEBGLTexture extends Texture {
100
121
  * */
101
122
  target: GL;
102
123
  textureUnit: number;
103
- /** Sampler object (currently unused) */
104
- sampler: WEBGLSampler;
105
124
  /**
106
125
  * Program.draw() checks the loaded flag of all textures to avoid
107
126
  * Textures that are still loading from promises
@@ -113,11 +132,11 @@ export declare class WEBGLTexture extends Texture {
113
132
  parameters: any;
114
133
  lastTime: number;
115
134
  };
116
- constructor(device: Device, props: TextureProps);
135
+ constructor(device: Device, props: WEBGLTextureProps);
117
136
  destroy(): void;
118
137
  toString(): string;
119
- initialize(props?: TextureProps): this;
120
- initializeCube(props?: TextureProps): this;
138
+ initialize(props?: WEBGLTextureProps): this;
139
+ initializeCube(props?: WEBGLTextureProps): this;
121
140
  setSampler(sampler?: Sampler | SamplerProps): this;
122
141
  /**
123
142
  * If size has changed, reinitializes with current format
@@ -137,7 +156,7 @@ export declare class WEBGLTexture extends Texture {
137
156
  * Note: does not allocate storage
138
157
  * Redefines an area of an existing texture
139
158
  */
140
- setSubImageData({ target, pixels, data, x, y, width, height, level, format, type, dataFormat, compressed, offset, parameters }: SetSubImageDataOptions): void;
159
+ setSubImageData({ target, pixels, data, x, y, width, height, level, glFormat, type, dataFormat, compressed, offset, parameters }: SetSubImageDataOptions): void;
141
160
  /**
142
161
  * Defines a two-dimensional texture image or cube-map texture image with
143
162
  * pixels from the current framebuffer (rather than from client memory).
@@ -157,13 +176,13 @@ export declare class WEBGLTexture extends Texture {
157
176
  data: any;
158
177
  dataType: string;
159
178
  };
160
- _deduceParameters(opts: TextureProps): {
179
+ _deduceParameters(opts: WEBGLTextureProps): {
161
180
  dataFormat: number;
162
181
  type: number;
163
182
  compressed: boolean;
164
183
  width: number;
165
184
  height: number;
166
- format: number | import("@luma.gl/api").TextureFormat;
185
+ format: import("@luma.gl/api").TextureFormat;
167
186
  data: string | HTMLVideoElement | import("@luma.gl/api").TextureData | Promise<import("@luma.gl/api").TextureData> | import("modules/api/dist/adapter/resources/texture").CubeTextureData;
168
187
  };
169
188
  _deduceImageSize(data: any, width: any, height: any): {
@@ -190,4 +209,5 @@ export declare class WEBGLTexture extends Texture {
190
209
  /** @deprecated For LegacyTexture subclass */
191
210
  protected _getWebGL1NPOTParameterOverride(pname: number, value: number): number;
192
211
  }
212
+ export {};
193
213
  //# sourceMappingURL=webgl-texture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-texture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgl-texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-texture.ts"],"names":[],"mappings":"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"}