Integrating Eye Tracking into VR: FFR, Gaze, Calibration

Our video game development company runs independent projects, jointly creates games with the client and provides additional operational services. Expertise of our team allows us to cover all gaming platforms and develop an amazing product that matches the customer’s vision and players preferences.

From immersive apps to game worlds and 3D scenes

Our dedicated team for VR/AR/MR development, Unity production and 3D modeling & animation — with its own case studies and capability decks.

Visit the dedicated studio
Showing 1 of 1All 242 services
Integrating Eye Tracking into VR: FFR, Gaze, Calibration
Complex
~1-2 weeks
Frequently Asked Questions

Our competencies

What are the stages of Game Development?

Latest works

  • image_games_mortal_motors_495_0.webp
    Game development for Mortal Motors
    1388
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    A turn-based strategy game set in a fantasy setting, With Fire and Sword
    926
  • image_games_second_team_604_0.webp
    Game development for the company Second term
    544
  • image_games_phoenix_ii_606_0.webp
    3D animation - teaser for the game Phoenix 2.
    591

Over five years, we have completed more than 20 Eye Tracking integrations in VR projects — from prototypes on Quest 3 to enterprise solutions on Varjo XR-3. The main pain point for clients is a tight GPU budget, with Fixed Foveated Rendering saving only 10–15%. Dynamic FFR with Eye Tracking squeezes out up to 25% performance. However, simply connecting the SDK and reading gaze direction is not enough: raw data is noisy, requires filtering, and each interaction type needs its own logic. Our engineers are Meta XR and OpenXR certified, ensuring stable operation across all supported headsets.

Platforms and SDKs

Meta Quest Pro / Quest 3

Meta provides Meta Movement SDK (formerly OVRPlugin). The OVREyeGaze component and low-level OVRPlugin.GetEyeGazesState() allow you to obtain gaze direction, eye openness, and pupil dilation. Accuracy after calibration is ±1.5–3°. Permission must be requested via OVRPermissionsRequester before use.

OpenXR

The cross-platform pathway uses the XR_EXT_eye_gaze_interaction extension. In Unity, connect via XR Interaction Toolkit 2.3+ — GazeInteractor and GazeInteractable. One codebase for all OpenXR-supported headsets: from Quest Pro to Varjo. This reduces maintenance costs and pays off on multi-platform projects.

Tobii XR SDK

For older PC headsets (HTC Vive Pro Eye), the Tobii XR SDK is used. It is an official Unity package but integrates via Windows Mixed Reality. Separate calibration setup is required.

Platform Comparison

Platform SDK Accuracy FFR Support Gaze Control
Meta Quest Pro Meta Movement ±1.5–3° Dynamic FFR (FB_foveation) GazeInteractor Oculus
Quest 3 Meta Movement ±2–3° Dynamic FFR (FB_foveation) GazeInteractor Oculus
Varjo XR-3 OpenXR ±0.5–1° Foveated rendering OpenXR Gaze
Pico 4 Pro PICO Motion ±1.5–2° Fixed/FFR PICO Gaze
PSVR 2 Sony SDK ±1–2° Dynamic FFR Sony Eye Tracking

Comparison of Gaze Data Filtering Methods

Method Latency Smoothness Implementation Complexity
Exponential filter ~5 ms Medium Low
Kalman filter ~10 ms High High
One-Euro filter ~7 ms High Medium
No filtering 0 ms Low (jitter) None

How EyeTracked FFR Works

Fixed Foveated Rendering (FFR) renders the periphery at lower resolution, but the center is fixed. Dynamic FFR shifts the high-quality zone with the gaze. On Quest 3, this yields a 15–25% GPU boost — the difference between 72 and 90 FPS in heavy scenes.

Connecting in Unity via OpenXR: enable XR_FB_foveation and XR_FB_foveation_vulkan. For Meta SDK — set OVRManager.eyeTrackingEnabled = true and combine OVRManager.fixedFoveatedRenderingLevel with OVRPlugin.useDynamicFixedFoveatedRendering. Dynamic FFR outperforms Fixed FFR by 20–30% in GPU savings while maintaining quality at the point of gaze.

Why Gaze Cursor Needs Filtering

Raw gaze data contains high-frequency noise of ±0.5–1°. Without filtering, the object under the gaze flickers between selected/unselected. Solution: exponential filter.

// Exponential filter for gaze cursor
smoothedGaze = Vector3.Slerp(smoothedGaze, rawGaze, smoothFactor * Time.deltaTime);
// smoothFactor ≈ 10–15

Additionally, dwell time activation: an object activates if the gaze is held longer than 0.5–1.5 seconds. A visual indicator — arc/ring around the object.

Permissions and Privacy

Eye Tracking requires special permissions in Meta Developer Hub. For publication in Meta Store, a separate policy review is needed: the app must not transmit raw eye data to a server without explicit user consent. In Unity, handle OVRPermissionsRequester and check OVRPlugin.eyeTrackingEnabled. For enterprise solutions, separate legal documentation is required.

Typical Calibration Issues
  • Misalignment due to incorrect headset fit
  • Floating accuracy after 30 minutes of use (requires recalibration)
  • Conflict between different SDKs (e.g., Tobii and OpenXR simultaneously)

What's Included in the Work

  • Requirement analysis and optimal SDK selection
  • Eye Tracking setup on the target headset
  • Gaze cursor implementation with filtering and dwell time
  • Dynamic Foveated Rendering integration (if supported)
  • Attention analytics collection (heatmaps, gaze duration)
  • API documentation and team training
  • Post-release support (1 month)

Process and Timeline

  1. Analysis: determine the platform, SDK, and required permissions (1–2 days).
  2. Design: choose filtering and interaction approach, prototype (2–3 days).
  3. Implementation: integrate SDK, set up FFR, gaze logic (4–8 days).
  4. Testing: verify accuracy, FPS measurements, usability (2–3 days).
  5. Deployment: build for the target platform, deliver sources and documentation.

Estimated timelines: basic integration (gaze cursor + selection) — 2–4 working days; full (Dynamic FFR + analytics) — 1–2 weeks. The cost depends on complexity and required functionality — contact us for a project assessment. The investment pays off through increased performance and reduced costs for adapting the application to different headsets.

Get a consultation for your VR project: we will analyze the requirements and propose the optimal solution considering your stack and budget. Our engineers have 5+ years of experience and Meta XR certification.