Release notes

What’s new

Rendering

GPU tessellator

An experimental GPU tessellation algorithm has been added to Renoir. You can enable it using the --use-fill-atlas-tessellation developer option. Fill paths are pre-processed in an atlas (on the GPU), which is later used to draw the final composited texture. The control points of cubic curves are uploaded to a vertex shader, where these are rasterized. This generally improves performance at the cost of more VRAM usage. The algorithm is used only on shapes that fit in a 1024x1024 texture. Larger shapes will be handled by the previous CPU-based solution.

Migration guide

Migrating to 1.53

Experimental GPU tessellation algorithm

If you rely on a custom backend and you would like to use the --use-fill-atlas-tessellation option, your custom backend has to support the following:

  • Shader type ST_FillPathAtlas
  • Pixel shader type PST_FillPathAtlas
  • Vertex type VT_FillPathAtlas
  • Renderer capability SupportsSingleChannelMSAATextures

Two new shaders have been added for the GPU tessellation: CohFillPathAtlasVS.hlsl and CohNullPS.hlsl. Cubic curves are rasterized in the vertex shader CohFillPathAtlasVS.hlsl (refer to the comment in the file for implementation details). Since the results are stored in a stencil buffer, The pixel shader CohNullPS.hlsl is a placeholder and has no effect on the final result. PST_FillPathAtlas needs to be handled by ST_StandardTexture (see the if (shaderType == 30) branch in CohShadeGeometry.ihlsl). The vertex type VT_FillPathAtlas must have the following layout (The structure is already defined in PipelineState.h):

struct FillPathAtlasVertex
{
	float4 Points01;
	float4 Points23;
	float2 FanPoint;
	float2 ResolveLevelAndIndex;
	unsigned CBData;
};

The renderer capability SupportsSingleChannelMSAATextures indicates whether the backend supports MSAA on single channel textures. If set to false, RGBA8 textures will be allocated instead of R8.

Changelog

Version 1.53.0


Released 15 May 2024
APIAdded mipsCount member to IAsyncResourceResponse to mark how much mips a preloaded texture has
APIAltered GPUMemoryInfo structure to make it more compact
APIAdded the TextureObject in IUserResourcesListener callbacks
FeatureAdded support for tessellating SVGs on the GPU
EnhancementAdded support for HTML preloading for XmlHttpRequests and innerHTML
EnhancementAdded documentation for the View::MouseLeave API
EnhancementAdded support for the 'loadedmetadata' event to html media elements
EnhancementUnityUpdated quick start documentation with examples of how to add a view to the scene
EnhancementUnityAdded a step by step guide for localization
EnhancementAdded API to retrieve GPU memory usage information
EnhancementUnityImproved input handling for CohtmlView rendered inside a UI Canvas
EnhancementAdded support in desktop renderers (DirectX 11, DirectX12, OpenGL, Vulkan) for preloading mipmap textures
EnhancementUnityThe Unity package uses the Sony PlayStation 5 SDK 8.0
EnhancementUnityThe Unity package uses the Sony PlayStation 4 SDK 11.0
EnhancementAdded documentation for the canvas API support
EnhancementAdded origin information to warnings and errors when it is available
FixUnityFixed setting the HTTP response headers from UnityWebRequest
FixUnreal EngineFixed plugin loading issue on Linux due to a missing renoir library dependency
FixUnityFixed crash on Xbox in HDRP mode due to synchronization issue
FixFixed ascent and descent for preloaded fonts
FixFixed a crash when using the API for custom media features on different threads
FixFixed setting the prototype on custom elements getting upgraded when their class is defined
FixFixed getAnimations to return only active animations
FixFixed classList property to return the same object when available and avoid generating garbage
FixUnityFixed a crash on exit in Unity3D editor when a WebSocket connection is still active
FixFixed wrongly transitioned properties for discrete animations
FixFixed getAnimations returning animations per property instead of per animation name
FixFixed a crash when using SVG as background-image on an element with transform
FixFixed transitions with negative delay incorrectly firing transition events
FixFixed a crash if a texture for drawing is missing
FixFixed rendering of textures in samples with OpenGL when filtering is set to FilterLinear
FixFixed drawing of simple inline SVGs in cohinline paragraphs
FixFixed image resources not getting unloaded after reducing the background images count
FixFixed artifacts when using border-image with SVG
FixFixed a leak when using transitions which could have caused crashes after garbage collection
FixFixed a wrongly triggered debug assert when detaching elements with pending images
FixFixed a crash when using elementsFromPoint over pseudo elements