@luma.gl/webgpu 9.0.0-alpha.16 → 9.0.0-alpha.17

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 (199) hide show
  1. package/dist/.DS_Store +0 -0
  2. package/dist/adapter/.DS_Store +0 -0
  3. package/dist/adapter/helpers/accessor-to-format.js +1 -100
  4. package/dist/adapter/helpers/accessor-to-format.js.map +1 -0
  5. package/dist/adapter/helpers/convert-texture-format.d.ts +1 -1
  6. package/dist/adapter/helpers/convert-texture-format.js +5 -5
  7. package/dist/adapter/helpers/convert-texture-format.js.map +1 -0
  8. package/dist/adapter/helpers/generate-mipmaps.d.ts +1 -1
  9. package/dist/adapter/helpers/generate-mipmaps.js +85 -88
  10. package/dist/adapter/helpers/generate-mipmaps.js.map +1 -0
  11. package/dist/adapter/helpers/get-bind-group.d.ts +1 -1
  12. package/dist/adapter/helpers/get-bind-group.d.ts.map +1 -1
  13. package/dist/adapter/helpers/get-bind-group.js +39 -54
  14. package/dist/adapter/helpers/get-bind-group.js.map +1 -0
  15. package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts +1 -1
  16. package/dist/adapter/helpers/get-vertex-buffer-layout.js +72 -97
  17. package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +1 -0
  18. package/dist/adapter/helpers/webgpu-parameters.d.ts +1 -1
  19. package/dist/adapter/helpers/webgpu-parameters.js +125 -182
  20. package/dist/adapter/helpers/webgpu-parameters.js.map +1 -0
  21. package/dist/adapter/resources/webgpu-buffer.d.ts +1 -1
  22. package/dist/adapter/resources/webgpu-buffer.js +63 -57
  23. package/dist/adapter/resources/webgpu-buffer.js.map +1 -0
  24. package/dist/adapter/resources/webgpu-command-encoder.d.ts +1 -1
  25. package/dist/adapter/resources/webgpu-command-encoder.js +46 -47
  26. package/dist/adapter/resources/webgpu-command-encoder.js.map +1 -0
  27. package/dist/adapter/resources/webgpu-compute-pass.d.ts +1 -1
  28. package/dist/adapter/resources/webgpu-compute-pass.js +41 -51
  29. package/dist/adapter/resources/webgpu-compute-pass.js.map +1 -0
  30. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts +1 -1
  31. package/dist/adapter/resources/webgpu-compute-pipeline.js +20 -22
  32. package/dist/adapter/resources/webgpu-compute-pipeline.js.map +1 -0
  33. package/dist/adapter/resources/webgpu-external-texture.d.ts +1 -1
  34. package/dist/adapter/resources/webgpu-external-texture.js +20 -26
  35. package/dist/adapter/resources/webgpu-external-texture.js.map +1 -0
  36. package/dist/adapter/resources/webgpu-framebuffer.d.ts +1 -1
  37. package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
  38. package/dist/adapter/resources/webgpu-framebuffer.js +86 -89
  39. package/dist/adapter/resources/webgpu-framebuffer.js.map +1 -0
  40. package/dist/adapter/resources/webgpu-query.js +1 -42
  41. package/dist/adapter/resources/webgpu-query.js.map +1 -0
  42. package/dist/adapter/resources/webgpu-render-pass.d.ts +1 -1
  43. package/dist/adapter/resources/webgpu-render-pass.js +70 -64
  44. package/dist/adapter/resources/webgpu-render-pass.js.map +1 -0
  45. package/dist/adapter/resources/webgpu-render-pipeline.d.ts +1 -1
  46. package/dist/adapter/resources/webgpu-render-pipeline.js +118 -158
  47. package/dist/adapter/resources/webgpu-render-pipeline.js.map +1 -0
  48. package/dist/adapter/resources/webgpu-sampler.d.ts +2 -2
  49. package/dist/adapter/resources/webgpu-sampler.d.ts.map +1 -1
  50. package/dist/adapter/resources/webgpu-sampler.js +16 -16
  51. package/dist/adapter/resources/webgpu-sampler.js.map +1 -0
  52. package/dist/adapter/resources/webgpu-shader.d.ts +2 -2
  53. package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
  54. package/dist/adapter/resources/webgpu-shader.js +44 -47
  55. package/dist/adapter/resources/webgpu-shader.js.map +1 -0
  56. package/dist/adapter/resources/webgpu-texture.d.ts +2 -1
  57. package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
  58. package/dist/adapter/resources/webgpu-texture.js +87 -100
  59. package/dist/adapter/resources/webgpu-texture.js.map +1 -0
  60. package/dist/adapter/webgpu-canvas-context.d.ts +1 -1
  61. package/dist/adapter/webgpu-canvas-context.js +68 -77
  62. package/dist/adapter/webgpu-canvas-context.js.map +1 -0
  63. package/dist/adapter/webgpu-device.d.ts +1 -1
  64. package/dist/adapter/webgpu-device.d.ts.map +1 -1
  65. package/dist/adapter/webgpu-device.js +194 -215
  66. package/dist/adapter/webgpu-device.js.map +1 -0
  67. package/dist/adapter/webgpu-types.js +2 -0
  68. package/dist/adapter/webgpu-types.js.map +1 -0
  69. package/dist/dist.dev.js +3061 -0
  70. package/dist/glsl/glsllang.js +6 -9
  71. package/dist/glsl/glsllang.js.map +1 -0
  72. package/dist/index.cjs +1442 -0
  73. package/dist/index.d.ts +0 -2
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +6 -10
  76. package/dist/index.js.map +1 -0
  77. package/dist.min.js +17 -0
  78. package/package.json +17 -8
  79. package/src/.DS_Store +0 -0
  80. package/src/adapter/.DS_Store +0 -0
  81. package/src/adapter/helpers/generate-mipmaps.ts +1 -1
  82. package/src/adapter/helpers/get-bind-group.ts +1 -1
  83. package/src/adapter/helpers/get-vertex-buffer-layout.ts +2 -2
  84. package/src/adapter/helpers/webgpu-parameters.ts +9 -9
  85. package/src/adapter/resources/webgpu-command-encoder.ts +3 -3
  86. package/src/adapter/resources/webgpu-framebuffer.ts +5 -5
  87. package/src/adapter/resources/webgpu-render-pipeline.ts +2 -2
  88. package/src/adapter/webgpu-device.ts +2 -1
  89. package/src/index.ts +1 -4
  90. package/dist/bundle.d.ts +0 -2
  91. package/dist/bundle.d.ts.map +0 -1
  92. package/dist/bundle.js +0 -4
  93. package/dist/dist.js +0 -8051
  94. package/dist/dist.min.js +0 -1
  95. package/dist/es5/adapter/helpers/accessor-to-format.js +0 -2
  96. package/dist/es5/adapter/helpers/accessor-to-format.js.map +0 -1
  97. package/dist/es5/adapter/helpers/convert-texture-format.js +0 -13
  98. package/dist/es5/adapter/helpers/convert-texture-format.js.map +0 -1
  99. package/dist/es5/adapter/helpers/generate-mipmaps.js +0 -103
  100. package/dist/es5/adapter/helpers/generate-mipmaps.js.map +0 -1
  101. package/dist/es5/adapter/helpers/get-bind-group.js +0 -66
  102. package/dist/es5/adapter/helpers/get-bind-group.js.map +0 -1
  103. package/dist/es5/adapter/helpers/get-vertex-buffer-layout.js +0 -149
  104. package/dist/es5/adapter/helpers/get-vertex-buffer-layout.js.map +0 -1
  105. package/dist/es5/adapter/helpers/webgpu-parameters.js +0 -150
  106. package/dist/es5/adapter/helpers/webgpu-parameters.js.map +0 -1
  107. package/dist/es5/adapter/resources/webgpu-buffer.js +0 -131
  108. package/dist/es5/adapter/resources/webgpu-buffer.js.map +0 -1
  109. package/dist/es5/adapter/resources/webgpu-command-encoder.js +0 -90
  110. package/dist/es5/adapter/resources/webgpu-command-encoder.js.map +0 -1
  111. package/dist/es5/adapter/resources/webgpu-compute-pass.js +0 -85
  112. package/dist/es5/adapter/resources/webgpu-compute-pass.js.map +0 -1
  113. package/dist/es5/adapter/resources/webgpu-compute-pipeline.js +0 -48
  114. package/dist/es5/adapter/resources/webgpu-compute-pipeline.js.map +0 -1
  115. package/dist/es5/adapter/resources/webgpu-external-texture.js +0 -50
  116. package/dist/es5/adapter/resources/webgpu-external-texture.js.map +0 -1
  117. package/dist/es5/adapter/resources/webgpu-framebuffer.js +0 -126
  118. package/dist/es5/adapter/resources/webgpu-framebuffer.js.map +0 -1
  119. package/dist/es5/adapter/resources/webgpu-query.js +0 -2
  120. package/dist/es5/adapter/resources/webgpu-query.js.map +0 -1
  121. package/dist/es5/adapter/resources/webgpu-render-pass.js +0 -124
  122. package/dist/es5/adapter/resources/webgpu-render-pass.js.map +0 -1
  123. package/dist/es5/adapter/resources/webgpu-render-pipeline.js +0 -185
  124. package/dist/es5/adapter/resources/webgpu-render-pipeline.js.map +0 -1
  125. package/dist/es5/adapter/resources/webgpu-sampler.js +0 -45
  126. package/dist/es5/adapter/resources/webgpu-sampler.js.map +0 -1
  127. package/dist/es5/adapter/resources/webgpu-shader.js +0 -125
  128. package/dist/es5/adapter/resources/webgpu-shader.js.map +0 -1
  129. package/dist/es5/adapter/resources/webgpu-texture.js +0 -138
  130. package/dist/es5/adapter/resources/webgpu-texture.js.map +0 -1
  131. package/dist/es5/adapter/webgpu-canvas-context.js +0 -111
  132. package/dist/es5/adapter/webgpu-canvas-context.js.map +0 -1
  133. package/dist/es5/adapter/webgpu-device.js +0 -317
  134. package/dist/es5/adapter/webgpu-device.js.map +0 -1
  135. package/dist/es5/adapter/webgpu-types.js +0 -2
  136. package/dist/es5/adapter/webgpu-types.js.map +0 -1
  137. package/dist/es5/bundle.js +0 -6
  138. package/dist/es5/bundle.js.map +0 -1
  139. package/dist/es5/glsl/glsllang.js +0 -47
  140. package/dist/es5/glsl/glsllang.js.map +0 -1
  141. package/dist/es5/index.js +0 -44
  142. package/dist/es5/index.js.map +0 -1
  143. package/dist/es5/init.js +0 -7
  144. package/dist/es5/init.js.map +0 -1
  145. package/dist/esm/adapter/helpers/accessor-to-format.js +0 -2
  146. package/dist/esm/adapter/helpers/accessor-to-format.js.map +0 -1
  147. package/dist/esm/adapter/helpers/convert-texture-format.js +0 -7
  148. package/dist/esm/adapter/helpers/convert-texture-format.js.map +0 -1
  149. package/dist/esm/adapter/helpers/generate-mipmaps.js +0 -88
  150. package/dist/esm/adapter/helpers/generate-mipmaps.js.map +0 -1
  151. package/dist/esm/adapter/helpers/get-bind-group.js +0 -51
  152. package/dist/esm/adapter/helpers/get-bind-group.js.map +0 -1
  153. package/dist/esm/adapter/helpers/get-vertex-buffer-layout.js +0 -83
  154. package/dist/esm/adapter/helpers/get-vertex-buffer-layout.js.map +0 -1
  155. package/dist/esm/adapter/helpers/webgpu-parameters.js +0 -137
  156. package/dist/esm/adapter/helpers/webgpu-parameters.js.map +0 -1
  157. package/dist/esm/adapter/resources/webgpu-buffer.js +0 -70
  158. package/dist/esm/adapter/resources/webgpu-buffer.js.map +0 -1
  159. package/dist/esm/adapter/resources/webgpu-command-encoder.js +0 -49
  160. package/dist/esm/adapter/resources/webgpu-command-encoder.js.map +0 -1
  161. package/dist/esm/adapter/resources/webgpu-compute-pass.js +0 -44
  162. package/dist/esm/adapter/resources/webgpu-compute-pass.js.map +0 -1
  163. package/dist/esm/adapter/resources/webgpu-compute-pipeline.js +0 -23
  164. package/dist/esm/adapter/resources/webgpu-compute-pipeline.js.map +0 -1
  165. package/dist/esm/adapter/resources/webgpu-external-texture.js +0 -23
  166. package/dist/esm/adapter/resources/webgpu-external-texture.js.map +0 -1
  167. package/dist/esm/adapter/resources/webgpu-framebuffer.js +0 -93
  168. package/dist/esm/adapter/resources/webgpu-framebuffer.js.map +0 -1
  169. package/dist/esm/adapter/resources/webgpu-query.js +0 -2
  170. package/dist/esm/adapter/resources/webgpu-query.js.map +0 -1
  171. package/dist/esm/adapter/resources/webgpu-render-pass.js +0 -79
  172. package/dist/esm/adapter/resources/webgpu-render-pass.js.map +0 -1
  173. package/dist/esm/adapter/resources/webgpu-render-pipeline.js +0 -130
  174. package/dist/esm/adapter/resources/webgpu-render-pipeline.js.map +0 -1
  175. package/dist/esm/adapter/resources/webgpu-sampler.js +0 -20
  176. package/dist/esm/adapter/resources/webgpu-sampler.js.map +0 -1
  177. package/dist/esm/adapter/resources/webgpu-shader.js +0 -50
  178. package/dist/esm/adapter/resources/webgpu-shader.js.map +0 -1
  179. package/dist/esm/adapter/resources/webgpu-texture.js +0 -95
  180. package/dist/esm/adapter/resources/webgpu-texture.js.map +0 -1
  181. package/dist/esm/adapter/webgpu-canvas-context.js +0 -74
  182. package/dist/esm/adapter/webgpu-canvas-context.js.map +0 -1
  183. package/dist/esm/adapter/webgpu-device.js +0 -196
  184. package/dist/esm/adapter/webgpu-device.js.map +0 -1
  185. package/dist/esm/adapter/webgpu-types.js +0 -2
  186. package/dist/esm/adapter/webgpu-types.js.map +0 -1
  187. package/dist/esm/bundle.js +0 -4
  188. package/dist/esm/bundle.js.map +0 -1
  189. package/dist/esm/glsl/glsllang.js +0 -9
  190. package/dist/esm/glsl/glsllang.js.map +0 -1
  191. package/dist/esm/index.js +0 -8
  192. package/dist/esm/index.js.map +0 -1
  193. package/dist/esm/init.js +0 -4
  194. package/dist/esm/init.js.map +0 -1
  195. package/dist/init.d.ts +0 -2
  196. package/dist/init.d.ts.map +0 -1
  197. package/dist/init.js +0 -3
  198. package/src/bundle.ts +0 -4
  199. package/src/init.ts +0 -4
