Virtual Reality for Lua
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

A simple Lua framework for rapidly building VR experiences.

Build status Version

Site | Docs | Slack


  • Cross-Platform - Runs on Windows, Mac, Linux, and even on the web using WebAssembly and WebVR.
  • Cross-Device - Support for many HMDs including HTC Vive, Oculus Touch, and Windows MR headsets. There's also a keyboard/mouse VR simulator so you can prototype without hardware.
  • Beginner-friendly - Simple VR scenes can be created in just a few lines of Lua.
  • Fast - Writen in C99 and scripted with LuaJIT, includes optimized single-pass stereo rendering.
  • Asset Import - Supports 3D models (glTF, FBX, OBJ), skeletal animation, HDR textures, cubemaps, fonts, etc.
  • Spatialized Audio - Audio is automatically spatialized using HRTFs.
  • 3D Rigid Body Physics - Including 4 collider shapes and 4 joint types.
  • Compute Shaders - For high performance GPU tasks, like particles.
  • Multiplayer - Includes enet for multi-user VR experiences.
  • Umlauts - !!!

Getting Started

It's really easy to get started making things with LÖVR! Grab a copy of the executable from, then write a main.lua script and drag its parent folder onto the executable. Here are some example projects to try:

Hello World

function lovr.draw()'Hello World!', 0, 1.7, -3, .5)

Spinning Cube

function lovr.draw()'line', 0, 1.7, -1, .5, lovr.timer.getTime())

3D Models

function lovr.load()
  model ='teapot.fbx', 'teapot.png')

function lovr.draw()
  local x, y, z = 0, 0, 0
  model:draw(x, y, z)

You can also find lots of other WebVR examples on the docs page.



MIT, see LICENSE for details.