Release notes
Changelog
Version 1.33.1.2
Released 12 Oct 2022
Feature | Added an interface for time zone support for Sony PlayStation and Nintendo Switch |
Enhancement | Implemented an optimization to reduce the number of render passes when rendering complex effects |
Enhancement | Added functionality and API to capture backend command buffers |
EnhancementUnity | Support for Android x64 |
Enhancement | Introduced new backend API for resource barriers (see the rendering migration guide) |
Enhancement | Enhance batching to check for older combinable commands |
Fix | Fixed the growth of the stroke width for elements in SVGs to be bidirectional |
FixUnity | Fixed binding between C# and JavaScript |
Fix | Fixed typescript definition of registering binding attribute |
Fix | Fixed order of custom element reactions when content is added through insertAdjacentHTML |
Fix | Fixed wrong indexing arrays with literal numbers in data-binding expressions |
Fix | Fixed crash in data-binding with complex expression and literal numbers indexing arrays |
Fix | Fixed the Date.now() time on Nintendo Switch. |
Fix | Fixed clipped text shadows when using line height which is less that the character height. |
Fix | Fixed background/mask-position when using a gradient as an image |
Fix | Fixed mask-position property when the mask-image is a gradient. |
Fix | Fixed a crash when changing the html background before the body element is created. |
FixUnreal Engine | Fixed assert when custom effects are enabled |
FixUnreal Engine | Fixed safe zone calculation with multiple viewports |
FixUnreal Engine | Fixed texture drawing in atlas crash in Unreal Engine 5 with DirectX12 |
Fix | Fixed the default value of stop-color in gradients defined in SVGs |
Version 1.33.3.1
Released 21 Oct 2022
Feature | Experimental support for inline layout background styles per row (color, images and gradients) |
Fix | Fixed elements leaving visual artifacts after being removed from the DOM |
Fix | Fixed a case where CSS variables will fail to be resolved |
Fix | Fixed a crash when certain SVGs have zero width/height |
Migration guide
Added support for resource state transitions in the rendering backends
With this version of Gameface, the Renoir rendering library supports the ability to explicitly issue state transitions for textures and depth-stencil textures. The feature is aimed at modern graphics APIs that support GPU resource states. Previously, the state transitioning logic was up to the backend to implement. Now Renoir can request state transitions explicitly through rendering commands. There are several API changes related to this:
There is a new field in the
renoir::RendererCaps
structure -SupportsResourcesStateTransitions
. If the field is set totrue
, Renoir will generate commands that indicate that the state of a texture should be changed. For example, just before a texture is used as a render target, there will be a command that changes the state of the texture in question to “render target”.Two new backend commands –
BC_TransitionTextureState
andBC_TransitionDSTextureState
. Together with the new structures -TransitionTextureStateCmd
andTransitionDSTextureStateCmd
- these command tell the rendering backend which texture should be transitioned to which state.
For examples of how the new commands should be handled, you can check out the provided DX12 and Vulkan rendering backend. For more details on when exactly are texture state transitions generated, see Resource state transitions.
Added a rendering backend API that allows the execution of resource commands
The rendering backends now have a new method - RendererBackend::ExecuteResourceCommands
- that should be implemented to make GPU resource creation and destruction possible. The job of the method is very similar to RendererBackend::ExecuteRendering
but it only processes resource commands. Renoir will create several BackendResourceCommandsBuffer
(very similar to BackendCommandsBuffer
) objects and will pass them to RendererBackend::ExecuteResourceCommands
where the resource command should be executed by the backend. The resource commands definitions can be found in the new public header RenoirBackend/BackendResourceCommands.h
. All of the provided rendering backends have a proper implementation of the new RendererBackend::ExecuteResourceCommands
method. Those can be used as a reference implementation for custom backends. For more details on the new flow for executing resource commands, see Resource state transitions.