Skip to content
SiteEmail

API

Removed developer option for using deprecated em behavior

API

Changed layout of constant buffer data for pixel shaders

API Unreal Engine

Added support for the incremental garbage collection in Unreal Engine 5. Projects leveraging Unreal Engine 4.27 will have the plugin files modified during project generation

Feature Unreal Engine

Added support for incremental garbage collection for Unreal Engine 5

Enhancement

Added Compositor and Surface Partitioning support for DirectX 12 in the Player application

Enhancement

Added an example blur filtering of a texture using a compute shader

Enhancement

Added a log message notifying that StylePropertyMap is not supported for SVG elements

Enhancement

Added DirectX 12 support to the default samples solution

Enhancement

Fixed unclosed profiling markers when using the default profiling backend on PC platforms

Enhancement Unreal Engine

Simplify view initialization when using UMG widgets

Enhancement Unreal Engine

Ensure virtual keyboard will not use the view or the InputProxy after InputBlur to prevent possible crashes

Fix

Fixed a layout regression with incorrect handling of undefined dimensions

Fix

Fixed crashes when data-bind-for iterator value is used in a single expression with other models

Fix

Fixed crashes with null pointer parents during style solving when using the IInputProxy API

Fix

Fixed hover and active pseudo-classes inside slotted and host brackets

Fix

Fixed stale styling when adding an element that creates a complex selector match

Fix

Fixed caret positioning in input and textarea elements when setting the value from JavaScript

Fix Unity

Fixed accumulation of C# implementations of public interfaces until the library is unloaded

Fix

Fixed localization sample for Nintendo Switch

Fix Unity

Fixed input issues in the MadRabbits sample

Fix

Fixed a resource leak of in the DirectX 11 backend

Fix

Fixed performance regression in text rendering

Fix

Fixed SVG border image rendering regression when SVG has no width and height

Fix

Fixed SVG mask size when using relative units

Fix

Fixed the calculation of em and rem units for inline SVG root element

Fix

Fixed updating of inline SVG styles when the root font style changes

Fix Unreal Engine

Updated Player starting scripts to list the available options

Fix Unreal Engine

Fix possible unpainted frames when using UMG widgets and destroying the scene

Fix Unreal Engine

Fix backdrop-filter on Mobile devices when MobileHDR is enabled

Fix Unreal Engine

Fix assert when using shared render target textures and UMG on Sony platforms

Fix Unreal Engine

Add missing lock in FCohTextureCollector::FindTexture

Fix Unreal Engine

Invalidate the IME Manager after deactivating and unregistering the Text Input Method Context, resolving a crash

Fix Unreal Engine

Fixed issues with EnsureMeshData when running with OpenGL

Fix Unreal Engine

Fixed selection issues when entering text with virtual keyboard

Fix Unreal Engine

Fixed deleting the last character of the input field when using virtual keyboard

Fix Unreal Engine

Fixed possible crash in FCohRenoirBackend::ReadTexture

Changes to the Data_PS constant buffer data layout

Section titled “Changes to the Data_PS constant buffer data layout”

With the new release, our Pixel Shader (PS) Constant Buffer Data_PS has had its data layout altered to accommodate more flexible per command data storage. All custom shaders accessing elements from the CB will have to be modified to use the correct elements.

Previous Layout Current Layout
  • Per Batch Data
    • float4 (optional, if shouldClip is true)
      • AA clipping data
    • float4s
      • Custom per batch data
  • Per Batch Data
    • float4 (optional, if shouldClip is true)
      • AA clipping data
    • float4
      • shouldClip
      • additionalFlags
      • Color matrix offset (-1 if there is no color matrix or one is not needed)
      • Padding
    • float4s
      • Custom per batch data
  • Per Command Data
    • float4
      • inColor / Custom per command data
    • float4
      • userData
      • additionalFlags
      • shouldClip
      • sharedCBOffset
  • Per Command Data
    • float4
      • sharedCBOffset
      • userData[3]
    • float4s
      • inColor / Custom per command data

Previous constant buffer offsets usage example:

int vs, ps, shaderType;
decode(input.VaryingData, vs, ps, shaderType);
// ps will point to the color that should be used for this pixel
// ps + 1 will point to a float4 that contains other per command data
float4 inColor = Data_PS[ps];
float4 perCommandData = Data_PS[++ps];
// perCommandData.w is the index of data used by several batched commands. The format
// of this shared data is custom for every command type.
int sharedCBOffset = int(perCommandData.w);

Current constant buffer offsets usage example:

int vs, ps, shaderType;
decode(input.VaryingData, vs, ps, shaderType);
// ps will point to a float4 that contains the shared CB offset and some per command user data
// ps + 1 will point to the color that should be used for this pixel
float4 perCommandData = Data_PS[ps];
float4 inColor = Data_PS[++ps];
// perCommandData.x is the index of data used by several batched commands. The format
// of this shared data is custom for every command type.
int sharedCBOffset = int(perCommandData.x);

Below is a table, mapping the Pixel Shader CB elements' previous and new location inside the Data_PS CB along with their usage:

BeforeNowUsage
Data_PS[ps]Data_PS[ps + 1]inColor / Other custom per command data
Data_PS[ps + 1].xData_PS[ps].yuserData
Data_PS[ps + 1].yData_PS[sharedCBOffset + SHARED_PS_DATA_OFFSET].yadditionalFlags
Data_PS[ps + 1].zData_PS[sharedCBOffset + SHARED_PS_DATA_OFFSET].xshouldClip
Data_PS[ps + 1].wData_PS[ps].xsharedCBOffset
Data_PS[sharedCBOffset]Data_PS[sharedCBOffset]Custom per batch data
Data_PS[sharedCBOffset + SHARED_PS_DATA_OFFSET]Data_PS[sharedCBOffset + SHARED_PS_AA_CLIPPING_DATA_OFFSET]AA clipping data (optional, if shouldClip is true)
Data_PS[ps].zuserData (unused for now)
Data_PS[ps].wuserData (unused for now)
Data_PS[sharedCBOffset + SHARED_PS_DATA_OFFSET].zColor matrix offset (-1 if none or not needed)
Data_PS[sharedCBOffset + SHARED_PS_DATA_OFFSET].wPadding (unused for now)

The SHARED_PS_DATA_OFFSET, which was used to calculate the offset of the AA Clipping data, will now be used to find the initial per batch data(containing the shouldClip, additional flags and the color matrix offset), while a new offset called SHARED_PS_AA_CLIPPING_DATA_OFFSET will be used for the original purpose.

Before:

CohClipMasking.ihlsl
#define SHARED_PS_DATA_OFFSET -1

Now:

CohCommonPS.ihlsl
#define SHARED_PS_DATA_OFFSET -1
#define SHARED_PS_AA_CLIPPING_DATA_OFFSET -2