Browse Source

Update release post;

bjorn 1 year ago
parent
commit
224aed3a71
1 changed files with 216 additions and 2 deletions
  1. 216 2
      guides/v0.17.0.md

+ 216 - 2
guides/v0.17.0.md

@@ -122,7 +122,7 @@ Graphics Improvements
 
 
 The graphics module has been streamlined a bit as we shake out the new Vulkan renderer.
 The graphics module has been streamlined a bit as we shake out the new Vulkan renderer.
 
 
-### No more temporary objects
+### Temporary Objects
 
 
 Temporary Buffer/Pass objects were really tricky due to the way they got invalidated whenever
 Temporary Buffer/Pass objects were really tricky due to the way they got invalidated whenever
 `lovr.graphics.submit` was called:
 `lovr.graphics.submit` was called:
@@ -140,7 +140,7 @@ For passes, instead of getting a new one every frame, you can create it once and
 at the beginning of a frame to reset it to a fresh state.  There's also the option of recording its
 at the beginning of a frame to reset it to a fresh state.  There's also the option of recording its
 draws once and submitting it over and over again, to reduce the Lua overhead of recording draws.
 draws once and submitting it over and over again, to reduce the Lua overhead of recording draws.
 
 
-### No more pass types
+### Pass Types
 
 
 Passes no longer have a "type" that defines what commands can be recorded on them.  Instead, all
 Passes no longer have a "type" that defines what commands can be recorded on them.  Instead, all
 `Pass` objects can receive both graphics and compute work, with computes running before the draws
 `Pass` objects can receive both graphics and compute work, with computes running before the draws
@@ -159,6 +159,12 @@ and finish before subsequent graphics submissions.
     -- New
     -- New
     texture:setPixels(image)
     texture:setPixels(image)
 
 
+### Mesh
+
+The `Mesh` object has returned!  This is mostly a convenience object that holds a vertex and index
+buffer, a `Material`, draw range, and bounding box.  `Pass:mesh` still exists as a lower-level way
+to draw meshes with `Buffer` objects.
+
 Compute Barriers
 Compute Barriers
 ---
 ---
 
 
@@ -275,3 +281,211 @@ and bugfixes are made on `stable`.  The following commands will update a local c
 
 
 Changelog
 Changelog
 ---
 ---
+
+### 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 control whether text/binary chunks can be loaded.
+
+#### 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 debug info to shaders when `t.graphics.debug` is set, allowing line-by-line debugging in e.g. RenderDoc.
+- 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`s in shader code.
+
+#### Headset
+
+- Add `lovr.headset.getPassthrough/setPassthrough/getPassthroughModes`.
+- Add support for more headsets in Android builds (Quest, Pico, Vive Focus, etc. all work using a single APK).
+- 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 vector 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 `lovr.math.vec2/vec3/vec4/quat/mat4` 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 other files with paths starting with `./`.
+- Change `lovr.graphics.newModel` to error when the asset references other files using absolute paths.
+- Change `lovr.graphics.newBuffer` to take the format first instead of the length/data (old variant still works).
+- 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 `nil`s, which act as wildcard tags.
+- Change `Mat4:__tostring` to print matrix components.
+- Change `World:raycast` callback to prevent subsequent raycast checks when returning `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 color on AR/passthrough headsets.
+- Change headset simulator to use projected mouse position for hand pose (scrollwheel 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 where VRAM would quickly run out when creating Textures, or not get freed properly.
+- 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 code from `unlit` shader).
+- Fix `lovr.graphics` to warn instead of crash if `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:point` / `Pass:line` to work with temporary vectors.
+- Fix `lovr.event.quit` to properly exit on Android/Quest.
+- Fix mounted zip archives sometimes not working properly 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 for the GPU.
+- 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:getData/newReadback` and `Texture:getPixels/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).