Repository navigation
[Bug] SteamVR few bugs #2
Description
Restored from the old repo (deleted and recreated on 2026-10-23). Originally opened by LazyLazyCoder on 2026-10-21, closed on 2026-10-23. The whole thread is below.
Original report
Tool version
0.5.0
Game
Half Life Alyx, SteamVR
Headset and runtime
VD, VXDR
GPU and driver version
RTX 5090, 596.21
Windows version
Windows 11 25H2
What did you do, and what happened?
Hello
Few bugs. All for SteamVR:
-
VR180 mode. I have tested only on HL Alyx. Recorded video looks skewed (in different directions depend of head movement) when I look up/down/left/right.
-
VR180 mode. The video has an incorrect IPD (or likely too much or too little image area on the left/right side). It's similar like recording full frame size from SteamVR. This forces the eyes to cross slightly, which is very uncomfortable and leads to rapid eye fatigue.
-
SBS mode. Video is skewed too while head movements
EDIT: I had set 80% Horizontal/Vertical FOV tangents options in Virtual Desktop, but I set it back to default 100% and not change. So it's bug.
b.r.
Other OpenXR layers or mods in use
No response
Logs and config (drag the files in here)
log file empty(disabled)
Before you send
- I use the latest version from the Releases page of this repository (not a copy from somewhere else).
- I checked the logs for my user name / private paths before attaching them.
Thread
JRDevo · 2026-10-23 08:03 UTC
Hi LazyLazyCoder, thanks for the report and the clear list — it helped a lot!
v0.5.1 is out: https://github.com/JRDevo/VR-EyeCapture/releases/tag/v0.5.1
1) and 3) skewed picture when you move your head (VR180 and SBS) — fixed. Two causes:
- SteamVR reports the eye's top and bottom view angles "backwards", and VR EyeCapture read them the wrong way round. The vertical view was mirrored: the top of each eye was cut off, and the head smoothing / VR180 placed the picture with the wrong angles, so it bent differently when you looked up, down, left or right.
- Half-Life: Alyx changes its render resolution every few frames. When the picture got bigger than at the start of the recording, it was stretched by a different amount every few frames. Now the recording is sized from the game's texture and every frame is scaled correctly.
2) VR180 wrong IPD / crossed eyes — fixed. Each headset eye sees more on its outer side. In VR180 that outer strip had picture in one eye and black (or an old picture) in the other, so the eyes could not fuse it. Now each eye paints only the area both eyes see (dome_shared_view = 1, the default; 0 = the old, wider view).
Also new for SteamVR / VR180:
- Alyx's black lens corners no longer leave black holes in the VR180 picture.
- Hold both thumbstick clicks for 1 s to start / stop recording in SteamVR games too.
- Large recordings are scaled to the HEVC maximum (8192 x 4352), so Windows / headset players open the whole picture.
I tested all of this in Half-Life: Alyx on a Quest 3 (Virtual Desktop + SteamVR).
After updating: close Alyx and SteamVR, then open SteamVR games... in the tray and click Repair (or untick / tick Alyx), so the game gets the new recorder file.
Please test with Alyx again and tell me if it looks right. If something is still off, set log_level = debug, record a short clip and attach %LOCALAPPDATA%\VR EyeCapture\logs\eye_capture.log.
Thanks!
LazyLazyCoder · 2026-10-23 09:44 UTC
Many Thanks! I'll test it all give you reply :)
Good job!
LazyLazyCoder · 2026-10-23 12:54 UTC
- skewed video fixed
I reply about Alyx in second issue. They start to double, so maybe close this one and I'll put all info in one thread?
I have grayed out "repair" button. Alyx was ununticked when I installed new version, so I tick it again. If this matter, then let me know.
Here is log from recording session. I set 100% FOV tangent in VD:
2026-10-23 14:38:33.405 [pid 23672] INFO control: hotkey F9 pressed
2026-10-23 14:38:33.405 [pid 23672] INFO control: stop requested
2026-10-23 14:38:33.406 [pid 23672] INFO recorder: lens mask after 118 frames: left 0.0%, right 0.1% of the eye never showed picture (not painted into the dome)
2026-10-23 14:38:33.416 [pid 23672] INFO steamvr: pose check end (142 pairs): pose from Submit 142, WaitGetPoses 0, none 0, bad Submit pose 0 (max rot err 0.000) | Submit vs WaitGetPoses pose: 142 pairs, mean 0.01 max 0.02 deg | head turn per pair mean 0.01 max 0.03 deg | WaitGetPoses on another thread than Submit 0, 0 calls since the last pair 0, 2+ calls 0
2026-10-23 14:38:33.425 [pid 23672] DEBUG control: recorder state recording -> stopping
2026-10-23 14:38:33.432 [pid 23672] INFO recorder: sidecar H:\Video\Beat Saber\hlvr_20261023_143831_VR180.json (vr180, 8192x4096) for H:\Video\Beat Saber\hlvr_20261023_143831_VR180.mp4: {"projection":"vr180","layout":"left_right","eyes":2,"width":8192,"height":4096,"dome_width":4096}
2026-10-23 14:38:33.432 [pid 23672] INFO recording summary: OK | H:\Video\Beat Saber\hlvr_20261023_143831_VR180.mp4 | 8192x4096 AV1 VBR 300 Mb/s 60 fps nominal | layout vr180 dome | 10-bit, sharpen 1.00 | frames written 118, dropped 0 (ring full 0, gpu busy 0, encoder stall 0), duplicates 0, over max_fps 24 | variable frame rate (real timestamps) | duration 1.96 s | audio AAC (94560 frames = 1.97 s) | finalize 0x00000000 | st3d+sv3d: off (tag_3d = 0)
2026-10-23 14:38:33.432 [pid 23672] INFO re-projection summary (dome vr180, fill black): 118 frames | dome: 118 frames painted, 0 frames without pose | D yaw +2.08 deg | re-projection 8192x4096: GPU 0.120 ms avg, 1.754 ms max (117 samples), worker CPU 0.025 ms avg, 0.044 ms max
2026-10-23 14:38:33.432 [pid 23672] INFO dome: lens mask = eye pixels that never showed picture (never painted): left 0.0%, right 0.1% of the eye
2026-10-23 14:38:33.445 [pid 23672] DEBUG control: recorder state stopping -> idle
2026-10-23 14:38:34.805 [pid 23672] INFO frame layout (pair 5032): ONE_TEXTURE_TWO_RECTS (wide texture, bounds) | L 3781x4017+0+0 slice 0 | R 3781x4017+3781+0 slice 0
2026-10-23 14:38:34.805 [pid 23672] INFO left : R8G8B8A8_UNORM_SRGB 8698x4621 array 1 samples 1 | right: R8G8B8A8_UNORM_SRGB 8698x4621 array 1 samples 1 | sRGB-encoded | pose: Submit (TextureWithPose)
2026-10-23 14:38:34.875 [pid 23672] INFO frame layout (pair 5037): ONE_TEXTURE_TWO_RECTS (wide texture, bounds) | L 4058x4311+0+0 slice 0 | R 4058x4311+4058+0 slice 0
2026-10-23 14:38:34.875 [pid 23672] INFO left : R8G8B8A8_UNORM_SRGB 8698x4621 array 1 samples 1 | right: R8G8B8A8_UNORM_SRGB 8698x4621 array 1 samples 1 | sRGB-encoded | pose: Submit (TextureWithPose)
2026-10-23 14:38:34.943 [pid 23672] INFO frame layout (pair 5042): ONE_TEXTURE_TWO_RECTS (wide texture, bounds) | L 4349x4621+0+0 slice 0 | R 4349x4621+4349+0 slice 0
2026-10-23 14:38:34.943 [pid 23672] INFO left : R8G8B8A8_UNORM_SRGB 8698x4621 array 1 samples 1 | right: R8G8B8A8_UNORM_SRGB 8698x4621 array 1 samples 1 | sRGB-encoded | pose: Submit (TextureWithPose)
2026-10-23 14:39:57.934 [pid 23672] INFO steamvr: shutdown -- 1 vtable(s) restored
2026-10-23 14:39:57.934 [pid 23672] INFO indicator: SteamVR overlay destroyed
2026-10-23 14:39:57.934 [pid 23672] INFO steamvr: VR_ShutdownInternal after 10739 frame pairs (Submits L 10739 R 10739, replaced 0, runtime errors 0, WaitGetPoses 11117)
2026-10-23 14:39:57.934 [pid 23672] INFO control: published final status to the tray: saved H:\Video\Beat Saber\hlvr_20261023_143831_VR180.mp4
JRDevo · 2026-10-23 13:41 UTC
Thanks for confirming, LazyLazyCoder! Yes, let's keep everything in one thread: I'm closing this one, and we continue in #1.
Summary of this issue:
- 1) and 3) skewed video: fixed in 0.5.1, and you confirmed it.
- 2) crossed eyes in VR180: fixed in 0.5.1 with
dome_shared_view = 1. That is also why the picture is narrower now; I explain it in [Feature] Encoding settings #1.
About your two other points:
- "Repair" greyed out: that is normal. The button is only active when an enabled game needs a repair (game updated, older recorder version, or VR EyeCapture moved). You ticked Alyx again, so it had the new recorder already and there was nothing to repair.
- Alyx unticked after the update: an update over the old version should keep it ticked. Did you uninstall the old version first, or switch from the zip to the setup (or the other way)? Both start with a fresh games list. If neither, tell me in [Feature] Encoding settings #1 and I'll look into it.
Activity