Documentation

FlatVR ๐Ÿ•ถ๏ธ

Everything the app does, in the order you'll meet it: getting a game onto the virtual screen, shaping that screen around you, and turning the flat picture into real depth.

What FlatVR is

FlatVR launches any non-VR (flat) game directly in VR. It builds a highly customizable OpenXR overlay with a massive virtual screen right in front of you, turning a desktop game into an immersive VR experience โ€” and, with a depth source, into a genuinely volumetric one.

Nothing is patched into the game. FlatVR captures the window or display the game is already drawing to, and projects it into the headset. The same applies to videos, emulators and any other desktop app.

๐Ÿš€ How to launch

There are two ways to get a game onto the virtual screen.

1

Standard capture

Press Refresh Window/Monitor List, pick your running game or a physical monitor from the dropdown, and click START FLATVR.

2

Virtual monitor recommended

Create a virtual monitor in its own tab โ€” this uncaps the 60 Hz limit and lets you use square resolutions. Then click Make Virtual Monitor Primary on the Launch tab, start the game, and press START FLATVR. Use Show Virtual Monitor Overlay to peek at what is happening on the invisible display.

Before you start

The master checkbox Enable Flat VR Overlay at the top of the app has to be checked, or nothing will appear in the headset.

Other controls on the Launch tab

Move to Virtual MonitorSends the selected game window straight over to the virtual display without touching Windows' display settings.
Head-Locked Mode F8Pins the screen in front of you so it follows your head instead of staying anchored in the room.
Show Internal Mouse CursorDraws the cursor on the virtual screen โ€” most captured windows do not include it.
3D Depth ModeWhere depth comes from: the AI model, the game's own buffer through ReShade, or a stereoscopic source that already renders two views.
Restore Physical Monitor PrimaryPuts Windows back to your real monitor when you are finished.

Performance statistics

The right-hand panel shows the game's source frame rate, the VR render rate and โ€” in AI depth mode โ€” how long each depth inference actually takes in milliseconds. That last number is the one to watch when tuning depth quality against GPU headroom.


๐Ÿ–ฅ๏ธ Virtual monitor

Instead of capturing your physical monitor, you can create a headless virtual monitor. This is strongly recommended for VR gaming.

Why use it

Your physical monitor may be capped at 60 Hz. A virtual monitor bypasses that, letting the game run at your headset's native refresh rate โ€” 90 Hz, 120 Hz โ€” for maximum smoothness. It also allows custom square resolutions such as 1600ร—1600, which fit the VR field of view far better than a 16:9 strip.

How to use it

  1. Press Add Virtual Monitor and set its width, height and refresh rate.
  2. Go to the Launch tab and click Make Virtual Monitor Primary.
  3. Start your game โ€” it opens on the virtual screen automatically.
  4. Use Show Virtual Monitor Overlay on the desktop to peek at what is on it.
  5. When finished, press Restore Physical Monitor Primary to return Windows to normal.

๐Ÿ“บ Screen position & shape

Fine-tune the virtual screen's physical shape, distance and lens distortion inside the headset.

DistanceHow far the screen sits in front of you, in metres.
Rotation Y (Yaw)Rotates the screen horizontally around you.
Screen ScaleThe overall physical size of the virtual screen.
Screen CurvatureCurves the screen around your vision for a wrap-around effect.
Pincushion DistortionPincushion / barrel lens distortion, to shape the screen geometry in 3D space and line the perspective up with the headset's own depth cues.
Distortion Image ScaleScales the image inside the distorted shape to compensate for edges being cut off.
Crop EdgesCuts off black bars or peripheral UI elements from the captured window for a clean frame.

Moving the screen with your controllers

