ソースを参照

Update release post;

bjorn 1 年間 前
コミット
5b392bba55
1 ファイル変更89 行追加11 行削除
  1. 89 11
      guides/v0.17.0.md

+ 89 - 11
guides/v0.17.0.md

@@ -6,12 +6,12 @@ LÖVR v0.17.0, codename TBD, is currently <span style="font-weight: bold; color:
 This version includes tons of bugfixes and usability improvements for the new graphics module, along
 with the following new features:
 
-- Passthrough, enabling mixed reality experiences and AR headsets
-- TerrainShape, for 3D heightfields in physics simulations
-- Support for blend shapes, used for facial animation and other mesh deformation
-- Builtin HTTP plugin, with support for HTTPS
-- Frustum culling, which is a quick way to improve rendering performance
-- Thick 3D rounded rectangles, great for VR UI
+- Passthrough, enabling mixed reality experiences
+- `TerrainShape`, for 3D heightfields in physics simulations
+- Blend shapes, for facial animation and making meshes squishy
+- HTTP, with support for HTTPS
+- Frustum culling, a quick way to improve rendering performance
+- Rounded rectangles with thickness, great for VR UI
 - Mouse input
 
 And munch more!  Read on for more details plus a full changelog.
@@ -116,7 +116,7 @@ Temporary Buffer/Pass objects were really tricky due to the way they got invalid
 
 This version, `lovr.graphics.getBuffer` and `lovr.graphics.getPass` have been deprecated and
 replaced by `lovr.graphics.newBuffer` and `lovr.graphics.newPass`.  These "permanent" types behave
-like all other objects, and you can call `lovr.graphics.submit` freely without messing them up.
+like all other objects, and you can call `lovr.graphics.submit` without messing them up.
 
 For passes, instead of getting a new one every frame, you can create it once and call `Pass:reset`
 at the beginning of a frame to reset it to a fresh state.  There's also the option of recording its
@@ -124,7 +124,7 @@ draws once and submitting it over and over again, to reduce the Lua overhead of
 
 ### No more pass types
 
-Passes no longer have a "type" that controls 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
 whenever the pass is submitted.
 
@@ -147,17 +147,25 @@ Compute Barriers
 This is a small change, but there's a new `Pass:barrier` function that lets you sequence multiple
 compute shader dispatches within a pass.  Since computes within a pass all ran at the same time, you
 previously had to use multiple Pass objects to get computes to wait for each other, which is costly.
-With `Pass:barrier`, all computes before the barrier will complete before further compute work can
-start.
+With `Pass:barrier`, all computes before the barrier will finish before further compute work starts.
 
 Headless VR
 ---
 
-The headset module can now be used in headless mode (spooky!!).  This means it will still work even
+The headset module can now be used in headless mode (spooky!).  This means it will still work even
 when the graphics module is disabled.  The intended use case is for console applications that don't
 need to render anything but still want to use pose data.  Note that this only works on certain XR
 runtimes -- currently monado and SteamVR are known to work.
 
+New Headset Simulator
+---
+
+The headset simulator incorporated changes from the
+[`lovr-mousearm`](https://github.com/jmiskovic/lovr-mousearm) library.  The virtual hand is now
+placed at the projected mouse position, and the scroll wheel can be used to control the hand
+distance.  The shift key can also be used to "sprint", which is great for moving through large
+worlds.
+
 Mouse Input
 ---
 
@@ -173,3 +181,73 @@ Mouse input has been added to `lovr.system`.  You'll find the following new meth
 - `lovr.wheelmoved`
 
 You might not need the `lovr-mouse` library anymore!
+
+Tally Changes
+---
+
+Recording GPU timing info is now as simple as calling `lovr.graphics.setTimingEnabled`.  Stats will
+be made available via `Pass:getStats`, with a frame or two of delay.  Timing stats are also active
+by default when `t.graphics.debug` is set.
+
+Pixel tallies (occlusion queries) also have a new revamped API.  Instead of using a `Tally` object
+and a transfer pass, `Pass:beginTally` and `Pass:finishTally` will start and stop an occlusion
+query.  The results for tallies can be copied to a Buffer after the Pass with `Pass:setTallyBuffer`.
+
+Quality of Life
+---
+
+There are also a bunch of small improvements worth mentioning.
+
+Drawing a texture on a plane no longer requires a call to `Pass:setMaterial`.  Instead, `Pass:draw`
+can take a `Texture`:
+
+    -- Old
+    pass:setMaterial(texture)
+    pass:plane(x, y, z, w, h)
+    pass:setMaterial()
+
+    -- New
+    pass:draw(texture, x, y, z, w)
+
+All objects now have the `Object:type` method to return their type name as a string.
+
+There's a new `Image:mapPixel` function which is an easier way to set all the pixels of an Image.
+
+Shaders now support `#include` to load shader code from LÖVR's filesystem.
+
+When `t.graphics.debug` is set, shaders include debug info now.  This allows graphics debugging
+tools like RenderDoc to inspect variables in a shader and step through each line interactively.
+
+Vectors have capitalized constructors to create permanent vectors, e.g. `Vec3` can be used in
+addition to `vec3`.
+
+Vectors also have named constants: `vec3.up`, `vec4.one`, etc.
+
+Physics has `World:queryBox` and `World:querySphere` to query all the Shapes that intersect a
+volume.
+
+Community
+---
+
+LÖVR's Slack is now deprecated because it held our messages hostage!  We migrated all the chat
+history over to a [Matrix](https://matrix.org) homeserver hosted on `#community:lovr.org` and
+bridged everything to a new Discord server.  Keeping the source of truth for chat on a self-hosted,
+open source platform ensures the community is hopefully a bit more resilient to future corporate
+monkey business.
+
+Speaking of corporate monkey business, LÖVR has entrenched itself further into the GitHub ecosystem
+by adding continuous releases via GitHub Actions!  This means us mere mortals can have up-to-date
+builds for all platforms without needing to touch CMake or anything related to Android Studio.
+
+For the remaining masochists among us who choose to build LÖVR from source, there has been a change
+to the branching system.  The `dev` branch is now the default branch, and `master` has been renamed
+to `stable`.  The development workflow otherwise remains the same, where new features go into `dev`
+and bugfixes are made on `stable`.  The following commands will update a local clone:
+
+    $ git branch -m master stable
+    $ git fetch origin
+    $ git branch -u origin/stable stable
+    $ git remote set-head origin -a
+
+Changelog
+---