Skip to content

Dream Eater

Latest
Compare
Choose a tag to compare
@bjornbytes bjornbytes released this 15 Feb 02:51
· 5 commits to dev since this release

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

  • Add Quat:get/setEuler.

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 KeyCodes 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.