Point a controller at the virtual screen and hold the grab button to take hold of it. Turning the controller swings the screen around you; moving your hand carries it โ€” forwards and back for distance, sideways and up for a shift. Squeeze the trigger while holding for quarter-speed fine placement.

  • Right stick while holding: forward pushes the screen away, back pulls it closer, right makes it larger, left smaller.
  • Right stick with nothing held: forward and back scroll whatever the beam is pointing at, like a mouse wheel.
  • Left stick: shift the screen.
  • Right stick click: steps through your saved placements.

Nothing here resets anything โ€” that is Reset Center, on its own binding (left stick click by default, or F7). The laser stops driving the mouse while the screen is held.


๐ŸŒซ๏ธ Blur & Ambilight

Ambilight samples the colours at the edge of the screen and smears them outwards into the dark void, so the picture stops feeling boxed-in. It is the cheapest immersion win in the app.

Ambilight Extension SizeHow far the glow extends around the screen.
Ambilight Edge DepthHow deep a strip of the screen edge is captured and duplicated for the effect.
Ambilight Edge BlurHow strongly the glow itself is blurred, to keep it soft.
Ambilight RepeatsRepeats the captured edge texture if you need to stretch the effect further.
Screen Edge Blur DepthBlur applied directly to the screen edges, in pixels, to remove the hard border.
Screen Edge Blur StrengthHow strong that edge blur is, so the picture fades seamlessly into the Ambilight.

๐Ÿ”„ Head tracking & mouse emulation

Head tracking translates your physical head rotation into in-game mouse movement. You look around, aim or steer in first-person and simulation games simply by turning your head โ€” a pseudo-VR experience in a game that knows nothing about VR.

Sensitivity X (Yaw)How fast the in-game mouse moves horizontally as you turn your head. Tune it so a 90ยฐ real turn is a 90ยฐ in-game turn.
Sensitivity Y (Pitch)The same, vertically.
Follow Smoothness (SMA)Smooths the mouse input sent to the game to remove jitter.
Head-Locked Follow Smoothness (SMA)Adds slight lag to how the overlay follows your head, so head-locked mode feels less rigid.
Mouse DeadzoneIgnores small head micro-movements, keeping your aim steady and the picture still.
Invert Mouse X / YFlips either axis for games that expect the opposite convention.
Disable Mouse Movement completelyTesting switch โ€” head tracking stays on but no mouse input is sent.

Mouse from the controller

Independently of head tracking, you can point, click and drag the real Windows cursor with a controller's laser and trigger โ€” enough to manage the game and the desktop without lifting the headset.


๐ŸŒŒ Three ways to get depth

Depth is what separates a flat screen floating in VR from a volumetric picture. Pick whichever your game can give you.

Most accurate

ReShade native depth

Reads the game's own depth buffer. Sharpest result, costs almost nothing to run, needs ReShade installed.

Works everywhere

AI 3D depth

A neural network infers depth from the picture. No setup, works with any game or video, costs GPU time.

Native stereo

Stereoscopic SBS / TAB

The source already renders two views. FlatVR just splits the frame and routes each half to the right eye.

Whichever depth source you use, the picture is then turned into a stereo pair by the FlatVR 3D warp, or by simple parallax if you prefer the cheaper path.


๐Ÿค– AI 3D depth

A real-time neural network calculates a depth map of the scene and the picture is stretched according to it. Ordinary 2D games, YouTube videos and films become a volumetric 3D experience with real depth perception inside the headset โ€” with nothing to install and no per-game setup.

3D Intensity (Separation)How strong the depth effect is overall.
IPD / ConvergenceAdjusts for your interpupillary distance so the depth reads correctly to your eyes.
Depth Map AI FPS LimitCaps how often the depth model runs, to save GPU. Roughly: 15 FPS on a weaker card, 30 FPS on a mid-range one, higher on a top-end GPU.
Auto AI FPS LimitSets the pace from how long the model actually takes, measured against the worst run of the last ten seconds rather than the average โ€” the overshooting runs are exactly the ones an average hides. It only ever asks for less often than your slider allows, never more.
Debug Depth MapShows the model's raw output, so you can see what the depth actually looks like.
No ReShade needed

