From ec770bb5205ae85e2a115f2202600eeb59dab222 Mon Sep 17 00:00:00 2001 From: saphid <4596216+saphid@users.noreply.github.com> Date: Sun, 27 Sep 2026 16:54:35 +1000 Subject: [PATCH] Docs: measured frame rate and controller input on the Frame Co-Authored-By: Claude Opus 5.5 (1M context) --- README.md | 5 +++-- docs/technical-notes.md | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ec640c3..753e091 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,8 @@ SteamVR 2.17.10) with Chromium **156.0.8071.0**, built for arm64: | [WebXR Samples](https://immersive-web.github.io/webxr-samples/) Immersive VR Session | shows its scene in the headset | | three.js [stereo 360 video](https://threejs.org/examples/webxr_vr_video.html) | plays in 3D | | Launch from the Steam library | opens as its own panel, like any app; WebXR renders in the headset | -| Controller and hand input inside WebXR pages | not tested yet | -| Frame rate | not measured (looks smooth) | +| Controllers inside WebXR pages | tracked pose every frame; squeeze events and button state reach the page (trigger, thumbstick and left controller not tested) | +| Frame rate | 72 fps, every frame 13.9–14 ms over 16 s (simple scene); SteamVR dropped frames only at startup | This is an unofficial, experimental build. See [Limitations](#limitations) before you use it for anything other than VR sites. @@ -137,6 +137,7 @@ page directly. passwords you save are stored unencrypted in `~/.config/chromium-xr`. - **No automatic updates.** It won't get Chromium security fixes until you rebuild it. +- **No controller vibration.** SteamVR reports no haptic actuators to the page. - **No DRM video.** There's no Widevine, so paid streaming services that need it won't play. - **One window at a time per profile.** If Chromium XR is already open, diff --git a/docs/technical-notes.md b/docs/technical-notes.md index e5ed3f3..c7b5514 100644 --- a/docs/technical-notes.md +++ b/docs/technical-notes.md @@ -69,6 +69,28 @@ isn't needed. `visibilityState: "hidden"`, and only the first frame runs. Put the headset on to see it. +## Input and frame rate (2026-09-27) + +Measured with a session that clears to red, with `hand-tracking` and +`local-floor` requested: + +- **Frame rate:** 72 fps. Over 16.6 s the median frame interval was 13.9 ms, + p99 14 ms and max 14 ms, with no frame longer than 1.5× the median. + SteamVR's `vrcmd --stats` counted 2,940 submits, 4 dropped frames (all at + startup) and 2 reprojected. +- **Controllers:** the right controller appears as a `tracked-pointer` input + source with profiles `oculus-touch` and + `generic-trigger-squeeze-thumbstick`, an `xr-standard` gamepad (7 buttons, + 4 axes), a grip space, and a 25-joint `hand`. Its target-ray and grip + poses were available on every frame, and not emulated. A physical squeeze + produced `squeezestart`/`squeeze` events and set button 1 as pressed. +- **Not covered:** trigger (`select`), thumbstick axes, face buttons, the left + controller (not connected during the test) and bare-hand tracking. +- **Haptics:** `gamepad.hapticActuators` is empty, so pages can't vibrate + the controllers. +- Requesting `hand-tracking` makes Chromium ask **Allow hand tracking?** in + the browser panel before the session starts. + ## Graphics Chromium's GPU process uses ANGLE on OpenGL, which runs on zink over the