@vgpu/render 0.0.5 → 0.0.7

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 (59) hide show
  1. package/README.md +94 -5
  2. package/dist/frame.d.ts +19 -0
  3. package/dist/frame.d.ts.map +1 -0
  4. package/dist/frame.js +50 -0
  5. package/dist/frame.js.map +1 -0
  6. package/dist/index.d.ts +11 -3
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +5 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/perf/frame-time-measure.d.ts +22 -0
  11. package/dist/perf/frame-time-measure.d.ts.map +1 -0
  12. package/dist/perf/frame-time-measure.js +91 -0
  13. package/dist/perf/frame-time-measure.js.map +1 -0
  14. package/dist/perf/gpu-frame-time.d.ts +49 -0
  15. package/dist/perf/gpu-frame-time.d.ts.map +1 -0
  16. package/dist/perf/gpu-frame-time.js +50 -0
  17. package/dist/perf/gpu-frame-time.js.map +1 -0
  18. package/dist/perf/index.d.ts +5 -0
  19. package/dist/perf/index.d.ts.map +1 -0
  20. package/dist/perf/index.js +3 -0
  21. package/dist/perf/index.js.map +1 -0
  22. package/dist/perf/pixel-diff.d.ts +27 -0
  23. package/dist/perf/pixel-diff.d.ts.map +1 -0
  24. package/dist/perf/pixel-diff.js +40 -0
  25. package/dist/perf/pixel-diff.js.map +1 -0
  26. package/dist/pipeline-descriptor.d.ts +35 -0
  27. package/dist/pipeline-descriptor.d.ts.map +1 -0
  28. package/dist/pipeline-descriptor.js +44 -0
  29. package/dist/pipeline-descriptor.js.map +1 -0
  30. package/dist/pipeline.d.ts +24 -14
  31. package/dist/pipeline.d.ts.map +1 -1
  32. package/dist/pipeline.js +58 -7
  33. package/dist/pipeline.js.map +1 -1
  34. package/dist/render-bundle.d.ts +24 -0
  35. package/dist/render-bundle.d.ts.map +1 -0
  36. package/dist/render-bundle.js +39 -0
  37. package/dist/render-bundle.js.map +1 -0
  38. package/dist/render-pass.d.ts +16 -1
  39. package/dist/render-pass.d.ts.map +1 -1
  40. package/dist/render-pass.js +44 -7
  41. package/dist/render-pass.js.map +1 -1
  42. package/dist/storage-buffer.d.ts +81 -0
  43. package/dist/storage-buffer.d.ts.map +1 -0
  44. package/dist/storage-buffer.js +91 -0
  45. package/dist/storage-buffer.js.map +1 -0
  46. package/dist/uniform.d.ts +55 -0
  47. package/dist/uniform.d.ts.map +1 -0
  48. package/dist/uniform.js +64 -0
  49. package/dist/uniform.js.map +1 -0
  50. package/package.json +8 -3
  51. package/src/Frame.docs.md +79 -0
  52. package/src/RenderPass.docs.md +6 -3
  53. package/src/createRenderPipeline.docs.md +113 -19
  54. package/src/perf/perf.docs.md +45 -0
  55. package/src/rapid-renderer.docs.md +15 -1
  56. package/src/render-bundle.docs.md +46 -0
  57. package/src/render-target/render-target-canvas.docs.md +15 -0
  58. package/src/storage-buffer.docs.md +102 -0
  59. package/src/uniform.docs.md +70 -0
@@ -0,0 +1,70 @@
1
+ # Uniform
2
+
3
+ `Uniform` is one stable uniform buffer for a single render pass, rewritten per
4
+ frame and change-gated by the caller. It creates a `uniform | copy_dst` buffer,
5
+ a bind group layout with a single uniform binding at binding 0, and a bind group
6
+ wired to that buffer. `write()` uploads bytes with `queue.writeBuffer` at a fixed
7
+ offset — there is no dynamic offset and the bind group never changes.
8
+
9
+ ## When to use `Uniform` vs `UniformPool`
10
+
11
+ Use `Uniform` for the common "globals/camera per pass" case: a single buffer you
12
+ overwrite each frame, where you decide when the contents actually changed.
13
+
14
+ Use `UniformPool` only when you have **many** per-draw uniforms. It is a
15
+ dynamic-offset ring allocator: every slot binding is marked
16
+ `hasDynamicOffset: true` and the whole CPU mirror is re-uploaded each frame. For
17
+ one stable buffer that is the wrong shape — it forces a dynamic-offset layout and
18
+ defeats change-gating.
19
+
20
+ ## Constructor
21
+
22
+ ```ts
23
+ new Uniform(device, {
24
+ size, // byte size of the uniform buffer (required)
25
+ label, // optional debug label for buffer, layout, and bind group
26
+ visibility, // GPUShaderStageFlags; defaults to VERTEX | FRAGMENT
27
+ bindGroupLayout, // optional pipeline-owned layout to reuse instead of creating one
28
+ });
29
+ ```
30
+
31
+ - `size`: byte size of the uniform buffer.
32
+ - `label`: optional debug label; suffixed `.bgl` / `.bg` for the layout and bind
33
+ group.
34
+ - `visibility`: shader stages that read binding 0. Defaults to
35
+ `GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT`. Ignored when
36
+ `bindGroupLayout` is provided.
37
+ - `bindGroupLayout`: reuse a pipeline-owned bind group layout instead of creating
38
+ one. Its binding 0 must be a uniform buffer compatible with `size`.
39
+
40
+ ## Members
41
+
42
+ - `uniform.gpu`: the underlying uniform `GPUBuffer`.
43
+ - `uniform.buffer`: the VGPU `Buffer` wrapper around `gpu`.
44
+ - `uniform.bindGroup`: the `GPUBindGroup` to bind for the pass.
45
+ - `uniform.bindGroupLayout`: the `GPUBindGroupLayout` (created or reused).
46
+ - `uniform.size`: the buffer byte size.
47
+ - `uniform.write(data, offset = 0)`: uploads `data` via
48
+ `device.queue.writeBuffer(gpu, offset, data)`. No dynamic offset; the bind group
49
+ is unchanged. Call only when the uniform contents actually change.
50
+ - `uniform.destroy()` / `uniform.dispose()`: releases the backing buffer once;
51
+ idempotent.
52
+
53
+ ## Example
54
+
55
+ ```ts
56
+ const uniform = new Uniform(device, { size: 64, label: "globals" });
57
+
58
+ // Per frame, only when inputs changed:
59
+ if (dirty) uniform.write(globalsBytes);
60
+
61
+ const pipeline = createRenderPipelineFromDescriptor(device, {
62
+ layout: device.gpu.createPipelineLayout({ bindGroupLayouts: [uniform.bindGroupLayout] }),
63
+ vertex: { module, entryPoint: "vs_main" },
64
+ fragment: { module, entryPoint: "fs_main", targets: [{ format }] },
65
+ });
66
+
67
+ pass.setPipeline(pipeline);
68
+ pass.setBindGroup(0, uniform.bindGroup);
69
+ pass.draw(3);
70
+ ```