@aardworx/wombat.rendering 0.1.0 → 0.2.0

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 (185) 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 +21 -0
  50. package/dist/core/index.d.ts.map +1 -0
  51. package/dist/core/index.js +14 -0
  52. package/dist/core/index.js.map +1 -0
  53. package/dist/core/pipelineState.d.ts +126 -0
  54. package/dist/core/pipelineState.d.ts.map +1 -0
  55. package/dist/core/pipelineState.js +88 -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 +93 -0
  122. package/dist/resources/preparedRenderObject.d.ts.map +1 -0
  123. package/dist/resources/preparedRenderObject.js +541 -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 +255 -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
  182. package/src/core/index.ts +10 -1
  183. package/src/core/pipelineState.ts +178 -24
  184. package/src/resources/preparedRenderObject.ts +271 -85
  185. package/src/runtime/scenePass.ts +6 -1
@@ -0,0 +1,32 @@
1
+ import type { HashMap } from "@aardworx/wombat.adaptive";
2
+ import type { FramebufferSignature } from "./framebufferSignature.js";
3
+ export interface IFramebuffer {
4
+ readonly signature: FramebufferSignature;
5
+ /**
6
+ * name → color attachment view used inside the render pass.
7
+ * For `sampleCount > 1` these are views into the multisample
8
+ * textures; the resolve target views live in `resolveColors`.
9
+ */
10
+ readonly colors: HashMap<string, GPUTextureView>;
11
+ readonly depthStencil?: GPUTextureView;
12
+ /**
13
+ * Underlying GPU textures suitable for *sampling* downstream.
14
+ * - `sampleCount = 1`: same textures as `colors`.
15
+ * - `sampleCount > 1`: the resolve textures (single-sample);
16
+ * the multisample textures are not sampleable.
17
+ * Populated by `allocateFramebuffer`; used by `renderTo` to
18
+ * expose results as `ITexture.fromGPU(...)`.
19
+ */
20
+ readonly colorTextures?: HashMap<string, GPUTexture>;
21
+ /**
22
+ * name → resolve target view, only present when
23
+ * `signature.sampleCount > 1`. Wired into the render pass
24
+ * descriptor as `resolveTarget` so the GPU resolves
25
+ * multisample → single-sample at end of pass.
26
+ */
27
+ readonly resolveColors?: HashMap<string, GPUTextureView>;
28
+ readonly depthStencilTexture?: GPUTexture;
29
+ readonly width: number;
30
+ readonly height: number;
31
+ }
32
+ //# sourceMappingURL=framebuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framebuffer.d.ts","sourceRoot":"","sources":["../../src/core/framebuffer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrD;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,UAAU,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,6 @@
1
+ // IFramebuffer — a concrete render target. The signature describes
2
+ // the *shape*; the framebuffer pairs that shape with concrete
3
+ // texture views. Both color and depth/stencil views are addressed
4
+ // by the same names declared in the signature.
5
+ export {};
6
+ //# sourceMappingURL=framebuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framebuffer.js","sourceRoot":"","sources":["../../src/core/framebuffer.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,8DAA8D;AAC9D,kEAAkE;AAClE,+CAA+C"}
@@ -0,0 +1,12 @@
1
+ import type { HashMap } from "@aardworx/wombat.adaptive";
2
+ export interface DepthStencilAttachmentSignature {
3
+ readonly format: GPUTextureFormat;
4
+ readonly hasDepth: boolean;
5
+ readonly hasStencil: boolean;
6
+ }
7
+ export interface FramebufferSignature {
8
+ readonly colors: HashMap<string, GPUTextureFormat>;
9
+ readonly depthStencil?: DepthStencilAttachmentSignature;
10
+ readonly sampleCount: number;
11
+ }
12
+ //# sourceMappingURL=framebufferSignature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framebufferSignature.d.ts","sourceRoot":"","sources":["../../src/core/framebufferSignature.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACnD,QAAQ,CAAC,YAAY,CAAC,EAAE,+BAA+B,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B"}
@@ -0,0 +1,7 @@
1
+ // FramebufferSignature — the typed shape of a render target.
2
+ // Attachments are addressed by name (never by index). The runtime
3
+ // maps names → WebGPU attachment slots using a shader's
4
+ // ProgramInterface, so users only ever talk about names like
5
+ // "albedo" / "normal" / "objectId", not location indices.
6
+ export {};
7
+ //# sourceMappingURL=framebufferSignature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framebufferSignature.js","sourceRoot":"","sources":["../../src/core/framebufferSignature.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,kEAAkE;AAClE,wDAAwD;AACxD,6DAA6D;AAC7D,0DAA0D"}
@@ -0,0 +1,21 @@
1
+ export { IBuffer, } from "./buffer.js";
2
+ export type { HostBufferSource, } from "./buffer.js";
3
+ export type { BufferView, } from "./bufferView.js";
4
+ export type { ClearColor, ClearValues, } from "./clear.js";
5
+ export type { Command, CopySpec, BufferCopy, TextureCopy, BufferCopyRange, } from "./command.js";
6
+ export type { DrawCall, IndexedDrawCall, NonIndexedDrawCall, } from "./drawCall.js";
7
+ export type { IFramebuffer, } from "./framebuffer.js";
8
+ export type { DepthStencilAttachmentSignature, FramebufferSignature, } from "./framebufferSignature.js";
9
+ export type { BlendComponentState, BlendState, CullMode, DepthBiasState, DepthState, FrontFace, PlainBlendComponentState, PlainBlendState, PlainDepthState, PlainPipelineState, PlainRasterizerState, PlainStencilFaceState, PlainStencilState, RasterizerState, StencilFaceState, StencilState, Topology, } from "./pipelineState.js";
10
+ export { PipelineState } from "./pipelineState.js";
11
+ export type { RenderObject, } from "./renderObject.js";
12
+ export { RenderTree, } from "./renderTree.js";
13
+ export type { IRenderTask, } from "./renderTask.js";
14
+ export { ISampler, } from "./sampler.js";
15
+ export { ITexture, } from "./texture.js";
16
+ export type { ExternalTextureSource, HostTextureSource, RawTextureSource, } from "./texture.js";
17
+ export type { AttributeInfo, CompiledEffect, CompiledStage, ComputeShader, Effect, HoleGetter, HoleGetters, LooseUniformInfo, OutputInfo, ProgramInterface, SamplerInfo, Stage, StageInfo, StorageBufferInfo, Target, TextureInfo, UniformBlockInfo, UniformFieldInfo, } from "./shader.js";
18
+ export { AdaptiveResource, } from "./adaptiveResource.js";
19
+ export { tryAcquire, tryRelease, } from "./acquire.js";
20
+ export { RenderContext, } from "./renderContext.js";
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,WAAW,EACX,eAAe,GAChB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,QAAQ,EACR,eAAe,EACf,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,+BAA+B,EAC/B,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,mBAAmB,EACnB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,UAAU,EACV,SAAS,EACT,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,YAAY,EACV,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,QAAQ,GACT,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,EACb,MAAM,EACN,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,KAAK,EACL,SAAS,EACT,iBAAiB,EACjB,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,GACd,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,14 @@
1
+ // Public API of @aardworx/wombat.rendering-core.
2
+ //
3
+ // Phase 0: types only. Implementations of `compileEffect`,
4
+ // `prepareRenderObject`, `runRenderTask`, etc. live in higher
5
+ // packages (`resources`, `commands`, `runtime`).
6
+ export { IBuffer, } from "./buffer.js";
7
+ export { PipelineState } from "./pipelineState.js";
8
+ export { RenderTree, } from "./renderTree.js";
9
+ export { ISampler, } from "./sampler.js";
10
+ export { ITexture, } from "./texture.js";
11
+ export { AdaptiveResource, } from "./adaptiveResource.js";
12
+ export { tryAcquire, tryRelease, } from "./acquire.js";
13
+ export { RenderContext, } from "./renderContext.js";
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,2DAA2D;AAC3D,8DAA8D;AAC9D,iDAAiD;AAEjD,OAAO,EACL,OAAO,GACR,MAAM,aAAa,CAAC;AAyDrB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnD,OAAO,EACL,UAAU,GACX,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EACL,QAAQ,GACT,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,QAAQ,GACT,MAAM,cAAc,CAAC;AA4BtB,OAAO,EACL,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,GACd,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,126 @@
1
+ import { HashMap, type aval } from "@aardworx/wombat.adaptive";
2
+ export type CullMode = "none" | "front" | "back";
3
+ export type FrontFace = "ccw" | "cw";
4
+ export type Topology = GPUPrimitiveTopology;
5
+ export interface DepthBiasState {
6
+ readonly constant: number;
7
+ readonly slopeScale: number;
8
+ readonly clamp: number;
9
+ }
10
+ export interface RasterizerState {
11
+ readonly topology: aval<Topology>;
12
+ readonly cullMode: aval<CullMode>;
13
+ readonly frontFace: aval<FrontFace>;
14
+ /** `undefined` value disables polygon offset. */
15
+ readonly depthBias?: aval<DepthBiasState | undefined>;
16
+ }
17
+ export interface DepthState {
18
+ readonly write: aval<boolean>;
19
+ readonly compare: aval<GPUCompareFunction>;
20
+ /** unclippedDepth — requires the WebGPU adapter feature. */
21
+ readonly clamp?: aval<boolean>;
22
+ }
23
+ export interface StencilFaceState {
24
+ readonly compare: aval<GPUCompareFunction>;
25
+ readonly failOp: aval<GPUStencilOperation>;
26
+ readonly depthFailOp: aval<GPUStencilOperation>;
27
+ readonly passOp: aval<GPUStencilOperation>;
28
+ }
29
+ export interface StencilState {
30
+ readonly enabled: aval<boolean>;
31
+ /** Per-frame, NOT pipeline rebuild. */
32
+ readonly reference: aval<number>;
33
+ readonly readMask: aval<number>;
34
+ readonly writeMask: aval<number>;
35
+ readonly front: StencilFaceState;
36
+ readonly back: StencilFaceState;
37
+ }
38
+ export interface BlendComponentState {
39
+ readonly operation: aval<GPUBlendOperation>;
40
+ readonly srcFactor: aval<GPUBlendFactor>;
41
+ readonly dstFactor: aval<GPUBlendFactor>;
42
+ }
43
+ export interface BlendState {
44
+ readonly color: BlendComponentState;
45
+ readonly alpha: BlendComponentState;
46
+ /** RGBA channel write mask (bitmask: R=1, G=2, B=4, A=8). */
47
+ readonly writeMask: aval<number>;
48
+ }
49
+ export interface PipelineState {
50
+ readonly rasterizer: RasterizerState;
51
+ readonly depth?: DepthState;
52
+ readonly stencil?: StencilState;
53
+ /**
54
+ * Per-color-attachment blend state, keyed by the attachment name
55
+ * from the `FramebufferSignature`. Missing entries default to
56
+ * "no blending, write all channels".
57
+ */
58
+ readonly blends?: aval<HashMap<string, BlendState>>;
59
+ /** Multi-sample alpha-to-coverage. Default `false`. */
60
+ readonly alphaToCoverage?: aval<boolean>;
61
+ /** Per-frame, not pipeline-rebuild. */
62
+ readonly blendConstant?: aval<{
63
+ r: number;
64
+ g: number;
65
+ b: number;
66
+ a: number;
67
+ }>;
68
+ }
69
+ export interface PlainRasterizerState {
70
+ readonly topology: Topology;
71
+ readonly cullMode: CullMode;
72
+ readonly frontFace: FrontFace;
73
+ readonly depthBias?: DepthBiasState;
74
+ }
75
+ export interface PlainDepthState {
76
+ readonly write: boolean;
77
+ readonly compare: GPUCompareFunction;
78
+ readonly clamp?: boolean;
79
+ }
80
+ export interface PlainStencilFaceState {
81
+ readonly compare: GPUCompareFunction;
82
+ readonly failOp: GPUStencilOperation;
83
+ readonly depthFailOp: GPUStencilOperation;
84
+ readonly passOp: GPUStencilOperation;
85
+ }
86
+ export interface PlainStencilState {
87
+ readonly enabled: boolean;
88
+ readonly reference: number;
89
+ readonly readMask: number;
90
+ readonly writeMask: number;
91
+ readonly front: PlainStencilFaceState;
92
+ readonly back: PlainStencilFaceState;
93
+ }
94
+ export interface PlainBlendComponentState {
95
+ readonly operation: GPUBlendOperation;
96
+ readonly srcFactor: GPUBlendFactor;
97
+ readonly dstFactor: GPUBlendFactor;
98
+ }
99
+ export interface PlainBlendState {
100
+ readonly color: PlainBlendComponentState;
101
+ readonly alpha: PlainBlendComponentState;
102
+ readonly writeMask: number;
103
+ }
104
+ export interface PlainPipelineState {
105
+ readonly rasterizer: PlainRasterizerState;
106
+ readonly depth?: PlainDepthState;
107
+ readonly stencil?: PlainStencilState;
108
+ readonly blends?: HashMap<string, PlainBlendState>;
109
+ readonly alphaToCoverage?: boolean;
110
+ readonly blendConstant?: {
111
+ r: number;
112
+ g: number;
113
+ b: number;
114
+ a: number;
115
+ };
116
+ }
117
+ /**
118
+ * Wrap a plain `PlainPipelineState` into the aval-shaped
119
+ * `PipelineState` by lifting every leaf with `AVal.constant`. Useful
120
+ * for tests and for callers that don't carry avals yet — wombat.dom's
121
+ * `derivePipelineState` constructs the aval-shape directly.
122
+ */
123
+ export declare const PipelineState: {
124
+ constant(plain: PlainPipelineState): PipelineState;
125
+ };
126
+ //# sourceMappingURL=pipelineState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipelineState.d.ts","sourceRoot":"","sources":["../../src/core/pipelineState.ts"],"names":[],"mappings":"AASA,OAAO,EAAQ,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAErE,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AACjD,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;AACrC,MAAM,MAAM,QAAQ,GAAG,oBAAoB,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC3C,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAG,IAAI,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChD,QAAQ,CAAC,MAAM,EAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAM,gBAAgB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAO,gBAAgB,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAM,mBAAmB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAM,mBAAmB,CAAC;IACxC,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAQ,eAAe,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAY,UAAU,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAU,YAAY,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAW,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7D,uDAAuD;IACvD,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,uCAAuC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAI,IAAI,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjF;AAQD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACtC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;CACtC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACnD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE;AA+BD;;;;;GAKG;AACH,eAAO,MAAM,aAAa;oBACR,kBAAkB,GAAG,aAAa;CA2CnD,CAAC"}
@@ -0,0 +1,88 @@
1
+ // PipelineState — the fixed-function bits the user picks per
2
+ // RenderObject. Vertex layout, blending, depth/stencil, raster.
3
+ // Combined with a CompiledEffect + FramebufferSignature this is
4
+ // enough to bake a GPURenderPipeline.
5
+ //
6
+ // All fields are `aval<T>` so wombat.dom's render-state scopes can
7
+ // flow through without forcing. The shader (`Effect`) stays a plain
8
+ // non-aval value; only uniforms and pipeline state are reactive.
9
+ import { AVal, HashMap } from "@aardworx/wombat.adaptive";
10
+ // ---------------------------------------------------------------------------
11
+ // Helpers
12
+ // ---------------------------------------------------------------------------
13
+ function blendStateFromPlain(b) {
14
+ return {
15
+ color: {
16
+ operation: AVal.constant(b.color.operation),
17
+ srcFactor: AVal.constant(b.color.srcFactor),
18
+ dstFactor: AVal.constant(b.color.dstFactor),
19
+ },
20
+ alpha: {
21
+ operation: AVal.constant(b.alpha.operation),
22
+ srcFactor: AVal.constant(b.alpha.srcFactor),
23
+ dstFactor: AVal.constant(b.alpha.dstFactor),
24
+ },
25
+ writeMask: AVal.constant(b.writeMask),
26
+ };
27
+ }
28
+ function stencilFaceFromPlain(f) {
29
+ return {
30
+ compare: AVal.constant(f.compare),
31
+ failOp: AVal.constant(f.failOp),
32
+ depthFailOp: AVal.constant(f.depthFailOp),
33
+ passOp: AVal.constant(f.passOp),
34
+ };
35
+ }
36
+ /**
37
+ * Wrap a plain `PlainPipelineState` into the aval-shaped
38
+ * `PipelineState` by lifting every leaf with `AVal.constant`. Useful
39
+ * for tests and for callers that don't carry avals yet — wombat.dom's
40
+ * `derivePipelineState` constructs the aval-shape directly.
41
+ */
42
+ export const PipelineState = {
43
+ constant(plain) {
44
+ const rast = {
45
+ topology: AVal.constant(plain.rasterizer.topology),
46
+ cullMode: AVal.constant(plain.rasterizer.cullMode),
47
+ frontFace: AVal.constant(plain.rasterizer.frontFace),
48
+ ...(plain.rasterizer.depthBias !== undefined
49
+ ? { depthBias: AVal.constant(plain.rasterizer.depthBias) }
50
+ : {}),
51
+ };
52
+ let blends;
53
+ if (plain.blends !== undefined) {
54
+ let m = HashMap.empty();
55
+ for (const [k, v] of plain.blends)
56
+ m = m.add(k, blendStateFromPlain(v));
57
+ blends = AVal.constant(m);
58
+ }
59
+ return {
60
+ rasterizer: rast,
61
+ ...(plain.depth !== undefined
62
+ ? {
63
+ depth: {
64
+ write: AVal.constant(plain.depth.write),
65
+ compare: AVal.constant(plain.depth.compare),
66
+ ...(plain.depth.clamp !== undefined ? { clamp: AVal.constant(plain.depth.clamp) } : {}),
67
+ },
68
+ }
69
+ : {}),
70
+ ...(plain.stencil !== undefined
71
+ ? {
72
+ stencil: {
73
+ enabled: AVal.constant(plain.stencil.enabled),
74
+ reference: AVal.constant(plain.stencil.reference),
75
+ readMask: AVal.constant(plain.stencil.readMask),
76
+ writeMask: AVal.constant(plain.stencil.writeMask),
77
+ front: stencilFaceFromPlain(plain.stencil.front),
78
+ back: stencilFaceFromPlain(plain.stencil.back),
79
+ },
80
+ }
81
+ : {}),
82
+ ...(blends !== undefined ? { blends } : {}),
83
+ ...(plain.alphaToCoverage !== undefined ? { alphaToCoverage: AVal.constant(plain.alphaToCoverage) } : {}),
84
+ ...(plain.blendConstant !== undefined ? { blendConstant: AVal.constant(plain.blendConstant) } : {}),
85
+ };
86
+ },
87
+ };
88
+ //# sourceMappingURL=pipelineState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipelineState.js","sourceRoot":"","sources":["../../src/core/pipelineState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface RenderContextSlot {
2
+ encoder: GPUCommandEncoder | null;
3
+ withEncoder<R>(encoder: GPUCommandEncoder, fn: () => R): R;
4
+ requireEncoder(): GPUCommandEncoder;
5
+ }
6
+ export declare const RenderContext: RenderContextSlot;
7
+ export {};
8
+ //# sourceMappingURL=renderContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderContext.d.ts","sourceRoot":"","sources":["../../src/core/renderContext.ts"],"names":[],"mappings":"AAUA,UAAU,iBAAiB;IACzB,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3D,cAAc,IAAI,iBAAiB,CAAC;CACrC;AAED,eAAO,MAAM,aAAa,EAAE,iBA+B3B,CAAC"}
@@ -0,0 +1,39 @@
1
+ // RenderContext — ambient state available to AdaptiveResources
2
+ // during evaluation. The runtime sets `encoder` before walking a
3
+ // task's resources so that `compute(token)` calls inside an
4
+ // AdaptiveResource can encode commands (uploads, compute passes,
5
+ // render-to-texture) onto the current frame's encoder.
6
+ //
7
+ // Outside a frame (`encoder === null`) AdaptiveResources should
8
+ // either return their cached handle or throw — they cannot do
9
+ // GPU work without an encoder.
10
+ export const RenderContext = {
11
+ encoder: null,
12
+ /**
13
+ * Run `fn` with `encoder` exposed as the current frame encoder.
14
+ * Restores the previous value on exit. Nestable.
15
+ */
16
+ withEncoder(encoder, fn) {
17
+ const prev = RenderContext.encoder;
18
+ RenderContext.encoder = encoder;
19
+ try {
20
+ return fn();
21
+ }
22
+ finally {
23
+ RenderContext.encoder = prev;
24
+ }
25
+ },
26
+ /**
27
+ * Convenience: throws if no encoder is active. Use inside
28
+ * `compute(token)` of an AdaptiveResource that genuinely needs
29
+ * to encode work.
30
+ */
31
+ requireEncoder() {
32
+ if (RenderContext.encoder === null) {
33
+ throw new Error("RenderContext: no active encoder. AdaptiveResource.compute() " +
34
+ "was called outside RenderContext.withEncoder(...).");
35
+ }
36
+ return RenderContext.encoder;
37
+ },
38
+ };
39
+ //# sourceMappingURL=renderContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderContext.js","sourceRoot":"","sources":["../../src/core/renderContext.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,iEAAiE;AACjE,4DAA4D;AAC5D,iEAAiE;AACjE,uDAAuD;AACvD,EAAE;AACF,gEAAgE;AAChE,8DAA8D;AAC9D,+BAA+B;AAQ/B,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC9C,OAAO,EAAE,IAAI;IAEb;;;OAGG;IACH,WAAW,CAAI,OAA0B,EAAE,EAAW;QACpD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC;QACnC,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,cAAc;QACZ,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,+DAA+D;gBAC/D,oDAAoD,CACrD,CAAC;QACJ,CAAC;QACD,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;CACF,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { HashMap, aval } from "@aardworx/wombat.adaptive";
2
+ import type { IBuffer } from "./buffer.js";
3
+ import type { BufferView } from "./bufferView.js";
4
+ import type { DrawCall } from "./drawCall.js";
5
+ import type { ISampler } from "./sampler.js";
6
+ import type { ITexture } from "./texture.js";
7
+ import type { PipelineState } from "./pipelineState.js";
8
+ import type { Effect } from "./shader.js";
9
+ export interface RenderObject {
10
+ /**
11
+ * A wombat.shader `Effect` — produced by the `vertex(...) /
12
+ * fragment(...) / effect(...)` markers (transformed at build
13
+ * time by `@aardworx/wombat.shader-vite`) or hand-built via
14
+ * `stage(module, ...)`. The runtime calls
15
+ * `effect.compile({ target: "wgsl" })` (Effect's own
16
+ * hole-value-keyed cache makes this free per frame).
17
+ *
18
+ * `Effect.id` (stable build-time hash) feeds the pipeline cache
19
+ * key, which means renaming a captured value invalidates only
20
+ * its specialization; everything else stays cached.
21
+ *
22
+ * For users with a precompiled `CompiledEffect` (e.g. from
23
+ * `compileShaderSource(...)`), wrap it with the test helper
24
+ * `fakeEffectFromCompiled` or call `stage(module)` to produce
25
+ * a real Effect.
26
+ */
27
+ readonly effect: Effect;
28
+ readonly pipelineState: PipelineState;
29
+ /** name → vertex buffer view; e.g. "position", "normal", "uv". */
30
+ readonly vertexAttributes: HashMap<string, aval<BufferView>>;
31
+ /** name → instance buffer view; e.g. "modelMatrix", "instanceColor". */
32
+ readonly instanceAttributes?: HashMap<string, aval<BufferView>>;
33
+ /** name → uniform value; runtime packs into UBO based on shader layout. */
34
+ readonly uniforms: HashMap<string, aval<unknown>>;
35
+ /** name → texture source (CPU image or pre-built GPUTexture). */
36
+ readonly textures: HashMap<string, aval<ITexture>>;
37
+ /** name → sampler source (descriptor or pre-built GPUSampler). */
38
+ readonly samplers: HashMap<string, aval<ISampler>>;
39
+ /** name → storage buffer source. */
40
+ readonly storageBuffers?: HashMap<string, aval<IBuffer>>;
41
+ /** Index buffer for indexed draws. */
42
+ readonly indices?: aval<BufferView>;
43
+ readonly drawCall: aval<DrawCall>;
44
+ }
45
+ //# sourceMappingURL=renderObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderObject.d.ts","sourceRoot":"","sources":["../../src/core/renderObject.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEtC,kEAAkE;IAClE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7D,wEAAwE;IACxE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAChE,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,oCAAoC;IACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEzD,sCAAsC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CACnC"}
@@ -0,0 +1,11 @@
1
+ // RenderObject — the user-facing primitive: an effect + a bag of
2
+ // named inputs + a draw call. Names are matched against the
3
+ // shader's ProgramInterface during preparation; extras are
4
+ // silently ignored, missing required bindings are an error.
5
+ //
6
+ // Every input is `aval<T>` over a *source* type (IBuffer, ITexture,
7
+ // ISampler, …). The runtime (resources package) wraps these into
8
+ // internal AdaptiveResources for upload + ref-counting; the user
9
+ // never instantiates an AdaptiveResource directly.
10
+ export {};
11
+ //# sourceMappingURL=renderObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderObject.js","sourceRoot":"","sources":["../../src/core/renderObject.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,4DAA4D;AAC5D,2DAA2D;AAC3D,4DAA4D;AAC5D,EAAE;AACF,oEAAoE;AACpE,iEAAiE;AACjE,iEAAiE;AACjE,mDAAmD"}
@@ -0,0 +1,12 @@
1
+ import type { AdaptiveToken } from "@aardworx/wombat.adaptive";
2
+ export interface IRenderTask {
3
+ /**
4
+ * Encode all commands into the GPU queue using the current
5
+ * adaptive state read via `token`. Returns once submission has
6
+ * been queued (does not wait for GPU completion).
7
+ */
8
+ run(token: AdaptiveToken): void;
9
+ /** Tear down resources owned by the task. Idempotent. */
10
+ dispose(): void;
11
+ }
12
+ //# sourceMappingURL=renderTask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderTask.d.ts","sourceRoot":"","sources":["../../src/core/renderTask.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAEhC,yDAAyD;IACzD,OAAO,IAAI,IAAI,CAAC;CACjB"}
@@ -0,0 +1,5 @@
1
+ // RenderTask — the compiled, runnable form of an alist<Command>.
2
+ // The runtime returns one of these from `compile`; the user calls
3
+ // `run(token)` to encode + submit a frame.
4
+ export {};
5
+ //# sourceMappingURL=renderTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderTask.js","sourceRoot":"","sources":["../../src/core/renderTask.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,kEAAkE;AAClE,2CAA2C"}
@@ -0,0 +1,35 @@
1
+ import type { aval, alist, aset } from "@aardworx/wombat.adaptive";
2
+ import type { RenderObject } from "./renderObject.js";
3
+ export type RenderTree = {
4
+ readonly kind: "Empty";
5
+ } | {
6
+ readonly kind: "Leaf";
7
+ readonly object: RenderObject;
8
+ } | {
9
+ readonly kind: "Ordered";
10
+ readonly children: readonly RenderTree[];
11
+ } | {
12
+ readonly kind: "Unordered";
13
+ readonly children: readonly RenderTree[];
14
+ } | {
15
+ readonly kind: "Adaptive";
16
+ readonly tree: aval<RenderTree>;
17
+ } | {
18
+ readonly kind: "OrderedFromList";
19
+ readonly children: alist<RenderTree>;
20
+ } | {
21
+ readonly kind: "UnorderedFromSet";
22
+ readonly children: aset<RenderTree>;
23
+ };
24
+ export declare const RenderTree: {
25
+ readonly empty: {
26
+ readonly kind: "Empty";
27
+ };
28
+ readonly leaf: (object: RenderObject) => RenderTree;
29
+ readonly ordered: (...children: RenderTree[]) => RenderTree;
30
+ readonly unordered: (...children: RenderTree[]) => RenderTree;
31
+ readonly adaptive: (tree: aval<RenderTree>) => RenderTree;
32
+ readonly orderedFromList: (children: alist<RenderTree>) => RenderTree;
33
+ readonly unorderedFromSet: (children: aset<RenderTree>) => RenderTree;
34
+ };
35
+ //# sourceMappingURL=renderTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderTree.d.ts","sourceRoot":"","sources":["../../src/core/renderTree.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAAE,GAC1E;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;CAAE,CAAC;AAE/E,eAAO,MAAM,UAAU;;;;4BAEN,YAAY,KAAG,UAAU;oCACjB,UAAU,EAAE,KAAG,UAAU;sCACvB,UAAU,EAAE,KAAG,UAAU;8BACjC,IAAI,CAAC,UAAU,CAAC,KAAG,UAAU;yCAClB,KAAK,CAAC,UAAU,CAAC,KAAG,UAAU;0CAC7B,IAAI,CAAC,UAAU,CAAC,KAAG,UAAU;CAClD,CAAC"}
@@ -0,0 +1,17 @@
1
+ // RenderTree — intra-pass ordering structure for RenderObjects.
2
+ //
3
+ // `Ordered` children execute left-to-right; `Unordered` children
4
+ // can be reordered by the backend to minimise pipeline / bind-
5
+ // group / vertex-buffer state changes. The Adaptive variants
6
+ // fold reactive containers (alist, aset, aval) directly into the
7
+ // tree.
8
+ export const RenderTree = {
9
+ empty: { kind: "Empty" },
10
+ leaf: (object) => ({ kind: "Leaf", object }),
11
+ ordered: (...children) => ({ kind: "Ordered", children }),
12
+ unordered: (...children) => ({ kind: "Unordered", children }),
13
+ adaptive: (tree) => ({ kind: "Adaptive", tree }),
14
+ orderedFromList: (children) => ({ kind: "OrderedFromList", children }),
15
+ unorderedFromSet: (children) => ({ kind: "UnorderedFromSet", children }),
16
+ };
17
+ //# sourceMappingURL=renderTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderTree.js","sourceRoot":"","sources":["../../src/core/renderTree.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,iEAAiE;AACjE,+DAA+D;AAC/D,6DAA6D;AAC7D,iEAAiE;AACjE,QAAQ;AAcR,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAgC;IACtD,IAAI,EAAE,CAAC,MAAoB,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACtE,OAAO,EAAE,CAAC,GAAG,QAAsB,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACnF,SAAS,EAAE,CAAC,GAAG,QAAsB,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IACvF,QAAQ,EAAE,CAAC,IAAsB,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9E,eAAe,EAAE,CAAC,QAA2B,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IACrG,gBAAgB,EAAE,CAAC,QAA0B,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC;CAC9F,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type ISampler = {
2
+ readonly kind: "gpu";
3
+ readonly sampler: GPUSampler;
4
+ } | {
5
+ readonly kind: "desc";
6
+ readonly descriptor: GPUSamplerDescriptor;
7
+ };
8
+ export declare const ISampler: {
9
+ readonly fromGPU: (sampler: GPUSampler) => ISampler;
10
+ readonly fromDescriptor: (descriptor: GPUSamplerDescriptor) => ISampler;
11
+ };
12
+ //# sourceMappingURL=sampler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampler.d.ts","sourceRoot":"","sources":["../../src/core/sampler.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAEzE,eAAO,MAAM,QAAQ;gCACF,UAAU,KAAG,QAAQ;0CACX,oBAAoB,KAAG,QAAQ;CAClD,CAAC"}
@@ -0,0 +1,8 @@
1
+ // ISampler — sampler source. Either a pre-built `GPUSampler` or a
2
+ // descriptor for the runtime to materialise (samplers are cheap
3
+ // and dedupable, so descriptors are the common path).
4
+ export const ISampler = {
5
+ fromGPU(sampler) { return { kind: "gpu", sampler }; },
6
+ fromDescriptor(descriptor) { return { kind: "desc", descriptor }; },
7
+ };
8
+ //# sourceMappingURL=sampler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampler.js","sourceRoot":"","sources":["../../src/core/sampler.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,gEAAgE;AAChE,sDAAsD;AAMtD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,CAAC,OAAmB,IAAc,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3E,cAAc,CAAC,UAAgC,IAAc,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;CAC3F,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { Effect, ComputeShader, Stage, HoleGetter, HoleGetters, CompiledEffect, CompiledStage, Target, } from "@aardworx/wombat.shader";
2
+ export type { ProgramInterface, StageInfo, AttributeInfo, OutputInfo, LooseUniformInfo, UniformBlockInfo, UniformFieldInfo, SamplerInfo, TextureInfo, StorageBufferInfo, } from "@aardworx/wombat.shader";
3
+ //# sourceMappingURL=shader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader.d.ts","sourceRoot":"","sources":["../../src/core/shader.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,MAAM,EACN,aAAa,EACb,KAAK,EACL,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,MAAM,GACP,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,iBAAiB,GAClB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,6 @@
1
+ // Re-exports of the wombat.shader runtime types consumed by the
2
+ // rendering layer. We do NOT duplicate or re-shape these — the
3
+ // rendering layer is just a consumer of wombat.shader's
4
+ // `Effect` / `CompiledEffect` / `ProgramInterface`.
5
+ export {};
6
+ //# sourceMappingURL=shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader.js","sourceRoot":"","sources":["../../src/core/shader.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,+DAA+D;AAC/D,wDAAwD;AACxD,oDAAoD"}