| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| lovr-v0.19.0.app.zip | 2026-06-07 | 8.5 MB | |
| lovr-v0.19.0.apk.zip | 2026-06-07 | 3.8 MB | |
| lovr-v0.19.0-x86_64.AppImage | 2026-06-07 | 4.8 MB | |
| lovr-v0.19.0-win64.zip | 2026-06-07 | 3.2 MB | |
| Forbidden Jorts source code.tar.gz | 2026-06-07 | 1.8 MB | |
| Forbidden Jorts source code.zip | 2026-06-07 | 1.9 MB | |
| README.md | 2026-06-07 | 10.2 kB | |
| Totals: 7 Items | 24.1 MB | 3 | |
Add
General
- Add
lovr.taskmodule andlovr.taskreadycallback. - Add support for compiling with Luau as the Lua implementation, instead of Lua/LuaJIT.
- Add support for passing Luau
vectorandquaterniontypes to functions. - Add
vectorandquaternionmodules.
Audio
- Add
AudioMeshandlovr.audio.newAudioMesh. - Add support for ambisonic source playback.
- Add
lovr.audio.setHRTFto set a custom HRTF. - Add
Source:get/setAbsorption. - Add
Source:get/setCone. - Add
Source:get/setFalloff. - Add
Source:get/setOcclusion. - Add
Source:get/setReverb. - Add
Source:get/setSpatialization. - Add
lovr.audio.updateto atomically commit changes to audio sources. - Add
lovr.audio.getStream. - Add
t.audio.debugandt.audio.reverbsettings tolovr.conf.
Data
- Add
AudioStreamandlovr.data.newAudioStream. - Add
Blob:setI8/setU8/setI16/setU16/setI32/setU32/setF32/setF64. - Add
lovr.data.newBlobView. - Add
Model(Data):getNodeChild/getNodeSibling. - Add
Model(Data):getNodeMesh(replaces:getNodeMeshes). - Add
ModelData:getMeshBlendShapeCount/getMeshBlendShapeName/getBlendVertex. - Add
ModelData:getMeshPartCount. - Add
ModelData:getMeshDrawRange. - Add support for importing two sets of UVs in
ModelData. - Add
Sound:get/setFrame.
Graphics
- Add
Raytracer,lovr.graphics.newRaytracer, andraytracingGraphicsFeature. - Add
raytraceroption tolovr.graphics.newMeshandlovr.graphics.newModel. - Add
Mesh:buildRaytracerandModel:buildRaytracer. - Add
VertexUV2builtin vertex attribute andUV2shader variable, for lightmapping. - Add
t.graphics.hdrandlovr.graphics.isHDR. - Add
pqToLinear,linearToPQ,sRGBToRec2020, andrec2020ToSRGBshader helpers. - Add
Pass:getViewRay. - Add
Pass:setBlendState. - Add
Pass:drawPartto draw a single part of aModel. - Add
Model:meshesto iterate over model nodes with meshes. - Add
Model:is/setNodeVisible. - Add
lovr.graphics.getStatsfor GPU memory allocation statistics. - Add support for creating 3D texture views.
- Add
Mesh:get/setBaseVertex. - Add support for custom array strides in buffer formats.
- Add
bgra8TextureFormat. - Add
Buffer:newBlob.
Headset
- Add
lovr.modelschangedevent. - Add
lovr.headset.getModelKeys. - Add support for "foveated quad" and "mono" display configurations.
- Add
Layer:get/setOriginto lock Layer poses to a Device. - Add
dpup,dpdown,dpleft,dprightDeviceButton. - Add
bumperDeviceButton. - Add
bodyDevicefor full-body tracking inlovr.headset.getSkeleton. - Add
lovr.simulatecallback to customize the headset simulator. - Add support for Touch Pro controllers.
- Add
thumbrestHeadsetAxis, for pressure-sensitive thumbrests. - Add
t.headset.extensionsto enable extra OpenXR extensions. - Add
lovr.headset.connectandt.headset.connect. - Add
lovr.headset.setPosition/Orientation/Poseandlovr.headset.setButton.
Math
- Add
Curve:getLengthandCurve:step. - Add
Mat4:setPosition/Orientation/Scale/Pose.
Physics
- Add support for non-uniform scale in
ConvexShapeandMeshShape.
System
- Add
t.window.centered. - Add
lovr.system.is/setWindowFullscreen. - Add
lovr.system.get/setMouseMode.
Thread
- Add
lovr.thread.call. - Add
lovr.thread.getWorkerCount.
Change
- Change model loading to use multiple threads to load images.
- Change
Pass:setProjectionto accept aProjectionType. - Change
lovr.graphics.newModelto no longer retain itsModelData, allowing its memory to be freed. - Change functions to accept tables for vector/quaternion arguments instead of userdata vector types.
- Change
requireto have better errors when files/plugins aren't found. - Change default require path to also search for
.luaufiles, when using Luau. - Change
lovr.headset.newModelto also take a lightuserdata. - Change
lovr.headset.newModelto be async. - Change
lovr.headset.isTrackedto also take aModel. - Change
lovr.headset.getPosition/Orientation/Direction/Poseto also take aModel. - Change
TerrainShapeto supportnilheights (treated as holes). - Change
Curve:renderto no longer always return 2 points for curves with 2 control points. - Change
ModelData:getMeshVertexto return data in a consistent vertex format. - Change
ModelData:getMeshDrawMode/getMeshMaterialto take an optional part index. - Change
ModelData:getWidth/Height/Depth/Dimensions/BoundingBoxto take an optional mesh/part index. - Change
lovr.graphics.newBufferto also accept a Luauvectorfor the initial buffer data. - Change
Pass:transformto also take a pose (7 numbers for the position and orientation). - Change
Mat4to be a regular object instead of a vector type. - Change
lovr.graphics.submitto have better performance when called multiple times per frame. - Change
Pass:textand Font methods to also take nested tables of multicolor strings. - Change
lovr.audio.setDevicesink parameter to be abooleanor anAudioStream. - Change
lovr.audio.start/stopto return error messages on failure. - Change
lovr.audio.newSourceto create non-spatial sources by default. - Change
lovr.audio.newSourceto also accept anAudioStream. - Change audio device to start when playing a Source for the first time, instead of immediately.
- Change
lovr.data.newSoundto take a channel count instead of a channel layout. - Change
lovr.data.newSoundandlovr.audio.newSourceto be async. - Change
lovr.data.newImageandlovr.graphics.newTextureto be async. - Change
lovr.data.newModelDataandlovr.graphics.newModelto be async. - Change
lovr.graphics.compileShaderandlovr.graphics.newShaderto be async. - Change
Buffer:getDataandTexture:getPixelsto be async. - Change
lovr.timer.sleepto be async. - Change
Mesh:getVerticesandMesh:getIndicesto returnnilfor meshes withgpustorage. - Change
lovr.system.pollEventsto take an optional timeout.
Fix
- Fix
ConvexShapescale not working when created from a table of points. - Fix
ConvexShape:getPointto apply the shape's center of mass and scale. - Fix memory leak with
ConvexShapeandMeshShape. - Fix crash when creating invalid
ConvexShape/MeshShape/TerrainShape. - Fix issue where OBJ models loaded without materials would have inverted UVs.
- Fix issue where cube/array textures would only regenerate 1 mipmap.
- Fix crash in
Pass:sendwhen using tables to write nested structs to a uniform buffer. - Fix crash when drawing text on a pass without a canvas.
- Fix crash when using a 3D texture as a canvas texture.
- Fix validation message when clearing a 3D texture.
- Fix issue where normalized buffer fields were rounded incorrectly.
- Fix possible crash related to
Thread:wait. - Fix possible crash in Model animation.
- Fix
Collider:setDegreesOfFreedomto preserve mass/inertia. - Fix missing error in
CapsuleShape:setRadius/LengthandCylinderShape:setRadius/Length. - Fix issue where buffer memory wasn't recycled effectively.
- Fix thread stack traces to use the correct filename.
- Fix
t.headset.seated. - Fix multiple issues with GPU memory allocation.
- Fix
dtto use delta time fromlovr.timerwhen headset is idle. - Fix
lovr.filesystem.newFileto search all mounted archives properly. - Fix
Texture:setPixelswhen copying from anImagewith an offset. - Fix issue with
Shape:containsPoint. - Fix
Collider:moveKinematicwhen called on a kinematic collider. - Fix fixed foveated rendering on Quest 3.
- Fix
lovr.math.randomNormalreturning incorrect results after reseeding.
Deprecate
- Deprecate variant of
lovr.headset.newModelthat takes aDevice(use a model key). - Deprecate
Model(Data):getNodeChildren(use:getNodeChildand:getNodeSibling). - Deprecate base vertex argument in
Mesh:get/setDrawRange(useMesh:get/setBaseVertex). - Deprecate
Model:getVertexBuffer/getIndexBuffer/getMesh(create your own fromModelData). - Deprecate
lovr.math.drain(it does nothing now, since temporary vectors were removed). - Deprecate
lovr.math.vec2/vec3/vec4/quat/newVec2/newVec3/newVec4/newQuat(usevectorandquaternion). - Deprecate
lovr.math.mat4(uselovr.math.newMat4). - Deprecate
t.math.globals(usevectorandquaternion). - Deprecate
Layer:getPass(use your ownPass). - Deprecate ability to use zero for window dimensions in
lovr.conf(uset.window.fullscreen). - Deprecate variant of
Pass:setProjectionthat takes 4 numeric FOV angles (useProjectionType).
Remove
- Remove
animatedflag inlovr.headset.newModel(all models are animated now). - Remove support for creating
ConvexShapeandMeshShapefrom aModel(useModelData). - Remove support for passing a
Modeltolovr.audio.setGeometry(useModelData). - Remove
ModelData:getBlobCountandModelData:getBlob. - Remove
ModelData:getNodeMeshes(useModelData:getNodeMesh). - Remove
ModelData:getMeshVertexFormat/getMeshIndexFormat. - Remove
ModelData:getTriangleCount(useModelData:getMeshVertexCount/getMeshIndexCount). - Remove
ModelData:getTriangles(useModelData:getMeshVertex/getMeshIndex). - Remove
Model(Data):getBoundingSphere. - Remove
Model:getVertexCount(useModelData:getMeshVertexCount). - Remove
Model:getData(create and keep aModelDataaround as needed). - Remove userdata vector types (use tables, and the
vectorandquaternionmodules). - Remove
lovr.headset.getHandles(use FFI). - Remove
lovr.audio.getSpatializer(SteamAudio is always active). - Remove
lovr.audio.setGeometry(useAudioMesh). - Remove
lovr.audio.get/setAbsorption(useSource:get/setAbsorption). - Remove
Source:get/setDirectivity(useSource:get/setCone). - Remove
Source:is/setEffectEnabled(use new effect getters/setters). - Remove
Sound:getCapacityandSound:isStream(useAudioStream). - Remove
lovr.headset.getBoundsGeometry. - Remove
Buffer:mapData.