@luma.gl/core 9.0.17 → 9.1.0-alpha.10

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 (248) hide show
  1. package/dist/adapter/adapter.d.ts +11 -0
  2. package/dist/adapter/adapter.d.ts.map +1 -0
  3. package/dist/adapter/adapter.js +8 -0
  4. package/dist/adapter/canvas-context.d.ts +5 -0
  5. package/dist/adapter/canvas-context.d.ts.map +1 -1
  6. package/dist/adapter/device.d.ts +23 -11
  7. package/dist/adapter/device.d.ts.map +1 -1
  8. package/dist/adapter/device.js +22 -20
  9. package/dist/adapter/luma.d.ts +70 -0
  10. package/dist/adapter/luma.d.ts.map +1 -0
  11. package/dist/adapter/luma.js +159 -0
  12. package/dist/adapter/resources/buffer.js +5 -5
  13. package/dist/adapter/resources/compute-pipeline.d.ts +2 -0
  14. package/dist/adapter/resources/compute-pipeline.d.ts.map +1 -1
  15. package/dist/adapter/resources/compute-pipeline.js +3 -0
  16. package/dist/adapter/resources/external-texture.d.ts +1 -1
  17. package/dist/adapter/resources/external-texture.d.ts.map +1 -1
  18. package/dist/adapter/resources/external-texture.js +1 -1
  19. package/dist/adapter/resources/framebuffer.d.ts +3 -3
  20. package/dist/adapter/resources/framebuffer.d.ts.map +1 -1
  21. package/dist/adapter/resources/framebuffer.js +2 -83
  22. package/dist/adapter/resources/render-pass.d.ts +2 -2
  23. package/dist/adapter/resources/render-pass.d.ts.map +1 -1
  24. package/dist/adapter/resources/render-pipeline.d.ts +2 -5
  25. package/dist/adapter/resources/render-pipeline.d.ts.map +1 -1
  26. package/dist/adapter/resources/resource.d.ts +3 -3
  27. package/dist/adapter/resources/resource.d.ts.map +1 -1
  28. package/dist/adapter/resources/resource.js +1 -1
  29. package/dist/adapter/resources/shader.d.ts +5 -2
  30. package/dist/adapter/resources/shader.d.ts.map +1 -1
  31. package/dist/adapter/resources/shader.js +15 -9
  32. package/dist/adapter/resources/texture-view.d.ts +1 -1
  33. package/dist/adapter/resources/texture-view.d.ts.map +1 -1
  34. package/dist/adapter/resources/texture.d.ts +144 -47
  35. package/dist/adapter/resources/texture.d.ts.map +1 -1
  36. package/dist/adapter/resources/texture.js +120 -12
  37. package/dist/adapter/resources/transform-feedback.d.ts +1 -1
  38. package/dist/adapter/resources/transform-feedback.d.ts.map +1 -1
  39. package/dist/adapter/resources/vertex-array.d.ts +1 -1
  40. package/dist/adapter/resources/vertex-array.d.ts.map +1 -1
  41. package/dist/adapter/resources/vertex-array.js +6 -2
  42. package/dist/adapter/types/{types.d.ts → attachments.d.ts} +7 -17
  43. package/dist/adapter/types/attachments.d.ts.map +1 -0
  44. package/dist/adapter/types/buffer-layout.d.ts +1 -1
  45. package/dist/adapter/types/buffer-layout.d.ts.map +1 -1
  46. package/dist/adapter/types/compiler-message.d.ts.map +1 -0
  47. package/dist/adapter/types/parameters.d.ts +4 -6
  48. package/dist/adapter/types/parameters.d.ts.map +1 -1
  49. package/dist/adapter/types/parameters.js +1 -0
  50. package/dist/adapter/types/shader-layout.d.ts +23 -3
  51. package/dist/adapter/types/shader-layout.d.ts.map +1 -1
  52. package/dist/adapter/types/uniforms.d.ts +4 -0
  53. package/dist/adapter/types/uniforms.d.ts.map +1 -0
  54. package/dist/{lib/compiler-log → adapter-utils}/format-compiler-log.d.ts +1 -1
  55. package/dist/adapter-utils/format-compiler-log.d.ts.map +1 -0
  56. package/dist/{adapter/attribute-utils → adapter-utils}/get-attribute-from-layouts.d.ts +4 -11
  57. package/dist/adapter-utils/get-attribute-from-layouts.d.ts.map +1 -0
  58. package/dist/{adapter/attribute-utils → adapter-utils}/get-attribute-from-layouts.js +10 -30
  59. package/dist/adapter-utils/is-uniform-value.d.ts +3 -0
  60. package/dist/adapter-utils/is-uniform-value.d.ts.map +1 -0
  61. package/dist/adapter-utils/is-uniform-value.js +7 -0
  62. package/dist/dist.dev.js +635 -821
  63. package/dist/dist.min.js +6 -6
  64. package/dist/{adapter/type-utils → gpu-type-utils}/decode-attribute-type.d.ts +3 -3
  65. package/dist/gpu-type-utils/decode-attribute-type.d.ts.map +1 -0
  66. package/dist/{adapter/type-utils → gpu-type-utils}/decode-data-type.d.ts +1 -1
  67. package/dist/gpu-type-utils/decode-data-type.d.ts.map +1 -0
  68. package/dist/{adapter/type-utils → gpu-type-utils}/decode-shader-types.d.ts +1 -1
  69. package/dist/gpu-type-utils/decode-shader-types.d.ts.map +1 -0
  70. package/dist/{adapter/type-utils → gpu-type-utils}/decode-shader-types.js +0 -2
  71. package/dist/gpu-type-utils/decode-texture-format.d.ts +43 -0
  72. package/dist/gpu-type-utils/decode-texture-format.d.ts.map +1 -0
  73. package/dist/{adapter/type-utils → gpu-type-utils}/decode-texture-format.js +67 -31
  74. package/dist/{adapter/type-utils → gpu-type-utils}/decode-vertex-format.d.ts +1 -1
  75. package/dist/gpu-type-utils/decode-vertex-format.d.ts.map +1 -0
  76. package/dist/gpu-type-utils/shader-types.d.ts.map +1 -0
  77. package/dist/{adapter/types → gpu-type-utils}/texture-formats.d.ts +3 -5
  78. package/dist/gpu-type-utils/texture-formats.d.ts.map +1 -0
  79. package/dist/{adapter/type-utils → gpu-type-utils}/vertex-format-from-attribute.d.ts +2 -2
  80. package/dist/gpu-type-utils/vertex-format-from-attribute.d.ts.map +1 -0
  81. package/dist/gpu-type-utils/vertex-formats.d.ts.map +1 -0
  82. package/dist/{adapter/type-utils → gpu-type-utils}/wgsl-utils.d.ts +1 -1
  83. package/dist/gpu-type-utils/wgsl-utils.d.ts.map +1 -0
  84. package/dist/index.cjs +396 -567
  85. package/dist/index.cjs.map +4 -4
  86. package/dist/index.d.ts +28 -44
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +19 -37
  89. package/dist/{lib/uniforms → portable}/uniform-block.d.ts +3 -3
  90. package/dist/portable/uniform-block.d.ts.map +1 -0
  91. package/dist/{lib/uniforms → portable}/uniform-block.js +2 -2
  92. package/dist/{lib/uniforms → portable}/uniform-buffer-layout.d.ts +2 -2
  93. package/dist/portable/uniform-buffer-layout.d.ts.map +1 -0
  94. package/dist/{lib/uniforms → portable}/uniform-buffer-layout.js +6 -7
  95. package/dist/{lib/uniforms → portable}/uniform-store.d.ts +9 -4
  96. package/dist/portable/uniform-store.d.ts.map +1 -0
  97. package/dist/{lib/uniforms → portable}/uniform-store.js +11 -9
  98. package/dist/types.d.ts +0 -10
  99. package/dist/types.d.ts.map +1 -1
  100. package/dist/utils/array-equal.d.ts.map +1 -1
  101. package/dist/utils/array-equal.js +6 -7
  102. package/dist/utils/array-utils-flat.d.ts +1 -7
  103. package/dist/utils/array-utils-flat.d.ts.map +1 -1
  104. package/dist/utils/array-utils-flat.js +0 -23
  105. package/dist/utils/is-array.d.ts +3 -3
  106. package/dist/utils/is-array.d.ts.map +1 -1
  107. package/dist/utils/is-array.js +2 -2
  108. package/dist/utils/uid.d.ts +7 -0
  109. package/dist/utils/uid.d.ts.map +1 -0
  110. package/dist/utils/{utils.js → uid.js} +0 -11
  111. package/package.json +5 -5
  112. package/src/adapter/adapter.ts +16 -0
  113. package/src/adapter/canvas-context.ts +6 -0
  114. package/src/adapter/device.ts +52 -36
  115. package/src/adapter/luma.ts +219 -0
  116. package/src/adapter/resources/buffer.ts +5 -5
  117. package/src/adapter/resources/command-encoder.ts +1 -1
  118. package/src/adapter/resources/compute-pass.ts +3 -3
  119. package/src/adapter/resources/compute-pipeline.ts +6 -3
  120. package/src/adapter/resources/external-texture.ts +2 -2
  121. package/src/adapter/resources/framebuffer.ts +5 -92
  122. package/src/adapter/resources/query-set.ts +2 -2
  123. package/src/adapter/resources/render-pass.ts +11 -7
  124. package/src/adapter/resources/render-pipeline.ts +3 -6
  125. package/src/adapter/resources/resource.ts +7 -7
  126. package/src/adapter/resources/shader.ts +18 -11
  127. package/src/adapter/resources/texture-view.ts +5 -5
  128. package/src/adapter/resources/texture.ts +285 -76
  129. package/src/adapter/resources/transform-feedback.ts +1 -1
  130. package/src/adapter/resources/vertex-array.ts +7 -3
  131. package/src/adapter/types/{types.ts → attachments.ts} +10 -18
  132. package/src/adapter/types/buffer-layout.ts +1 -1
  133. package/src/adapter/types/parameters.ts +14 -14
  134. package/src/adapter/types/shader-layout.ts +31 -29
  135. package/src/adapter/types/uniforms.ts +10 -0
  136. package/src/{lib/compiler-log → adapter-utils}/format-compiler-log.ts +1 -1
  137. package/src/{adapter/attribute-utils → adapter-utils}/get-attribute-from-layouts.ts +18 -42
  138. package/src/adapter-utils/is-uniform-value.ts +10 -0
  139. package/src/{adapter/type-utils → gpu-type-utils}/decode-attribute-type.ts +3 -3
  140. package/src/{adapter/type-utils → gpu-type-utils}/decode-data-type.ts +1 -1
  141. package/src/{adapter/type-utils → gpu-type-utils}/decode-shader-types.ts +1 -3
  142. package/src/{adapter/type-utils → gpu-type-utils}/decode-texture-format.ts +99 -39
  143. package/src/{adapter/type-utils → gpu-type-utils}/decode-vertex-format.ts +1 -1
  144. package/src/{adapter/types → gpu-type-utils}/texture-formats.ts +3 -14
  145. package/src/{adapter/type-utils → gpu-type-utils}/vertex-format-from-attribute.ts +2 -2
  146. package/src/{adapter/type-utils → gpu-type-utils}/wgsl-utils.ts +1 -1
  147. package/src/index.ts +67 -83
  148. package/src/{lib/uniforms → portable}/uniform-block.ts +5 -5
  149. package/src/{lib/uniforms → portable}/uniform-buffer-layout.ts +9 -9
  150. package/src/{lib/uniforms → portable}/uniform-store.ts +20 -12
  151. package/src/types.ts +0 -12
  152. package/src/utils/array-equal.ts +6 -7
  153. package/src/utils/array-utils-flat.ts +1 -31
  154. package/src/utils/is-array.ts +5 -5
  155. package/src/utils/{utils.ts → uid.ts} +0 -12
  156. package/dist/adapter/attribute-utils/get-attribute-from-layouts.d.ts.map +0 -1
  157. package/dist/adapter/type-utils/decode-attribute-type.d.ts.map +0 -1
  158. package/dist/adapter/type-utils/decode-data-type.d.ts.map +0 -1
  159. package/dist/adapter/type-utils/decode-shader-types.d.ts.map +0 -1
  160. package/dist/adapter/type-utils/decode-texture-format.d.ts +0 -23
  161. package/dist/adapter/type-utils/decode-texture-format.d.ts.map +0 -1
  162. package/dist/adapter/type-utils/decode-vertex-format.d.ts.map +0 -1
  163. package/dist/adapter/type-utils/vertex-format-from-attribute.d.ts.map +0 -1
  164. package/dist/adapter/type-utils/wgsl-utils.d.ts.map +0 -1
  165. package/dist/adapter/types/accessor.d.ts +0 -23
  166. package/dist/adapter/types/accessor.d.ts.map +0 -1
  167. package/dist/adapter/types/shader-types.d.ts.map +0 -1
  168. package/dist/adapter/types/texture-formats.d.ts.map +0 -1
  169. package/dist/adapter/types/types.d.ts.map +0 -1
  170. package/dist/adapter/types/vertex-formats.d.ts.map +0 -1
  171. package/dist/init.d.ts +0 -5
  172. package/dist/init.d.ts.map +0 -1
  173. package/dist/init.js +0 -37
  174. package/dist/lib/compiler-log/compiler-message.d.ts.map +0 -1
  175. package/dist/lib/compiler-log/format-compiler-log.d.ts.map +0 -1
  176. package/dist/lib/compiler-log/get-shader-info.d.ts +0 -9
  177. package/dist/lib/compiler-log/get-shader-info.d.ts.map +0 -1
  178. package/dist/lib/compiler-log/get-shader-info.js +0 -29
  179. package/dist/lib/luma.d.ts +0 -38
  180. package/dist/lib/luma.d.ts.map +0 -1
  181. package/dist/lib/luma.js +0 -141
  182. package/dist/lib/uniforms/uniform-block.d.ts.map +0 -1
  183. package/dist/lib/uniforms/uniform-buffer-layout.d.ts.map +0 -1
  184. package/dist/lib/uniforms/uniform-store.d.ts.map +0 -1
  185. package/dist/lib/uniforms/uniform.d.ts +0 -10
  186. package/dist/lib/uniforms/uniform.d.ts.map +0 -1
  187. package/dist/lib/uniforms/uniform.js +0 -20
  188. package/dist/utils/assert.d.ts +0 -2
  189. package/dist/utils/assert.d.ts.map +0 -1
  190. package/dist/utils/assert.js +0 -10
  191. package/dist/utils/cast.d.ts +0 -3
  192. package/dist/utils/cast.d.ts.map +0 -1
  193. package/dist/utils/cast.js +0 -7
  194. package/dist/utils/check-props.d.ts +0 -7
  195. package/dist/utils/check-props.d.ts.map +0 -1
  196. package/dist/utils/check-props.js +0 -36
  197. package/dist/utils/deep-equal.d.ts +0 -9
  198. package/dist/utils/deep-equal.d.ts.map +0 -1
  199. package/dist/utils/deep-equal.js +0 -50
  200. package/dist/utils/format-value.d.ts +0 -7
  201. package/dist/utils/format-value.d.ts.map +0 -1
  202. package/dist/utils/format-value.js +0 -39
  203. package/dist/utils/load-file.d.ts +0 -35
  204. package/dist/utils/load-file.d.ts.map +0 -1
  205. package/dist/utils/load-file.js +0 -74
  206. package/dist/utils/random.d.ts +0 -5
  207. package/dist/utils/random.d.ts.map +0 -1
  208. package/dist/utils/random.js +0 -18
  209. package/dist/utils/request-animation-frame.d.ts +0 -3
  210. package/dist/utils/request-animation-frame.d.ts.map +0 -1
  211. package/dist/utils/request-animation-frame.js +0 -16
  212. package/dist/utils/stub-methods.d.ts +0 -2
  213. package/dist/utils/stub-methods.d.ts.map +0 -1
  214. package/dist/utils/stub-methods.js +0 -19
  215. package/dist/utils/utils.d.ts +0 -9
  216. package/dist/utils/utils.d.ts.map +0 -1
  217. package/src/adapter/types/accessor.ts +0 -37
  218. package/src/init.ts +0 -53
  219. package/src/lib/compiler-log/get-shader-info.ts +0 -42
  220. package/src/lib/luma.ts +0 -190
  221. package/src/lib/uniforms/uniform.ts +0 -31
  222. package/src/utils/assert.ts +0 -11
  223. package/src/utils/cast.ts +0 -8
  224. package/src/utils/check-props.ts +0 -82
  225. package/src/utils/deep-equal.ts +0 -51
  226. package/src/utils/format-value.ts +0 -47
  227. package/src/utils/load-file.ts +0 -91
  228. package/src/utils/random.ts +0 -21
  229. package/src/utils/request-animation-frame.ts +0 -19
  230. package/src/utils/stub-methods.ts +0 -29
  231. /package/dist/adapter/types/{accessor.js → attachments.js} +0 -0
  232. /package/dist/{lib/compiler-log → adapter/types}/compiler-message.d.ts +0 -0
  233. /package/dist/{lib/compiler-log → adapter/types}/compiler-message.js +0 -0
  234. /package/dist/adapter/types/{shader-types.js → uniforms.js} +0 -0
  235. /package/dist/{lib/compiler-log → adapter-utils}/format-compiler-log.js +0 -0
  236. /package/dist/{adapter/type-utils → gpu-type-utils}/decode-attribute-type.js +0 -0
  237. /package/dist/{adapter/type-utils → gpu-type-utils}/decode-data-type.js +0 -0
  238. /package/dist/{adapter/type-utils → gpu-type-utils}/decode-vertex-format.js +0 -0
  239. /package/dist/{adapter/types → gpu-type-utils}/shader-types.d.ts +0 -0
  240. /package/dist/{adapter/types/texture-formats.js → gpu-type-utils/shader-types.js} +0 -0
  241. /package/dist/{adapter/types/types.js → gpu-type-utils/texture-formats.js} +0 -0
  242. /package/dist/{adapter/type-utils → gpu-type-utils}/vertex-format-from-attribute.js +0 -0
  243. /package/dist/{adapter/types → gpu-type-utils}/vertex-formats.d.ts +0 -0
  244. /package/dist/{adapter/types → gpu-type-utils}/vertex-formats.js +0 -0
  245. /package/dist/{adapter/type-utils → gpu-type-utils}/wgsl-utils.js +0 -0
  246. /package/src/{lib/compiler-log → adapter/types}/compiler-message.ts +0 -0
  247. /package/src/{adapter/types → gpu-type-utils}/shader-types.ts +0 -0
  248. /package/src/{adapter/types → gpu-type-utils}/vertex-formats.ts +0 -0
