You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,6 +23,10 @@
23
23
## Before committing
24
24
- Format code: `yarn lint fix`
25
25
- Always `yarn lint fix` after making changes to ensure that Biome formatting is maintained.
26
+
27
+
## Merge preparation
28
+
- When asked to "get ready for merge", create a copyable Markdown description of the changes versus `master`.
29
+
- Start that Markdown description with `Goals` and `Changes` sections, then include verification, risks, follow-up notes, or other merge-relevant sections when useful.
Copy file name to clipboardExpand all lines: docs/api-guide/gpu/arrow-table-columns.md
+28-4Lines changed: 28 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -537,7 +537,8 @@ const model = new ArrowModel(device, {
537
537
538
538
`TableTransform` is the WebGL transform-feedback counterpart. It converts an
539
539
Arrow table to a `GPUTable` when needed, merges the table attribute layouts into
540
-
the underlying `BufferTransform`, and can run one preserved GPU batch at a time:
540
+
the underlying `BufferTransform`, accepts already-created `GPUVector` inputs,
541
+
and can run one preserved GPU batch at a time:
541
542
542
543
```ts
543
544
const transform =newTableTransform(device, {
@@ -553,14 +554,37 @@ transform.runBatches({
553
554
});
554
555
```
555
556
557
+
For a compute-like update path, pass `inputVectors` plus
558
+
`copyOutputToInputVectors`. `outputs` is inferred from the copy map when it is
559
+
omitted:
560
+
561
+
```ts
562
+
const transform =newTableTransform(device, {
563
+
vs,
564
+
shaderLayout,
565
+
inputVectors: {
566
+
particlePositions,
567
+
particleVelocities
568
+
},
569
+
copyOutputToInputVectors: {
570
+
nextParticlePositions: 'particlePositions',
571
+
nextParticleVelocities: 'particleVelocities'
572
+
}
573
+
});
574
+
```
575
+
576
+
Transform feedback writes a dense output stream, so automatic copy-back targets
577
+
tightly packed, directly bindable GPUVectors. It can not scatter-copy into
578
+
padded or interleaved rows.
579
+
556
580
Use `TableTransform` only for attribute-backed WebGL transform feedback. It is
557
581
not a storage-buffer compute abstraction.
558
582
559
583
Relevant public types:
560
584
561
585
| Type | Meaning |
562
586
| --- | --- |
563
-
|`TableTransformProps`| Construction props, including `table`, `arrowTable`, `arrowPaths`, `arrowBufferProps`, and `tableCount`. |
587
+
|`TableTransformProps`| Construction props, including `table`, `arrowTable`, `inputVectors`, `copyOutputToInputVectors`, `arrowPaths`, `arrowBufferProps`, and `tableCount`. |
564
588
|`TableTransformBatchOptions`|`runBatches()` options, including fixed or per-batch `outputBuffers`. |
Reads back one picked pixel, updates shader inputs, and calls `onObjectPicked` when the pick result changes.
114
+
Reads back one picked pixel, updates shader inputs, calls `onObjectPicked` when the pick result changes, and refreshes the tooltip when `getTooltip` is provided.
-`PickingManager` only manages the framebuffer and readback flow. Your model shaders still need to use a compatible picking module.
123
+
-`getTooltip` is intentionally a formatting callback. Table-aware row lookup belongs with the caller so engine picking does not depend on Arrow or another columnar-data container.
112
124
- Use `picking` when you want the engine to select the appropriate shader path for GLSL/WebGL vs WGSL/WebGPU.
113
125
- Use `colorPicking` when you explicitly want the color-encoded path.
114
126
- Use `indexPicking` when you explicitly want the integer render-target path.
0 commit comments