MCPcopy Index your code
hub / github.com/artumino/VRScreenCap

github.com/artumino/VRScreenCap @0.3.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.3.1 ↗ · + Follow
73 symbols 113 edges 13 files 1 documented · 1%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

VRScreenCap

Description

This is a very simple rust program that uses the Vulkan backend of WPGU combined with OpenXR to show a virtual screen.

Disclaimer

This was a pet project done in a few days of work, it doesn't offer any customization options and QoL features since It was meant to do just one thing. The application was also only tested on a limited set of geo-11 games, with an nvidia card, so different configurations could have issues. One of the underlying components of the application (WGPU) is still in development phase and could have issues on its own.

Supported Inputs

Right now it only supports full side-by-side 3D feeds coming from geo-11's DX11 games.

How to Use

  • Setup geo-11's files for the game
  • In d3dxdm.ini set direct_mode to katanga_vr, then adjust dm_separation to your likings (usually 20-30 is the range for VR viewing)
  • Run the game
  • Start VRScreenCap

The feed should then be visible on a curved screen. In case the video feed freezes, restart VRScreenCap. Some VR runtimes don't seem to allow for screen recentering, a future update will probably take care of this in-app.

Recentering

You can recenter the viewer at any point in time by holding one or two hand controller near the HMD for more than 3 seconds. Doing it with one hand will keep the screen locked to the horizon, while using two hands will allow you to also change the screen's pitch. Recentering can also be triggered by selecting the proper options from the menu in the icon tray.

ATTENTION: VRScreenCap doesn't open any window on the desktop, it only appears as a tray icon (and in your VR runtime's dashboard).

Launch Parameters

VR-Screen-Cap offers a few configuration launch parameters (all of them are optional):

vr-screen-cap.exe [OPTIONS]
  OPTIONS:
    --x-curvature=0.4
    --y-curvature=0.08
    --swap-eyes=true
    --flip-x=false
    --flip-y=false
    --distance=20.0
    --scale=10.0
    --config-file=<file-path>

Where every distance is in meters. The effects of horizontal and vertical curvature are summed together, with a curvature of 1.0 the center of the screen will be bent inwards of about half its size.

A json configuration file can be provided and it will be watched for changes, the structure of the json config is similar to the launch parameters:

{
    "distance" : 20.0,
    "scale": 10.0,
    "x_curvature": 0.4,
    "y_curvature": 0.08
}

WMR Users Disclaimer

This application uses Vulkan as its backend. To the best of my knowledge WMR still doesn't support OpenXR Vulkan applications so this one won't work out of the box for you. You can try to run VR Screen Cap through projects like OpenXR-Vk-D3D12 but I can't guarantee It'll work.

Extension points exported contracts — how you extend this code

Loader (Interface)
(no doc) [1 implementers]
src/loaders.rs
WgpuLoader (Interface)
(no doc) [1 implementers]
src/engine.rs
WgpuRunner (Interface)
(no doc) [1 implementers]
src/engine.rs

Core symbols most depended-on inside this repo

uniform
called by 8
src/config.rs
update_matrices
called by 5
src/engine/entity.rs
recenter_scene
called by 2
src/main.rs
check_loader_invalidation
called by 2
src/main.rs
bind_texture
called by 2
src/main.rs
try_to_load_texture
called by 2
src/main.rs
vulkan_image_to_texture
called by 2
src/conversions.rs
unmap_texture_format
called by 2
src/conversions.rs

Shape

Method 33
Class 18
Function 15
Enum 4
Interface 3

Languages

Rust100%

Modules by API surface

src/main.rs11 symbols
src/loaders/katanga_loader.rs9 symbols
src/engine/camera.rs8 symbols
src/engine/geometry.rs7 symbols
src/config.rs7 symbols
src/engine/entity.rs6 symbols
src/engine/vr.rs5 symbols
src/engine/screen.rs5 symbols
src/engine/input.rs5 symbols
src/loaders.rs3 symbols
src/engine.rs3 symbols
src/conversions.rs3 symbols

For agents

$ claude mcp add VRScreenCap \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact