Skip to content

Tritium Gourmet

Compare
Choose a tag to compare
@bjornbytes bjornbytes released this 15 Oct 03:07
· 900 commits to stable since this release

Add

General

  • Add enet plugin.
  • Add http plugin.
  • Add utf8 module.
  • Add :type method to all objects and vectors.
  • Add --graphics-debug command line option, which sets t.graphics.debug to true.

Audio

  • Add lovr.audio.getDevice.

Data

  • Add Image:mapPixel.
  • Add a variant of Blob:getString that takes a byte range.
  • Add Blob:getI8/getU8/getI16/getU16/getI32/getU32/getF32/getF64.

Filesystem

  • Add argument to lovr.filesystem.load to restrict chunks to text/binary.

Graphics

  • Add Pass:roundrect.
  • Add variant of Pass:cone that takes two vec3 endpoints.
  • Add variant of Pass:draw that takes a Texture.
  • Add Pass:setViewCull to enable frustum culling.
  • Add Model:getBlendShapeWeight, and Model:setBlendShapeWeight.
  • Add Model(Data):getBlendShapeCount, Model(Data):getBlendShapeName.
  • Add support for animated blend shape weights in Model animations.
  • Add support for arrays, nested structs, and field names to Buffer formats.
  • Add Shader:getBufferFormat.
  • Add back Mesh object (sorry!).
  • Add Model:clone.
  • Add materials flag to lovr.graphics.newModel.
  • Add lovr.graphics.isInitialized (mostly internal).
  • Add support for using depth textures in multisampled render passes.
  • Add depthResolve feature to lovr.graphics.getFeatures.
  • Add a variant of Texture:newView that creates a 2D slice of a layer/mipmap of a texture.
  • Add a variant of Pass:send that takes tables for uniform buffers.
  • Add Buffer:getData and Buffer:newReadback.
  • Add Texture:getPixels/setPixels/clear/newReadback/generateMipmaps.
  • Add support for stepping through shaders in e.g. RenderDoc when t.graphics.debug is set.
  • Add lovr.graphics.is/setTimingEnabled to record GPU durations for each Pass object.
  • Add lovr.graphics.newPass.
  • Add Pass:setCanvas and Pass:setClear.
  • Add Pass:getStats.
  • Add Pass:reset.
  • Add Pass:getScissor and Pass:getViewport.
  • Add Pass:barrier.
  • Add Pass:beginTally/finishTally and Pass:get/setTallyBuffer.
  • Add support for #include in shader code.

Headset

  • Add lovr.headset.getPassthrough/setPassthrough/getPassthroughModes.
  • Add support for more headsets in Android APKs (Quest, Pico, Vive Focus all work).
  • Add support for controller input on Pico Neo 3 and Pico Neo 4 devices.
  • Add support for controller input on Magic Leap 2.
  • Add hand/*/pinch, hand/*/poke, and hand/*/grip Devices.
  • Add support for using lovr.headset when lovr.graphics is disabled, on supported runtimes.
  • Add support for elbow/left and elbow/right poses on Ultraleap hand tracking.
  • Add lovr.headset.getDirection.
  • Add lovr.headset.isVisible and lovr.visible callback.
  • Add lovr.recenter callback.
  • Add floor Device.
  • Add t.headset.seated and lovr.headset.isSeated.
  • Add lovr.headset.stopVibration.
  • Add radius fields to joint tables returned by lovr.headset.getSkeleton.
  • Add support for "sprinting" in the headset simulator using the shift key.

Math

  • Add capitalized globals for creating permanent vectors (Vec2, Vec3, Vec4, Quat, Mat4).
  • Add Vec3:transform, Vec4:transform, and Vec3:rotate.
  • Add vector constants (vec3.up, vec2.one, quat.identity, etc.).
  • Add Mat4:getTranslation/getRotation/getScale/getPose.
  • Add variant of Vec3:set that takes a Quat.
  • Add Mat4:reflect.

Physics

  • Add TerrainShape.
  • Add World:queryBox and World:querySphere.
  • Add World:getTags.
  • Add Shape:get/setPose.
  • Add missing lovr.physics.newMeshShape function.
  • Add Collider:isDestroyed.

System

  • Add lovr.system.wasKeyPressed/wasKeyReleased.
  • Add lovr.system.getMouseX, lovr.system.getMouseY, and lovr.system.getMousePosition.
  • Add lovr.system.isMouseDown.
  • Add lovr.mousepressed, lovr.mousereleased, lovr.mousemoved, and lovr.wheelmoved callbacks.
  • Add lovr.system.has/setKeyRepeat.

Thread

  • Add support for vectors and lightuserdata with Channel:push and Channel:pop.

Change

  • Change lovr.graphics.submit to no longer invalidate Pass objects.
  • Change vector constructors to be callable metatables (allows adding custom methods).
  • Change max size of vector pool to hold 16 million numbers instead of 64 thousand.
  • Change Pass:setBlendMode/Pass:setColorWrite to take an optional attachment index.
  • Change OpenXR driver to throttle update loop when headset session is idle.
  • Change lovr.graphics.newModel to work when the asset references paths starting with ./.
  • Change lovr.graphics.newModel to error when the asset references paths starting with /.
  • Change lovr.graphics.newBuffer to take format first instead of length/data.
  • Change Pass:setStencilWrite to only set the "stencil pass" action when given a single action, instead of all 3.
  • Change lovr.graphics to show a message box on Windows when Vulkan isn't supported.
  • Change plugin loader to call JNI_OnLoad on Android so plugins can use JNI.
  • Change t.headset.overlay to also support numeric values to control overlay sort order.
  • Change World:isCollisionEnabledBetween to take nils, which act as wildcard tags.
  • Change Mat4:__tostring to print matrix components.
  • Change World:raycast to prevent subsequent checks when the callback returns false.
  • Change lovr.system.isKeyDown to take multiple keys.
  • Change lovr.headset.isDown/isTouched to return nil instead of nothing.
  • Change lovr.headset.getTime to always start at 0 to avoid precision issues.
  • Change Pass viewport and scissor to apply to all draws in the Pass, instead of per-draw.
  • Change nogame/error screen to use a transparent background on AR/passthrough headsets.
  • Change VR simulator to use projected mouse position for hand pose (scroll controls distance).
  • Change lovr.headset.getDriver to also return the OpenXR runtime name.
  • Change pitchable flag in lovr.audio.newSource to default to true.
  • Change Buffer:setData, Buffer:clear, and Buffer:getPointer to work on permanent Buffers.
  • Change lovr.timer.sleep to have higher precision on Windows.
  • Change lovr.headset.animate to no longer require a Device argument (current variant is deprecated).

Fix

  • Fix lovr.physics.newBoxShape always creating a cube.
  • Fix several issues related to VRAM leaks when creating Textures.
  • Fix issue on Linux where the Vulkan library wouldn't get loaded properly.
  • Fix macOS to not require the Vulkan SDK to be installed.
  • Fix recentering on Quest.
  • Fix headset mirror window to properly render in mono when a VR headset is connected.
  • Fix window size not updating on resize or on highdpi displays.
  • Fix MeshShape not working properly with some OBJ models.
  • Fix Model:getNodeScale to properly return the scale instead of the rotation.
  • Fix Mat4:set and Mat4 constructors to properly use TRS order when scale is given.
  • Fix lovr.graphics.newShader to work with nil shader code (uses unlit shader).
  • Fix crash when t.graphics.debug is set but the validation layers aren't installed.
  • Fix a few memory leaks with Readbacks, Fonts, and compute Shaders.
  • Fix Pass:setProjection to use an infinite far plane by default.
  • Fix Texture:hasUsage.
  • Fix Pass:points / Pass:line to work with temporary vectors.
  • Fix lovr.event.quit to properly exit on Android/Quest.
  • Fix mounted zip paths sometimes not working with lovr.filesystem.getDirectoryItems.
  • Fix issue where temporary vectors didn't work in functions that accept colors.
  • Fix crash when rendering multiple identical torus shapes in the same Pass.
  • Fix lovr.graphics.newShader to error properly if the push constants block is too big.
  • Fix default lovr.log to not print second string.gsub result.
  • Fix issue where lovr.data.newImage wouldn't initialize empty Image object pixels to zero.
  • Fix Model:getMaterial to work when given a string.
  • Fix issue where Vec3:angle would sometimes return NaNs.
  • Fix OpenXR driver when used with AR headsets.
  • Fix vertex tangents (previously they only worked if the normalMap shader flag was set).
  • Fix error when minimizing the desktop window on Windows.
  • Fix DistanceJoint:getAnchors.
  • Fix issue where Material:getProperties returned an incorrect uvScale.
  • Fix crash when uvShift/uvScale were given as tables in lovr.graphics.newMaterial.
  • Fix retina macOS windows.
  • Fix issue where Pass:capsule didn't render anything when its length was zero.
  • Fix confusing console message when OpenXR is not installed.
  • Fix issue where OBJ UVs were upside down.
  • Fix issue where equirectangular skyboxes used an incorrect z direction.
  • Fix seam when rendering equirectangular skyboxes with mipmaps.
  • Fix font wrap when camera uses a projection matrix with a flipped up direction.
  • Fix Model import when vertex colors are stored as vec3.
  • Fix 24-bit WAV import.
  • Fix issue with 3-letter vec3 swizzles.
  • Fix error when subtracting a vector from a number.
  • Fix error when adding a number and a temporary vector (in that order).
  • Fix issue where t.window = nil wasn't working as intended.
  • Fix bug where some fonts would render glyphs inside out.

Deprecate

  • Deprecate lovr.graphics.getPass (lovr.graphics.newPass should be used instead).
  • Deprecate Pass:getType. All Pass objects support both compute and rendering (computes run before draws).
  • Deprecate Pass:getTarget (renamed to Pass:getCanvas).
  • Deprecate Pass:getSampleCount (Pass:getCanvas returns a samples key).
  • Deprecate lovr.graphics.getBuffer (Use lovr.graphics.newBuffer or tables).
  • Deprecate variant of lovr.graphics.newBuffer that takes length/data as the first argument (put format first).
  • Deprecate lovr.headset.get/setDisplayFrequency (it's named lovr.headset.get/setRefreshRate now).
  • Deprecate lovr.headset.getDisplayFrequencies (it's named lovr.headset.getRefreshRates now).
  • Deprecate lovr.headset.getOriginType (use lovr.headset.isSeated).
  • Deprecate variant of lovr.headset.animate that takes a Device argument (just pass the Model now).
  • Deprecate Buffer:getPointer (renamed to Buffer:mapData).

Remove

  • Remove transfer passes (methods on Buffer and Texture objects can be used instead).
  • Remove Pass:copy (use Buffer:setData and Texture:setPixels).
  • Remove Pass:read (use Buffer:newReadback and Texture:newReadback).
  • Remove Pass:clear (use Buffer:clear and Texture:clear).
  • Remove Pass:blit (use Texture:setPixels).
  • Remove Pass:mipmap (use Texture:generateMipmaps).
  • Remove Tally (use lovr.graphics.setTimingEnabled or Pass:beginTally/finishTally).
  • Remove lovr.event.pump (it's named lovr.system.pollEvents now).
  • Remove t.headset.offset (use t.headset.seated).
  • Remove mipmaps flag from render passes (they always regenerate mipmaps now).