Releases
v0.19.0
Compare
Sorry, something went wrong.
No results found
Add
General
Add lovr.task module and lovr.taskready callback.
Add support for compiling with Luau as the Lua implementation, instead of Lua/LuaJIT.
Add support for passing Luau vector and quaternion types to functions.
Add vector and quaternion modules.
Audio
Add AudioMesh and lovr.audio.newAudioMesh.
Add support for ambisonic source playback.
Add lovr.audio.setHRTF to 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.update to atomically commit changes to audio sources.
Add lovr.audio.getStream.
Add t.audio.debug and t.audio.reverb settings to lovr.conf.
Data
Add AudioStream and lovr.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, and raytracing GraphicsFeature.
Add raytracer option to lovr.graphics.newMesh and lovr.graphics.newModel.
Add Mesh:buildRaytracer and Model:buildRaytracer.
Add VertexUV2 builtin vertex attribute and UV2 shader variable, for lightmapping.
Add t.graphics.hdr and lovr.graphics.isHDR.
Add pqToLinear, linearToPQ, sRGBToRec2020, and rec2020ToSRGB shader helpers.
Add Pass:getViewRay.
Add Pass:setBlendState.
Add Pass:drawPart to draw a single part of a Model.
Add Model:meshes to iterate over model nodes with meshes.
Add Model:is/setNodeVisible.
Add lovr.graphics.getStats for 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 bgra8 TextureFormat.
Add Buffer:newBlob.
Headset
Add lovr.modelschanged event.
Add lovr.headset.getModelKeys.
Add support for "foveated quad" and "mono" display configurations.
Add Layer:get/setOrigin to lock Layer poses to a Device.
Add dpup, dpdown, dpleft, dpright DeviceButton.
Add bumper DeviceButton.
Add body Device for full-body tracking in lovr.headset.getSkeleton.
Add lovr.simulate callback to customize the headset simulator.
Add support for Touch Pro controllers.
Add thumbrest HeadsetAxis, for pressure-sensitive thumbrests.
Add t.headset.extensions to enable extra OpenXR extensions.
Add lovr.headset.connect and t.headset.connect.
Add lovr.headset.setPosition/Orientation/Pose and lovr.headset.setButton.
Math
Add Curve:getLength and Curve:step.
Add Mat4:setPosition/Orientation/Scale/Pose.
Physics
Add support for non-uniform scale in ConvexShape and MeshShape.
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:setProjection to accept a ProjectionType.
Change lovr.graphics.newModel to no longer retain its ModelData, allowing its memory to be freed.
Change functions to accept tables for vector/quaternion arguments instead of userdata vector types.
Change require to have better errors when files/plugins aren't found.
Change default require path to also search for .luau files, when using Luau.
Change lovr.headset.newModel to also take a lightuserdata.
Change lovr.headset.newModel to be async.
Change lovr.headset.isTracked to also take a Model.
Change lovr.headset.getPosition/Orientation/Direction/Pose to also take a Model.
Change TerrainShape to support nil heights (treated as holes).
Change Curve:render to no longer always return 2 points for curves with 2 control points.
Change ModelData:getMeshVertex to return data in a consistent vertex format.
Change ModelData:getMeshDrawMode/getMeshMaterial to take an optional part index.
Change ModelData:getWidth/Height/Depth/Dimensions/BoundingBox to take an optional mesh/part index.
Change lovr.graphics.newBuffer to also accept a Luau vector for the initial buffer data.
Change Pass:transform to also take a pose (7 numbers for the position and orientation).
Change Mat4 to be a regular object instead of a vector type.
Change lovr.graphics.submit to have better performance when called multiple times per frame.
Change Pass:text and Font methods to also take nested tables of multicolor strings.
Change lovr.audio.setDevice sink parameter to be a boolean or an AudioStream.
Change lovr.audio.start/stop to return error messages on failure.
Change lovr.audio.newSource to create non-spatial sources by default.
Change lovr.audio.newSource to also accept an AudioStream.
Change audio device to start when playing a Source for the first time, instead of immediately.
Change lovr.data.newSound to take a channel count instead of a channel layout.
Change lovr.data.newSound and lovr.audio.newSource to be async.
Change lovr.data.newImage and lovr.graphics.newTexture to be async.
Change lovr.data.newModelData and lovr.graphics.newModel to be async.
Change lovr.graphics.compileShader and lovr.graphics.newShader to be async.
Change Buffer:getData and Texture:getPixels to be async.
Change lovr.timer.sleep to be async.
Change Mesh:getVertices and Mesh:getIndices to return nil for meshes with gpu storage.
Change lovr.system.pollEvents to take an optional timeout.
Fix
Fix ConvexShape scale not working when created from a table of points.
Fix ConvexShape:getPoint to apply the shape's center of mass and scale.
Fix memory leak with ConvexShape and MeshShape.
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:send when 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:setDegreesOfFreedom to preserve mass/inertia.
Fix missing error in CapsuleShape:setRadius/Length and CylinderShape: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 dt to use delta time from lovr.timer when headset is idle.
Fix lovr.filesystem.newFile to search all mounted archives properly.
Fix Texture:setPixels when copying from an Image with an offset.
Fix issue with Shape:containsPoint.
Fix Collider:moveKinematic when called on a kinematic collider.
Fix fixed foveated rendering on Quest 3.
Fix lovr.math.randomNormal returning incorrect results after reseeding.
Deprecate
Deprecate variant of lovr.headset.newModel that takes a Device (use a model key).
Deprecate Model(Data):getNodeChildren (use :getNodeChild and :getNodeSibling).
Deprecate base vertex argument in Mesh:get/setDrawRange (use Mesh:get/setBaseVertex).
Deprecate Model:getVertexBuffer/getIndexBuffer/getMesh (create your own from ModelData).
Deprecate lovr.math.drain (it does nothing now, since temporary vectors were removed).
Deprecate lovr.math.vec2/vec3/vec4/quat/newVec2/newVec3/newVec4/newQuat (use vector and quaternion).
Deprecate lovr.math.mat4 (use lovr.math.newMat4).
Deprecate t.math.globals (use vector and quaternion).
Deprecate Layer:getPass (use your own Pass).
Deprecate ability to use zero for window dimensions in lovr.conf (use t.window.fullscreen).
Deprecate variant of Pass:setProjection that takes 4 numeric FOV angles (use ProjectionType).
Remove
Remove animated flag in lovr.headset.newModel (all models are animated now).
Remove support for creating ConvexShape and MeshShape from a Model (use ModelData).
Remove support for passing a Model to lovr.audio.setGeometry (use ModelData).
Remove ModelData:getBlobCount and ModelData:getBlob.
Remove ModelData:getNodeMeshes (use ModelData:getNodeMesh).
Remove ModelData:getMeshVertexFormat/getMeshIndexFormat.
Remove ModelData:getTriangleCount (use ModelData:getMeshVertexCount/getMeshIndexCount).
Remove ModelData:getTriangles (use ModelData:getMeshVertex/getMeshIndex).
Remove Model(Data):getBoundingSphere.
Remove Model:getVertexCount (use ModelData:getMeshVertexCount).
Remove Model:getData (create and keep a ModelData around as needed).
Remove userdata vector types (use tables, and the vector and quaternion modules).
Remove lovr.headset.getHandles (use FFI).
Remove lovr.audio.getSpatializer (SteamAudio is always active).
Remove lovr.audio.setGeometry (use AudioMesh).
Remove lovr.audio.get/setAbsorption (use Source:get/setAbsorption).
Remove Source:get/setDirectivity (use Source:get/setCone).
Remove Source:is/setEffectEnabled (use new effect getters/setters).
Remove Sound:getCapacity and Sound:isStream (use AudioStream).
Remove lovr.headset.getBoundsGeometry.
Remove Buffer:mapData.
You can’t perform that action at this time.