Skip to content
SiteEmail

Feature

Introduce a new 'UI Surface Partitioning'' feature that gives the ability to split the UI in parts that will be rendered in separate textures. See the documentation for more details'

Enhancement

Added documentation for the coh-composition-id, coh-partitioned, and coh-rendering-options

Enhancement

Enhanced stroke rounded rects to use geometry instead of Path for better performance

Enhancement

Implemented a full page capture feature that can serialize a loaded page to a binary blob for easier debugging

Enhancement

Added support for null when setting style.[top|left|right|bottom]PX for unsetting the property

Enhancement Unreal Engine

Added a way to ignore the automatic binding of specific UFunctions

Fix

Fixed a crash when applying white-space property on input elements

Fix

Fixed a deadlock that can occur during loading of images

Fix

Fixed a regression with user images that may have caused crashes

Fix

Borders having width less than 1px and using images/gradients as border-image-source are no longer disappearing

Fix

Fix the disappearing of small border corners

Fix

Fixed pausing animations with zero duration to render the correct state

Fix

Fixed a potential crash when creating/destroying video elements or changing the src attribute

Fix

Fixed a potential crash when destroying Vertex/Index buffers in the backend when using the ViewSettings::ExecuteCommandProcessingWithLayout option

Fix

Fixed a crash when nesting elements that use the clip-path property in an SVG

Fix

Fixed potential threading issue when using multiple views along with the ViewSettings::ExecuteCommandProcessingWithLayout option, leading to the missing texture errors

Fix

Removed additional memory allocation for texture updates

Fix

Fixed an assert in Debug configuration related to visual AABBs

Fix

Fixed possible GPU hang due to failing Index buffer diagnostic check 16690 in the stock PS4 backend.

Fix

Fixed wrong layout when using font-fit in a dynamically sized flex sub-tree

Fix

Fixed inner HTML in localized content not displayed correctly unless wrapped in a single HTML element

Fix

Fixed unnecessary request for an invalid texture from the backend in the Compositor sample

Fix

Fixed incorrect handling of background-size single value extent and auto value

Fix

Fixed possible assertion for a missing render target when having an element with both coh-composition-id and filter CSS properties

Fix

Fix the occasional disappearing of SVGs used as masks

Fix

Fixed SVGs not drawing correctly when using preserveAspectRatio="none"

Fix Unity

Fixed submission validation errors for PlayStation 5

Fix Unreal Engine

Fix retrieval of game viewport when multiple PIE processes exist

Changed Stroke Circle / Stroke Rounded Rectangle shader

Section titled “Changed Stroke Circle / Stroke Rounded Rectangle shader”

After changing the input.Additional.z for the Stroke Rounded Rectangle and Stroke Circle geometry to be the sum of the radius and half of the stroke width, the shader also had to be altered. Meaning that in this version of Gameface, the Stroke Rounded Rectangle and Stroke Circle shader (when ShaderType is 2) has been changed. Before, to calculate distance2OuterEdge we used to subtract the sum of the radius (input.Additional.z) and half of the stroke width (input.Additional.w) from de(distance between the current pixel and the center of the circle). Now we only subtract the radius. Moreover, to calculate distance2InnerEdge, we now subtract the difference between the radius and half of the stroke width instead of the whole stroke width from de.

Before:

CohShadeGeometryRare.ihlsl
...
const float de = length(posPixels - input.Additional.xy);
const float distance2OuterEdge = de - (input.Additional.z + input.Additional.w / 2);
const float distance2InnerEdge = de - (input.Additional.z - input.Additional.w / 2);
...

After:

CohShadeGeometryRare.ihlsl
...
const float de = length(posPixels - input.Additional.xy);
const float distance2OuterEdge = de - input.Additional.z;
const float distance2InnerEdge = de - (input.Additional.z - input.Additional.w);
...

Previously

The description (Texture2D object) has a field named Props. It's used to set some flags for the texture which can provide some specific information. We've added new flag called ImageProperties::IMP_ClearOnInit by which we should understand that the texture should be cleared when it's being created. Previously, we were sending empty data to the backend, so the flag was added to save up some memory.

Some rendering APIs can directly memset the texture memory while others should allocate some temporary memory and update the texture's resource with it. Below you can check an example of the simplest approach to migrate this change:

dxVector<unsigned char> empty;
// Renoir expects text atlases to be clear before usage.
// Previsouly we were sending empty data from Renoir, but this can result in memory spikes
// if many atlases need to be allocated in single frame and it was meaningless to send 0's.
if (description.Props & renoir::IMP_ClearOnInit)
{
dataLen = description.Width * description.Height * (renoir::BitsPerPixel(description.Format) / 8);
empty = dxVector<unsigned char>(dataLen, 0);
data = empty.data();
}
...