PassthroughForge

Where reality breaks through.

PassthroughForge cuts custom-shaped windows into your VR view - exactly where your real HOTAS, keyboard, knee-board or coffee mug sits. Switch profiles in one click and you're rigged for any cockpit.

Hero screenshot: VR cockpit with passthrough cutouts on HOTAS and keyboard
Works with:
DCS WORLD
MSFS 2024
IL-2
WAR THUNDER
FALCON BMS
QUEST 3 + VIRTUAL DESKTOP

Get reality into your VR games.

Every VR pilot knows the moment: you need to adjust a real-world control mid-flight - a switch on the HOTAS, a key on the keyboard, a glance at the knee-board - but reaching it accurately means lifting the headset and breaking immersion. The result: you either fly blind to your own hardware, or you trade the VR experience for a quick peek at reality. PassthroughForge removes the trade-off.

Before

  • Headset on: HOTAS and keyboard invisible
  • Headset off: VR immersion gone
  • Pancake mode = half the experience
  • Hunting for buttons by feel or voice macros

With PassthroughForge

  • HOTAS, keyboard and mouse always visible
  • VR cockpit stays fully immersive
  • Cutouts placed exactly where your gear is
  • One profile per aircraft - one click to switch

How it works

PassthroughForge sits transparently between your sim and your VR runtime as an OpenXR API layer. You decide where reality breaks through.

Feature #1 - Mask Editor

Polygon, rectangle, brush. You shape every cutout.

The 2D editor lets you draw the exact contours where your VR image should turn transparent. Bezier curves for smooth edges, live mirroring for symmetric layouts, reference images so you can trace right over a cockpit photo.

  • Polygon tool with bezier handles + fillet radii
  • Rectangle and brush tools for fast freehand shapes
  • Load a reference image (e.g. a cockpit photo) and trace it
  • Pre-made mask presets you can load and adjust
  • Live Trace mode: shows your shape highlighted in VR while you align
Screenshot: Mask Editor with polygon tool
Feature #2 - Profiles

One profile per aircraft. One click to switch.

Build a layout once, save it under any name, load it whenever you fly that bird. Each profile holds the full mask geometry, positions, gaze settings, and group offsets - independent of any in-session recenter you might do later.

  • Unlimited profiles, freely named
  • Auto-load on application start
  • Profile data stays untouched no matter how often you snap to view
  • "+ New" creates an instant snapshot of your current layout
📋 Screenshot: Profile panel
Feature #3 - Snap to View

Recentered the playspace? One key and everything sits right.

When the VR runtime re-anchors your stage origin (Oculus button, Virtual Desktop reset, headset off and on again), the masks would normally drift away. Hit Ctrl+Delete and the entire mask group rigidly rotates around your head until the centroid lines up with your forward direction again - distances and heights preserved.

  • Rigid yaw rotation around your head pivot
  • All inter-mask distances stay exact
  • Reset Snap reverts everything to the loaded profile
  • Works in tray mode through the global keyboard hook
🎯 Screenshot: Snap-to-View in action
Feature #4 - Document Mask

Knee-board with PDFs, charts, briefings.

Load approach charts, mission briefings or system diagrams as PDFs or image series. PassthroughForge turns them into floating VR panels - paged, freely positioned, and immune to chroma-key bleed thanks to a built-in Color Anti-Bleed pass.

  • Read PDFs and JPG/PNG sequences
  • Page navigation via hotkey or controller
  • Color Anti-Bleed: no flicker on photo content
  • Render-on-top mode for always-visible overlays
📄 Screenshot: Approach chart as VR panel
Feature #5 - Controller Tracking

Bind a mask to a motion controller. Built for motion rigs.

Any mask can be attached to your left or right Quest 3 controller - the cutout follows the controller's pose in real time. Beyond handheld use, this opens up an interesting workflow for motion rig owners: strap a controller to your rig frame and the masks track every pitch, roll and yaw the motion platform produces. No more drift between your real cockpit panel and its VR cutout when the rig moves.

  • Per-mask tracking target: None / Left / Right controller
  • 6DoF tracking - position and orientation follow exactly
  • Snap-to-controller pose for one-click placement
  • Ideal for motion simulators where the cockpit physically moves
  • Mix and match: world-anchored masks + controller-tracked overlays
🎧 Screenshot: Controller-tracked mask following motion rig

Setup in 60 seconds

Your first mask, step by step:

01

Add a mask

Click + Add Mask and pick the polygon tool.

02

Draw the shape

Click around the area you want to see (HOTAS, keyboard, controls).

03

Place it in 3D

Use sliders or keyboard shortcuts to push the mask onto your real gear.

04

Save the profile

Save As "DCS Hornet" - next session everything sits exactly right.

See it in action

The full step-by-step walkthrough: setting up multiple masks on a real cockpit, in real time. ~6 minutes.

Keyboard & mouse shortcuts

Everything you need for fast mask creation, editing, and in-flight adjustment. Hotkeys are remappable under Settings -> Mask Shortcuts...
For the full list of every action and binding, see the manual.

MASK TRANSFORM (IN VR)

Move mask X / Y (head-relative)Middle-Mouse Drag
Move mask Z (forward / back)Mouse Wheel
Scale mask (drag vertical)Left + Right Drag
Fine modifierAlt
Coarse modifierShift

EDITOR CANVAS

Zoom canvas (centered on cursor)Ctrl + Wheel
Pan canvas viewCtrl + Middle Drag
Restore default view1:1 button
Toggle Trace VR modeTRACE VR button
Snap mask to current viewCtrl + Delete

