Skip to content

Latest commit

 

History

6,691 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LÖVR

A simple Lua framework for rapidly building 3D games and VR experiences.

Build Version Matrix Discord

Homepage | Documentation | FAQ

Features

  • Cross-Platform - Runs on Windows, macOS, Linux, and Android.
  • Cross-Device - Supports any headset that works with OpenXR, and has a keyboard/mouse VR simulator.
  • Beginner-friendly - Simple scenes can be created in just a few lines of Lua.
  • Fast - Written in C11 and scripted with LuaJIT, includes optimized single-pass stereo rendering.
  • Tiny - The whole framework is just a couple of megabytes, and it's easy to disable/remove modules.
  • Powerful GPU APIs - Compute shaders, ray tracing, indirect rendering, atomics, and more.
  • Asset Import - Supports glTF models, skeletal animation, compressed textures, cubemaps, fonts, etc.
  • 3D Rigid Body Physics - Includes JoltPhysics, with 7 collider shapes and 6 types of joints.
  • Spatialized Audio - Uses SteamAudio for audio spatialization, with HRTFs, audio meshes, and reverb.
  • Vector Library - Built-in 3D vectors, quaternions, and matrices.

Getting Started

It's really easy to get started making things with LÖVR. Grab a copy of the executable from https://lovr.org/downloads, then write a main.lua script and drag it onto the executable. Here are some example projects to try:

Hello World

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

Spinning Cube

function lovr.draw(pass)
  pass:cube(0, 1.7, -1, .5, lovr.timer.getTime())
end

Hand Tracking

function lovr.draw(pass)
  for _, hand in ipairs(lovr.headset.getHands()) do
    pass:sphere(vec3(lovr.headset.getPosition(hand)), .1)
  end
end

3D Models

function lovr.load()
  model = lovr.graphics.newModel('model.gltf')
end

function lovr.draw(pass)
  pass:draw(model, x, y, z)
end

More examples are on the docs page.

Building

You can build LÖVR from source using CMake. Here are the steps using the command line:

mkdir build
cd build
cmake ..
cmake --build .

See the Compiling Guide for more info.

Testing

Tests can be found in the test/lovr directory.

You can run all of LÖVR tests from the command line with the following:

./build/bin/lovr test

To run tests for a single module, pass the name of the module as an argument (e.g. this runs the tests for the data module):

./build/bin/lovr test data

Resources

  • Documentation: Guides, tutorials, examples, and API documentation.
  • FAQ: Frequently Asked Questions.
  • Matrix: The LÖVR community for discussion and support.
  • Nightly Builds: Nightly builds for Windows.
  • Compiling Guide: Information on compiling LÖVR from source.
  • Contributing: Guide for helping out with development 💜
  • LÖVE: LÖVR is heavily inspired by LÖVE, a 2D game framework.

License

MIT, see LICENSE for details.

About

Lua Virtual Reality Framework

Topics

Resources

Stars

2.6k stars

Watchers

53 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages