Release Notes 2.0.0
What’s new
Section titled “What’s new”Content Development
Section titled “Content Development”Data Binding Performance Tracing
Section titled “Data Binding Performance Tracing”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
Simple Filters
Section titled “Simple Filters”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
Rendering
Section titled “Rendering”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.
Global GPU Resources Pool
Section titled “Global GPU Resources Pool”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:
Unreal Engine
Section titled “Unreal Engine”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.
Migration guide
Section titled “Migration guide”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.
Changelog
Section titled “Changelog”Version 2.0.0.0
Section titled “Version 2.0.0.0”| API | Added |
| 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 |
| 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 |
| 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 |
| Enhancement | Added a warning when setting invalid value using the |
| Enhancement | Improved warning message with more information when setting invalid values |
| Enhancement | Log warning when trying to remove a non-existing property via |
| Enhancement | Enhanced warnings for unsupported |
| Enhancement | Added support for binding |
| Enhancement | Added support for using |
| Enhancement | Added |
| Enhancement |
|
| 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 |
| 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 |
| Enhancement Unreal Engine | Add Delegates to modify |
| 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 |
| Fix | Fixed getting inline styles with custom expressions in them for |
| 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 |
| 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 |
| Fix | Fixed reifying of |
| Fix | Fixed reifying of |
| Fix | Removed commas between color components in computed style of |
| Fix | Fixed text-align sometimes not working when parent container grows because of sibling |
| Fix | Stop logging |
| Fix | Fixed JS Styling bugs for |
| Fix | Fixed default inline styles for properties to return empty strings instead of default computed styles for shorthand or |
| Fix | Fixed setting |
| Fix | Fixed an assert when trying to remove all property inline style by setting it to empty style value |
| Fix | Removed leading whitespace in |
| 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 |
| Fix | Fixed JS APIs for modifying/getting styles not working for missing properties |
| Fix | Fixed |
| Fix | Fixed not being able to style |
| Fix | Fixed not being able to style |
| Fix | Fixed not being able to style |
| Fix | Fixed not being able to style |
| 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 |
| 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 |
| Fix Unreal Engine | Fixed a crash upon uninitialization when destroying the |
| Fix Unreal Engine | Fixed |
| Fix Unreal Engine | Fixed leaking User Background textures when a view gets destroyed before a |
© 2026 Coherent Labs. All rights reserved.