Skip to content

Latest commit

 

History

History
1300 lines (881 loc) · 59 KB

README.md

File metadata and controls

1300 lines (881 loc) · 59 KB

Version 0.8

glTF is the runtime asset format for WebGL, OpenGL ES, and OpenGL.

This is a draft specification; it is incomplete and may change before ratification. We've made it available early in the spirit of transparency to receive early community feedback. Please create issues with your feedback.

Editors

  • Patrick Cozzi, Analytical Graphics, Inc. and University of Pennsylvania
  • Remi Arnaud, AMD
  • Tony Parisi, Vizi

Previous Editor and Incubator: Fabrice Robinet, Individual Contributor

Contents

glTF, the GL Transmission Format, is the runtime asset format for the GL APIs: WebGL, OpenGL ES, and OpenGL. glTF bridges the gap between formats used by modeling tools and the GL APIs.

There are industry-standard interchange formats, namely COLLADA, that allow sharing assets between modeling tools and within the content pipeline in general. However, these formats are not optimized for size or runtime use and neither are modeling-tool-specific formats. At runtime, an application wishing to render an asset needs to do a significant amount of processing to transform the asset's content into data appropriate for the GL APIs.

Applications seeking high-performance, such as games, rarely load interchange or modeling-tool-specific formats directly; instead, they process the model offline as part of a content pipeline to convert the asset to a proprietary format optimized for their runtime application. This has lead to a fragmented market of incompatible proprietary runtime formats and duplicate efforts in content pipeline tools. glTF solves this by providing an extensible open-standard runtime format that can be rendered with minimal processing, along with open-source pipeline tools, that, while not part of the glTF specification, provide the ecosystem of freely-available tools necessary to facilitate adoption of glTF. In particular, COLLADA2GLTF converts COLLADA assets to glTF.

Another perspective that motivates glTF is that 3D is the last media type without a standard codec. Audio has mp3. Video has H.264. Images have png and jpg. What does 3D content have? The variety of use cases and complexity of 3D asset types have left 3D without a standard codec. A cross-vendor standard will allow for portable, reusable content, unified asset repositories and archives, and enable optimized codec implementations in hardware and software.

Non-normative: the COLLADA Working Group is developing partnerships to define the codec options for geometry compression. glTF defines the node hierarchy, materials, animations, and geometry, and will reference the external compression specs.

Concretely, a glTF asset is represented by:

  • JSON-formatted file (.gltf) containing the node hierarchy, materials, and cameras
  • Binary files (.bin) containing geometry and animations
  • Image files (.jpg, .png, etc.) for textures
  • GLSL text files (.glsl) for GLSL source code for individual stages

Binary, image, and GLSL files can also be embedded directly into the JSON using data URIs.

MIME types

  • *.gltf files use model/vnd.gltf+json
  • *.bin files use application/octet-stream
  • *.glsl files use text/plain
  • Texture files use the official image/* type based on the specific image format.

For a simple example, see the converted COLLADA duck model.

Finally, glTF is not part of COLLADA, that is, it is not a COLLADA profile. It is its own specification with many designs borrowed from COLLADA and simplified.

# Acknowledgments
  • Brandon Jones, for the first version of Three.js loader and all his support in the early days of this project.
  • Tom Fili, Analytical Graphics, Inc.
  • Scott Hunter, Analytical Graphics, Inc.
  • Ed Mackey, Analytical Graphics, Inc.
# References