text: The Khronos Group has finalized the glTF 2.0 specification, and they recommend that interested parties integrate this 3D scene format into their content pipeline starting now. It’s ready.
  glTF is a format to deliver 3D content, especially full scenes, in a compact and quick-loading data structure. These features differentiate glTF from other 3D formats, like Autodesk’s FBX and even the Khronos Group’s Collada, which are more like intermediate formats between tools, such as 3D editing software (ex: Maya and Blender) and game engines. They don’t see a competing format for final scenes that are designed to be ingested directly, quick and small.
  glTF 2.0 makes several important changes.
  The previous version of glTF was based on a defined GLSL material, which limited how it could be used, although it did align with WebGL at the time (and that spurred some early adoption). The new version switches to Physically Based Rendering (PBR) workflows to define their materials, which has a few advantages.
  First, PBR can represent a wide range of materials with just a handful of parameters. Rather than dictating a specific shader, the data structure can just… structure the data. The industry has settled on two main workflows, metallic-roughness and specular-gloss, and glTF 2.0 supports them both. (Metallic-roughness is the core workflow, but specular-gloss is provided as an extension, and they can be used together in the same scene. Also, during the briefing, I noticed that transparency was not explicitly mentioned in the slide deck, but the Khronos Group confirmed that it is stored as the alpha channel of the base color, and thus supported.) Because the format is now based on existing workflows, the implementation can be programmed in OpenGL, Vulkan, DirectX, Metal, or even something like a software renderer. In fact, Microsoft was a specification editor on glTF 2.0, and they have publicly announced using the format in their upcoming products.
  The original GLSL material, from glTF 1.0, is available as an extension (for backward compatibility).
  A second advantage of PBR is that it is lighting-independent. When you define a PBR material for an object, it can be placed in any environment and it will behave as expected. Noticeable, albeit extreme examples of where this would have been useful are the outdoor scenes of Doom 3, and the indoor scenes of Battlefield 2. It also simplifies asset creation. Some applications, like Substance Painter and Quixel, have artists stencil materials onto their geometry, like gold, rusted iron, and scuffed plastic, and automatically generate the appropriate textures. It also aligns well with deferred rendering, see below, which performs lighting as a post-process step and thus skip pixels (fragments) that are overwritten.
  PBR Deferred Buffers in Unreal Engine 4 Sun Temple.
  Lighting is applied to these completed buffers, not every fragment.
  glTF 2.0 also improves support for complex animations by adding morph targets. Most 3D animations, beyond just moving, rotating, and scaling whole objects, are based on skeletal animations. This method works by binding vertexes to bones, and moving, rotating, and scaling a hierarchy of joints. This works well for humans, animals, hinges, and other collections of joints and sockets, and it was already supported in glTF 1.0. Morph targets, on the other hand, allow the artist to directly control individual vertices between defined states. This is often demonstrated with a facial animation, interpolating between smiles and frowns, but, in an actual game, this is often approximated with skeletal animations (for performance reasons). Regardless, glTF 2.0 now supports morph targets, too, letting the artists make the choice that best suits their content.
  Speaking of performance, the Khronos Group is also promoting “enhanced performance” as a benefit of glTF 2.0. I asked whether they have anything to elaborate on, and they responded with a little story. While glTF 1.0 validators were being created, one of the engineers compiled a list of design choices that would lead to minor performance issues. The fixes for these were originally supposed to be embodied in a glTF 1.1 specification, but PBR workflows and Microsoft’s request to abstract the format away from GLSL lead to glTF 2.0, which is where the performance optimization finally ended up. Basically, there wasn’t just one or two changes that made a big impact; it was the result of many tiny changes that add up.
  Also, the binary version of glTF is now a core feature in glTF 2.0.
  The slide looks at the potential future of glTF, after 2.0.
  Looking forward, the Khronos Group has a few items on their glTF roadmap. These did not make glTF 2.0, but they are current topics for future versions. One potential addition is mesh compression, via the Google Draco team, to further decrease file size of 3D geometry. Another roadmap entry is progressive geometry streaming, via Fraunhofer SRC, which should speed up runtime performance.
  Yet another roadmap entry is “Unified Compression Texture Format for Transmission”, specifically Basis by Binomial, for texture compression that remains as small as possible on the GPU. Graphics processors can only natively operate on a handful of formats, like DXT and ASTC, so textures need to be converted when they are loaded by an engine. Often, when a texture is loaded at runtime (rather than imported by the editor) it will be decompressed and left in that state on the GPU. Some engines, like Unity, have a runtime compress method that converts textures to DXT, but the developer needs to explicitly call it and the documentation says it’s lower quality than the algorithm used by the editor (although I haven’t tested this). Suffices to say, having a format that can circumvent all of that would be nice.
  Again, if you’re interested in adding glTF 2.0 to your content pipeline, then get started. It’s ready. Microsoft is doing it, too.
  Share:
  Video News
  PreviousComputex 2017: Phanteks Puts the Tower in Tower Style Cases With SFF Evolv Shift and Shift X
  NextECS LIVA Z Review: Fanless Apollo Lake Mini PC
  About The Author
  Scott Michaud
  Scott joined PC Perspective in May 2011. Prior to PC Perspective, Scott has worked on personal projects and has completed degrees in Physics and Education from Queen's University. While he does not write for other hardware sites, Scott works full-time as a software developer for Eliot Research & Consulting. He is also a geek, go figure.
  Related Posts
  Skype Deprecates Several Platforms
  June 6, 2017
  Everything old made new again, Intellivision is coming back
  May 30, 2018
  Podcast #181 – Hybrid Storage Roundup, the ASUS US36SD-XA1 notebook, News of the week and more!
  December 8, 2011
  “We’re going to open a can of whoop ass”
  April 11, 2008
  1 Comment
  psuedonymous on June 8, 2017 at 4:47 pm
  Ugh, flashbacks of wrangling
  Ugh, flashbacks of wrangling with OSG and OpenSceneGraph.
  Reply
  Leave a reply Cancel reply
  Your email address will not be published. Required fields are marked *
  COMMENT
  Name *
  Email *
  Δ
  This site uses Akismet to reduce spam. Learn how your comment data is processed.
  Search for:
  Latest Podcasts
  Archive & Timeline
  Previous 12 months
  Select Month December 2022 November 2022 October 2022 September 2022 August 2022 July 2022 June 2022 May 2022 April 2022 March 2022 February 2022 January 2022
  Explore: All The Years!
  Shop new Deals of the Day at GameStop.com!
  User login status
  Log in
  Register
  Lost password?
  Home
  News
  Reviews
  Podcasts
  PCPer Live
  Categories
  Categories Select Category Cases and Cooling Chipsets Displays Editorial General Tech Graphics Cards Memory Mobile Motherboards Networking Processors Shows and Expos Storage Systems
  Privacy Policy
  User Agreement
  About
  User login status
  Log in
  Register
  Lost password?
  PCPer Patron
  Support PC Perspective on Patreon!
  Copyright © PC Perspective 2000-2022
  <# if ( data.meta.album ) { #>{{ data.meta.album }}<# } #> <# if ( data.meta.artist ) { #>{{ data.meta.artist }}<# } #>
  <# if ( data.artists && data.meta.artist ) { #> — {{ data.meta.artist }} <# } #> <# } #> <# if ( data.meta.length_formatted ) { #>