{"id":7272,"date":"2016-02-18T13:29:03","date_gmt":"2016-02-18T13:29:03","guid":{"rendered":"http:\/\/coherent-labs.com\/?p=7272"},"modified":"2018-02-21T15:22:57","modified_gmt":"2018-02-21T15:22:57","slug":"review-of-the-new-coherent-gt-1-7","status":"publish","type":"post","link":"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/","title":{"rendered":"Overview of the new Coherent GT 1.7"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Coherent GT 1.7 is our largest update so far and it\u2019s all about improved performance and easier integration in engines. The major change is substituting our previous rendering backend with <a href=\"http:\/\/coherent-labs.com\/blog\/introducing-renoir-graphics-library\/\" target=\"_blank\" rel=\"noopener noreferrer\">our new library <strong>Renoir<\/strong><\/a> which improves overall rendering performance <strong>15% &#8211; 70%<\/strong> depending on the UI. I\u2019ll highlight the changes and advantages that Renoir brings.<\/span><\/p>\n<p style=\"text-align: center;\"><strong>Update:<\/strong> <i>Check the latest release &#8211; <a href=\"https:\/\/coherent-labs.com\/gt-2-0-released\/\"><strong>Coherent GT 2.0<\/strong><\/a><\/i><\/p>\n<p><!--more--><\/p>\n<h4><span style=\"font-weight: 400;\">General architecture of Renoir<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">The library was built around three paradigms:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Make a \u201cthin\u201d library and move higher-level object management out of it<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Make a library that is compatible with the design of low-level APIs like DirectX 12, Vulkan, Metal etc.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Make customizing and integrating the rendering easier in any engine<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Renoir is a relatively low-level library by itself. It does minimal object or scene management &#8211; all those are moved in other subsystems of Coherent GT. This makes managing complexity much easier in Renoir and allows it to scale better with the available hardware. Renoir also powers our mobile UI product &#8211; Project Colibri for Games, so it\u2019s deployed across all modern game hardware from GLES 2 phones to PlayStation 4 and Xbox One. The core of the library is cross-platform and all the API-specific code is put in different \u201cbackends\u201d.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Conceptually Coherent GT and all other HTML5 rendering engines have two aspects to rendering &#8211; generating high-level commands (draw circle, draw rectangle, draw pattern etc.) and the execution of these commands on the actual device. We sped-up both. The generation of high-level commands happens in the main UI thread and is now ~30-50% faster because the data structures are smaller and all commands are quickly \u201cflattened\u201d in a simple array. It\u2019s a very \u201cdata-driven\u201d way to do things. The buffer does minimal error checking and no object lifetime management. \u0422his is similar to how the low-level command buffer objects work in DirectX 12, Vulkan, etc.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The Core of Renoir (on a render thread) actually takes the high-level commands and generates all that is needed for the rendering &#8211; vertex buffers, shaders etc. It also aggressively tries to batch commands to minimize state changes. Renoir is engineered with DirectX 12 in mind and it\u2019s backend API is very similar to what you\u2019ll see when implementing rendering in DirectX 12. The execution of the backend commands can be multi-threaded on APIs that allow it.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The low-level rendering commands are passed to a \u201cbackend\u201d object that has to execute them in an API-specific way. Coherent GT comes with a number of pre-created backends for OpenGL 3.3+, DirectX 9\/11\/12, GNM, GLES 2 etc. We\u2019ve made writing backends significantly easier in Renoir than it was in the previous library. Users can modify the existing backends to better integrate with their engines or write a completely new one. The shading system has also been re-worked to minimizes costly state changes.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400;\">New features and improvements<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">We have re-worked the image and resource caching scheme and now Coherent GT takes less memory both on RAM and VRAM. Users have also direct access to the internal caches of the library and can tailor them to their needs. For instance if you have a lot gradients you could benefit from increasing the cache dedicated to \u201cspecial effects\u201d.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Coherent GT now natively supports compressed textures that reduce memory footprint and increase performance. We advise developers to re-save large images in DDS with BC3 format (remember to pre-multiply) to take benefit of the feature. Large images are often needed in UI (think menu backgrounds) and using a compressed format will significantly reduce memory footprint.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Users have direct access to the source code of the rendering backends for all APIs, so they can integrate them more tightly and add their own telemetry, graphics-specific memory management etc. Coherent GT also no longer saves or restores any rendering state in the backends. Developers are in a much better place to decide which states have to be restored in their game anyway and the previous behavior often resulted in redundant state changes.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Adding special effects is much more optimized and cheaper to do now. Especially shadows and blurs as they are often used in modern game UI. Coherent GT 1.7 significantly improves their performance and introduces limits on the shadow width to prevent inadvertently creating huge blurs that hit heavily GPU performance.<\/span><\/p>\n<p>All our samples have been re-worked to use only CSS animations and we have removed the GSAP library from the samples. We advise always using CSS animations, which are evaluated by Coherent GT in C++.<\/p>\n<p><span style=\"font-weight: 400;\">We have a ton of new features in our <\/span><b>Coherent Editor <\/b><span style=\"font-weight: 400;\">including direct import from Photoshop, timeline animation editing and re-usable components called widgets. The new features are so many that we wrote a separate <a href=\"http:\/\/coherent-labs.com\/blog\/timeline-animations-and-widgets-in-coherent-editor-1-3\/\" target=\"_blank\" rel=\"noopener noreferrer\">blog post<\/a> to highlight all of them. Stay tuned.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">We are very excited about Coherent GT 1.7 and Renoir. Tell us how GT 1.7 has improved your game!<\/span><\/p>\n<div class=\"simple-text\">\n<p>Follow Stoyan on Twitter:\u00a0<a href=\"https:\/\/twitter.com\/stoyannk\">@stoyannk<\/a><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Coherent GT 1.7 is our largest update so far and it\u2019s all about improved performance and easier integration in engines. The major change is substituting our previous rendering backend with our new library Renoir which improves overall rendering performance 15% &#8211; 70% depending on the UI. I\u2019ll highlight the changes and advantages that Renoir brings. [&hellip;]<\/p>\n","protected":false},"author":18,"featured_media":9753,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[407],"tags":[142,151,181,238],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Overview of Coherent GT 1.7, one of best HTML5 rendering engines<\/title>\n<meta name=\"description\" content=\"Overview of Coherent GT 1.7, a new release of one of best HTML5 rendering engines. Read how our Renoir library is improving rendering performance.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Overview of Coherent GT 1.7, one of best HTML5 rendering engines\" \/>\n<meta property=\"og:description\" content=\"Overview of Coherent GT 1.7, a new release of one of best HTML5 rendering engines. Read how our Renoir library is improving rendering performance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/\" \/>\n<meta property=\"og:site_name\" content=\"Coherent Labs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/CoherentLabs\/\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-18T13:29:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-02-21T15:22:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/coherent-labs.com\/posts\/wp-content\/uploads\/2016\/02\/stencil.blog-post-feature-11.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Alexandra\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CoherentLabs\" \/>\n<meta name=\"twitter:site\" content=\"@CoherentLabs\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alexandra\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/\",\"url\":\"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/\",\"name\":\"Overview of Coherent GT 1.7, one of best HTML5 rendering engines\",\"isPartOf\":{\"@id\":\"https:\/\/coherent-labs.com\/posts\/#website\"},\"datePublished\":\"2016-02-18T13:29:03+00:00\",\"dateModified\":\"2018-02-21T15:22:57+00:00\",\"author\":{\"@id\":\"https:\/\/coherent-labs.com\/posts\/#\/schema\/person\/b0252689790c3d1c9036209533d03791\"},\"description\":\"Overview of Coherent GT 1.7, a new release of one of best HTML5 rendering engines. Read how our Renoir library is improving rendering performance.\",\"breadcrumb\":{\"@id\":\"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/coherent-labs.com\/posts\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Overview of the new Coherent GT 1.7\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/coherent-labs.com\/posts\/#website\",\"url\":\"https:\/\/coherent-labs.com\/posts\/\",\"name\":\"Coherent Labs\",\"description\":\"Cross-Platform Game UI Middleware\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/coherent-labs.com\/posts\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/coherent-labs.com\/posts\/#\/schema\/person\/b0252689790c3d1c9036209533d03791\",\"name\":\"Alexandra\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/coherent-labs.com\/posts\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/687476ba742eac5c6da76b305bc4004b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/687476ba742eac5c6da76b305bc4004b?s=96&d=mm&r=g\",\"caption\":\"Alexandra\"},\"url\":\"https:\/\/coherent-labs.com\/posts\/author\/alexandra\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Overview of Coherent GT 1.7, one of best HTML5 rendering engines","description":"Overview of Coherent GT 1.7, a new release of one of best HTML5 rendering engines. Read how our Renoir library is improving rendering performance.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/","og_locale":"en_US","og_type":"article","og_title":"Overview of Coherent GT 1.7, one of best HTML5 rendering engines","og_description":"Overview of Coherent GT 1.7, a new release of one of best HTML5 rendering engines. Read how our Renoir library is improving rendering performance.","og_url":"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/","og_site_name":"Coherent Labs","article_publisher":"https:\/\/www.facebook.com\/CoherentLabs\/","article_published_time":"2016-02-18T13:29:03+00:00","article_modified_time":"2018-02-21T15:22:57+00:00","og_image":[{"width":1200,"height":600,"url":"https:\/\/coherent-labs.com\/posts\/wp-content\/uploads\/2016\/02\/stencil.blog-post-feature-11.jpg","type":"image\/jpeg"}],"author":"Alexandra","twitter_card":"summary_large_image","twitter_creator":"@CoherentLabs","twitter_site":"@CoherentLabs","twitter_misc":{"Written by":"Alexandra","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/","url":"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/","name":"Overview of Coherent GT 1.7, one of best HTML5 rendering engines","isPartOf":{"@id":"https:\/\/coherent-labs.com\/posts\/#website"},"datePublished":"2016-02-18T13:29:03+00:00","dateModified":"2018-02-21T15:22:57+00:00","author":{"@id":"https:\/\/coherent-labs.com\/posts\/#\/schema\/person\/b0252689790c3d1c9036209533d03791"},"description":"Overview of Coherent GT 1.7, a new release of one of best HTML5 rendering engines. Read how our Renoir library is improving rendering performance.","breadcrumb":{"@id":"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/coherent-labs.com\/posts\/review-of-the-new-coherent-gt-1-7\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/coherent-labs.com\/posts\/"},{"@type":"ListItem","position":2,"name":"Overview of the new Coherent GT 1.7"}]},{"@type":"WebSite","@id":"https:\/\/coherent-labs.com\/posts\/#website","url":"https:\/\/coherent-labs.com\/posts\/","name":"Coherent Labs","description":"Cross-Platform Game UI Middleware","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/coherent-labs.com\/posts\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/coherent-labs.com\/posts\/#\/schema\/person\/b0252689790c3d1c9036209533d03791","name":"Alexandra","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/coherent-labs.com\/posts\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/687476ba742eac5c6da76b305bc4004b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/687476ba742eac5c6da76b305bc4004b?s=96&d=mm&r=g","caption":"Alexandra"},"url":"https:\/\/coherent-labs.com\/posts\/author\/alexandra\/"}]}},"_links":{"self":[{"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/posts\/7272"}],"collection":[{"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/comments?post=7272"}],"version-history":[{"count":8,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/posts\/7272\/revisions"}],"predecessor-version":[{"id":14623,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/posts\/7272\/revisions\/14623"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/media\/9753"}],"wp:attachment":[{"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/media?parent=7272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/categories?post=7272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coherent-labs.com\/posts\/wp-json\/wp\/v2\/tags?post=7272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}