@@ -1,108 +1,95 @@
1
- // luma.gl, MIT license
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import { Texture } from '@luma.gl/api';
3
- import { getWebGPUTextureFormat } from '../helpers/convert-texture-format.js';
4
- import WebGPUSampler from './webgpu-sampler.js';
3
+ import { getWebGPUTextureFormat } from "../helpers/convert-texture-format.js";
4
+ import WebGPUSampler from "./webgpu-sampler.js";
5
5
  const BASE_DIMENSIONS = {
6
- '1d': '1d',
7
- '2d': '2d',
8
- '2d-array': '2d',
9
- 'cube': '2d',
10
- 'cube-array': '2d',
11
- '3d': '3d'
6
+ '1d': '1d',
7
+ '2d': '2d',
8
+ '2d-array': '2d',
9
+ 'cube': '2d',
10
+ 'cube-array': '2d',
11
+ '3d': '3d'
12
12
  };
13
13
  export default class WebGPUTexture extends Texture {
14
- // static async createFromImageURL(src, usage = 0) {
15
- // const img = document.createElement('img');
16
- // img.src = src;
17
- // await img.decode();
18
- // return WebGPUTexture(img, usage);
19
- // }
20
- constructor(device, props) {
21
- super(device, props);
22
- if (typeof this.props.format === 'number') {
23
- throw new Error('number format');
24
- }
25
- this.device = device;
26
- this.handle = this.props.handle || this.createHandle();
27
- if (this.props.data) {
28
- this.setData({ data: this.props.data });
29
- }
30
- // Create a default sampler. This mimics the WebGL1 API where sampler props are stored on the texture
31
- // this.setSampler(props.sampler);
32
- this.sampler = props.sampler instanceof WebGPUSampler ? props.sampler : new WebGPUSampler(this.device, props.sampler);
33
- // TODO - To support texture arrays we need to create custom views...
34
- // But we are not ready to expose TextureViews to the public API.
35
- this.view = this.handle.createView({
36
- // format: this.props.format,
37
- // dimension: this.props.dimension,
38
- // aspect = "all";
39
- // baseMipLevel: 0;
40
- // mipLevelCount;
41
- // baseArrayLayer = 0;
42
- // arrayLayerCount;
43
- });
14
+ constructor(device, props) {
15
+ super(device, props);
16
+ _defineProperty(this, "device", void 0);
17
+ _defineProperty(this, "handle", void 0);
18
+ _defineProperty(this, "view", void 0);
19
+ _defineProperty(this, "sampler", void 0);
20
+ if (typeof this.props.format === 'number') {
21
+ throw new Error('number format');
44
22
  }
45
- createHandle() {
46
- if (typeof this.props.format === 'number') {
47
- throw new Error('number format');
48
- }
49
- // Deduce size from data - TODO this is a hack
50
- // @ts-expect-error
51
- const width = this.props.width || this.props.data?.width || 1;
52
- // @ts-expect-error
53
- const height = this.props.height || this.props.data?.height || 1;
54
- return this.device.handle.createTexture({
55
- size: {
56
- width,
57
- height,
58
- depthOrArrayLayers: this.props.depth
59
- },
60
- dimension: BASE_DIMENSIONS[this.props.dimension],
61
- format: getWebGPUTextureFormat(this.props.format),
62
- usage: this.props.usage,
63
- mipLevelCount: this.props.mipLevels,
64
- sampleCount: this.props.samples
65
- });
23
+ this.device = device;
24
+ this.handle = this.props.handle || this.createHandle();
25
+ if (this.props.data) {
26
+ this.setData({
27
+ data: this.props.data
28
+ });
66
29
  }
67
- destroy() {
68
- this.handle.destroy();
69
- }
70
- /**
71
- * Set default sampler
72
- * Accept a sampler instance or set of props;
73
- */
74
- setSampler(sampler) {
75
- this.sampler = sampler instanceof WebGPUSampler ? sampler : new WebGPUSampler(this.device, sampler);
76
- return this;
77
- }
78
- setData(options) {
79
- return this.setImage({ source: options.data });
80
- }
81
- /** Set image */
82
- setImage(options) {
83
- const { source, width = options.source.width, height = options.source.height, depth = 1, sourceX = 0, sourceY = 0, mipLevel = 0, x = 0, y = 0, z = 0, aspect = 'all', colorSpace = 'srgb', premultipliedAlpha = false } = options;
84
- // TODO - max out width
85
- this.device.handle.queue.copyExternalImageToTexture(
86
- // source: GPUImageCopyExternalImage
87
- {
88
- source,
89
- origin: [sourceX, sourceY]
90
- },
91
- // destination: GPUImageCopyTextureTagged
92
- {
93
- texture: this.handle,
94
- origin: [x, y, z],
95
- mipLevel,
96
- aspect,
97
- colorSpace,
98
- premultipliedAlpha
99
- },
100
- // copySize: GPUExtent3D
101
- [
102
- width,
103
- height,
104
- depth
105
- ]);
106
- return this;
30
+ this.sampler = props.sampler instanceof WebGPUSampler ? props.sampler : new WebGPUSampler(this.device, props.sampler);
31
+ this.view = this.handle.createView({});
32
+ }
33
+ createHandle() {
34
+ var _this$props$data, _this$props$data2;
35
+ if (typeof this.props.format === 'number') {
36
+ throw new Error('number format');
107
37
  }
38
+ const width = this.props.width || ((_this$props$data = this.props.data) === null || _this$props$data === void 0 ? void 0 : _this$props$data.width) || 1;
39
+ const height = this.props.height || ((_this$props$data2 = this.props.data) === null || _this$props$data2 === void 0 ? void 0 : _this$props$data2.height) || 1;
40
+ return this.device.handle.createTexture({
41
+ size: {
42
+ width,
43
+ height,
44
+ depthOrArrayLayers: this.props.depth
45
+ },
46
+ dimension: BASE_DIMENSIONS[this.props.dimension],
47
+ format: getWebGPUTextureFormat(this.props.format),
48
+ usage: this.props.usage,
49
+ mipLevelCount: this.props.mipLevels,
50
+ sampleCount: this.props.samples
51
+ });
52
+ }
53
+ destroy() {
54
+ this.handle.destroy();
55
+ }
56
+ setSampler(sampler) {
57
+ this.sampler = sampler instanceof WebGPUSampler ? sampler : new WebGPUSampler(this.device, sampler);
58
+ return this;
59
+ }
60
+ setData(options) {
61
+ return this.setImage({
62
+ source: options.data
63
+ });
64
+ }
65
+ setImage(options) {
66
+ const {
67
+ source,
68
+ width = options.source.width,
69
+ height = options.source.height,
70
+ depth = 1,
71
+ sourceX = 0,
72
+ sourceY = 0,
73
+ mipLevel = 0,
74
+ x = 0,
75
+ y = 0,
76
+ z = 0,
77
+ aspect = 'all',
78
+ colorSpace = 'srgb',
79
+ premultipliedAlpha = false
80
+ } = options;
81
+ this.device.handle.queue.copyExternalImageToTexture({
82
+ source,
83
+ origin: [sourceX, sourceY]
84
+ }, {
85
+ texture: this.handle,
86
+ origin: [x, y, z],
87
+ mipLevel,
88
+ aspect,
89
+ colorSpace,
90
+ premultipliedAlpha
91
+ }, [width, height, depth]);
92
+ return this;
93
+ }
108
94
  }
95
+ //# sourceMappingURL=webgpu-texture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-texture.js","names":["Texture","getWebGPUTextureFormat","WebGPUSampler","BASE_DIMENSIONS","WebGPUTexture","constructor","device","props","_defineProperty","format","Error","handle","createHandle","data","setData","sampler","view","createView","_this$props$data","_this$props$data2","width","height","createTexture","size","depthOrArrayLayers","depth","dimension","usage","mipLevelCount","mipLevels","sampleCount","samples","destroy","setSampler","options","setImage","source","sourceX","sourceY","mipLevel","x","y","z","aspect","colorSpace","premultipliedAlpha","queue","copyExternalImageToTexture","origin","texture"],"sources":["../../../src/adapter/resources/webgpu-texture.ts"],"sourcesContent":["// luma.gl, MIT license\nimport {Texture, TextureProps, Sampler, SamplerProps} from '@luma.gl/api';\nimport {getWebGPUTextureFormat} from '../helpers/convert-texture-format';\nimport type WebGPUDevice from '../webgpu-device';\nimport WebGPUSampler from './webgpu-sampler';\n\nconst BASE_DIMENSIONS: Record<string, '1d' | '2d' | '3d'> = {\n '1d': '1d',\n '2d': '2d',\n '2d-array': '2d',\n 'cube': '2d',\n 'cube-array': '2d',\n '3d': '3d'\n};\n\nexport default class WebGPUTexture extends Texture {\n readonly device: WebGPUDevice;\n readonly handle: GPUTexture;\n readonly view: GPUTextureView;\n sampler: WebGPUSampler;\n\n // static async createFromImageURL(src, usage = 0) {\n // const img = document.createElement('img');\n // img.src = src;\n // await img.decode();\n // return WebGPUTexture(img, usage);\n // }\n\n constructor(device: WebGPUDevice, props: TextureProps) {\n super(device, props);\n\n if (typeof this.props.format === 'number') {\n throw new Error('number format');\n }\n\n this.device = device;\n this.handle = this.props.handle || this.createHandle();\n\n if (this.props.data) {\n this.setData({data: this.props.data} );\n }\n\n // Create a default sampler. This mimics the WebGL1 API where sampler props are stored on the texture\n // this.setSampler(props.sampler);\n this.sampler = props.sampler instanceof WebGPUSampler ? props.sampler : new WebGPUSampler(this.device, props.sampler);\n\n // TODO - To support texture arrays we need to create custom views...\n // But we are not ready to expose TextureViews to the public API.\n this.view = this.handle.createView({\n // format: this.props.format,\n // dimension: this.props.dimension,\n // aspect = \"all\";\n // baseMipLevel: 0;\n // mipLevelCount;\n // baseArrayLayer = 0;\n // arrayLayerCount;\n });\n }\n\n protected createHandle(): GPUTexture {\n if (typeof this.props.format === 'number') {\n throw new Error('number format');\n }\n\n // Deduce size from data - TODO this is a hack\n // @ts-expect-error\n const width = this.props.width || this.props.data?.width || 1;\n // @ts-expect-error\n const height = this.props.height || this.props.data?.height || 1;\n\n return this.device.handle.createTexture({\n size: {\n width,\n height,\n depthOrArrayLayers: this.props.depth\n },\n dimension: BASE_DIMENSIONS[this.props.dimension],\n format: getWebGPUTextureFormat(this.props.format),\n usage: this.props.usage,\n mipLevelCount: this.props.mipLevels,\n sampleCount: this.props.samples\n });\n }\n\n override destroy(): void {\n this.handle.destroy();\n }\n\n /**\n * Set default sampler\n * Accept a sampler instance or set of props;\n */\n setSampler(sampler: Sampler | SamplerProps): this {\n this.sampler = sampler instanceof WebGPUSampler ? sampler : new WebGPUSampler(this.device, sampler);\n return this;\n }\n\n setData(options: {\n data: any;\n }) {\n return this.setImage({source: options.data});\n }\n\n /** Set image */\n setImage(options: {\n source: ImageBitmap | HTMLCanvasElement | OffscreenCanvas;\n width?: number;\n height?: number;\n depth?: number;\n sourceX?: number;\n sourceY?: number;\n mipLevel?: number;\n x?: number;\n y?: number;\n z?: number;\n aspect?: 'all' | 'stencil-only' | 'depth-only';\n colorSpace?: 'srgb';\n premultipliedAlpha?: boolean;\n }): this {\n const {\n source,\n width = options.source.width,\n height = options.source.height,\n depth = 1,\n sourceX = 0,\n sourceY = 0,\n mipLevel = 0,\n x = 0,\n y = 0,\n z = 0,\n aspect = 'all',\n colorSpace = 'srgb',\n premultipliedAlpha = false\n } = options;\n\n // TODO - max out width\n\n this.device.handle.queue.copyExternalImageToTexture(\n // source: GPUImageCopyExternalImage\n {\n source,\n origin: [sourceX, sourceY]\n },\n // destination: GPUImageCopyTextureTagged\n {\n texture: this.handle,\n origin: [x, y, z],\n mipLevel,\n aspect,\n colorSpace,\n premultipliedAlpha\n },\n // copySize: GPUExtent3D\n [\n width,\n height,\n depth\n ]\n );\n return this;\n }\n\n /*\n async readPixels() {\n const readbackBuffer = device.createBuffer({\n usage: Buffer.COPY_DST | Buffer.MAP_READ,\n size: 4 * textureWidth * textureHeight,\n });\n\n // Copy data from the texture to the buffer.\n const encoder = device.createCommandEncoder();\n encoder.copyTextureToBuffer(\n { texture },\n { buffer, rowPitch: textureWidth * 4 },\n [textureWidth, textureHeight],\n );\n device.submit([encoder.finish()]);\n\n // Get the data on the CPU.\n await buffer.mapAsync(GPUMapMode.READ);\n saveScreenshot(buffer.getMappedRange());\n buffer.unmap();\n }\n\n setImageData(imageData, usage): this {\n let data = null;\n\n const bytesPerRow = Math.ceil((img.width * 4) / 256) * 256;\n if (bytesPerRow == img.width * 4) {\n data = imageData.data;\n } else {\n data = new Uint8Array(bytesPerRow * img.height);\n let imagePixelIndex = 0;\n for (let y = 0; y < img.height; ++y) {\n for (let x = 0; x < img.width; ++x) {\n const i = x * 4 + y * bytesPerRow;\n data[i] = imageData.data[imagePixelIndex];\n data[i + 1] = imageData.data[imagePixelIndex + 1];\n data[i + 2] = imageData.data[imagePixelIndex + 2];\n data[i + 3] = imageData.data[imagePixelIndex + 3];\n imagePixelIndex += 4;\n }\n }\n }\n return this;\n }\n\n setData(data): this {\n const textureDataBuffer = this.device.handle.createBuffer({\n size: data.byteLength,\n usage: Buffer.COPY_DST | Buffer.COPY_SRC,\n mappedAtCreation: true\n });\n new Uint8Array(textureDataBuffer.getMappedRange()).set(data);\n textureDataBuffer.unmap();\n\n this.setBuffer(textureDataBuffer);\n\n textureDataBuffer.destroy();\n return this;\n }\n\n setBuffer(textureDataBuffer, {bytesPerRow}): this {\n const commandEncoder = this.device.handle.createCommandEncoder();\n commandEncoder.copyBufferToTexture(\n {\n buffer: textureDataBuffer,\n bytesPerRow\n },\n {\n texture: this.handle\n },\n {\n width,\n height,\n depth\n }\n );\n\n this.device.handle.defaultQueue.submit([commandEncoder.finish()]);\n return this;\n }\n */\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /// <reference types="@webgpu/types" />
1
+ /// <reference types="dist" />
2
2
  import type { Texture, TextureFormat, CanvasContextProps } from '@luma.gl/api';
3
3
  import { CanvasContext } from '@luma.gl/api';
4
4
  import WebGPUDevice from './webgpu-device';
@@ -1,83 +1,74 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import { CanvasContext, log } from '@luma.gl/api';
2
- import { getWebGPUTextureFormat } from './helpers/convert-texture-format.js';
3
- import WEBGPUFramebuffer from './resources/webgpu-framebuffer.js';
4
- /**
5
- * Holds a WebGPU Canvas Context which handles resizing etc
6
- */
3
+ import { getWebGPUTextureFormat } from "./helpers/convert-texture-format.js";
4
+ import WEBGPUFramebuffer from "./resources/webgpu-framebuffer.js";
7
5
  export default class WebGPUCanvasContext extends CanvasContext {
8
- constructor(device, adapter, props) {
9
- super(props);
10
- this.depthStencilFormat = 'depth24plus';
11
- this.sampleCount = 1;
6
+ constructor(device, adapter, props) {
7
+ super(props);
8
+ _defineProperty(this, "device", void 0);
9
+ _defineProperty(this, "gpuCanvasContext", void 0);
10
+ _defineProperty(this, "format", void 0);
11
+ _defineProperty(this, "depthStencilFormat", 'depth24plus');
12
+ _defineProperty(this, "sampleCount", 1);
13
+ _defineProperty(this, "depthStencilAttachment", null);
14
+ this.device = device;
15
+ this.width = -1;
16
+ this.height = -1;
17
+ this._setAutoCreatedCanvasId("".concat(this.device.id, "-canvas"));
18
+ this.gpuCanvasContext = this.canvas.getContext('webgpu');
19
+ this.format = this.gpuCanvasContext.getPreferredFormat(adapter);
20
+ }
21
+ destroy() {
22
+ this.gpuCanvasContext.unconfigure();
23
+ }
24
+ getCurrentFramebuffer() {
25
+ this.update();
26
+ const currentColorAttachment = this.device.createTexture({
27
+ id: 'default-render-target',
28
+ handle: this.gpuCanvasContext.getCurrentTexture(),
29
+ format: this.format,
30
+ width: this.width,
31
+ height: this.height
32
+ });
33
+ this._createDepthStencilAttachment();
34
+ return new WEBGPUFramebuffer(this.device, {
35
+ colorAttachments: [currentColorAttachment],
36
+ depthStencilAttachment: this.depthStencilAttachment
37
+ });
38
+ }
39
+ update() {
40
+ const [width, height] = this.getPixelSize();
41
+ const sizeChanged = width !== this.width || height !== this.height;
42
+ if (sizeChanged) {
43
+ this.width = width;
44
+ this.height = height;
45
+ if (this.depthStencilAttachment) {
46
+ this.depthStencilAttachment.destroy();
12
47
  this.depthStencilAttachment = null;
13
- this.device = device;
14
- // TODO - hack to trigger resize?
15
- this.width = -1;
16
- this.height = -1;
17
- this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);
18
- this.gpuCanvasContext = this.canvas.getContext('webgpu');
19
- // @ts-expect-error TODO this has been replaced
20
- this.format = this.gpuCanvasContext.getPreferredFormat(adapter);
48
+ }
49
+ this.gpuCanvasContext.configure({
50
+ device: this.device.handle,
51
+ format: getWebGPUTextureFormat(this.format),
52
+ colorSpace: this.props.colorSpace,
53
+ alphaMode: this.props.alphaMode
54
+ });
55
+ log.log(1, "Resized to ".concat(this.width, "x").concat(this.height, "px"))();
21
56
  }
22
- destroy() {
23
- this.gpuCanvasContext.unconfigure();
24
- }
25
- /** Update framebuffer with properly resized "swap chain" texture views */
26
- getCurrentFramebuffer() {
27
- // Ensure the canvas context size is updated
28
- this.update();
29
- // Wrap the current canvas context texture in a luma.gl texture
30
- const currentColorAttachment = this.device.createTexture({
31
- id: 'default-render-target',
32
- handle: this.gpuCanvasContext.getCurrentTexture(),
33
- format: this.format,
34
- width: this.width,
35
- height: this.height
36
- });
37
- // Resize the depth stencil attachment
38
- this._createDepthStencilAttachment();
39
- return new WEBGPUFramebuffer(this.device, {
40
- colorAttachments: [currentColorAttachment],
41
- depthStencilAttachment: this.depthStencilAttachment
42
- });
43
- }
44
- /** Resizes and updates render targets if necessary */
45
- update() {
46
- const [width, height] = this.getPixelSize();
47
- const sizeChanged = width !== this.width || height !== this.height;
48
- if (sizeChanged) {
49
- this.width = width;
50
- this.height = height;
51
- if (this.depthStencilAttachment) {
52
- this.depthStencilAttachment.destroy();
53
- this.depthStencilAttachment = null;
54
- }
55
- // Reconfigure the canvas size.
56
- // https://www.w3.org/TR/webgpu/#canvas-configuration
57
- this.gpuCanvasContext.configure({
58
- device: this.device.handle,
59
- format: getWebGPUTextureFormat(this.format),
60
- // size: [this.width, this.height],
61
- colorSpace: this.props.colorSpace,
62
- alphaMode: this.props.alphaMode
63
- });
64
- log.log(1, `Resized to ${this.width}x${this.height}px`)();
65
- }
66
- }
67
- resize(options) {
68
- this.update();
69
- }
70
- /** We build render targets on demand (i.e. not when size changes but when about to render) */
71
- _createDepthStencilAttachment() {
72
- if (!this.depthStencilAttachment) {
73
- this.depthStencilAttachment = this.device.createTexture({
74
- id: 'depth-stencil-target',
75
- format: this.depthStencilFormat,
76
- width: this.width,
77
- height: this.height,
78
- usage: GPUTextureUsage.RENDER_ATTACHMENT
79
- });
80
- }
81
- return this.depthStencilAttachment;
57
+ }
58
+ resize(options) {
59
+ this.update();
60
+ }
61
+ _createDepthStencilAttachment() {
62
+ if (!this.depthStencilAttachment) {
63
+ this.depthStencilAttachment = this.device.createTexture({
64
+ id: 'depth-stencil-target',
65
+ format: this.depthStencilFormat,
66
+ width: this.width,
67
+ height: this.height,
68
+ usage: GPUTextureUsage.RENDER_ATTACHMENT
69
+ });
82
70
  }
71
+ return this.depthStencilAttachment;
72
+ }
83
73
  }
74
+ //# sourceMappingURL=webgpu-canvas-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-canvas-context.js","names":["CanvasContext","log","getWebGPUTextureFormat","WEBGPUFramebuffer","WebGPUCanvasContext","constructor","device","adapter","props","_defineProperty","width","height","_setAutoCreatedCanvasId","concat","id","gpuCanvasContext","canvas","getContext","format","getPreferredFormat","destroy","unconfigure","getCurrentFramebuffer","update","currentColorAttachment","createTexture","handle","getCurrentTexture","_createDepthStencilAttachment","colorAttachments","depthStencilAttachment","getPixelSize","sizeChanged","configure","colorSpace","alphaMode","resize","options","depthStencilFormat","usage","GPUTextureUsage","RENDER_ATTACHMENT"],"sources":["../../src/adapter/webgpu-canvas-context.ts"],"sourcesContent":["import type {Texture, TextureFormat, CanvasContextProps} from '@luma.gl/api';\nimport {CanvasContext, log} from '@luma.gl/api';\nimport {getWebGPUTextureFormat} from './helpers/convert-texture-format';\nimport WebGPUDevice from './webgpu-device';\nimport WEBGPUFramebuffer from './resources/webgpu-framebuffer';\n\n/** \n * Holds a WebGPU Canvas Context which handles resizing etc \n */\nexport default class WebGPUCanvasContext extends CanvasContext {\n readonly device: WebGPUDevice;\n readonly gpuCanvasContext: GPUCanvasContext;\n readonly format: TextureFormat;\n depthStencilFormat: TextureFormat = 'depth24plus';\n sampleCount: number = 1;\n\n private depthStencilAttachment: Texture | null = null;\n\n constructor(device: WebGPUDevice, adapter: GPUAdapter, props: CanvasContextProps) {\n super(props);\n this.device = device;\n // TODO - hack to trigger resize?\n this.width = -1;\n this.height = -1;\n \n this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);\n this.gpuCanvasContext = this.canvas.getContext('webgpu') as GPUCanvasContext;\n // @ts-expect-error TODO this has been replaced\n this.format = this.gpuCanvasContext.getPreferredFormat(adapter);\n }\n\n destroy(): void {\n this.gpuCanvasContext.unconfigure();\n }\n\n /** Update framebuffer with properly resized \"swap chain\" texture views */\n getCurrentFramebuffer(): WEBGPUFramebuffer {\n // Ensure the canvas context size is updated\n this.update();\n\n // Wrap the current canvas context texture in a luma.gl texture \n const currentColorAttachment = this.device.createTexture({\n id: 'default-render-target',\n handle: this.gpuCanvasContext.getCurrentTexture(),\n format: this.format,\n width: this.width,\n height: this.height\n });\n\n // Resize the depth stencil attachment\n this._createDepthStencilAttachment();\n\n return new WEBGPUFramebuffer(this.device, {\n colorAttachments: [currentColorAttachment],\n depthStencilAttachment: this.depthStencilAttachment\n });\n }\n\n /** Resizes and updates render targets if necessary */\n update() {\n const [width, height] = this.getPixelSize();\n\n const sizeChanged = width !== this.width || height !== this.height;\n\n if (sizeChanged) {\n this.width = width;\n this.height = height;\n\n if (this.depthStencilAttachment) {\n this.depthStencilAttachment.destroy();\n this.depthStencilAttachment = null;\n }\n\n // Reconfigure the canvas size.\n // https://www.w3.org/TR/webgpu/#canvas-configuration\n this.gpuCanvasContext.configure({\n device: this.device.handle,\n format: getWebGPUTextureFormat(this.format),\n // size: [this.width, this.height],\n colorSpace: this.props.colorSpace,\n alphaMode: this.props.alphaMode\n });\n\n log.log(1, `Resized to ${this.width}x${this.height}px`)();\n }\n\n }\n\n resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {\n this.update();\n }\n\n /** We build render targets on demand (i.e. not when size changes but when about to render) */\n _createDepthStencilAttachment() {\n if (!this.depthStencilAttachment) {\n this.depthStencilAttachment = this.device.createTexture({\n id: 'depth-stencil-target',\n format: this.depthStencilFormat,\n width: this.width,\n height: this.height,\n usage: GPUTextureUsage.RENDER_ATTACHMENT\n });\n }\n return this.depthStencilAttachment;\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /// <reference types="@webgpu/types" />
1
+ /// <reference types="dist" />
2
2
  import type { DeviceProps, DeviceInfo, DeviceLimits, DeviceFeature, CanvasContextProps, BufferProps, SamplerProps, ShaderProps, TextureProps, TextureFormat, ExternalTextureProps, FramebufferProps, RenderPipelineProps, ComputePipelineProps, RenderPassProps, ComputePassProps } from '@luma.gl/api';
3
3
  import { Device } from '@luma.gl/api';
4
4
  import WebGPUBuffer from './resources/webgpu-buffer';
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-device.d.ts","sourceRoot":"","sources":["../../src/adapter/webgpu-device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgpu-device.d.ts","sourceRoot":"","sources":["../../src/adapter/webgpu-device.ts"],"names":[],"mappings":"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"}