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.
 
-### No more temporary objects
+### Temporary Objects
 
 Temporary Buffer/Pass objects were really tricky due to the way they got invalidated whenever
 `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
 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
 `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
     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
 ---
 
@@ -275,3 +281,211 @@ and bugfixes are made on `stable`.  The following commands will update a local c
 
 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).