@aardworx/wombat.rendering 0.1.0 → 0.1.1

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 (181) hide show
  1. package/dist/commands/clear.d.ts +3 -0
  2. package/dist/commands/clear.d.ts.map +1 -0
  3. package/dist/commands/clear.js +69 -0
  4. package/dist/commands/clear.js.map +1 -0
  5. package/dist/commands/index.d.ts +3 -0
  6. package/dist/commands/index.d.ts.map +1 -0
  7. package/dist/commands/index.js +5 -0
  8. package/dist/commands/index.js.map +1 -0
  9. package/dist/commands/render.d.ts +16 -0
  10. package/dist/commands/render.d.ts.map +1 -0
  11. package/dist/commands/render.js +93 -0
  12. package/dist/commands/render.js.map +1 -0
  13. package/dist/core/acquire.d.ts +3 -0
  14. package/dist/core/acquire.d.ts.map +1 -0
  15. package/dist/core/acquire.js +22 -0
  16. package/dist/core/acquire.js.map +1 -0
  17. package/dist/core/adaptiveResource.d.ts +29 -0
  18. package/dist/core/adaptiveResource.d.ts.map +1 -0
  19. package/dist/core/adaptiveResource.js +73 -0
  20. package/dist/core/adaptiveResource.js.map +1 -0
  21. package/dist/core/buffer.d.ts +20 -0
  22. package/dist/core/buffer.d.ts.map +1 -0
  23. package/dist/core/buffer.js +30 -0
  24. package/dist/core/buffer.js.map +1 -0
  25. package/dist/core/bufferView.d.ts +15 -0
  26. package/dist/core/bufferView.d.ts.map +1 -0
  27. package/dist/core/bufferView.js +12 -0
  28. package/dist/core/bufferView.js.map +1 -0
  29. package/dist/core/clear.d.ts +9 -0
  30. package/dist/core/clear.d.ts.map +1 -0
  31. package/dist/core/clear.js +7 -0
  32. package/dist/core/clear.js.map +1 -0
  33. package/dist/core/command.d.ts +45 -0
  34. package/dist/core/command.d.ts.map +1 -0
  35. package/dist/core/command.js +12 -0
  36. package/dist/core/command.js.map +1 -0
  37. package/dist/core/drawCall.d.ts +17 -0
  38. package/dist/core/drawCall.d.ts.map +1 -0
  39. package/dist/core/drawCall.js +5 -0
  40. package/dist/core/drawCall.js.map +1 -0
  41. package/dist/core/framebuffer.d.ts +32 -0
  42. package/dist/core/framebuffer.d.ts.map +1 -0
  43. package/dist/core/framebuffer.js +6 -0
  44. package/dist/core/framebuffer.js.map +1 -0
  45. package/dist/core/framebufferSignature.d.ts +12 -0
  46. package/dist/core/framebufferSignature.d.ts.map +1 -0
  47. package/dist/core/framebufferSignature.js +7 -0
  48. package/dist/core/framebufferSignature.js.map +1 -0
  49. package/dist/core/index.d.ts +20 -0
  50. package/dist/core/index.d.ts.map +1 -0
  51. package/dist/core/index.js +13 -0
  52. package/dist/core/index.js.map +1 -0
  53. package/dist/core/pipelineState.d.ts +56 -0
  54. package/dist/core/pipelineState.d.ts.map +1 -0
  55. package/dist/core/pipelineState.js +6 -0
  56. package/dist/core/pipelineState.js.map +1 -0
  57. package/dist/core/renderContext.d.ts +8 -0
  58. package/dist/core/renderContext.d.ts.map +1 -0
  59. package/dist/core/renderContext.js +39 -0
  60. package/dist/core/renderContext.js.map +1 -0
  61. package/dist/core/renderObject.d.ts +45 -0
  62. package/dist/core/renderObject.d.ts.map +1 -0
  63. package/dist/core/renderObject.js +11 -0
  64. package/dist/core/renderObject.js.map +1 -0
  65. package/dist/core/renderTask.d.ts +12 -0
  66. package/dist/core/renderTask.d.ts.map +1 -0
  67. package/dist/core/renderTask.js +5 -0
  68. package/dist/core/renderTask.js.map +1 -0
  69. package/dist/core/renderTree.d.ts +35 -0
  70. package/dist/core/renderTree.d.ts.map +1 -0
  71. package/dist/core/renderTree.js +17 -0
  72. package/dist/core/renderTree.js.map +1 -0
  73. package/dist/core/sampler.d.ts +12 -0
  74. package/dist/core/sampler.d.ts.map +1 -0
  75. package/dist/core/sampler.js +8 -0
  76. package/dist/core/sampler.js.map +1 -0
  77. package/dist/core/shader.d.ts +3 -0
  78. package/dist/core/shader.d.ts.map +1 -0
  79. package/dist/core/shader.js +6 -0
  80. package/dist/core/shader.js.map +1 -0
  81. package/dist/core/texture.d.ts +34 -0
  82. package/dist/core/texture.d.ts.map +1 -0
  83. package/dist/core/texture.js +29 -0
  84. package/dist/core/texture.js.map +1 -0
  85. package/dist/index.d.ts +6 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +18 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/resources/adaptiveBuffer.d.ts +22 -0
  90. package/dist/resources/adaptiveBuffer.d.ts.map +1 -0
  91. package/dist/resources/adaptiveBuffer.js +99 -0
  92. package/dist/resources/adaptiveBuffer.js.map +1 -0
  93. package/dist/resources/adaptiveSampler.d.ts +4 -0
  94. package/dist/resources/adaptiveSampler.d.ts.map +1 -0
  95. package/dist/resources/adaptiveSampler.js +73 -0
  96. package/dist/resources/adaptiveSampler.js.map +1 -0
  97. package/dist/resources/adaptiveTexture.d.ts +14 -0
  98. package/dist/resources/adaptiveTexture.d.ts.map +1 -0
  99. package/dist/resources/adaptiveTexture.js +265 -0
  100. package/dist/resources/adaptiveTexture.js.map +1 -0
  101. package/dist/resources/framebuffer.d.ts +14 -0
  102. package/dist/resources/framebuffer.d.ts.map +1 -0
  103. package/dist/resources/framebuffer.js +144 -0
  104. package/dist/resources/framebuffer.js.map +1 -0
  105. package/dist/resources/framebufferSignature.d.ts +10 -0
  106. package/dist/resources/framebufferSignature.d.ts.map +1 -0
  107. package/dist/resources/framebufferSignature.js +22 -0
  108. package/dist/resources/framebufferSignature.js.map +1 -0
  109. package/dist/resources/index.d.ts +14 -0
  110. package/dist/resources/index.d.ts.map +1 -0
  111. package/dist/resources/index.js +24 -0
  112. package/dist/resources/index.js.map +1 -0
  113. package/dist/resources/mipGen.d.ts +17 -0
  114. package/dist/resources/mipGen.d.ts.map +1 -0
  115. package/dist/resources/mipGen.js +125 -0
  116. package/dist/resources/mipGen.js.map +1 -0
  117. package/dist/resources/preparedComputeShader.d.ts +104 -0
  118. package/dist/resources/preparedComputeShader.d.ts.map +1 -0
  119. package/dist/resources/preparedComputeShader.js +341 -0
  120. package/dist/resources/preparedComputeShader.js.map +1 -0
  121. package/dist/resources/preparedRenderObject.d.ts +61 -0
  122. package/dist/resources/preparedRenderObject.d.ts.map +1 -0
  123. package/dist/resources/preparedRenderObject.js +430 -0
  124. package/dist/resources/preparedRenderObject.js.map +1 -0
  125. package/dist/resources/renderPipeline.d.ts +27 -0
  126. package/dist/resources/renderPipeline.d.ts.map +1 -0
  127. package/dist/resources/renderPipeline.js +102 -0
  128. package/dist/resources/renderPipeline.js.map +1 -0
  129. package/dist/resources/shaderDiagnostics.d.ts +14 -0
  130. package/dist/resources/shaderDiagnostics.d.ts.map +1 -0
  131. package/dist/resources/shaderDiagnostics.js +40 -0
  132. package/dist/resources/shaderDiagnostics.js.map +1 -0
  133. package/dist/resources/sourceMapDecoder.d.ts +23 -0
  134. package/dist/resources/sourceMapDecoder.d.ts.map +1 -0
  135. package/dist/resources/sourceMapDecoder.js +116 -0
  136. package/dist/resources/sourceMapDecoder.js.map +1 -0
  137. package/dist/resources/uniformBuffer.d.ts +23 -0
  138. package/dist/resources/uniformBuffer.d.ts.map +1 -0
  139. package/dist/resources/uniformBuffer.js +149 -0
  140. package/dist/resources/uniformBuffer.js.map +1 -0
  141. package/dist/resources/webgpuFlags.d.ts +32 -0
  142. package/dist/resources/webgpuFlags.d.ts.map +1 -0
  143. package/dist/resources/webgpuFlags.js +40 -0
  144. package/dist/resources/webgpuFlags.js.map +1 -0
  145. package/dist/runtime/copy.d.ts +3 -0
  146. package/dist/runtime/copy.d.ts.map +1 -0
  147. package/dist/runtime/copy.js +12 -0
  148. package/dist/runtime/copy.js.map +1 -0
  149. package/dist/runtime/index.d.ts +6 -0
  150. package/dist/runtime/index.d.ts.map +1 -0
  151. package/dist/runtime/index.js +7 -0
  152. package/dist/runtime/index.js.map +1 -0
  153. package/dist/runtime/renderTask.d.ts +10 -0
  154. package/dist/runtime/renderTask.d.ts.map +1 -0
  155. package/dist/runtime/renderTask.js +119 -0
  156. package/dist/runtime/renderTask.js.map +1 -0
  157. package/dist/runtime/renderTo.d.ts +40 -0
  158. package/dist/runtime/renderTo.d.ts.map +1 -0
  159. package/dist/runtime/renderTo.js +97 -0
  160. package/dist/runtime/renderTo.js.map +1 -0
  161. package/dist/runtime/runtime.d.ts +48 -0
  162. package/dist/runtime/runtime.d.ts.map +1 -0
  163. package/dist/runtime/runtime.js +100 -0
  164. package/dist/runtime/runtime.js.map +1 -0
  165. package/dist/runtime/scenePass.d.ts +25 -0
  166. package/dist/runtime/scenePass.d.ts.map +1 -0
  167. package/dist/runtime/scenePass.js +250 -0
  168. package/dist/runtime/scenePass.js.map +1 -0
  169. package/dist/window/canvas.d.ts +38 -0
  170. package/dist/window/canvas.d.ts.map +1 -0
  171. package/dist/window/canvas.js +194 -0
  172. package/dist/window/canvas.js.map +1 -0
  173. package/dist/window/index.d.ts +3 -0
  174. package/dist/window/index.d.ts.map +1 -0
  175. package/dist/window/index.js +4 -0
  176. package/dist/window/index.js.map +1 -0
  177. package/dist/window/loop.d.ts +16 -0
  178. package/dist/window/loop.d.ts.map +1 -0
  179. package/dist/window/loop.js +43 -0
  180. package/dist/window/loop.js.map +1 -0
  181. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framebuffer.js","sourceRoot":"","sources":["../../src/resources/framebuffer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { FramebufferSignature } from "../core/index.js";
