Skip to content
SiteEmail

Starting from this release, the performance of each data binding attribute can be inspected in the "Performance" tab of the Chrome Inspector.

For more details, see the documentation for Enhanced Performance Tracing

We’ve enhanced how CSS filters are processed in Gameface. Previously, each filter (like brightness, sepia, etc.) would generate its own texture, which could quickly add up in complex DOM trees—especially when stacking multiple filters.

With this update, filters without any opacity effects (like transparency or alpha changes) are now intelligently merged into a single color matrix operation. This reduces texture creation, saves memory, and significantly improves rendering performance-especially in deeply nested or filter-heavy documents.

Note that the following filters would still create a texture:

  • blur
  • coh-axis-blur
  • drop-shadow

Removed support for explicit resource state transitions generated by the rendering library

Section titled “Removed support for explicit resource state transitions generated by the rendering library”

We have deprecated the renoir::RendererCaps::SupportsResourcesStateTransitions field and the BRC_TransitionTextureState, BC_TransitionTextureState and BC_TransitionDSTextureState rendering backend commands as a result of dropping the support for explicit resource state transitions generated by Renoir. These state transitions will continue to be handled entirely in the backends.

With this version of Gameface, several of the internal rendering caches are getting merged into a single one - the global GPU resources pool. Previously, the Gameface's rendering library had multiple caches that had to be adjusted and fine-tuned individually. Now there is a single such cache that can be controlled with a single target GPU memory number. For more information, see the "Global GPU Resources Pool" in the documentation on Internal Caches.

Releasing of the user background and global backdrop mask textures

Section titled “Releasing of the user background and global backdrop mask textures”

Previously, Gameface was not releasing the Global Backdrop Filter Mask and the User Background textures properly upon the destruction of the corresponding. cohtml::ViewRenderer of a given cohtml::View. Now, when calling cohtml::ViewRenderer::Destroy, both of those textures will be destroyed through a renoir::BRC_DestroyTexture command in the rendering backend. For more information on the specifics, see the corresponding documentation for both of the features:

New delegates for modifying Library, System and View options

Section titled “New delegates for modifying Library, System and View options”

The Gameface integration for Unreal Engine now provides new ModifyLibraryParams, ModifySystemSettings, and ModifyViewSettings delegates for modifying all Gameface Library, System and View options.

ModifyLibraryParams, ModifySystemSettings, and ModifyViewSettings delegates are located inside ICohtmlPlugin.h, and are called right before creating a Gameface Library, System and View, passing a pointer to the already populated settings.

Changes to binding of 64-bit integer values

Section titled “Changes to binding of 64-bit integer values”

Starting from this release, all 64-bit integer values are bound to JavaScript as BigInt. In previous versions Number was used if the value fits in Number.MAX_SAFE_INTEGER, otherwise BigInt. If your code counts on the old behavior, you can restore it by changing the View setting: Int64BindingMode to Int64BindingModeType::Mixed, however this is not recommended and the option will be removed in future releases.


API

Added ViewSettings::Int64BindingMode to control how to expose int64_t values to JavaScript

API

Removed support for the backend commands for resource state transitions

Feature

Introduced a Global GPU Resources Pool that unifies several internal caches for GPU resources. For more information, see the Internal Caches page in the documentation

Feature

Early flex gap property support behind developer option --use-compatibility-yoga

Feature

Added Inspector performance trace events for data binding

Enhancement

Introduced a Simple Filters feature that allows non-standard but optimized rendering of elements with color filters

Enhancement

Added command line arguments pass through for Player startup scripts

Enhancement

Enhanced the release of the user background and the global backdrop filter mask to avoid leaks. For more information, see the pages on the Backdrop Filter and the Global Backdrop Filter

Enhancement

Enhanced string conversion for background-repeat and mask-repeat style properties to match the web standard behavior

Enhancement

Enhanced the debug marker support in Unity's C# backend. Submitted markers are now properly visualized in graphics debugging tools like RenderDoc

Enhancement

Improved styling performance with complex selectors in some cases

Enhancement

Improved warnings for JS Styling via el.style.prop and el.style.someFunc()

Enhancement

Added a warning when setting invalid value using the el.style.setProperty JS API

Enhancement

Improved warning message with more information when setting invalid values

Enhancement

Log warning when trying to remove a non-existing property via el.style.removeProperty()

Enhancement

Enhanced warnings for unsupported all property operations to be more descriptive

Enhancement

Added support for binding int64_t values as BigInt in JavaScript

Enhancement

Added support for using rem units on non-inline SVG root's 'width' and 'height' presentation attributes

Enhancement

Added --position-x and --position-y options to the Player to control its starting window position

Enhancement

setInterval DOM API now supports the default value of 0 for omitted delay argument

Enhancement

Support for the Performance Monitor tab in DevTools

Enhancement

The performance monitor panel in the Inspector visualizes the top level profiling markers

Enhancement

Implemented Depth-Stencil resolve to color texture for the OpenGL, Metal, and Nintendo Switch backends. The GPU tessellator now uses one texture less on those backends

Enhancement

Enabled all GPU markers in the backends for the Debug and Development configurations

API Unreal Engine

Removed the bConfigureForCustomEffectsAndCompositorAPI option

Enhancement Unreal Engine

Improved error message for incorrectly configured views using Custom Effects

Enhancement Unreal Engine

Added support for Custom Effects with Unreal Engine Material Additive Blend Mode

Enhancement Unreal Engine

Added support for Vulkan Shader Model 6

Enhancement Unreal Engine

Integrated internal profiling markers into Unreal Insights

Enhancement Unreal Engine

Add ICohtmlPlugin::OnGetDataStorageProvider delegate for providing implementation of the cohtml::IDataStorageProvider

Enhancement Unreal Engine

Add Delegates to modify LibraryParams, SystemSettings and ViewSettings

Fix

Prevent custom expressions are not supported warning from appearing when trying to set a property to an invalid value that is not a custom expression value

Fix

Fixed the type name of dynamic properties with the Safe Data Binding enabled

Fix

Fixed a race condition when creating a ScriptCompiler in a worker thread

Fix

Fixed getting inline styles with custom expressions in them for el.style properties and el.style.getPropertyValue()

Fix

Fixed a bug where setting inline style for property fails if the old or new inline style for the property is using a custom expression value

Fix

Fixed default computed style for 'animation-delay' and 'transition-delay' to now return 0s instead of just '0'

Fix

Fixed the string serialization of 'animation-timing-function' and 'transition-timing-function' for the 'step-end' value to be 'steps(1)' instead of 'steps(1, end)', in line with browsers, since 'end' is the default value and should be omitted

Fix

Fixed the default value for mask-repeat to be repeat instead of no-repeat, as per the standard

Fix

Fixed reifying of mix-blend-mode in CSSTOM from color-Burn to color-burn

Fix

Fixed reifying of background-repeat so that, for more than 1 comma separated values, we return CSSStyleValue as CSSTOM doesn't currently support it

Fix

Removed commas between color components in computed style of color(coh-scrgb ...) color value since this type of color value accepts only whitespace as a delimiter between color components

Fix

Fixed text-align sometimes not working when parent container grows because of sibling

Fix

Stop logging getProperty warning for non-existent property when removeProperty() was called instead

Fix

Fixed JS Styling bugs for el.style.prop and el.style.someFunc() and el.style.cssText APIs

Fix

Fixed default inline styles for properties to return empty strings instead of default computed styles for shorthand or undefined for longhand properties

Fix

Fixed setting el.style.prop as null, now treated as setting to empty value and will remove the inline property declaration

Fix

Fixed an assert when trying to remove all property inline style by setting it to empty style value

Fix

Removed leading whitespace in el.style.cssText for the inline styles

Fix

Removed xlink:href from the css properties as it is not a css property. It's usage as an attribute is unaffected

Fix

Removed non-standard unused css property percent

Fix

Fixed JS APIs for modifying/getting styles not working for missing properties

Fix

Fixed coh-font-fit not being recognized as a valid property when using it with el.style functions (getPropertyValue/setProperty/removeProperty) and the CSSTOM el.attributeStyleMap functions (get/set/delete/has)

Fix

Fixed not being able to style coh-simple-opacity from JS via el.style.cohSimpleOpacity/via the functions of el.style/via the functions of el.attributeStyleMap for CSSTOM

Fix

Fixed not being able to style backdrop-filter from JS via el.style.backdropFilter

Fix

Fixed not being able to style coh-enable-backdrop-filter from JS via el.style.cohEnableBackdropFilter

Fix

Fixed not being able to style coh-partitioned from JS via el.style.cohPartitioned

Fix

Fixed SVG images without specified id attribute having an empty id attribute instead

Fix

Fix crash when unloading an svg used as an image before it has fully loaded

Fix

Fixed setInterval and setTimeout to work with non-positive delays correctly

Fix

Fixed line height not being applied to <input type='button'> elements with a value attribute

Fix

Fixed textarea and input elements with empty text not being sized correctly

Fix

Fixed an issue in the Vulkan backend related to creating compute shaders and causing a hang on some Android devices

Fix

Fixed an issue in the PS5 backend leading to a crash when drawing multiple views

Fix

Fixed justify-content space-around failing to align for absolute children

Fix

Fixed percent offsets on absolute elements sometimes resolving to negative values

Fix Unreal Engine

Fixed a crash when accessing nullptr element of TObjectPtr<> C-style array bound through the CohtmlUTypeBinder

Fix Unreal Engine

Fixed a crash upon uninitialization when destroying the FileSystemWriter implementation

Fix Unreal Engine

Fixed FSlateApplication::Get() assert during OnDisplayMetricsChanged on MacOS

Fix Unreal Engine

Fixed leaking User Background textures when a view gets destroyed before a WrapUserTexture call is received for them