NodeLink.setNodeData¶
This page documents these node-data APIs:
NodeLink.setNodePositionsNodeLink.updateNodePositionsNodeLink.setNodePositionsBufferNodeLink.setNodeScalarsNodeLink.updateNodeScalarsNodeLink.setNodeScalarsBufferNodeLink.setNodeColorsNodeLink.updateNodeColorsNodeLink.setNodeColorsBufferNodeLink.setNodeRadiiNodeLink.updateNodeRadiiNodeLink.setNodeRadiiBufferNodeLink.setWasmNodePositionsNodeLink.refreshWasmNodePositionsNodeLink.setWasmNodeScalarsNodeLink.refreshWasmNodeScalarsNodeLink.setWasmNodeColorsNodeLink.refreshWasmNodeColorsNodeLink.setWasmNodeRadiiNodeLink.refreshWasmNodeRadii
Summary¶
These methods update node-side data on a nodelink. Positions, scalars, colors, and radii can come from CPU arrays or from external GPU buffers.
- Positions and radii accept stride
3or4on the CPU-array path. - Colors are RGBA float data with four components per node.
- Scalar data length must match
NodeLink.nodeCount. - GPU-buffer setters replace CPU-backed data for that category.
- GPU buffers are borrowed by default. Pass
{ ownBuffer: true }to a GPU-buffer setter to transfer destruction responsibility for that replacement. - Update methods patch subranges and validate bounds before writing.
Syntax¶
NodeLink.setNodePositions(data: Float32Array, opts?: { stride?: 3 | 4; keepCPUData?: boolean }): void
NodeLink.updateNodePositions(data: Float32Array, startNode?: number, stride?: 3 | 4): void
NodeLink.setNodePositionsBuffer(buffer: GPUBuffer, nodeCount: number, opts?: { ownBuffer?: boolean }): void
NodeLink.setNodeScalars(data: Float32Array, opts?: { keepCPUData?: boolean }): void
NodeLink.updateNodeScalars(data: Float32Array, startNode?: number): void
NodeLink.setNodeScalarsBuffer(buffer: GPUBuffer | null, opts?: { ownBuffer?: boolean }): void
NodeLink.setNodeColors(data: Float32Array, opts?: { keepCPUData?: boolean }): void
NodeLink.updateNodeColors(data: Float32Array, startNode?: number): void
NodeLink.setNodeColorsBuffer(buffer: GPUBuffer | null, opts?: { ownBuffer?: boolean }): void
NodeLink.setNodeRadii(data: Float32Array, opts?: { stride?: 3 | 4; keepCPUData?: boolean }): void
NodeLink.updateNodeRadii(data: Float32Array, startNode?: number, stride?: 3 | 4): void
NodeLink.setNodeRadiiBuffer(buffer: GPUBuffer | null, opts?: { ownBuffer?: boolean }): void
NodeLink.setWasmNodePositions(source: WasmMemoryView<Float32Array> | null, options?: NodeLinkWasmNodeChannelOptions): void
NodeLink.refreshWasmNodePositions(options?: NodeLinkWasmNodeRefreshOptions): void
NodeLink.setWasmNodeScalars(source: WasmMemoryView<Float32Array> | null, options?: NodeLinkWasmNodeChannelOptions): void
NodeLink.refreshWasmNodeScalars(options?: NodeLinkWasmNodeRefreshOptions): void
NodeLink.setWasmNodeColors(source: WasmMemoryView<Float32Array> | null, options?: NodeLinkWasmNodeChannelOptions): void
NodeLink.refreshWasmNodeColors(options?: NodeLinkWasmNodeRefreshOptions): void
NodeLink.setWasmNodeRadii(source: WasmMemoryView<Float32Array> | null, options?: NodeLinkWasmNodeChannelOptions): void
NodeLink.refreshWasmNodeRadii(options?: NodeLinkWasmNodeRefreshOptions): void
WebAssembly channel setters borrow memory and refresh immediately. Their matching refresh methods re-read the source after producer writes or memory growth. Options control nodeCount, grow-only managed GPU capacity, CPU retention, bounds recomputation, and position/radius stride.
Parameters¶
| Name | Type | Required | Description |
|---|---|---|---|
data |
Float32Array |
Yes | CPU-array payload for node positions, node scalars, node colors, or node radii. |
opts |
Object | No | CPU-array setters accept stride/keepCPUData; GPU-buffer setters accept ownBuffer. |
startNode |
number |
No | First node index to patch when using an update method. |
stride |
3 \| 4 |
No | CPU tuple width for position or radii data. |
buffer |
GPUBuffer \| null |
Yes | External GPU buffer to use for the matching node data category. |
nodeCount |
number |
Yes | Required node count for NodeLink.setNodePositionsBuffer. |
Returns¶
void - No return value. The call updates node-side runtime state and may queue later GPU uploads.
Example¶
nodeLink.setNodePositions(new Float32Array([
0, 0, 0,
1, 0, 0,
0, 1, 0
]), { stride: 3, keepCPUData: true });
nodeLink.setNodeScalars(new Float32Array([0.1, 0.5, 0.9]));
nodeLink.setNodeColors(new Float32Array([
1, 0, 0, 1,
0, 1, 0, 1,
0, 0, 1, 1
]));
nodeLink.updateNodePositions(new Float32Array([1.2, 0.1, 0.0]), 1, 3);