Complete Manual

Every panel, every button, every option in PassthroughForge - explained in detail.

EditorDrawing Tools

Choose the tool you want to draw your mask with.

Drawing Tools card with all six tool radio buttons.
Drawing Tools card with all six tool radio buttons.
ToolEffect
NoneDefault. Canvas clicks/drags do nothing - safe state for adjusting position via shortcuts without accidentally drawing.
PolygonClick to place vertices, right-click on empty canvas to apply, right-click on point for context menu (Bezier toggle, Fillet, Delete).
RectangleClick + drag to fill an axis-aligned rectangle with the passthrough color.
BrushClick + drag to paint a soft circle with the size from the slider that appears next to the radio buttons.
EraserSame as brush but removes pixels (alpha = 0).
FillBucket flood-fill: click any region and the connected area is filled with the passthrough color. Use Eraser to remove a fill.
Tip: the brush size slider only appears when Brush or Eraser is selected.

EditorFiles card

Files card
Files card
Import PNGLoads any image and uses its alpha channel as the mask shape. Pixels with alpha > 128 become the passthrough color, everything else is transparent. Good for stencils / silhouettes.
Import 3DLoads an STL or FBX file, projects its silhouette to a 2D shape and uses that as the mask. Useful for projecting hardware models.
Export PNGWrites the current mask pixels (RGBA) to a PNG file - good for backups or sharing.

EditorCanvas / Edit cards

Canvas / Edit cards
Canvas / Edit cards
Fill AllFills the entire texture with the passthrough color (full passthrough quad). Mostly used to start with a "blank passthrough sheet" you then carve away from with the Eraser.
ClearWipes all pixels to alpha=0 (fully transparent / no passthrough).
UndoReverts the last drawing operation.
RedoRe-applies an undone operation.

EditorView card

View card
View card
Zoom Canvas - / +Discrete zoom buttons. Each press multiplies/divides zoom by 1.25.
1:1Reset zoom and pan to default centered view.
Grid checkboxToggles a divisions grid overlay on the canvas - useful for symmetric polygon placement.

Mouse alternative: Ctrl + Wheel zooms continuously and centers on the cursor; Ctrl + Middle Drag pans.

EditorReference Image card

Loads any image (typically a cockpit photo) as a tracing background. The image is fitted to the canvas with correct aspect ratio and centered.

Reference image loaded behind the canvas for tracing.
Reference image loaded behind the canvas for tracing.
Load ReferenceOpen file dialog to pick an image.
Show / HideToggle visibility of the loaded reference.
Opacity slider0 = invisible, 1 = fully opaque.
Rotate 90 / 180 / 270Rotates the reference if your photo is in portrait or upside-down.

EditorActions card

Actions card
Actions card
TRACE VRToggles a special render mode: every painted pixel of the SELECTED mask is drawn yellow in VR (instead of using passthrough), all other masks become invisible. Used for fine-aligning the painted shape with the real cockpit.
Face MeRotates the currently selected mask so its surface normal points exactly at your head. Disables Auto-Face mode (which keeps the rotation live).
Trace VR caveat: the upload to the GPU happens at 30 Hz for 8K masks while in trace mode (vs. event-driven in normal mode), so the editor UI may feel slightly heavier. Turn it off when not aligning.

EditorPolygon tool detail

The polygon tool is the most powerful drawing tool. Each click places a vertex; right-clicking on the canvas applies the polygon (rasterizes it to the mask pixels). After applying, the polygon vertices are saved with the mask so you can re-edit later.

Polygon tool in action - vertices, bezier handles, mirror line.
Polygon tool in action - vertices, bezier handles, mirror line.

Per-vertex actions

Per-vertex actions
Per-vertex actions
Drag a vertexRepositions it.
Right-click on a vertexOpens context menu: Corner / Bezier toggle (controls handle visibility), Fillet radius (adds a rounded corner on apply), Delete.
Right-click on an edgeInserts a new vertex at the click position.
Drag a Bezier handleAdjusts the curve tangent at that vertex.
Hover + DelDeletes hovered vertex.
EscCancel the in-progress polygon (no apply).

Mirror mode

Mirror mode
Mirror mode

The Mirror checkbox creates a real-time mirrored preview of the polygon along a vertical axis through the first placed point. On apply, both the original and the mirrored shape are rasterized in one go. Bezier handles and fillet radii are mirrored correctly.

Right Panel[Pr] Profiles

Manages saved profiles - each profile holds a complete mask layout, color, and transform offsets.

