Release notes

What’s new

Content Development

Player CLI improvements

The Player command line arguments have had a complete overhaul. They now support several new things:

  • Viewing all command line arguments through --help.
  • A lot of previously hidden command line arguments have been made public.
  • All player command line arguments can now be set through a config file, using toml syntax.
  • All command line arguments are now more flexible in terms of syntax, for example accepting --arg value, --arg=value, --arg="value", etc.

WebP images support

Prysm can now load and use images with WebP format. The support is limited to simple images without filters and animations.

Unreal Engine

Custom Effects feature support for UMG Widgets

The Custom Effects feature can now be used with UMG Widgets, which includes both HUD Widgets, and Widgets attached to an Actor as a component.

Multi Touch support for UMG Widgets

The MultiTouchEventsHandling option of the UMG Widgets indicates whether Touch events (Touch Down, Touch Move and Touch Up) should be gathered and handled by the UI together at the end of the Input frame or separately - one by one.

Please note that Multi Touch events handling will have a side effect on the input propagation as we can no longer check whether the UI handles every single touch or not, because events are processed later in bulk.

Migration guide

Pixel Shader Changes

Changes in shaders

If you rely on custom shaders, the pixel shader additional flags in CohCommonPS.ihlsl should be updated with the following new values:

static const int PSAF_GammaTextureSpace_0 = 0x10;
static const int PSAF_GammaTextureSpace_1 = 0x20;

The newly introduced flags PSAF_GammaTextureSpace_0 and PSAF_GammaTextureSpace_1 specify whether the shader should manually perform a Linear-to-sRGB color space conversion for texture slots txBuffer and txBuffer1, respectively. This conversion is intended to be applied after sampling textures that store color information, rather than non-color data such as signed distance fields. For example:

float4 source = SAMPLE2D(txBuffer, input.Additional.xy);
if (IS_SET(int(perCommandData.y), PSAF_GammaTextureSpace_0))
{
    source.rgb = LinearToSRGB(source.rgb);
}
...
float4 source1 = SAMPLE2D(txBuffer1, input.Additional.xy);
if (IS_SET(int(perCommandData.y), PSAF_GammaTextureSpace_1))
{
    source1.rgb = LinearToSRGB(source1.rgb);
}

Player CLI improvements

The Player config file is now in toml format (previously json) and all command line arguments are now configurable through it (previously, only coui-root and fonts were configurable). The Player’s default Config file is already converted to the new format and does not require changes. However, if you had any custom changes to your Config file, they would need to be ported to the new toml syntax.

An example on how to use the new coui-root and font registration, see the Player’s provided Config file, which can be found at <package_root>/Player/Config.toml.

Separating Mobile and PC packages

Introducing new Mobile packages

We’ve removed the Android and iOS libraries and samples from the common packaging, thus significantly reducing the size of the Prysm PC packages.

By splitting them into a separate Mobile package, we make sure you can download only what you need. From now on, you can treat the new Mobile packages in the same way you treat the console packages.

This is done for all of our package types, namely:

  • Native fragments
  • Unity 3D UPM packages
  • Unreal Engine zips and installers

Changelog

Version 1.67.0


Released 06 Jun 2025
APIAdded linear to sRGB color space conversion in shaders
FeatureAdded support for pathLength attribute on SVG paths. By using a user defined length for the path, stroke-dasharray and stroke-dashoffset can be animated using only CSS as a percentage from the path length.
FeatureAdded support for WebP images
FeatureAdded support for the CharacterData.after and CharacterData.before DOM methods
FeatureAdded support for the part pseudo-class and the exportparts attribute
FeatureAdded --help command line argument for the Player application to list all available options
FeatureUnityAdded support for .Net objects to be used as models for the data binding in the Unity3D integration
FeatureUnreal EngineAdded Custom Effects support for UMG widgets
EnhancementOptimized text shadows rendering. The default size for the shadow cache is reduced from 8 to 1 to save GPU memory. A performance warning has been added to indicate when the cache is full
EnhancementMoved the computation of blur weights to the GPU to improve CPU performance
EnhancementSIMD instructions are now utilized in the rendering library to improve CPU performance
EnhancementAdded CPU visible buffers in DirectX12 for better performance and reduced GPU memory usage
EnhancementAdded support for skew transforms on clipped or masked SVG elements with objectBoundingBox-based contentUnits
EnhancementAdded support for transform and transform-origin on SVG clip paths
EnhancementAdded support for custom CSS expressions with attributeStyleMap when setting the style via a string value
EnhancementAdded support for custom CSS expressions for coh-composition-id, coh-custom-effect-name, coh-custom-effect-string-param-1 and coh-custom-effect-string-param-2 styles
EnhancementAdded DOM.removeAttribute, DOM.focus, DOM.blur inspector APIs
EnhancementAdded support for using textures in linear color space with the SDR gamma rendering pipeline
EnhancementEnhanced configuration support for the player - all options can now be configured with a config.toml file
EnhancementSplit Android and iOS platforms to a separate mobile package for native, Unreal and Unity
EnhancementImproved multithreaded performance of the Sony PlayStation 5 samples by using the standard allocator
EnhancementAdded errors for invalid attributeStyleMap.set(prop, stringValue) calls
EnhancementUnreal EngineAdded logging of errors when the System actor can not begin destruction as there are still active HUD, components or widgets
EnhancementUnreal EngineAdded multi-touch support for UMG widgets
EnhancementAdded gamepad and keyboard input to the Manager UI sample
EnhancementEnhanced logging for invalid css custom expressions to include the faulty expressions
FixFixed a large memory spike caused by a single allocation during processing of rendering commands
FixFixed cutting parts of some SVG images
FixFixed applying fill-rule for SVG paths that override clip-rule
FixFixed edge cases for transformed content using SVG clipPath or mask references
FixFixed an assert when adding non-SVG elements inside the SVG DOM
FixFixed using selectors before the ::slotted pseudo-class
FixFixed garbage collection of CSS animations when firing animation events
FixFixed CSS transitions of matrix3d styles
FixFixed a potential deadlock during system destruction
FixFixed a changing SVG images with innerHTML and insertAdjacentHTML
FixFixed incorrect memory counters in the profiling API
FixFixed the calculation of the peak usage bytes for constant buffers
FixUnityResources requests are now thread-safe and handled on the main thread
FixUnityFixed accumulation of Live Views in Unity3D
FixFixed a crash when using latest vite and React