2
+ export interface FramebufferSignatureSpec {
3
+ readonly colors: Record<string, GPUTextureFormat>;
4
+ readonly depthStencil?: {
5
+ readonly format: GPUTextureFormat;
6
+ };
7
+ readonly sampleCount?: number;
8
+ }
9
+ export declare function createFramebufferSignature(spec: FramebufferSignatureSpec): FramebufferSignature;
10
+ //# sourceMappingURL=framebufferSignature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framebufferSignature.d.ts","sourceRoot":"","sources":["../../src/resources/framebufferSignature.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAClD,QAAQ,CAAC,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,wBAAwB,GAC7B,oBAAoB,CAWtB"}
@@ -0,0 +1,22 @@
1
+ // Helpers for constructing a `FramebufferSignature` from plain
2
+ // records. Pure value construction — no GPU calls — but lives in
3
+ // the resources package because it pairs with `allocateFramebuffer`.
4
+ import { HashMap } from "@aardworx/wombat.adaptive";
5
+ export function createFramebufferSignature(spec) {
6
+ let colors = HashMap.empty();
7
+ for (const [name, format] of Object.entries(spec.colors)) {
8
+ colors = colors.add(name, format);
9
+ }
10
+ const sig = {
11
+ colors,
12
+ sampleCount: spec.sampleCount ?? 1,
13
+ ...(spec.depthStencil ? { depthStencil: depthStencilFor(spec.depthStencil.format) } : {}),
14
+ };
15
+ return sig;
16
+ }
17
+ function depthStencilFor(format) {
18
+ const hasDepth = /^depth/.test(format) || format === "depth24plus-stencil8" || format === "depth32float-stencil8";
19
+ const hasStencil = /stencil/.test(format);
20
+ return { format, hasDepth, hasStencil };
21
+ }
22
+ //# sourceMappingURL=framebufferSignature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framebufferSignature.js","sourceRoot":"","sources":["../../src/resources/framebufferSignature.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,iEAAiE;AACjE,qEAAqE;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAYpD,MAAM,UAAU,0BAA0B,CACxC,IAA8B;IAE9B,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,EAA4B,CAAC;IACvD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,GAAG,GAAyB;QAChC,MAAM;QACN,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1F,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,MAAwB;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,sBAAsB,IAAI,MAAM,KAAK,uBAAuB,CAAC;IAClH,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,14 @@
1
+ export { prepareAdaptiveBuffer, type PrepareAdaptiveBufferOptions, } from "./adaptiveBuffer.js";
2
+ export { prepareAdaptiveTexture, type PrepareAdaptiveTextureOptions, } from "./adaptiveTexture.js";
3
+ export { prepareAdaptiveSampler, } from "./adaptiveSampler.js";
4
+ export { prepareUniformBuffer, type PrepareUniformBufferOptions, } from "./uniformBuffer.js";
5
+ export { compileRenderPipeline, type CompileRenderPipelineDescription, } from "./renderPipeline.js";
6
+ export { installShaderDiagnostics, type ShaderDiagnosticsOptions, } from "./shaderDiagnostics.js";
7
+ export { decodeLine, decodePosition, type DecodedPosition, } from "./sourceMapDecoder.js";
8
+ export { generateMips, type GenerateMipsOptions, } from "./mipGen.js";
9
+ export { prepareRenderObject, PreparedRenderObject, type PrepareRenderObjectOptions, } from "./preparedRenderObject.js";
10
+ export { prepareComputeShader, PreparedComputeShader, ComputeInputBinding, type PrepareComputeShaderOptions, type DispatchSize, } from "./preparedComputeShader.js";
11
+ export { createFramebufferSignature, type FramebufferSignatureSpec, } from "./framebufferSignature.js";
12
+ export { allocateFramebuffer, type AllocateFramebufferOptions, type FramebufferSize, } from "./framebuffer.js";
13
+ export { BufferUsage, ColorWrite, ShaderStage, TextureUsage, } from "./webgpuFlags.js";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,GAClC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EACrB,KAAK,gCAAgC,GACtC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,wBAAwB,EACxB,KAAK,wBAAwB,GAC9B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,UAAU,EACV,cAAc,EACd,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,0BAA0B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,2BAA2B,EAChC,KAAK,YAAY,GAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,0BAA0B,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,GACb,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,24 @@
1
+ // Public API of @aardworx/wombat.rendering-resources.
2
+ //
3
+ // Layer 2 — resource-creator functions on `GPUDevice`. Each
4
+ // `prepare*` function lifts a user-provided `aval<I…>` source
5
+ // type into a ref-counted `AdaptiveResource<GPU…>` that:
6
+ // - Allocates the GPU handle on first compute / on host
7
+ // mismatch.
8
+ // - Uploads on host-side change, reuses the existing handle
9
+ // when shape-compatible.
10
+ // - Frees the handle on last `release()`.
11
+ export { prepareAdaptiveBuffer, } from "./adaptiveBuffer.js";
12
+ export { prepareAdaptiveTexture, } from "./adaptiveTexture.js";
13
+ export { prepareAdaptiveSampler, } from "./adaptiveSampler.js";
14
+ export { prepareUniformBuffer, } from "./uniformBuffer.js";
15
+ export { compileRenderPipeline, } from "./renderPipeline.js";
16
+ export { installShaderDiagnostics, } from "./shaderDiagnostics.js";
17
+ export { decodeLine, decodePosition, } from "./sourceMapDecoder.js";
18
+ export { generateMips, } from "./mipGen.js";
19
+ export { prepareRenderObject, PreparedRenderObject, } from "./preparedRenderObject.js";
20
+ export { prepareComputeShader, PreparedComputeShader, ComputeInputBinding, } from "./preparedComputeShader.js";
21
+ export { createFramebufferSignature, } from "./framebufferSignature.js";
22
+ export { allocateFramebuffer, } from "./framebuffer.js";
23
+ export { BufferUsage, ColorWrite, ShaderStage, TextureUsage, } from "./webgpuFlags.js";
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,4DAA4D;AAC5D,8DAA8D;AAC9D,yDAAyD;AACzD,0DAA0D;AAC1D,gBAAgB;AAChB,8DAA8D;AAC9D,6BAA6B;AAC7B,4CAA4C;AAE5C,OAAO,EACL,qBAAqB,GAEtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,sBAAsB,GAEvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,GAErB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,GAEtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,wBAAwB,GAEzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,UAAU,EACV,cAAc,GAEf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,GAEb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GAErB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,GAGpB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,0BAA0B,GAE3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,mBAAmB,GAGpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,GACb,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,17 @@
1
+ export interface GenerateMipsOptions {
2
+ /** Generate mips starting from this base level. Default 0. */
3
+ readonly baseMipLevel?: number;
4
+ /** Generate up to this many additional mips beyond the base. Default: down to 1×1. */
5
+ readonly mipLevelCount?: number;
6
+ /** Optional debug label. */
7
+ readonly label?: string;
8
+ }
9
+ /**
10
+ * Records compute dispatches that downsample `texture`'s mip
11
+ * chain. The texture must have been created with
12
+ * `STORAGE_BINDING | TEXTURE_BINDING` and the appropriate
13
+ * `mipLevelCount`. Each level is computed from the level above
14
+ * via a 2×2 box filter.
15
+ */
16
+ export declare function generateMips(device: GPUDevice, encoder: GPUCommandEncoder, texture: GPUTexture, opts?: GenerateMipsOptions): void;
17
+ //# sourceMappingURL=mipGen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mipGen.d.ts","sourceRoot":"","sources":["../../src/resources/mipGen.ts"],"names":[],"mappings":"AAwFA,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,sFAAsF;IACtF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,UAAU,EACnB,IAAI,GAAE,mBAAwB,GAC7B,IAAI,CAsCN"}
@@ -0,0 +1,125 @@
1
+ // Mip-map generation via compute pass.
2
+ //
3
+ // Standard 2× downsample shader: each invocation reads a 2×2 block
4
+ // of source-mip texels and writes the average to the destination
5
+ // mip. Iterated mip(N) → mip(N+1) for each pair of adjacent levels.
6
+ //
7
+ // `generateMips(device, encoder, texture)` records the dispatches
8
+ // into the encoder; the user is responsible for submission.
9
+ // Pipelines + bind groups are cached per (device, format) so
10
+ // repeat calls share the GPU work.
11
+ const WGSL_MIP_GEN_TEMPLATE = (storageFormat) => `
12
+ @group(0) @binding(0) var src: texture_2d<f32>;
13
+ @group(0) @binding(1) var dst: texture_storage_2d<${storageFormat}, write>;
14
+
15
+ @compute @workgroup_size(8, 8, 1)
16
+ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
17
+ let dstSize: vec2<u32> = textureDimensions(dst);
18
+ if (id.x >= dstSize.x || id.y >= dstSize.y) { return; }
19
+ let srcSize: vec2<u32> = textureDimensions(src);
20
+ let i: vec2<i32> = vec2<i32>(i32(id.x) * 2, i32(id.y) * 2);
21
+ let i2: vec2<i32> = vec2<i32>(min(i.x + 1, i32(srcSize.x) - 1), min(i.y + 1, i32(srcSize.y) - 1));
22
+ let a: vec4<f32> = textureLoad(src, vec2<i32>(i.x, i.y), 0);
23
+ let b: vec4<f32> = textureLoad(src, vec2<i32>(i2.x, i.y), 0);
24
+ let c: vec4<f32> = textureLoad(src, vec2<i32>(i.x, i2.y), 0);
25
+ let d: vec4<f32> = textureLoad(src, vec2<i32>(i2.x, i2.y), 0);
26
+ textureStore(dst, vec2<i32>(i32(id.x), i32(id.y)), (a + b + c + d) * 0.25);
27
+ }
28
+ `;
29
+ const caches = new WeakMap();
30
+ function pipelineFor(device, format) {
31
+ let cache = caches.get(device);
32
+ if (cache === undefined) {
33
+ cache = { pipelines: new Map() };
34
+ caches.set(device, cache);
35
+ }
36
+ const existing = cache.pipelines.get(format);
37
+ if (existing !== undefined)
38
+ return existing;
39
+ const storageFormat = storageFormatFor(format);
40
+ const module = device.createShaderModule({ code: WGSL_MIP_GEN_TEMPLATE(storageFormat), label: `mipgen-${format}` });
41
+ const layout = device.createBindGroupLayout({
42
+ entries: [
43
+ { binding: 0, visibility: 0x4, texture: { sampleType: "float" } },
44
+ { binding: 1, visibility: 0x4, storageTexture: { access: "write-only", format: storageFormat } },
45
+ ],
46
+ });
47
+ const pipelineLayout = device.createPipelineLayout({ bindGroupLayouts: [layout] });
48
+ const pipeline = device.createComputePipeline({
49
+ layout: pipelineLayout,
50
+ compute: { module, entryPoint: "main" },
51
+ label: `mipgen-${format}`,
52
+ });
53
+ const entry = { pipeline, layout };
54
+ cache.pipelines.set(format, entry);
55
+ return entry;
56
+ }
57
+ /**
58
+ * WebGPU storage-texture formats are a constrained subset; we map
59
+ * common sampled formats to the closest writable storage format.
60
+ * For BGRA / sRGB / non-storage formats we fall back to
61
+ * `rgba8unorm` and accept the colour-space caveat (callers using
62
+ * sRGB textures should generate their mips in linear).
63
+ */
64
+ function storageFormatFor(format) {
65
+ switch (format) {
66
+ case "rgba8unorm":
67
+ case "rgba8snorm":
68
+ case "rgba16float":
69
+ case "rgba32float":
70
+ case "r32float":
71
+ case "rg32float":
72
+ case "r32uint":
73
+ case "rg32uint":
74
+ case "rgba32uint":
75
+ return format;
76
+ default:
77
+ return "rgba8unorm";
78
+ }
79
+ }
80
+ /**
81
+ * Records compute dispatches that downsample `texture`'s mip
82
+ * chain. The texture must have been created with
83
+ * `STORAGE_BINDING | TEXTURE_BINDING` and the appropriate
84
+ * `mipLevelCount`. Each level is computed from the level above
85
+ * via a 2×2 box filter.
86
+ */
87
+ export function generateMips(device, encoder, texture, opts = {}) {
88
+ const baseLevel = opts.baseMipLevel ?? 0;
89
+ const totalMips = texture.mipLevelCount;
90
+ const lastLevel = opts.mipLevelCount !== undefined
91
+ ? Math.min(totalMips - 1, baseLevel + opts.mipLevelCount)
92
+ : totalMips - 1;
93
+ if (lastLevel <= baseLevel)
94
+ return;
95
+ const { pipeline, layout } = pipelineFor(device, texture.format);
96
+ const pass = encoder.beginComputePass(opts.label !== undefined ? { label: opts.label } : {});
97
+ pass.setPipeline(pipeline);
98
+ for (let mip = baseLevel; mip < lastLevel; mip++) {
99
+ const dstWidth = Math.max(1, texture.width >> (mip + 1));
100
+ const dstHeight = Math.max(1, texture.height >> (mip + 1));
101
+ const srcView = texture.createView({
102
+ baseMipLevel: mip, mipLevelCount: 1,
103
+ baseArrayLayer: 0, arrayLayerCount: 1,
104
+ dimension: "2d",
105
+ });
106
+ const dstView = texture.createView({
107
+ baseMipLevel: mip + 1, mipLevelCount: 1,
108
+ baseArrayLayer: 0, arrayLayerCount: 1,
109
+ dimension: "2d",
110
+ });
111
+ const bg = device.createBindGroup({
112
+ layout,
113
+ entries: [
114
+ { binding: 0, resource: srcView },
115
+ { binding: 1, resource: dstView },
116
+ ],
117
+ });
118
+ pass.setBindGroup(0, bg);
119
+ const workX = Math.ceil(dstWidth / 8);
120
+ const workY = Math.ceil(dstHeight / 8);
121
+ pass.dispatchWorkgroups(workX, workY, 1);
122
+ }
123
+ pass.end();
124
+ }
125
+ //# sourceMappingURL=mipGen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mipGen.js","sourceRoot":"","sources":["../../src/resources/mipGen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import { type ComputeShader, type ProgramInterface } from "../core/index.js";
2
+ type EntryDesc = {
3
+ kind: "ubuf";
4
+ binding: number;
5
+ uniformBlock: import("../core/index.js").UniformBlockInfo;
6
+ } | {
7
+ kind: "sbuf";
8
+ binding: number;
9
+ name: string;
10
+ access: "read" | "read_write";
11
+ } | {
12
+ kind: "tex";
13
+ binding: number;
14
+ name: string;
15
+ sampleType: GPUTextureSampleType;
16
+ } | {
17
+ kind: "sampler";
18
+ binding: number;
19
+ name: string;
20
+ } | {
21
+ kind: "stex";
22
+ binding: number;
23
+ name: string;
24
+ format: GPUTextureFormat;
25
+ access: GPUStorageTextureAccess;
26
+ };
27
+ interface GroupDesc {
28
+ readonly group: number;
29
+ readonly layout: GPUBindGroupLayout;
30
+ readonly entries: readonly EntryDesc[];
31
+ }
32
+ export interface DispatchSize {
33
+ readonly x: number;
34
+ readonly y: number;
35
+ readonly z: number;
36
+ }
37
+ export declare class ComputeInputBinding {
38
+ private readonly device;
39
+ private readonly groups;
40
+ private readonly iface;
41
+ private readonly label;
42
+ private readonly _ubos;
43
+ private readonly _ubosByBinding;
44
+ private readonly _buffers;
45
+ private readonly _textures;
46
+ private readonly _samplers;
47
+ private readonly _storageTextures;
48
+ /** Names declared by the shader as storage textures (vs sampled). */
49
+ private readonly _storageTextureNames;
50
+ /** @internal — built by `PreparedComputeShader`. */
51
+ constructor(device: GPUDevice, groups: readonly GroupDesc[], iface: ProgramInterface, label: string | undefined);
52
+ /**
53
+ * Write a uniform value by name. Searches all uniform blocks; the
54
+ * first hit wins. Throws if the name isn't a uniform field.
55
+ * Accepted types: `number`, `Float32Array`/`Int32Array`/`Uint32Array`,
56
+ * any wombat.base packed value (`{ _data: TypedArray }`).
57
+ */
58
+ setUniform(name: string, value: unknown): this;
59
+ setBuffer(name: string, buffer: GPUBuffer): this;
60
+ setTexture(name: string, source: GPUTexture | GPUTextureView): this;
61
+ /**
62
+ * Bind a storage-texture view (write/read/read_write per the
63
+ * shader declaration). `view` should reference a `GPUTexture`
64
+ * created with `STORAGE_BINDING` usage in the format the shader
65
+ * expects.
66
+ */
67
+ setStorageTexture(name: string, source: GPUTexture | GPUTextureView): this;
68
+ setSampler(name: string, sampler: GPUSampler): this;
69
+ /** @internal — flush dirty UBOs and build current bind groups. */
70
+ flushAndBuildBindGroups(): GPUBindGroup[];
71
+ /** Free the binding's owned UBO buffers. Storage buffers / textures / samplers are caller-owned. */
72
+ dispose(): void;
73
+ }
74
+ export interface PrepareComputeShaderOptions {
75
+ readonly label?: string;
76
+ }
77
+ export declare class PreparedComputeShader {
78
+ private readonly device;
79
+ readonly pipeline: GPUComputePipeline;
80
+ readonly interface_: ProgramInterface;
81
+ private readonly groups;
82
+ private readonly label;
83
+ /** @internal */
84
+ constructor(device: GPUDevice, pipeline: GPUComputePipeline, interface_: ProgramInterface, groups: readonly GroupDesc[], label: string | undefined);
85
+ /** Same shape as Aardvark's `IComputeShader.Interface` — useful for tooling. */
86
+ get programInterface(): ProgramInterface;
87
+ /** Allocate a fresh, empty binding. */
88
+ createInputBinding(): ComputeInputBinding;
89
+ /**
90
+ * Encode `Bind + SetInput + Dispatch` into the supplied encoder.
91
+ * Use this when batching compute work alongside other GPU commands
92
+ * — caller submits.
93
+ */
94
+ encode(encoder: GPUCommandEncoder, binding: ComputeInputBinding, groups: DispatchSize): void;
95
+ /**
96
+ * One-shot dispatch — builds an encoder, encodes, submits, awaits
97
+ * `queue.onSubmittedWorkDone()`. Aardvark's `IComputeShader.Invoke`
98
+ * shape.
99
+ */
100
+ dispatch(binding: ComputeInputBinding, groups: DispatchSize): Promise<void>;
101
+ }
102
+ export declare function prepareComputeShader(device: GPUDevice, shader: ComputeShader, opts?: PrepareComputeShaderOptions): PreparedComputeShader;
103
+ export {};
104
+ //# sourceMappingURL=preparedComputeShader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preparedComputeShader.d.ts","sourceRoot":"","sources":["../../src/resources/preparedComputeShader.ts"],"names":[],"mappings":"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"}