Changelog: upcoming release
These changes are in the source tree but not yet in a published package. The version number is assigned when the release is published.
Breaking: glm::vec4 orientations are (w, x, y, z)
rayrai’s glm::vec4 quaternions hold (w, x, y, z) in the vector’s
x, y, z, w components, as the headers always documented. The setters used
to read the vector as (x, y, z, w) instead. That meant:
getOrientation()did not return what was set;the documented identity
glm::vec4(1, 0, 0, 0)turned objects 180° about x;the vector and scalar
setOrientationoverloads disagreed.
These now all use (w, x, y, z):
Visuals::setOrientation(const glm::vec4&);InstancedVisuals::addInstance(position, orientation, ...);InstancedVisuals::InstanceSpec::orientation(default(1, 0, 0, 0));InstancedVisuals::setOrientation(id, orientation);tcp_viewer::ClientRequest::quat(default(1, 0, 0, 0)).
Code that passed (x, y, z, w) to work around the old behaviour must switch.
The old identity {0, 0, 0, 1} is now a 180° turn about z.
The same fix applies to the TCP viewer:
body frames of rotated bodies point the right way;
Set GC no longer reorders a floating base’s quaternion components, which used to turn an upright robot upside down.
Rendering
Glass.
Material::glassandRenderQualitySettings::geometryRefractiontrace refraction through glass geometry, progressively, with an adaptive mode. The backend is portable GPU tracing or, where available, Vulkan ray queries. See PBR materials and Render quality, tone mapping, color grading.Foliage.
Per-instance LOD, draw batching, depth prepasses and occlusion.
An on-disk mesh-LOD cache and asynchronous mesh preparation.
BC7 texture storage and wind controls.
See Custom visuals, instancing, and scene helpers and Performance notes and the C++ API reference.
Lighting. Sky-visibility and baked-irradiance grids, and directional soft shadows. See Lighting, shadows, and HDR/IBL.
Faster frames, identical images. Frame submission does less work: texture binding, uniform upload, shadow and primitive-batch buffers, render-target reuse. Rendered images are unchanged.
Fixes
Screen-space AO flicker. AO is now deterministic at sky silhouettes. Its screen-space derivatives were evaluated only on geometry pixels, which is undefined in a 2x2 quad that straddles the sky, and made AO flicker on Apple GPUs.
Texture-unit rebinding. On GPUs with 16 or 32 fragment texture units,
Material::applyTono longer binds one texture unit twice when maps are relocated.Bound pixel-unpack buffers. Lazily uploaded cloud-noise and fallback textures no longer fail when the application leaves a
GL_PIXEL_UNPACK_BUFFERbound.Instanced shaders on macOS. Instanced shaders no longer fetch vertex colour and tangent attributes that the specialized foliage variants do not use. Apple’s compiler keeps unused vertex outputs.
CoACD example startup.
rayrai_coacd_mesh_approximationbuilds its collision parts before opening the window, and reports that a cold cache can take minutes.