Skip to content

feat(examples): add GPU-native deck.gl graph exploration - #2961

Open
ibgreen-openai wants to merge 6 commits into
codex/lugraph-live-benchmarksfrom
codex/lugraph-deck-integration
Open

feat(examples): add GPU-native deck.gl graph exploration#2961
ibgreen-openai wants to merge 6 commits into
codex/lugraph-live-benchmarksfrom
codex/lugraph-deck-integration

Conversation

@ibgreen-openai

@ibgreen-openai ibgreen-openai commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Goals

  • Add a genuinely usable, optional deck.gl graph explorer without introducing deck.gl into any shipped luGraph or experimental-module dependency.
  • Render, explore, and pick the same GPU-resident graph allocations already produced by luGraph analytics and progressive layout.

Changes

  • Add an unpackaged examples/deck/lugraph-explorer integration containing a real deck.gl Effect, an OrthographicView application, and custom GPU-resident node and edge Layers.
  • Encode GPU CSR topology, PageRank, weak components, breadth-first neighborhood selection, and progressive force integration into deck.gl's own frame command encoder; deck.gl retains submission ownership.
  • Bind live float32x2 layout positions directly as instanced vertex attributes and consume PageRank, component IDs, distances, and selection masks as GPU storage.
  • Create one edge layer per original nonempty source/target chunk while preserving empty intermediate batches and stable source vertex IDs.
  • Support native asynchronous WebGPU picking, neighborhood selection, drag-to-pin, reset, release, zoom, dynamic traversal depth, and optional caller-supplied datasets without reading graph columns back.
  • Correct actual WebGPU layer instance counts, reserved WGSL identifiers, and OpenGL-to-WebGPU clip-depth conversion revealed by real-device tests.
  • Add a narrowly scoped, one-call Deck 9.3 shader-assembler compatibility bridge that restores the original static method before forwarding the initialized device's actual shading language.
  • Register a lazy WebGPU-only gallery route with curated metadata, an existing thumbnail, and zero-copy optional integration documentation.
  • Add package-isolation/catalog Node regressions and genuine Chromium/WebGPU integration coverage. The Deck presentation regression uses a real test-owned GPU framebuffer, following the existing repository workaround for expired SwiftShader external presentation surfaces, while still asserting actual Layer drawing, queue submission, and native stable-ID GPU picking.

Verification

  • nvm use: passed; Node v22.22.1.
  • yarn install: attempted; the existing unpublished @vis.gl/dev-tools@2.0.0-alpha.4 dependency returns HTTP 403. Used an independent APFS clone of the existing compatible dependency tree without lockfile or dependency changes.
  • yarn lint fix: passed after final changes.
  • yarn build: passed after final changes across every package.
  • yarn test-node: 1,026 passed, 1 skipped.
  • yarn test: 1,026 Node tests and 1,709 Chromium/WebGPU tests passed; 25 browser tests skipped by their existing capability guards.
  • Focused genuine, unshimmed Chromium/WebGPU Deck integration: 2 passed, including real source-chunk rendering, queue submission, and native asynchronous GPU picking.
  • yarn website:build: passed.
  • (cd website && yarn build): passed.
  • All 46 example TypeScript checks and all seven bundle-size ceilings passed.
  • GitHub Actions: bundle-size, all three browser coverage shards, examples, website, and aggregate tests passed on the final head.

Risks

  • The compatibility bridge exists only for the current Deck 9.3 missing-language call; it restores global state immediately and should be removed after upstream Deck supplies its explicit shader language.
  • This example is intentionally WebGPU-only and remains entirely outside production graph-module imports and dependencies.
  • Graph readback occurs only for explicit deck.gl picking results; source columns and analytic/render buffers remain resident.

@ibgreen-openai
ibgreen-openai marked this pull request as ready for review August 5, 2026 03:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants