XR PLATFORM

Complete XR Development Platform

Hand tracking, eye tracking, haptics, mixed reality, and spatial anchors. Built on OpenXR 1.1 for every major headset.

Meta Quest 3 Apple Vision Pro PSVR 2 Pico 4 Windows Mixed Reality
HANDS

Hand Tracking

Full 26-joint skeleton tracking per hand with sub-millimeter precision. Build natural interactions without controllers.

  • 26-joint skeleton with finger curl and splay data
  • Gesture recognition: pinch, grab, point, thumbs-up, and custom
  • Pinch interactions with distance and strength values
  • Custom gesture definition via joint angle thresholds
  • Hand mesh visualization with real-time occlusion
Key benefit: Controller-free interaction that feels natural. Users interact with your app using their real hands.
// Get hand joint positions raku_xr_hand_get_joint(hand, RAKU_HAND_INDEX_TIP, &pos, &rot); // Detect pinch gesture float strength = raku_xr_hand_pinch_strength(hand); if (strength > 0.8f) { raku_xr_hand_get_pinch_point(hand, &point); grab_object_at(point); } // Register custom gesture raku_xr_gesture_define("fist", joints, angles, 26); raku_xr_gesture_on_recognized("fist", on_fist_cb); // Enable hand mesh rendering raku_xr_hand_mesh_set_visible(hand, true); raku_xr_hand_mesh_set_material(hand, ghost_mat);
EYES

Eye Tracking

Gaze-driven interaction with precision targeting, dwell activation, and analytics. Optimize rendering with foveated data.

  • Gaze-based interaction: look at UI elements to select
  • Dwell activation with configurable timer and visual feedback
  • Heatmap analytics for UX research and level design
  • Foveated rendering optimization via gaze direction
  • Combined eye + hand multimodal input
Key benefit: Faster, more intuitive UI navigation. Foveated rendering gives you up to 3x GPU headroom.
// Get gaze ray in world space raku_xr_eye_get_gaze_ray(&origin, &direction); // Dwell-based activation raku_xr_eye_dwell_set_threshold(0.8f); // seconds raku_xr_eye_dwell_on_activate(button_id, on_click); // Record heatmap data raku_xr_eye_heatmap_start("level_03"); // ... gameplay ... raku_xr_eye_heatmap_export("heatmap.png"); // Enable foveated rendering raku_xr_foveation_set_mode(RAKU_FOVEATE_DYNAMIC); raku_xr_foveation_set_strength(0.7f);
HAPTICS

Haptics

Rich tactile feedback across controllers and hands. From simple vibrations to texture simulation and adaptive triggers.

  • Controller vibration with amplitude, frequency, and duration
  • Hand haptics for controller-free tactile feedback
  • Adaptive triggers with resistance curves (PSVR 2)
  • Texture simulation via frequency modulation patterns
  • Preset patterns: click, buzz, heartbeat, explosion, rain
Key benefit: Immersion through touch. Players feel surfaces, impacts, and environmental cues without looking.
// Simple controller vibration raku_xr_haptic_pulse(hand, 0.8f, 200.0f, 0.1f); // amplitude freq(Hz) duration(s) // Play preset pattern raku_xr_haptic_play_preset(hand, RAKU_HAPTIC_EXPLOSION); // Adaptive trigger resistance (PSVR 2) raku_xr_haptic_trigger_set_resistance( controller, 0.3f, 0.9f // start, end position ); // Texture simulation raku_xr_haptic_texture_set(hand, "rough_stone"); raku_xr_haptic_texture_intensity(hand, 0.6f);
MR

Mixed Reality

Blend virtual content with the real world. Passthrough, scene understanding, plane detection, and portal cutouts.

  • Passthrough modes: full, selective, and blended alpha
  • Scene understanding with semantic labeling (floor, wall, table)
  • Plane detection for horizontal and vertical surfaces
  • Room scanning and 3D mesh reconstruction
  • Cutout portals: windows into virtual worlds on real walls
Key benefit: Games that live in your room. Place virtual objects on real tables, open portals on real walls.
// Enable passthrough raku_xr_passthrough_set_mode(RAKU_PT_BLENDED); raku_xr_passthrough_set_opacity(0.85f); // Detect planes int count = raku_xr_scene_get_planes(planes, 64); for (int i = 0; i < count; i++) { if (planes[i].label == RAKU_PLANE_TABLE) spawn_chess_board(planes[i].transform); } // Create portal cutout on a wall raku_xr_portal_create(wall_plane, 1.5f, 2.0f); raku_xr_portal_set_scene(portal, fantasy_scene); // Full room scan raku_xr_scene_scan_room(on_scan_complete);
ANCHORS

Spatial Anchors

Persistent world-locked content. Place objects that stay where you put them, across sessions and across users.

  • Local persistence: anchors survive app restarts
  • Cloud anchors with cross-device sync
  • Shared multi-user sessions with anchor resolution
  • Anchor management: create, update, delete, enumerate
  • Automatic relocalization on space re-entry
Key benefit: Persistent mixed reality. A chess game on your coffee table is still there tomorrow.
// Create a spatial anchor RakuAnchor anchor = raku_xr_anchor_create(position, rotation); raku_xr_anchor_persist(anchor); // survives restart // Share anchor to cloud for multi-user raku_xr_anchor_share(anchor, "session_42"); // Resolve shared anchor on another device raku_xr_anchor_resolve("session_42", on_resolved); // Enumerate saved anchors int n = raku_xr_anchor_get_all(anchors, 128); for (int i = 0; i < n; i++) restore_object(anchors[i]); // Delete an anchor raku_xr_anchor_destroy(anchor);

One API. Every Headset.

Built on OpenXR 1.1, Raku abstracts platform differences so your XR code runs everywhere. Write once, deploy to every major headset.

Meta Quest 2 / 3 / Pro Apple Vision Pro PlayStation VR 2 Pico 4 / Neo Windows Mixed Reality Valve Index HTC Vive XR Elite

Automatic Capability Detection

The runtime queries device capabilities at startup. Hand tracking, eye tracking, and passthrough gracefully degrade on unsupported hardware.

Unified Input Abstraction

One input system handles controllers, hands, eyes, and voice across every platform. No platform-specific code paths needed.

Performance Tuning per Device

Automatic foveated rendering, resolution scaling, and refresh rate selection tuned for each headset's capabilities.

Explore the SDK Read the Docs