Configuration
Recommended Key Bindings
To make RacelabVR easier to use, we recommend binding Toggle VR and Recenter to your wheel. You can find these keybindings under Settings > Key Bindings. They are the first two entries in the list (note: one is currently mislabeled as [Translate]).
For ease of use, we recommend using the same key for recentering the view as you do in-game.
Overlays
Configuration
Currently, there is no UI for configuring overlays in VR. To add or remove overlays, you must manually edit the config.json
file. Upon first startup, Racelab generates a default configuration file with some preconfigured overlays.
The config file is located at:
%USERPROFILE%\Documents\RaceLabApps\vr
If your Documents folder is synced with OneDrive, check your OneDrive Documents folder for RaceLabApps/vr
.
To add overlays, you need to know their URL. The URL follows this format:
http://localhost:8080/ui/#/overlays/{name}
Please note that the field InstanceGuid must be set to a unique value within the config file.
External Tool
Until the built-in UI for configuring VR overlays in Racelab is ready, you can use this external tool to generate your config.json
file effortlessly. Alternatively, you can edit the file manually with any text editor.
Available Overlays
All Racelab overlays are supported. Use any of these names to replace {name}
in the URL format above:
Standings & Positioning
relative
, standings
, horizontalstandings
, leaderboard
Timing & Performance
deltabar
, laptiming
, laptimelog
, laptimegraph
, laptimespread
, sessiontimer
, head2head
Fuel & Strategy
fuelcalculator
, pitboxhelper
Track & Navigation
flatmap
, trackmap
, minimap
, worldmap
Awareness
radar
, blindspot
, radarbars
, overtakealert
Telemetry & Data
inputtelemetry
, datablock
, boostbox
, advancedpanel
Flags & Warnings
flags
, digiflag
Miscellaneous
heartrate
, weathermonitor
Streaming Overlays
chat
, chathighlight
, chatracegame
, chatracegamestandings
, customtext
, customurl
, garagecover
, micvisualizer
, statbot
You can also find the URL of an overlay in the Browser section when editing its settings.
Default config file
In Racelab under Settings > VR Settings you can always revert back your settings to the default config provided by Racelab.
{
"openxr": {
"enabled": true,
"useWorldLockedPositions": true
},
"overlays": [
{
"enabled": true,
"instanceGuid": "{fb7cb579-5ec7-4a43-a540-18145366648f}",
"uri": "http://localhost:8080/ui/#/overlays/deltabar",
"pose": {
"position": [0.6379981, -0.22400045, -0.99199826],
"orientation": [0.29999998, -0.6099997, 0]
},
"physicalSize": {
"dimension": "Height",
"length": 0.1
},
"alpha": 1,
"curvatureRY": 0
},
{
"enabled": true,
"instanceGuid": "{fb7cb579-5ec7-4a43-a540-18145366648b}",
"uri": "http://localhost:8080/ui/#/overlays/standings",
"pose": {
"position": [-0.011999998, 0.6279987, -0.6679976],
"orientation": [0.7299996, -0.010000015, 0]
},
"physicalSize": {
"dimension": "Width",
"length": 0.1
},
"alpha": 1,
"curvatureRY": 0,
"fadeOut": {
"startDistance": 0.1,
"endDistance": 0.3,
"minimumAlpha": 0.3
}
}
],
"showWelcomeOverlay": true,
"mouseInvertY": false,
"mouseMovePositionSensitivity": 0.001,
"mouseMoveRotationSensitivity": 0.01,
"mouseWheelAlphaDelta": 0.05,
"resolutionScale": 1
}
Performance & Scaling
resolutionScale
Property
The resolutionScale
property in config.json
determines the scaling factor for overlay resolution. The default value is 1.0
.
Increasing this value scales both width and height proportionally. Since pixel count increases quadratically, higher values will significantly increase VRAM usage.
Scaling Examples:
Scale Factor | Overlay Size (Original: 512x512) | VRAM Usage Increase |
---|---|---|
1.0 | 512x512 | 1x (default) |
2.0 | 1024x1024 | 4x VRAM usage |
3.0 | 1536x1536 | 9x VRAM usage |
Usage Considerations
This feature is mainly beneficial for Varjo headset users, as Varjo performs poor-quality scaling when compositing overlays. On other headsets, increasing resolutionScale
may improve text clarity and sharp edges, but it is not generally recommended due to the excessive VRAM usage.
openXR/useWorldLockedPosition
Property
This property is true
by default. Setting it to false
acts as a workaround for Varjo Base v4.4 and above, which have a bug causing world-locked overlays to appear in the wrong position or not at all.
When set to false
, the OpenXR API layer will convert world-relative positions to head-relative positions every frame, submitting overlays as head-locked overlays instead.
Pros & Cons:
✅ Fixes rendering issues in Varjo Base v4.4+
❌ May cause overlays to feel 'floating' or 'jittery', especially at low frame rates
Users often describe this effect as overlays no longer feeling firmly attached to the world.