[Pr] Profiles section with profile list and management buttons.
[Pr] Profiles section with profile list and management buttons.
Profile name textboxThe name used by Save As / + New. Pre-filled with the loaded profile's name; edit it to rename or create variations.
Save AsSaves the current state under the typed name. If the name already exists it is overwritten without asking.
+ NewSame as the menu-bar version: creates a fresh profile (typed name preferred, otherwise auto "Profile N").
Profile list (one row each)Click to load a profile. The currently loaded profile is highlighted green. The default (auto-loaded) profile gets a star prefix.
Set Auto / Auto labelMarks a profile as the auto-load default for next launch. Only one profile can have this.
DeletePermanently deletes the profile JSON. No undo.

Right Panel[L] Layer - Mask

The mask list. Each row is one mask in the current profile. The order is the rendering order (top of list = drawn under everything else).

[L] Layer - Mask list with reorder arrows and visibility toggles.
[L] Layer - Mask list with reorder arrows and visibility toggles.
+ Add MaskCreates a new empty mask, spawned 1 m in front of your head, head-yaw aligned. Subsequent masks are staggered 30 cm to the right so they don't overlap.
DuplicateCreates an exact copy of the selected mask, including pixel content.
MirrorCreates a mirrored child of the selected mask. The child syncs its position (X negated), rotation (Y / Z negated) and pixel content (horizontally flipped) from the source. Edit only the source.
(o) toggleMask visibility checkbox - same as Ctrl+F1..F8 hotkey for that mask.
v / ^ arrowsMove the mask up or down in the render order (Z-order).
Mask nameClick to select and edit. Press Enter to commit the new name.
X (close button on tab)Removes the mask. Confirmation dialog appears.

Right Panel[G] Global Offset

Translation and rotation applied to ALL world-anchored masks. Modified automatically by Snap to View, can be edited manually for fine group-level adjustments.

[G] Global Offset sliders for translate and rotate.
[G] Global Offset sliders for translate and rotate.
Offset X / Y / ZTranslates the whole group. Held Alt = fine, Shift = fast.
G.Pitch / G.Yaw / G.RollEuler-angle rotation of the group around world axes (around the pivot if a Snap is active, otherwise around origin).
Reset All OffsetsClears every offset to zero / identity. Same as Settings -> Reset Snap.

Right Panel[M] Mirror & Group

Per-mask mirror controls. Visible only when a mask is selected.

[M] Mirror & Group with Create Mirror / distance slider.
[M] Mirror & Group with Create Mirror / distance slider.
Create MirrorSame as the Mirror button in the mask list - spawns a linked mirror child.
Unlink MirrorVisible only on mirror children. Detaches the child from its source - the child becomes an independent editable mask with its current state frozen.
Mirror Distance sliderVisible when a mirror pair is selected. Sets the X-axis distance between the source and mirror child centers in one slider.

Right Panel[V] Visibility & Activation

[V] Visibility & Activation
[V] Visibility & Activation
Gaze ActivatedWhen checked, the mask only fades in while you're looking within an angular cone of its center. Cone width controlled by the slider next to it (5..90 degrees).
Gaze angle sliderHalf-angle of the activation cone. 30 deg is the default and works for most cockpit panels.
Render on top of other masksForces this mask to draw above all others in the OpenXR composition layer order, even if geometrically further away. Use for PDF / document overlays.

Right Panel[T] Tracking

Per-mask tracking target. Determines whether the mask sits in world-space or follows a controller in real time.