AI depth mode requires none of the ReShade setup below. It guesses depth from the picture rather than reading it โ€” softer at edges and more expensive to run, but it works in every game.


๐ŸŽฎ ReShade native depth

FlatVR can build its 3D from the game's own depth buffer instead of guessing it with the AI model. That is sharper and costs almost nothing to run, but it needs ReShade and the small add-on that ships with FlatVR.

Three things have to be true. Each of them fails silently on its own, so if you get a flat picture, work down this list in order.

1

Install ReShade โ€” the add-on build

ReShade is not included with FlatVR. Download it yourself from reshade.me โ€” the button on the tab opens the page. Run the installer, point it at your game's .exe, and pick the API the game uses, usually DirectX 11 or DirectX 12.

You do not need any effect packages. The add-on reads the depth buffer directly rather than using effects โ€” installing shaders is fine, just not required.

There are TWO downloads on that page

You need the one with add-on support. The plain build cannot load add-ons at all โ€” not ours, not any โ€” and when you use it, nothing appears to happen and nothing explains why. This is the single most common reason this feature does not work.

2

Put the add-on next to the game

Press Install ReShade & Addonโ€ฆ on the tab, then Copy Addon to Gameโ€ฆ, and pick your game's .exe. That is all it does: it copies FlatVR_DepthProvider.addon64 into the folder the .exe lives in. You can do it by hand from flatvr\reshade_addon if you prefer. Replace the old file if asked.

3

Let ReShade find the depth buffer

Start the game, press Home to open ReShade's menu, go to the Add-ons tab and find Generic Depth.

a) Tick โ€œCopy depth buffer before clear operationsโ€. It is off by default, and a great many games hand ReShade an empty depth buffer without it โ€” ReShade's own note under that box reads โ€œEnable this when the depth buffer is emptyโ€. FlatVR offers to set this for you when it copies the add-on; if you said no then, this is the box. Changing it needs a game restart to take effect.

b) Pick the right buffer from the list. Each line is a depth buffer the game drew into, with a resolution and a vertex count.

  • The one you want has a vertex count in the millions.
  • Its shape should match your screen's, roughly 16:9.
  • With DLSS, FSR or XeSS on, the resolution can be far smaller than your screen โ€” 1280ร—720, even 640ร—360 โ€” and still be the right one. Go by the vertex count, not the size.
  • Ignore square buffers such as 1024ร—1024 or 2048ร—2048. Those are shadow maps.

Our add-on appears at the bottom of the Add-ons list as FlatVR Depth Provider. It picks up whatever Generic Depth selected; there is nothing to configure on it.

Save the selection

Leave the game through its own menu rather than killing it, and ReShade writes both choices into ReShade.ini for next time.

Settings

3D Intensity (Separation) / IPD (Convergence)The same two controls as AI depth, kept separately because a native buffer needs far smaller values.
Invert Depth MapTurns the buffer over when a game counts depth the other way round. Reversed-Z โ€” nearest surface 1, far plane 0 โ€” is the usual choice in modern engines rather than the exception, and read unturned it puts the background in front of the objects. There is no reliable way to tell which convention a buffer uses, so this is a switch.
Take Depth Edges from the PictureA game's depth buffer is not antialiased: a rail one pixel wide either covers a pixel or it does not, so the smallest camera movement flips whole pixels between the rail and the sky behind it, and thin structures shimmer. The picture's edges are antialiased and know how much of a pixel the rail covers, so the depth edge is placed where the picture has one. Costs one pass over the frame.
Debug Depth MapShows the depth buffer arriving from ReShade, to confirm you picked the right one.

When it is not working

FlatVR names which of the three steps is missing rather than leaving you to guess. The same messages appear on the panel and on the in-VR overlay, so you do not have to take the headset off to read them.