@@ -23,16 +23,10 @@ export class Framebuffer extends Resource {
23
23
  width;
24
24
  /** Height of all attachments in this framebuffer */
25
25
  height;
26
- /** Color attachments */
27
- colorAttachments = [];
28
- /** Depth-stencil attachment, if provided */
29
- depthStencilAttachment = null;
30
26
  constructor(device, props = {}) {
31
27
  super(device, props, Framebuffer.defaultProps);
32
28
  this.width = this.props.width;
33
29
  this.height = this.props.height;
34
- // NOTE: call from subclass constructor as we cannot call overridden methods here (subclass not yet constructed)
35
- // this.autoCreateAttachmentTextures();
36
30
  }
37
31
  resize(size) {
38
32
  let updateSize = !size;
@@ -107,7 +101,7 @@ export class Framebuffer extends Resource {
107
101
  for (let i = 0; i < this.colorAttachments.length; ++i) {
108
102
  if (this.colorAttachments[i]) {
109
103
  const resizedTexture = this.device._createTexture({
110
- ...this.colorAttachments[i].props,
104
+ ...this.colorAttachments[i].texture.props,
111
105
  width,
112
106
  height
113
107
  });
@@ -118,7 +112,7 @@ export class Framebuffer extends Resource {
118
112
  }
119
113
  if (this.depthStencilAttachment) {
120
114
  const resizedTexture = this.device._createTexture({
121
- ...this.depthStencilAttachment.props,
115
+ ...this.depthStencilAttachment.texture.props,
122
116
  width,
123
117
  height
124
118
  });
@@ -128,78 +122,3 @@ export class Framebuffer extends Resource {
128
122
  }
129
123
  }
130
124
  }
131
- // TODO - remove if not needed
132
- // Create a color attachment for WebGL *
133
- // protected override createColorTexture(colorAttachment: Required<ColorAttachment>): Required<ColorAttachment> {
134
- // return this.device._createTexture({
135
- // id: `${this.id}-color`,
136
- // data: null, // reserves texture memory, but texels are undefined
137
- // format,
138
- // // type: GL.UNSIGNED_BYTE,
139
- // width: this.width,
140
- // height: this.height,
141
- // // Note: Mipmapping can be disabled by texture resource when we resize the texture
142
- // // to a non-power-of-two dimenstion (NPOT texture) under WebGL1. To have consistant
143
- // // behavior we always disable mipmaps.
144
- // mipmaps: false,
145
- // // Set MIN and MAG filtering parameters so mipmaps are not used in sampling.
146
- // // Use LINEAR so subpixel algos like fxaa work.
147
- // // Set WRAP modes that support NPOT textures too.
148
- // sampler: {
149
- // minFilter: 'linear',
150
- // magFilter: 'linear',
151
- // addressModeU: 'clamp-to-edge',
152
- // addressModeV: 'clamp-to-edge'
153
- // }
154
- // // parameters: {
155
- // // [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,
156
- // // [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,
157
- // // [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,
158
- // // [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE
159
- // // }
160
- // });
161
- // }
162
- // /** Returns fully populated attachment object. */
163
- // protected normalizeColorAttachment(
164
- // attachment: Texture | ColorTextureFormat
165
- // ): Required<ColorAttachment> {
166
- // const COLOR_ATTACHMENT_DEFAULTS: Required<ColorAttachment> = {
167
- // texture: undefined!,
168
- // format: undefined!,
169
- // clearValue: [0.0, 0.0, 0.0, 0.0],
170
- // loadOp: 'clear',
171
- // storeOp: 'store'
172
- // };
173
- // if (attachment instanceof Texture) {
174
- // return {...COLOR_ATTACHMENT_DEFAULTS, texture: attachment};
175
- // }
176
- // if (typeof attachment === 'string') {
177
- // return {...COLOR_ATTACHMENT_DEFAULTS, format: attachment};
178
- // }
179
- // return {...COLOR_ATTACHMENT_DEFAULTS, ...attachment};
180
- // }
181
- // /** Wraps texture inside fully populated attachment object. */
182
- // protected normalizeDepthStencilAttachment(
183
- // attachment: DepthStencilAttachment | Texture | DepthStencilTextureFormat
184
- // ): Required<DepthStencilAttachment> {
185
- // const DEPTH_STENCIL_ATTACHMENT_DEFAULTS: Required<DepthStencilAttachment> = {
186
- // texture: undefined!,
187
- // format: undefined!,
188
- // depthClearValue: 1.0,
189
- // depthLoadOp: 'clear',
190
- // depthStoreOp: 'store',
191
- // depthReadOnly: false,
192
- // stencilClearValue: 0,
193
- // stencilLoadOp: 'clear',
194
- // stencilStoreOp: 'store',
195
- // stencilReadOnly: false
196
- // };
197
- // if (typeof attachment === 'string') {
198
- // return {...DEPTH_STENCIL_ATTACHMENT_DEFAULTS, format: attachment};
199
- // }
200
- // // @ts-expect-error attachment instanceof Texture doesn't cover Renderbuffer
201
- // if (attachment.handle || attachment instanceof Texture) {
202
- // return {...DEPTH_STENCIL_ATTACHMENT_DEFAULTS, texture: attachment as Texture};
203
- // }
204
- // return {...DEPTH_STENCIL_ATTACHMENT_DEFAULTS, ...attachment};
205
- // }
@@ -14,6 +14,8 @@ export type RenderPassProps = ResourceProps & {
14
14
  parameters?: RenderPassParameters;
15
15
  /** Clear value for color attachment, or `load` to preserve the previous value */
16
16
  clearColor?: NumberArray | false;
17
+ /** Whether to disable / discard the output of the rasterizer */
18
+ discard?: boolean;
17
19
  /** Clear value for depth attachment, or `load` to preserve the previous value */
18
20
  clearDepth?: number | false;
19
21
  /** Clear value for stencil attachment, or `load` to preserve the previous value */
@@ -22,8 +24,6 @@ export type RenderPassProps = ResourceProps & {
22
24
  depthReadOnly?: boolean;
23
25
  /** Indicates that the stencil component is read only. */
24
26
  stencilReadOnly?: boolean;
25
- /** Whether to disable / discard the output of the rasterizer */
26
- discard?: boolean;
27
27
  /** QuerySet to write begin/end timestamps to */
28
28
  occlusionQuerySet?: QuerySet;
29
29
  /** QuerySet to write begin/end timestamps to */
@@ -1 +1 @@
1
- {"version":3,"file":"render-pass.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/render-pass.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,qBAAkB;AACtC,OAAO,KAAK,EAAC,oBAAoB,EAAC,+BAA4B;AAE9D,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,sBAAmB;AACnD,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAC1C,OAAO,EAAC,WAAW,EAAC,uBAAoB;AACxC,OAAO,EAAC,QAAQ,EAAC,uBAAoB;AAErC;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG;IAC5C,yGAAyG;IACzG,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,qEAAqE;IACrE,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,iFAAiF;IACjF,UAAU,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IACjC,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC9B,uDAAuD;IACvD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yDAAyD;IACzD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,QAAQ,CAAC;IAC7B,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,QAAQ,CAAC;IAC7B,2FAA2F;IAC3F,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;GAOG;AACH,8BAAsB,UAAW,SAAQ,QAAQ,CAAC,eAAe,CAAC;IAChE,wCAAwC;IACxC,OAAgB,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAerD;IAEF,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;gBAEW,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe;IAIlD,gDAAgD;IAChD,QAAQ,CAAC,GAAG,IAAI,IAAI;IAEpB,wGAAwG;IACxG,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAI9D,gIAAgI;IAChI,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACtD,2FAA2F;IAC3F,QAAQ,CAAC,iBAAiB,IAAI,IAAI;IAElC,kEAAkE;IAClE,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACjD,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,IAAI,IAAI;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;CActD"}
1
+ {"version":3,"file":"render-pass.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/render-pass.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,qBAAkB;AACtC,OAAO,KAAK,EAAC,oBAAoB,EAAC,+BAA4B;AAE9D,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,sBAAmB;AACnD,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAC1C,OAAO,EAAC,WAAW,EAAC,uBAAoB;AACxC,OAAO,EAAC,QAAQ,EAAC,uBAAoB;AAErC;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG;IAC5C,yGAAyG;IACzG,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,qEAAqE;IACrE,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAIlC,iFAAiF;IACjF,UAAU,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IACjC,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC9B,uDAAuD;IACvD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yDAAyD;IACzD,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,QAAQ,CAAC;IAC7B,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,QAAQ,CAAC;IAC7B,2FAA2F;IAC3F,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;GAOG;AACH,8BAAsB,UAAW,SAAQ,QAAQ,CAAC,eAAe,CAAC;IAChE,wCAAwC;IACxC,OAAgB,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAerD;IAEF,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;gBAEW,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe;IAIlD,gDAAgD;IAChD,QAAQ,CAAC,GAAG,IAAI,IAAI;IAEpB,wGAAwG;IACxG,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAI9D,gIAAgI;IAChI,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACtD,2FAA2F;IAC3F,QAAQ,CAAC,iBAAiB,IAAI,IAAI;IAElC,kEAAkE;IAClE,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACjD,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,IAAI,IAAI;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;CActD"}
@@ -1,5 +1,5 @@
1
1
  import type { Device } from "../device.js";
2
- import type { UniformValue } from "../types/types.js";
2
+ import type { UniformValue } from "../types/uniforms.js";
3
3
  import type { PrimitiveTopology, RenderPipelineParameters } from "../types/parameters.js";
4
4
  import type { ShaderLayout, Binding } from "../types/shader-layout.js";
5
5
  import type { BufferLayout } from "../types/buffer-layout.js";
@@ -23,10 +23,7 @@ export type RenderPipelineProps = ResourceProps & {
23
23
  fsConstants?: Record<string, number>;
24
24
  /** Describes the attributes and bindings exposed by the pipeline shader(s). */
25
25
  shaderLayout?: ShaderLayout | null;
26
- /**
27
- * Describes the buffers accepted by this pipeline and how they are mapped to shader attributes.
28
- * A default mapping of one buffer per attribute is always created.
29
- */
26
+ /** Describes the buffers accepted by this pipeline and how they are mapped to shader attributes. */
30
27
  bufferLayout?: BufferLayout[];
31
28
  /** Determines how vertices are read from the 'vertex' attributes */
32
29
  topology?: PrimitiveTopology;
@@ -1 +1 @@
1
- {"version":3,"file":"render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/render-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/render-pipeline.ts"],"names":[],"mappings":"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"}
@@ -48,15 +48,15 @@ export declare abstract class Resource<Props extends ResourceProps> {
48
48
  * Attaches a resource. Attached resources are auto destroyed when this resource is destroyed
49
49
  * Called automatically when sub resources are auto created but can be called by application
50
50
  */
51
- attachResource(resource: Resource<unknown>): void;
51
+ attachResource(resource: Resource<ResourceProps>): void;
52
52
  /**
53
53
  * Detach an attached resource. The resource will no longer be auto-destroyed when this resource is destroyed.
54
54
  */
55
- detachResource(resource: Resource<unknown>): void;
55
+ detachResource(resource: Resource<ResourceProps>): void;
56
56
  /**
57
57
  * Destroys a resource (only if owned), and removes from the owned (auto-destroy) list for this resource.
58
58
  */
59
- destroyAttachedResource(resource: Resource<unknown>): void;
59
+ destroyAttachedResource(resource: Resource<ResourceProps>): void;
60
60
  /** Destroy all owned resources. Make sure the resources are no longer needed before calling. */
61
61
  destroyAttachedResources(): void;
62
62
  /** Perform all destroy steps. Can be called by derived resources when overriding destroy() */
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/resource.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,qBAAkB;AAGtC,MAAM,MAAM,aAAa,GAAG;IAC1B,sGAAsG;IACtG,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,kDAAkD;IAClD,QAAQ,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,8BAAsB,QAAQ,CAAC,KAAK,SAAS,aAAa;IACxD,sCAAsC;IACtC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC,CAI1C;IAEF,QAAQ,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC;IAE5C,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAChD,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACjC,OAAO,CAAC,OAAO,CAAS;IAExB,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAS;IAC3B,6CAA6C;IAC7C,OAAO,CAAC,cAAc,CAAa;IACnC,iHAAiH;IACjH,OAAO,CAAC,kBAAkB,CAAgC;IAE1D;;OAEG;gBACS,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC;IAgBvE;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf,gCAAgC;IAChC,MAAM,IAAI,IAAI;IAKd,QAAQ,IAAI,MAAM;IAIlB;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAMlB;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI;IAIjD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI;IAIjD;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI;IAM1D,gGAAgG;IAChG,wBAAwB,IAAI,IAAI;IAUhC,8FAA8F;IAC9F,SAAS,CAAC,eAAe,IAAI,IAAI;IAMjC,mGAAmG;IACnG,SAAS,CAAC,WAAW,IAAI,IAAI;IAM7B,qDAAqD;IACrD,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAA2B,GAAG,IAAI;IAOpF,uDAAuD;IACvD,SAAS,CAAC,sBAAsB,CAAC,IAAI,SAA2B,GAAG,IAAI;IAOvE,8DAA8D;IAC9D,OAAO,CAAC,QAAQ;CAOjB"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/resource.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,qBAAkB;AAGtC,MAAM,MAAM,aAAa,GAAG;IAC1B,sGAAsG;IACtG,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,kDAAkD;IAClD,QAAQ,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,8BAAsB,QAAQ,CAAC,KAAK,SAAS,aAAa;IACxD,sCAAsC;IACtC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC,CAI1C;IAEF,QAAQ,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC;IAE5C,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAChD,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACjC,OAAO,CAAC,OAAO,CAAS;IAExB,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAS;IAC3B,6CAA6C;IAC7C,OAAO,CAAC,cAAc,CAAa;IACnC,iHAAiH;IACjH,OAAO,CAAC,kBAAkB,CAAsC;IAEhE;;OAEG;gBACS,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC;IAgBvE;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf,gCAAgC;IAChC,MAAM,IAAI,IAAI;IAKd,QAAQ,IAAI,MAAM;IAIlB;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAMlB;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI;IAIvD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI;IAIvD;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI;IAMhE,gGAAgG;IAChG,wBAAwB,IAAI,IAAI;IAUhC,8FAA8F;IAC9F,SAAS,CAAC,eAAe,IAAI,IAAI;IAMjC,mGAAmG;IACnG,SAAS,CAAC,WAAW,IAAI,IAAI;IAM7B,qDAAqD;IACrD,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAA2B,GAAG,IAAI;IAOpF,uDAAuD;IACvD,SAAS,CAAC,sBAAsB,CAAC,IAAI,SAA2B,GAAG,IAAI;IAOvE,8DAA8D;IAC9D,OAAO,CAAC,QAAQ;CAOjB"}
@@ -1,7 +1,7 @@
1
1
  // luma.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { uid } from "../../utils/utils.js";
4
+ import { uid } from "../../utils/uid.js";
5
5
  /**
6
6
  * Base class for GPU (WebGPU/WebGL) Resources
7
7
  */
@@ -1,6 +1,6 @@
1
1
  import type { Device } from "../device.js";
2
2
  import { Resource, ResourceProps } from "./resource.js";
3
- import { CompilerMessage } from "../../lib/compiler-log/compiler-message.js";
3
+ import { CompilerMessage } from "../types/compiler-message.js";
4
4
  /**
5
5
  * Properties for a Shader
6
6
  */
@@ -41,7 +41,10 @@ export declare abstract class Shader extends Resource<ShaderProps> {
41
41
  getTranslatedSource(): string | null;
42
42
  /** In browser logging of errors */
43
43
  debugShader(trigger?: "never" | "always" | "errors" | "warnings"): Promise<void>;
44
- /** In-browser UI logging of errors */
44
+ /**
45
+ * In-browser UI logging of errors
46
+ * TODO - this HTML formatting code should not be in Device, should be pluggable
47
+ */
45
48
  protected _displayShaderLog(messages: readonly CompilerMessage[]): void;
46
49
  }
47
50
  //# sourceMappingURL=shader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/shader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,qBAAkB;AACtC,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,sBAAmB;AAGnD,OAAO,EAAC,eAAe,EAAC,mDAAgD;AAIxE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG;IACxC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,yEAAyE;IACzE,KAAK,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;CACpD,CAAC;AAEF;;;GAGG;AACH,8BAAsB,MAAO,SAAQ,QAAQ,CAAC,WAAW,CAAC;IACxD,OAAgB,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,CAQjD;IAEF,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAClD,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wGAAwG;IACxG,iBAAiB,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAa;IAE/D,mCAAmC;gBACvB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAM9C,sCAAsC;IACtC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAElE,kDAAkD;IAClD,sBAAsB,IAAI,SAAS,eAAe,EAAE,GAAG,IAAI;IAI3D,mHAAmH;IACnH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAMpC,mCAAmC;IAC7B,WAAW,CAAC,OAAO,6CAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB5D,sCAAsC;IACtC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI;CA2CxE"}
1
+ {"version":3,"file":"shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/shader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,qBAAkB;AACtC,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,sBAAmB;AAGnD,OAAO,EAAC,eAAe,EAAC,qCAAkC;AAG1D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG;IACxC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,yEAAyE;IACzE,KAAK,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;CACpD,CAAC;AAEF;;;GAGG;AACH,8BAAsB,MAAO,SAAQ,QAAQ,CAAC,WAAW,CAAC;IACxD,OAAgB,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,CAQjD;IAEF,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAClD,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wGAAwG;IACxG,iBAAiB,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAa;IAE/D,mCAAmC;gBACvB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAM9C,sCAAsC;IACtC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAElE,kDAAkD;IAClD,sBAAsB,IAAI,SAAS,eAAe,EAAE,GAAG,IAAI;IAI3D,mHAAmH;IACnH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAMpC,mCAAmC;IAC7B,WAAW,CAAC,OAAO,6CAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB5D;;;OAGG;IACH,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI;CAyCxE"}
@@ -3,9 +3,8 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { Resource } from "./resource.js";
5
5
  // import { log } from '../../utils/log';
6
- import { uid } from "../../utils/utils.js";
7
- import { formatCompilerLog } from "../../lib/compiler-log/format-compiler-log.js";
8
- import { getShaderInfo } from "../../lib/compiler-log/get-shader-info.js";
6
+ import { uid } from "../../utils/uid.js";
7
+ import { formatCompilerLog } from "../../adapter-utils/format-compiler-log.js";
9
8
  /**
10
9
  * Immutable Shader object
11
10
  * In WebGPU the handle can be copied between threads
@@ -66,13 +65,16 @@ export class Shader extends Resource {
66
65
  this._displayShaderLog(messages);
67
66
  }
68
67
  // PRIVATE
69
- /** In-browser UI logging of errors */
68
+ /**
69
+ * In-browser UI logging of errors
70
+ * TODO - this HTML formatting code should not be in Device, should be pluggable
71
+ */
70
72
  _displayShaderLog(messages) {
71
73
  // Return if under Node.js / incomplete `document` polyfills
72
74
  if (typeof document === 'undefined' || !document?.createElement) {
73
75
  return;
74
76
  }
75
- const shaderName = getShaderInfo(this.source).name;
77
+ const shaderName = getShaderName(this.source);
76
78
  const shaderTitle = `${this.stage} ${shaderName}`;
77
79
  let htmlLog = formatCompilerLog(messages, this.source, { showSourceCode: 'all', html: true });
78
80
  // Show translated source if available
@@ -95,9 +97,7 @@ ${htmlLog}
95
97
  button.style.textAlign = 'left';
96
98
  document.body.appendChild(button);
97
99
  const errors = document.getElementsByClassName('luma-compiler-log-error');
98
- if (errors[0]?.scrollIntoView) {
99
- errors[0].scrollIntoView();
100
- }
100
+ errors[0]?.scrollIntoView();
101
101
  // TODO - add a small embedded copy button (instead of main button)
102
102
  button.onclick = () => {
103
103
  // const source = this.source.replaceAll('\n', '<br />');
@@ -110,5 +110,11 @@ ${htmlLog}
110
110
  // HELPERS
111
111
  /** Deduce an id, from shader source, or supplied id, or shader type */
112
112
  function getShaderIdFromProps(props) {
113
- return getShaderInfo(props.source).name || props.id || uid(`unnamed ${props.stage}-shader`);
113
+ return getShaderName(props.source) || props.id || uid(`unnamed ${props.stage}-shader`);
114
+ }
115
+ /** Extracts GLSLIFY style naming of shaders: `#define SHADER_NAME ...` */
116
+ function getShaderName(shader, defaultName = 'unnamed') {
117
+ const SHADER_NAME_REGEXP = /#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/;
118
+ const match = SHADER_NAME_REGEXP.exec(shader);
119
+ return match ? match[1] : defaultName;
114
120
  }
@@ -1,6 +1,6 @@
1
1
  import type { Device } from "../device.js";
2
2
  import type { Texture } from "./texture.js";
3
- import type { TextureFormat } from "../types/texture-formats.js";
3
+ import type { TextureFormat } from "../../gpu-type-utils/texture-formats.js";
4
4
  import { Resource, ResourceProps } from "./resource.js";
5
5
  /** Properties for initializing a texture view */
6
6
  export type TextureViewProps = ResourceProps & {
@@ -1 +1 @@
1
- {"version":3,"file":"texture-view.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/texture-view.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,qBAAkB;AACtC,OAAO,KAAK,EAAC,OAAO,EAAC,qBAAkB;AACvC,OAAO,KAAK,EAAC,aAAa,EAAC,oCAAiC;AAC5D,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,sBAAmB;AAEnD,iDAAiD;AACjD,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,wIAAwI;IACxI,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACpE,sFAAsF;IACtF,MAAM,CAAC,EAAE,KAAK,GAAG,cAAc,GAAG,YAAY,CAAC;IAC/C,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8FAA8F;IAC9F,aAAa,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+FAA+F;IAC/F,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,mCAAmC;AACnC,8BAAsB,WAAY,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;IAClE,OAAgB,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAStD;IAEF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,0EAA0E;gBAC9D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG;QAAC,OAAO,EAAE,OAAO,CAAA;KAAC;CAGzE"}
1
+ {"version":3,"file":"texture-view.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/texture-view.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,qBAAkB;AACtC,OAAO,KAAK,EAAC,OAAO,EAAC,qBAAkB;AACvC,OAAO,KAAK,EAAC,aAAa,EAAC,gDAA6C;AACxE,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,sBAAmB;AAEnD,iDAAiD;AACjD,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,wIAAwI;IACxI,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACpE,sFAAsF;IACtF,MAAM,CAAC,EAAE,KAAK,GAAG,cAAc,GAAG,YAAY,CAAC;IAC/C,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8FAA8F;IAC9F,aAAa,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+FAA+F;IAC/F,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,mCAAmC;AACnC,8BAAsB,WAAY,SAAQ,QAAQ,CAAC,gBAAgB,CAAC;IAClE,OAAgB,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAStD;IAEF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,0EAA0E;gBAC9D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG;QAAC,OAAO,EAAE,OAAO,CAAA;KAAC;CAGzE"}
@@ -1,70 +1,138 @@
1
- /// <reference types="node" />
2
1
  import type { Device } from "../device.js";
3
2
  import type { TypedArray } from "../../types.js";
4
- import type { TextureFormat } from "../types/texture-formats.js";
3
+ import type { TextureFormat } from "../../gpu-type-utils/texture-formats.js";
4
+ import type { TextureView, TextureViewProps } from "./texture-view.js";
5
5
  import { Resource, ResourceProps } from "./resource.js";
6
6
  import { Sampler, SamplerProps } from "./sampler.js";
7
- import { TextureView, TextureViewProps } from "./texture-view.js";
8
- /** Data types that can be used to initialize textures */
9
- export type TextureData = TypedArray | ArrayBuffer | Buffer | ImageBitmap | HTMLImageElement;
10
- export type CubeTextureData = Record<string, TextureData> | Record<string, Promise<TextureData>>;
11
- export type ExternalTextureData = HTMLVideoElement;
12
- /** Abstract Texture interface */
13
- export type TextureProps = ResourceProps & {
7
+ /**
8
+ * These represent the main compressed texture formats
9
+ * Each format typically has a number of more specific subformats
10
+ */
11
+ export type TextureCompressionFormat = 'dxt' | 'dxt-srgb' | 'etc1' | 'etc2' | 'pvrtc' | 'atc' | 'astc' | 'rgtc';
12
+ /** Names of cube texture faces */
13
+ export type TextureCubeFace = '+X' | '-X' | '+Y' | '-Y' | '+Z' | '-Z';
14
+ /**
15
+ * One mip level
16
+ * Basic data structure is similar to `ImageData`
17
+ * additional optional fields can describe compressed texture data.
18
+ */
19
+ export type TextureLevelData = {
20
+ /** WebGPU style format string. Defaults to 'rgba8unorm' */
21
+ format?: TextureFormat;
22
+ data: TypedArray;
23
+ width: number;
24
+ height: number;
25
+ compressed?: boolean;
26
+ byteLength?: number;
27
+ hasAlpha?: boolean;
28
+ };
29
+ /**
30
+ * Built-in data types that can be used to initialize textures
31
+ * @note ImageData can be used for 8 bit data via Uint8ClampedArray
32
+ */
33
+ export type ExternalImage = ImageBitmap | ImageData | HTMLImageElement | HTMLVideoElement | VideoFrame | HTMLCanvasElement | OffscreenCanvas;
34
+ export type TextureLevelSource = TextureLevelData | ExternalImage;
35
+ /** Texture data can be one or more mip levels */
36
+ export type TextureData = TextureLevelData | ExternalImage | (TextureLevelData | ExternalImage)[];
37
+ /** @todo - define what data type is supported for 1D textures */
38
+ export type Texture1DData = TypedArray | TextureLevelData;
39
+ /** Texture data can be one or more mip levels */
40
+ export type Texture2DData = TypedArray | TextureLevelData | ExternalImage | (TextureLevelData | ExternalImage)[];
41
+ /** Array of textures */
42
+ export type Texture3DData = TypedArray | TextureData[];
43
+ /** 6 face textures */
44
+ export type TextureCubeData = Record<TextureCubeFace, Texture2DData>;
45
+ /** Array of textures */
46
+ export type TextureArrayData = TextureData[];
47
+ /** Array of 6 face textures */
48
+ export type TextureCubeArrayData = Record<TextureCubeFace, TextureData>[];
49
+ export type TextureDataProps = Texture1DProps | Texture2DProps | Texture3DProps | TextureArrayProps | TextureCubeProps | TextureCubeArrayProps;
50
+ export type Texture1DProps = {
51
+ dimension: '1d';
52
+ data?: Texture1DData | null;
53
+ };
54
+ export type Texture2DProps = {
55
+ dimension?: '2d';
56
+ data?: Texture2DData | null;
57
+ };
58
+ export type Texture3DProps = {
59
+ dimension: '3d';
60
+ data?: Texture3DData | null;
61
+ };
62
+ export type TextureArrayProps = {
63
+ dimension: '2d-array';
64
+ data?: TextureArrayData | null;
65
+ };
66
+ export type TextureCubeProps = {
67
+ dimension: 'cube';
68
+ data?: TextureCubeData | null;
69
+ };
70
+ export type TextureCubeArrayProps = {
71
+ dimension: 'cube-array';
72
+ data: TextureCubeArrayData | null;
73
+ };
74
+ /** Texture properties */
75
+ export type TextureProps = ResourceProps & TextureDataProps & {
14
76
  format?: TextureFormat;
15
- dimension?: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
16
77
  width?: number | undefined;
17
78
  height?: number | undefined;
18
79
  depth?: number;
19
80
  usage?: number;
20
- data?: TextureData | Promise<TextureData> | CubeTextureData | string | HTMLVideoElement | null;
21
- mipmaps?: boolean;
22
- mipLevels?: number;
81
+ /** How many mip levels */
82
+ mipLevels?: number | 'pyramid';
83
+ /** Multi sampling */
23
84
  samples?: number;
24
- type?: number;
25
- compressed?: boolean;
85
+ /** Specifying mipmaps will default mipLevels to 'pyramid' and attempt to generate mipmaps */
86
+ mipmaps?: boolean;
87
+ /** Sampler (or SamplerProps) for the default sampler for this texture. Used if no sampler provided. Note that other samplers can still be used. */
26
88
  sampler?: Sampler | SamplerProps;
89
+ /** Props for the default TextureView for this texture. Note that other views can still be created and used. */
27
90
  view?: TextureViewProps;
91
+ /** @deprecated - this is implicit from format */
92
+ compressed?: boolean;
28
93
  };
29
- export type WebGPUTextureProps = ResourceProps & {
30
- width: number;
31
- height: number;
94
+ /** Options for Texture.copyExternalImage */
95
+ export type CopyExternalImageOptions = {
96
+ /** Image */
97
+ image: ExternalImage;
98
+ /** Copy from image x offset (default 0) */
99
+ sourceX?: number;
100
+ /** Copy from image y offset (default 0) */
101
+ sourceY?: number;
102
+ /** Copy area width (default 1) */
103
+ width?: number;
104
+ /** Copy area height (default 1) */
105
+ height?: number;
106
+ /** Copy depth (default 1) */
32
107
  depth?: number;
33
- mipLevels?: number;
34
- format?: string;
35
- };
36
- /**
37
- * @deprecated
38
- * @todo remove, are these even used anymore?
39
- */
40
- export type DeprecatedWebGLTextureProps = {
41
- /** @deprecated use props.sampler */
42
- parameters?: Record<number, number>;
43
- /** @deprecated use props.data */
44
- pixels?: any;
45
- /** @deprecated use props.format */
46
- dataFormat?: number | null;
47
- /** @deprecated rarely supported */
48
- border?: number;
49
- /** @deprecated WebGL only. */
50
- pixelStore?: object;
51
- /** @deprecated WebGL only. */
52
- textureUnit?: number;
53
- /** @deprecated WebGL only. Use dimension. */
54
- target?: number;
108
+ /** Which mip-level to copy into (default 0) */
109
+ mipLevel?: number;
110
+ /** Start copying into offset x (default 0) */
111
+ x?: number;
112
+ /** Start copying into offset y (default 0) */
113
+ y?: number;
114
+ /** Start copying from depth layer z (default 0) */
115
+ z?: number;
116
+ /** When copying into depth stencil textures (default 'all') */
117
+ aspect?: 'all' | 'stencil-only' | 'depth-only';
118
+ /** Specific color space of image data */
119
+ colorSpace?: 'srgb';
120
+ /** premultiplied */
121
+ premultipliedAlpha?: boolean;
55
122
  };
56
123
  /**
57
124
  * Abstract Texture interface
58
125
  * Texture Object
59
126
  * https://gpuweb.github.io/gpuweb/#gputexture
60
127
  */
61
- export declare abstract class Texture<Props extends TextureProps = TextureProps> extends Resource<Props> {
62
- static defaultProps: Required<TextureProps>;
128
+ export declare abstract class Texture extends Resource<TextureProps> {
63
129
  static COPY_SRC: number;
64
130
  static COPY_DST: number;
65
- static TEXTURE_BINDING: number;
66
- static STORAGE_BINDING: number;
131
+ static TEXTURE: number;
132
+ static STORAGE: number;
67
133
  static RENDER_ATTACHMENT: number;
134
+ static CubeFaces: TextureCubeFace[];
135
+ static defaultProps: Required<TextureProps>;
68
136
  get [Symbol.toStringTag](): string;
69
137
  /** dimension of this texture */
70
138
  readonly dimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
@@ -75,16 +143,45 @@ export declare abstract class Texture<Props extends TextureProps = TextureProps>
75
143
  /** height in pixels of this texture */
76
144
  height: number;
77
145
  /** depth of this texture */
78
- readonly depth: number;
146
+ depth: number;
147
+ /** mip levels in this texture */
148
+ mipLevels: number;
79
149
  /** Default sampler for this texture */
80
150
  abstract sampler: Sampler;
81
151
  /** Default view for this texture */
82
152
  abstract view: TextureView;
83
153
  /** "Time" of last update. Monotonically increasing timestamp */
84
154
  updateTimestamp: number;
155
+ /** Check if data is an external image */
156
+ static isExternalImage(data: unknown): data is ExternalImage;
157
+ /** Determine size (width and height) of provided image data */
158
+ static getExternalImageSize(data: ExternalImage): {
159
+ width: number;
160
+ height: number;
161
+ };
162
+ /** Check if texture data is a typed array */
163
+ static isTextureLevelData(data: TextureData): data is TextureLevelData;
164
+ /** Get the size of the texture described by the provided TextureData */
165
+ static getTextureDataSize(data: TextureData | TextureCubeData | TextureArrayData | TextureCubeArrayData | TypedArray): {
166
+ width: number;
167
+ height: number;
168
+ } | null;
169
+ /** Calculate the number of mip levels for a texture of width and height */
170
+ static getMipLevelCount(width: number, height: number): number;
171
+ /** Convert luma.gl cubemap face constants to depth index */
172
+ static getCubeFaceDepth(face: TextureCubeFace): number;
85
173
  /** Do not use directly. Create with device.createTexture() */
86
- constructor(device: Device, props: Props, defaultProps?: Required<Props>);
174
+ constructor(device: Device, props: TextureProps);
87
175
  /** Create a texture view for this texture */
88
- abstract createView(props?: TextureViewProps): TextureView;
176
+ abstract createView(props: TextureViewProps): TextureView;
177
+ /** Set sampler props associated with this texture */
178
+ abstract setSampler(sampler?: Sampler | SamplerProps): void;
179
+ /** Copy external image data into the texture */
180
+ abstract copyExternalImage(options: CopyExternalImageOptions): {
181
+ width: number;
182
+ height: number;
183
+ };
184
+ /** Default options */
185
+ protected static defaultCopyExternalImageOptions: Required<CopyExternalImageOptions>;
89
186
  }
90
187
  //# sourceMappingURL=texture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/texture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/texture.ts"],"names":[],"mappings":"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"}