POLYGON TOOL

Add pointLeft-click
Context menu (Bezier / Fillet / Delete)Right-click on point
Apply polygonRight-click empty
Remove hovered pointDel
Cancel / clear shapeEsc

MOVE SELECTED MASK

Move right / left (X)Ctrl + Right / Left
Move up / down (Y)Ctrl + Up / Down
Move forward / back (Z)Ctrl + PgUp / PgDn
Scale up / downCtrl + Numpad +/-
Recenter all masksCtrl + Delete

ROTATE SELECTED MASK

Pitch up / downCtrl + Numpad 8 / 2
Yaw left / rightCtrl + Numpad 4 / 6
Roll CW / CCWCtrl + Numpad 9 / 7
Toggle Fine step (x0.1)Q
Toggle Coarse step (x5)E

GLOBAL HOTKEYS (TRAY MODE)

Toggle mask 1..8 visibilityCtrl + F1..F8
Toggle ALL masksCtrl + F9
Show / hide windowCtrl + F12
Show shortcuts cheat sheet in VRSettings menu
Recenter all masksCtrl + Delete

More than just masks

Battle-tested features that make the difference.

Global hotkeys mid-flight

Tray mode with low-level keyboard hook. Ctrl+F1 toggles mask 1 even when DCS holds focus and blocks every other tool.

📜

Cheat-sheet floating in VR

Forgot which hotkey does what? One click and your entire keymap appears as a floating 3D panel in front of you.

👀

Gaze activation

Masks appear only when you look at them. Cockpit stays clean, info shows up exactly when you need it.

🧾

Mirror layouts

Cockpit symmetric? Draw one mask, get the mirrored copy automatically generated. Bezier handles included.

Uncompromised performance

Async texture upload, cross-process keyed mutex sync, color anti-bleed. No FPS hit, no chroma-key shimmer.

🛡

Profile-clean recenter

Snap to View modifies a global pivot offset, never your mask data. Iterate as much as you want without fear of corrupting the layout.

Under the hood

PassthroughForge is built like a piece of professional software, not a hobby tool. Here's the architecture - and why we made these choices.

OpenXR Layer

The heart of PassthroughForge is a native OpenXR API layer - a DLL that the runtime loads into your sim's process. It registers composition layer quads with the OpenXR compositor, so your masks render with the same quality and synchronization as your sim's own frames. No external overlay program, no extra GPU pass.

Why: OpenXR layers are the standardized, performance-sound way to inject content into a VR session. They work with every conformant runtime - Quest, Index, Reverb, Pico - without per-headset hacks.

SHM IPC

The desktop editor (where you draw masks) and the OpenXR layer (which renders them) live in different processes. They talk over a named shared-memory segment with a Win32 mutex and an explicit version handshake. Mask transforms stream to the layer at every frame; updates are picked up immediately.

Why: Decoupling editor from renderer means the editor can run while the sim is starting, can be minimized to tray, can crash and restart - all without disturbing the in-VR view.

Cross-Process D3D11

Mask textures are uploaded to a DXGI shared D3D11 texture with KEYEDMUTEX. The editor process writes RGBA pixels into a staging buffer, copies to the shared texture under mutex, and the layer process opens the same texture and copies it into the OpenXR swapchain - also under mutex.

Why: Without keyed mutex sync, the layer would read the texture mid-write and you'd get top-to-bottom build-up artifacts and chroma-key bleed. This was the single biggest fix in the v2.26 release.

Color Anti-Bleed

Virtual Desktop's chroma-key has a tolerance ring around the passthrough color. Photo content with pixels close to that color gets partially keyed and looks washed out. PassthroughForge scans every Document Mask pixel and shifts any RGB inside the ring radially outward so VD never confuses image content with passthrough.

Why: A few-percent shift in shadow tones is imperceptible to humans but takes the chroma-key out of the picture. Lets you use any passthrough color without restricting your imagery.

Pivot-Based Snap

Snap to View doesn't mutate the mask poses - it stores a pivot point + rotation quaternion that the layer applies on top of every world-anchored quad. Mask data on disk stays exactly as you authored it.

Why: Iterating on a layout is dangerous if every recenter writes back to the profile. Separating session state from authored state means undo is always one click away, and profiles stay portable across machines.

Low-Level Keyboard Hook

When PassthroughForge is in tray mode, a WH_KEYBOARD_LL hook intercepts keys before any foreground process - including DCS - sees them. Matched shortcuts post a custom message to our window and the keystroke is swallowed.

Why: Many sims use DirectInput / RawInput which bypasses Win32 RegisterHotKey. Without the LL hook your shortcuts would silently fail the moment you put your hands on the controls.

Built with you, not just for you.

Every feature on this page started as a real-world issue from a real pilot - the gaze flicker, the keyed-mutex fix, the Snap to View math, the controller-tracked overlay for motion rigs. PassthroughForge iterates fast and we listen hard.

“If something feels wrong in the cockpit, tell us. We'd rather ship five small versions a week that fix what's actually annoying you than one big version that misses the point.”

Drop a bug report, a feature request, a screenshot of your setup, or a 30-second screen recording of "this isn't working how I want" - we read all of it and most of it ends up in the next build.

Be there when the next version drops

PassthroughForge is currently in public testing. Drop your email and we'll send new features, bug fixes and setup tutorials straight to your inbox. No spam, opt-out with one click.