MessageWhat it means
DEPTH MAP NOT FOUND across the bottom of the pictureReShade is sending the picture but no depth. That is step 3 โ€” either the checkbox in (a), or no buffer selected in (b).
No picture from the ReShade addonNothing is arriving at all. That is step 1 โ€” the plain build instead of the add-on build โ€” or step 2, the file not being next to the .exe.
No ReShade banner when the game startsReShade did not install into this game. Run its installer again and check the .exe and the API.

About the add-on

FlatVR_DepthProvider is open source, and it has to be: it reads a structure belonging to ReShade's own Generic Depth add-on, so a future ReShade release can change that structure underneath it. When that happens the add-on shuts its depth path down rather than misbehaving inside your game, writes a line into ReShade's log, and FlatVR shows DEPTH MAP NOT FOUND.


๐Ÿ•ถ๏ธ FlatVR 3D โ€” the stereo warp

FlatVR 3D converts a depth map into a complete stereo pair calibrated to your real screen size and eye distance. It works with any depth source โ€” AI or ReShade โ€” and needs no external wrappers or proprietary shaders.

SeparationThe maximum displacement between the left and right eye images, in screen millimetres. The comfort readout shows physical millimetres, angular separation in degrees, and the percentage of your own eye distance that represents.
Depth StrengthHow aggressively scene depth consumes the separation budget. Low values flatten distant objects; higher values stretch middle-ground contrast without exceeding the separation cap.
Screen DepthWhich depth level sits precisely on the screen glass (0.00โ€“1.00). Objects behind it recede into the display; objects in front pop out into the room.
Pop-out LimitAttenuates depth only for objects in front of the screen plane, preventing fatigue and edge clipping while leaving background depth alone.
Eye BalanceDistributes horizontal displacement between the two eyes (โˆ’1.00 to 1.00). Extreme values leave one eye untouched and double the shift on the other.
Edge MagnetDecides who owns a depth edge (โˆ’1.00 to 1.00). Negative gives the slope to the background, preserving thin objects such as railings or branches; positive gives it to the foreground.
Search StepsPrecision of the occlusion search along the view ray (0โ€“128). Zero turns the search off for a direct shift; higher values give clean object boundaries at proportional GPU cost.
Debug ViewInspect individual stages of the pipeline: sampled depth, relief about the screen plane, applied disparity, search distance, disocclusion mask, and depth-edge-versus-picture-edge alignment.

If you would rather not use the warp at all, Native (Simple Parallax) under Image Processing is the cheaper path โ€” a straight shift with no occlusion search.


๐Ÿ‘“ Stereoscopic 3D (SBS / TAB)

This mode supports stereoscopic wrappers and shaders that split the game screen to produce a native 3D image. The wrapper renders two camera views into one window; FlatVR cuts that window in half in real time and sends each half to the matching eye panel in your headset. The result is true two-camera stereo โ€” considerably better than any reconstruction from a depth map.

Supported input formats

2D / Normal ModeStandard flat rendering โ€” the captured screen is projected as a normal flat overlay to both eyes.
Side-by-Side (SBS)The frame is split horizontally: left eye view on the left, right eye view on the right.
Top-and-Bottom (TAB)The frame is split vertically: left eye view on top, right eye view on the bottom.

The same SBS and TAB formats are what AR glasses โ€” Xreal, Rokid, Viture โ€” expect as input, so this is also the path for playing on glasses rather than a headset.


โŒจ๏ธ Hotkeys

KeyAction
F5Take screenshot
F7Reset center โ€” recentres the screen in front of you
F8Toggle head-locked mode
F10Toggle the overlay
HomeOpen the ReShade menu, in-game (ReShade's own key)

All of these can also be bound to VR controller buttons. A controller binding takes a hold time โ€” Reset Center ships at 400 ms โ€” so a brush of the thumb cannot set it off. F7 stays instant whatever the hold time says, so there is always a way back to a centred screen.

Ready to try it? ๐ŸŽฎ

Download FlatVR and run it with the game you're playing right now. Free, no account needed.