[T] Tracking dropdown - World / Left / Right Controller.
[T] Tracking dropdown - World / Left / Right Controller.
None (World)Static world position. Default. Profile-stored coords + global offset.
Real Time Tracking Left ControllerMask pose = (left controller pose) * (mask's stored offset). The mask follows your left hand.
Real Time Tracking Right ControllerSame for right hand.
Reset Offset (when tracked)Sets the offset to identity - mask sits exactly at the controller's grip pose.
Motion rig tip: strap a controller to your motion-rig frame. Switch a mask to tracked mode and the cutout follows every pitch / roll / yaw the platform produces, keeping the cockpit panel cutout aligned even when the rig moves.

Right Panel[P] Position (head-relative)

The position sliders show head-relative coordinates: X = right of player's view, Y = up, Z = forward (positive) / behind (negative). The internal mask.transform stays in stage-space; this panel converts on the fly so values feel intuitive.

[P] Position sliders, head-relative coordinates.
[P] Position sliders, head-relative coordinates.
X (right)Drag to move along the player's right-axis. Held Alt = fine, Shift = fast.
Y (up)Up/down in world coords (gravity-aligned).
Z (forward)Forward / back relative to player's yaw.

Keyboard alternative: Ctrl + Arrows for X/Y, Ctrl + PgUp/PgDn for Z.

Right Panel[R] Rotation (world axes)

[R] Rotation (world axes)
[R] Rotation (world axes)
PitchRotation around world X axis (front-to-back tilt).
YawRotation around world Y axis (vertical / heading).
RollRotation around world Z axis (banking).
Implementation: rotations apply as world-frame quaternion left-multiplications, so they stay gimbal-lock free as you stack them. Editing one slider does not unexpectedly change the others.

Right Panel[S] Size & Resolution

[S] Size & Resolution
[S] Size & Resolution
Width / Height (m)Physical size of the mask in meters as it appears in VR.
Lock aspectWhen checked, editing one dimension scales the other proportionally.
Texture resolutionInternal pixel resolution of the mask buffer. Higher = sharper edges but more GPU bandwidth. Default 8192x8192. Document Masks usually need lower (e.g. 2048x2048).

Right Panel[3D] Preview

Wireframe preview of the mask group around the player's head pose. Updates live. Useful for understanding the spatial relationship between masks and validating where Recenter All Masks will land them.

[3D] Preview wireframe of mask group around head pose.
[3D] Preview wireframe of mask group around head pose.
Show all checkboxIf unchecked, only the selected mask is drawn (simplifies the preview when you have many masks).

WorkflowShortcut configuration

Reachable via Settings -> Mask Shortcuts.... Opens a modal where every action's keyboard binding can be customized.

Shortcut configuration window with rebindable action table.
Shortcut configuration window with rebindable action table.

Step mode controls

Step mode controls
Step mode controls

Three buttons at the top set the current step multiplier directly: Normal (x1, default), Fine (x0.1), Coarse (x5). The toggles also fire automatically on the configured Toggle keys (Q / E by default).

Action table

Action table
Action table

Each row shows an action, its current binding (e.g. Ctrl+RightArrow), and Rebind / Clear buttons.

RebindClick and press the desired key combination. Modifier keys (Ctrl / Shift / Alt) are part of the binding - LeftArrow and Ctrl+LeftArrow are different bindings.
ClearRemoves the binding entirely. The action becomes inactive.

Other buttons

Other buttons
Other buttons
Reset to DefaultsRestores all bindings to factory defaults (Ctrl + arrows / numpad / Q / E).
Show Cheat Sheet in VRGenerates a 1024x768 image with all current bindings rendered as a panel and creates a "Shortcuts Help" mask floating ~1 m in front of you.

WorkflowTray mode

Click the Minimize button (top-right of the title bar) to send PassthroughForge to the system tray. While in tray:

Tray icon and the right-click context menu.
Tray icon and the right-click context menu.
  • The window is hidden but the layer keeps publishing mask data to your sim.
  • All keyboard shortcuts are registered as Win32 RegisterHotKeys.
  • A low-level WH_KEYBOARD_LL hook is also installed to intercept keys before sims (DCS) which use DirectInput / RawInput see them.
  • The hook only fires when a known flight sim has foreground (DCS, MSFS, IL-2, War Thunder, Falcon BMS). Plain typing in Notepad / browser passes through normally.

X (close button) always quits the application - only the Minimize button sends to tray. The tray icon's right-click menu also has "Show PassthroughForge" (restore) and "Exit".

WorkflowVR cheat sheet

Settings -> Mask Shortcuts -> Show Cheat Sheet in VR builds a high-res image with the current keyboard bindings and creates a dedicated mask called "Shortcuts Help". It floats ~1 m in front of you, large enough to read at a glance.

In-VR cheat sheet floating in front of the player.
In-VR cheat sheet floating in front of the player.

It's a normal mask - you can move it, hide it via Ctrl+F<n>, snap it to a controller, or delete it like any other. Re-press the menu item to regenerate it after rebinding.

WorkflowStatus bar

Bottom of the desktop window. Shows live state:

Status bar at the bottom of the desktop window.
Status bar at the bottom of the desktop window.
  • SHM Active / Disconnected: green if the layer is connected, gray otherwise.
  • Masks: N: number of masks in the current profile.
  • Color: : the current passthrough color.
  • Step: Fine / Coarse: appears in green / orange when not in Normal step mode.