Releases
v0.18.0
Add
General
Add support for declaring objects as to-be-closed variables in Lua 5.4.
Filesystem
Add --watch
CLI flag, lovr.filechanged
event, and lovr.filesystem.watch/unwatch
.
Add File
object and lovr.filesystem.newFile
.
Add lovr.filesystem.getBundlePath
(for internal boot code).
Add lovr.filesystem.setSource
(for internal boot code).
Graphics
Add Pass:polygon
.
Add Shader:hasVariable
.
Add support for BMFont in Font
and Rasterizer
.
Add support for uniform
variables in shader code.
Add support for cubemap array textures.
Add support for transfer operations on texture views.
Add support for nesting texture views (creating a view of a view).
Add sn10x3
DataType
.
Add border
WrapMode
.
Add support for loading glTF models with 8 bit indices.
Add support for d24
texture format.
Add support for SampleID
, SampleMaskIn
, SampleMask
, and SamplePosition
in pixel shaders.
Add support for layout(scalar)
buffers and packedBuffers
graphics feature.
Add raw
flag to lovr.graphics.newShader
.
Add Texture:getLabel
, Shader:getLabel
, and Pass:getLabel
.
Add Model:resetBlendShapes
.
Headset
Add Layer
object, lovr.headset.newLayer
, and lovr.headset.get/setLayers
.
Add stylus
Device, nib
DeviceButton, and nib
DeviceAxis.
Add support for Logitech MX Ink input.
Add lovr.headset.get/setFoveation
.
Add t.headset.controllerskeleton
to control how controllers return hand tracking data.
Add controller
field to the table returned by lovr.headset.getSkeleton
.
Add t.headset.mask
.
Add back lovr.headset.isMounted
and the lovr.mount
callback.
Add lovr.headset.stop
, lovr.headset.isActive
, and t.headset.start
.
Add lovr.headset.getFeatures
.
Add t.headset.debug
to enable additional messages from the VR runtime.
Add --simulator
CLI flag to force use of simulator headset driver.
Add lovr.headset.getHandles
.
Math
Physics
Add variant of lovr.physics.newWorld
that takes a table of settings.
Add World:interpolate
.
Add World:get/setCallbacks
and Contact
object.
Add World:getColliderCount
.
Add World:getJointCount
and World:getJoints
.
Add World:shapecast
.
Add World:overlapShape
.
Add Collider:get/setGravityScale
.
Add Collider:is/setContinuous
.
Add Collider:get/setDegreesOfFreedom
.
Add Collider:applyLinearImpulse
and Collider:applyAngularImpulse
.
Add Collider:moveKinematic
.
Add Collider:getShape
.
Add Collider:is/setSensor
(replaces Shape:is/setSensor
).
Add Collider:get/setInertia
.
Add Collider:get/setCenterOfMass
.
Add Collider:get/setAutomaticMass
.
Add Collider:resetMassData
.
Add Collider:is/setEnabled
.
Add ConvexShape
.
Add WeldJoint
.
Add ConeJoint
.
Add Joint:getForce
and Joint:getTorque
.
Add Joint:get/setPriority
.
Add Joint:isDestroyed
.
Add DistanceJoint:get/setLimits
.
Add :get/setSpring
to DistanceJoint
, HingeJoint
, and SliderJoint
.
Add HingeJoint:get/setFriction
and SliderJoint:get/setFriction
.
Add SliderJoint:getAnchors
.
Add Shape:raycast
and Shape:containsPoint
.
Add Shape:get/setDensity
.
Add Shape:getMass/Volume/Inertia/CenterOfMass
.
Add Shape:get/setOffset
.
Add motor support to HingeJoint
and SliderJoint
.
Add support for creating a MeshShape
from a ModelData
.
System
Add lovr.system.isWindowVisible
and lovr.system.isWindowFocused
.
Add lovr.system.wasMousePressed
and lovr.system.wasMouseReleased
.
Add lovr.system.get/setClipboardText
.
Add lovr.system.openConsole
(for internal Lua code).
Add KeyCode
s for numpad keys.
Thread
Add table support to Channel:push
.
Add lovr.thread.newChannel
.
Add t.thread.workers
to configure number of worker threads.
Change
Change nogame screen to be bundled as a fused zip archive.
Change Mesh:setMaterial
to also take a Texture
.
Change shader syntax to no longer require set/binding numbers for buffer/texture variables.
Change Texture:getFormat
to also return whether the texture is linear or sRGB.
Change Texture:setPixels
to allow copying between textures with different formats.
Change Readback:getImage
and Texture:getPixels
to return sRGB images when the source Texture is sRGB.
Change lovr.graphics.newTexture
to use a layer count of 6 when type is cube
and only width/height is given.
Change lovr.graphics.newTexture
to default mipmap count to 1 when an Image is given with a non-blittable format.
Change lovr.graphics.newTexture
to error if mipmaps are requested and an Image is given with a non-blittable format.
Change TextureFeature
to merge sample
with filter
, render
with blend
, and blitsrc
/blitdst
into blit
.
Change headset simulator movement to slow down when holding the control key.
Change headset simulator to use t.headset.supersample
.
Change lovr.graphics.compileShader
to take/return multiple stages.
Change maximum number of physics tags from 16 to 31.
Change TerrainShape
to require square dimensions.
Change MeshShape
constructors to accept a MeshShape
to reuse data from.
Change MeshShape
constructors to take an optional scale to apply to the vertices.
Change Buffer:setData
to use more consistent rules to read data from tables.
Change World:queryBox/querySphere
to perform coarse AABB collision detection (use World:overlapShape
for an exact test).
Change World:queryBox/querySphere
to take an optional set of tags to include/exclude.
Change World:queryBox/querySphere
to return the first collider detected, when the callback is nil.
Change World:queryBox/querySphere
to return nil when a callback is given.
Change World:raycast
to take a set of tags to allow/ignore.
Change World:raycast
callback to be optional (if nil, the closest hit will be returned).
Change World:raycast
to also return the triangle that was hit on MeshShapes.
Change physics queries to report colliders in addition to shapes.
Change tostring
on objects to also include their pointers.
Change desktop
HeadsetDriver to be named simulator
.
Change --graphics-debug
CLI flag to be named --debug
.
Change --version
and lovr.getVersion
to also return the git commit hash.
Change Pass:setViewport/Scissor
to be per-draw state instead of per-pass.
Change Image:get/set/mapPixel
to support r16f
, rg16f
, and rgba16f
.
Change Image:getPixel
to return 1 for alpha when the format doesn't have an alpha component.
Change stack size of state
stack (used with Pass:push/pop
) from 4 to 8.
Change lovr.focus
and lovr.visible
to also get called for window events.
Change lovr.focus
and lovr.visible
to have an extra parameter for the display type.
Fix
Fix t.headset.submitdepth
to actually submit depth.
Fix depth write when depth testing is disabled.
Fix "morgue overflow" error when creating or destroying large amounts of textures at once.
Fix Texture:getType
when used with texture views.
Fix possible negative dt
in lovr.update when restarting with the simulator.
Fix issue where Collider
/Shape
/Joint
userdata wouldn't get garbage collected.
Fix OBJ triangulation for faces with more than 4 vertices.
Fix possible crash when using vectors in multiple threads.
Fix possible crash with Blob:getName
.
Fix issue when sampling from depth-stencil textures.
Fix bug when rendering meshes from Model:getMesh
.
Fix bug with Curve:slice
when curve has more than 4 points.
Fix bug with hand/*/pinch
and hand/*/poke
device poses.
Fix bug when loading glTF models that use the KHR_texture_transform
extension.
Deprecate
Deprecate Texture:getSampleCount
.
Deprecate World:get/setTightness
(use stabilization
option when creating World).
Deprecate World:get/setLinearDamping
(use Collider:get/setLinearDamping
).
Deprecate World:get/setAngularDamping
(use Collider:get/setAngularDamping
).
Deprecate World:is/setSleepingAllowed
(use allowSleep
option when creating World).
Deprecate World:get/setStepCount
(use positionSteps
/velocitySteps
option when creating World).
Deprecate Collider:is/setGravityIgnored
(use Collider:get/setGravityScale
).
Remove
Remove lovr.headset.getOriginType
(use lovr.headset.isSeated
).
Remove lovr.headset.getDisplayFrequency
(renamed to lovr.headset.getRefreshRate
).
Remove lovr.headset.getDisplayFrequencies
(renamed to lovr.headset.getRefreshRates
).
Remove lovr.headset.setDisplayFrequency
(renamed to lovr.headset.setRefreshRate
).
Remove lovr.graphics.getBuffer
(use lovr.graphics.newBuffer
).
Remove variant of lovr.graphics.newBuffer
that takes length first (format is first now).
Remove location
key for Buffer fields (use name
).
Remove Buffer:isTemporary
.
Remove Buffer:getPointer
(renamed to Buffer:mapData
).
Remove lovr.graphics.getPass
(use lovr.graphics.newPass
).
Remove Pass:getType
(passes support both render and compute now).
Remove Pass:getTarget
(renamed to Pass:getCanvas
).
Remove Pass:getSampleCount
(Pass:getCanvas
returns sample count).
Remove variant of Pass:send
that takes a binding number instead of a variable name.
Remove Texture:newView
(renamed to lovr.graphics.newTextureView
).
Remove Texture:isView
and Texture:getParent
.
Remove Shape:setPosition
, Shape:setOrientation
, and Shape:setPose
(use Shape:setOffset
).
Remove Shape:is/setSensor
(use Collider:is/setSensor
).
Remove World:overlaps/computeOverlaps/collide/getContacts
(use World:setCallbacks
).
Remove BallJoint:setAnchor
.
Remove DistanceJoint:setAnchors
.
Remove HingeJoint:setAnchor
.
Remove BallJoint:get/setResponseTime
and BallJoint:get/setTightness
.
Remove DistanceJoint:get/setResponseTime
and DistanceJoint:get/setTightness
(use :setSpring
).
Remove DistanceJoint:get/setDistance
(renamed to :get/setLimits
).
Remove HingeJoint:get/setUpper/LowerLimit
(use :get/setLimits
).
Remove SliderJoint:get/setUpper/LowerLimit
(use :get/setLimits
).
Remove Collider:getLocalCenter
(renamed to Collider:getCenterOfMass
).
Remove Shape:getMassData
(split into separate getters).
Remove shaderConstantSize
limit from lovr.graphics.getLimits
.
Remove Pass:getViewport
and Pass:getScissor
.
You can’t perform that action at this time.