Skip to content

Forbidden Jorts

Latest

Choose a tag to compare

@bjornbytes bjornbytes released this 07 Jun 21:12
· 3 commits to dev since this release

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.