Skip to content

Capture real screenshots/GIFs for demos, getting-started, and WebXR pages #22

Description

@dfattal

Part of the imagery pass (art direction: Optical Grade + Structured Light, locked 2026-07-02 — see DisplayXR-Strategy/brand/README.md § Visual system + brand/imagery-map.md). public/screenshots/ is currently an empty directory and three pages have proof-class slots waiting on real captures. Screenshots are the third asset class next to concept art and SVG diagrams: captured, never stylized — native resolution, no filters, no baked-in text overlays.

Needs a Windows machine (and ideally a Leia SR panel) — to be coordinated with the Windows agent.

Captures needed

Demos page (/demos) — P1

One clean capture per standalone demo, running on the DisplayXR runtime:

  • displayxr-demo-gaussiansplat
  • displayxr-demo-mediaplayer
  • displayxr-demo-avatar
  • displayxr-demo-earthview
  • displayxr-demo-modelviewer
  • built-in cube sample (cube_handle_d3d11_win) for the "Built-in samples" card

Tip: the D3D11 service compositor has a file-trigger full-res atlas capture (workspace_screenshot_trigger in %TEMP%, documented in displayxr-runtime/CLAUDE.md § Autonomous capture) — full-resolution and DPI-safe, preferred over PrintWindow. Plain window captures are fine for windowed demos.

Getting-started page (/getting-started) — P2

  • cube app running (Windows), plus a terminal capture of the build/run flow per platform tab (Windows / macOS can come later from David's Mac)

WebXR page (/webxr) — P2

  • short GIF of the WebXR bridge demo running in Chrome (the "Try it" section)

Conventions

  • Drop files under public/screenshots/<page>/<name>.png (e.g. screenshots/demos/gaussiansplat.png); GIFs alongside.
  • PNG for stills (webp-optimize at wiring time), 16:9 or native window aspect, no desktop clutter in frame.
  • 2D mode captures are fine (a weaved/interlaced 3D capture looks broken on a normal screen — capture the pre-weave content, which is what the atlas trigger gives you).

Wiring the captures into the pages is a follow-up once assets land here.

Activity

  1. dfattal commented on Jul 3, 2026

    @dfattal
    ContributorAuthor

    P1 (/demos captures) done in #23 — six real, un-stylized screenshots under public/screenshots/demos/:

    • displayxr-demo-gaussiansplat — butterfly .spz
    • displayxr-demo-mediaplayer — 3D SBS video (Avatar 2 trailer frame; carries third-party branding — swap if that's a concern)
    • displayxr-demo-avatar — "Leo"
    • displayxr-demo-earthview — Google 3D tiles (Paris)
    • displayxr-demo-modelviewer — glTF PBR (sample.glb)
    • built-in cube (cube_handle_d3d11_win)

    Method: ran each demo on the runtime (Leia SR panel) forced through the D3D11 service compositor and used the file-triggered full-res atlas capture (pre-weave, DPI-safe, per the tip in this issue). Each PNG is the left eye of the stereo atlas = one clean pre-weave view. Wiring into the page TSX is the follow-up per this issue.

    Still open (P2):

    • getting-started: cube-running still + per-platform terminal build/run captures
    • webxr: WebXR bridge demo GIF in Chrome

    Also noticed during the media-player capture: video plays faster than realtime while audio stays at normal speed (A/V sync bug) — belongs on displayxr-demo-mediaplayer, not here.

  2. dfattal commented on Jul 3, 2026

    @dfattal
    ContributorAuthor

    Scope update after reviewing PR #23 with David:

    • Demos captures: de-scoped. The demo cards already use the generated app logos; per-demo screenshots are redundant. The built-in cube capture from imagery: real demo screenshots for /demos (P1 of #22) #23 is wired on main (df3f84f) — that item is done.
    • Still wanted (P2): getting-started cube-running still + per-platform terminal captures, and the WebXR bridge GIF. Same conventions as the issue body; avoid third-party IP in any frame (the Avatar 2 mediaplayer capture is the cautionary example).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions