Release notes
On this page
Changelog
Version 1.27.0.2
Released 04 May 2022
Feature | Implemented the DOMContentLoaded event |
Feature | The page load event fires after all images are loaded, including images specified in styles |
FeatureUnreal Engine | Preview support for Unreal Engine 5. Known issues include rendering artifacts on Nintendo Switch and iOS and video playback on game consoles |
FeatureUnity | Implement Input event propagation handler |
Feature | Implement an optimization for constant buffers to reduce number of updates and memory used. |
Enhancement | Fixed increasing memory when changing the style attribute or its properties |
EnhancementUnity | Add new sample to demonstrate the input events handling propagation |
Enhancement | Documented how to avoid banding in gradients |
Enhancement | Documented animation, chat and map JavaScript libraries support |
Enhancement | Add different semantics for null and undefined in the C++ bindings |
Enhancement | Implemented the animationstart and transitionstart events. |
Enhancement | Added propertyName to transition events. |
Enhancement | Added animationName to animation events. |
Fix | Fixed 9-slice and wrong image repeat in some cases |
Fix | Fixed calling pushState and replaceState History APIs without URL |
Fix | Fixed possible frame delay when drawing a new image from an atlas |
Fix | Fixed firing animationend event more than once for certain animations |
Fix | Fixed flickering artifacts caused by negated scaling for path objects (used by clip-path, clip-polygon, etc.) |
Fix | Fixed a crash in ClipboardData::Set when called nullptr string or invalid length |
Fix | Fixed custom elements reaction callbacks invocation order |
Fix | Fixed deferred scripts execution order |
Fix | Fixed WebAnimations API to return current frame time instead of the previous frame time |
Fix | Fixed document.readyState to report the document state correctly no matter when it is queried |
Fix | Fixed leaking WebSocket connections in the Player app |
Fix | Fixed nodes ignoring scroll set via JavaScript on the first frame |
Fix | Fixed transitions not activating on elements with pseudo elements |
Fix | Fixed transition state breaking when cloning nodes with JavaScript |
Fix | Fixed duplicated Inspector and Mutation Observer events on element inlineStyle change |
Fix | Fixed absolute element positioning when size is defined |
Fix | Fixed the animationend event to be fired once per animation instead of per property. |
Fix | Fixed a race condition when multithreaded command processing was enabled. |
Fix | Fixed a crash when destroying GPU buffers (vertices & indices). |
API | Removed forceStyleResolve option from GetAnimationsOptions, getAnimations now works by standard |
API | Deprecated ReadNull in favor of SkipValue in the cohtml::Binder |
Migration guide
Changed enumerations naming
In this version to add more consistency in naming between shaders and C++ code, we made some changes in CBType
(for available Constant Buffers) and ShaderType
(for available shaders) enumerations.
In CBType
:
// Vertex constant buffers
CB_Transforms -> CB_TransformVS
CB_RenoirShaderVS -> CB_RenoirShaderParamsVS
// Pixel constant buffers
CB_GlobalPixel -> CB_GlobalDataPS
CB_StandardPrimitivePixel -> CB_StandardPrimitivePS
CB_StandardPrimitiveAdditionalPixel -> CB_StandardPrimitiveAdditionalPS
CB_EffectsPixel -> CB_EffectsPS
CB_RenoirShaderPS -> CB_RenoirShaderParamsPS
In ShaderType
ST_BatchedStandard -> ST_StandardBatched
ST_BatchedStandardTexture -> ST_StandardBatchedTexture
ST_TexturesWithColorMix -> ST_ColorMixing
ST_GenerateSDFOutline -> ST_GenerateSDF
ST_Clipping -> ST_ClipMask
We have changed the naming of the constant buffers in the shaders in order to be consistent with the enumerations, so you should get the latest shaders to run the latest backend.
Constant buffer usage optimization
Sometimes before some draws there might be constant buffer updates which actually are not used at all in the current draw. We wanted to optimize those cases, so we’ve implemented a feature which updates the constant buffer only if it exists in the shader in the next draw.
FillCaps
method. If you have any changes to this mapping please use our developer option --disableCBUpdateOptimization
to disable the optimization. Otherwise, you will not receive all constant buffer updates correctly.