Release notes
On this page
Changelog
Version 1.38.0
Released 21 Feb 2023
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 |
EnhancementUnreal 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" |
FixUnity | Fixed submission validation errors for PlayStation 5 |
FixUnreal Engine | Fix retrieval of game viewport when multiple PIE processes exist |
Migration guide
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);
…
Added new texture property
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();
}
…