LÖVR – An open source framework for rapidly building immersive 3D experience
s
ð¶
Designed for VR
Out of the box you get fast stereo rendering, VR controllers, hand tracking, haptics, spatial audio, 3D physics, PBR materials, SDF fonts, multiplayer, and more.
ð
Super Lightweight
The entire engine is 1MB and runs on LuaJIT, the fastest JIT compiler round these parts. Projects are just folders with scripts and assets in them, organized however you want.
ð¤
Beginner Friendly
You can write 3 lines of Lua and drag and drop a folder onto an exe to get a working VR scene. Lua is known for its simplicity, making it great for learning.
People are using LÃVR for game jams, commercial projects, tools, education, and VR/3D/2D prototyping. Some daring souls have even embedded LÃVR inside of Unity, ported the engine to other languages, and gotten it running on tiny microcontrollers. With the power of LÃVR, you can turn virtually any idea into reality.
Works With
ð¹
HTC Vive
Valve Index
Oculus Quest
Oculus Quest 2
Oculus Rift (S)
Windows MR
Pico Neo 2
Leap Motion
Keyboard/Mouse
ð¥
Windows
macOS
Linux
Android
Web
ð¦
OpenVR
OpenXR
LibOVR
VrApi
Pico SDK
WebXR
Starter Projects
Hello Virtual World
function lovr.draw()
lovr.graphics.print('hello', 0, 1.7, -1, .5)
end
Spinning Cube
function lovr.draw()
local angle = lovr.timer.getTime()
lovr.graphics.cube('fill', 0, 1.7, -1, .5, angle)
end
Hand Tracking
function lovr.draw()
for i, hand in ipairs(lovr.headset.getHands()) do
local x, y, z = lovr.headset.getPosition(hand)
lovr.graphics.sphere(x, y, z, .1)
end
end
Audio
function lovr.load()
song = lovr.audio.newSource('darude.ogg')
song:play()
end
Skybox
function lovr.load()
sky = lovr.graphics.newTexture('sky.hdr')
end
function lovr.draw()
lovr.graphics.skybox(sky)
end
3D Model
function lovr.load()
model = lovr.graphics.newModel('monkey.gltf')
end
function lovr.draw()
model:draw(0, 2, -3, 2, lovr.timer.getTime() * .2)
end
Want to see more examples or learn how to get started?
Check out the Getting Started tutorial.
[ comments ]
ð¶
Designed for VR
Out of the box you get fast stereo rendering, VR controllers, hand tracking, haptics, spatial audio, 3D physics, PBR materials, SDF fonts, multiplayer, and more.
ð
Super Lightweight
The entire engine is 1MB and runs on LuaJIT, the fastest JIT compiler round these parts. Projects are just folders with scripts and assets in them, organized however you want.
ð¤
Beginner Friendly
You can write 3 lines of Lua and drag and drop a folder onto an exe to get a working VR scene. Lua is known for its simplicity, making it great for learning.
People are using LÃVR for game jams, commercial projects, tools, education, and VR/3D/2D prototyping. Some daring souls have even embedded LÃVR inside of Unity, ported the engine to other languages, and gotten it running on tiny microcontrollers. With the power of LÃVR, you can turn virtually any idea into reality.
Works With
ð¹
HTC Vive
Valve Index
Oculus Quest
Oculus Quest 2
Oculus Rift (S)
Windows MR
Pico Neo 2
Leap Motion
Keyboard/Mouse
ð¥
Windows
macOS
Linux
Android
Web
ð¦
OpenVR
OpenXR
LibOVR
VrApi
Pico SDK
WebXR
Starter Projects
Hello Virtual World
function lovr.draw()
lovr.graphics.print('hello', 0, 1.7, -1, .5)
end
Spinning Cube
function lovr.draw()
local angle = lovr.timer.getTime()
lovr.graphics.cube('fill', 0, 1.7, -1, .5, angle)
end
Hand Tracking
function lovr.draw()
for i, hand in ipairs(lovr.headset.getHands()) do
local x, y, z = lovr.headset.getPosition(hand)
lovr.graphics.sphere(x, y, z, .1)
end
end
Audio
function lovr.load()
song = lovr.audio.newSource('darude.ogg')
song:play()
end
Skybox
function lovr.load()
sky = lovr.graphics.newTexture('sky.hdr')
end
function lovr.draw()
lovr.graphics.skybox(sky)
end
3D Model
function lovr.load()
model = lovr.graphics.newModel('monkey.gltf')
end
function lovr.draw()
model:draw(0, 2, -3, 2, lovr.timer.getTime() * .2)
end
Want to see more examples or learn how to get started?
Check out the Getting Started tutorial.
[ comments ]