Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename EXT_binary_glTF to KHR_binary_glTF #413

Merged
merged 5 commits into from
Sep 17, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# EXT_binary_glTF
# KHR_binary_glTF

## Contributors

Expand All @@ -8,6 +8,10 @@
* Max Limper, Fraunhofer IGD, [@mlimper_cg](https://twitter.com/mlimper_cg)
* Maik Thöner, Fraunhofer IGD, [@mthoener](https://twitter.com/mthoener)

## Status

Draft (not ratified yet)

## Dependencies

Written against the glTF draft 1.0 spec.
Expand Down Expand Up @@ -102,18 +106,18 @@ Its `type` property is `"arraybuffer"`, and a runtime can ignore the `uri` prope
When a runtime encounters this buffer, it should use the Binary glTF `body` as the buffer.
`bufferViews` that reference this `buffer` work as usual.

To support embedded shaders and images, `shader` and `image` glTF properties have new `EXT_binary_glTF` extension properties that should be used instead of the `uri` property.
To support embedded shaders and images, `shader` and `image` glTF properties have new `KHR_binary_glTF` extension properties that should be used instead of the `uri` property.
See Listings 2 and 3.

**Listing 2**: A `shader` referencing a `bufferView` to access an embedded shader source.
```javascript
"extensionsUsed" : [
"EXT_binary_glTF"
"KHR_binary_glTF"
]
// ...
"a_shader" : {
"extensions" : {
"EXT_binary_glTF" : {
"KHR_binary_glTF" : {
"bufferView" : // ...
}
}
Expand All @@ -123,12 +127,12 @@ See Listings 2 and 3.
**Listing 3**: An `image` referencing a `bufferView` and with metadata useful for loading the image from the arraybuffer. In JavaScript, `Blob` can be used as the source for an `Image` to extract an image from the arraybuffer (see Cesium's [`loadImageFromTypedArray`](https://github.com/AnalyticalGraphicsInc/cesium/blob/1.13/Source/Core/loadImageFromTypedArray.js) helper function).
```javascript
"extensionsUsed" : [
"EXT_binary_glTF"
"KHR_binary_glTF"
]
// ...
"an_image" : {
"extensions" : {
"EXT_binary_glTF" : {
"KHR_binary_glTF" : {
"bufferView" : // ...,
"mimeType" : "image/png",
"height" : 256,
Expand All @@ -140,10 +144,10 @@ See Listings 2 and 3.

### JSON Schema

For full details on the `EXT_binary_glTF` extension properties, see the schema:
For full details on the `KHR_binary_glTF` extension properties, see the schema:

* [image](schema/EXT_binary_glTF.image.schema.json) `EXT_binary_glTF` extensions object
* [shader](schema/EXT_binary_glTF.shader.schema.json) `EXT_binary_glTF` extensions object
* [image](schema/KHR_binary_glTF.image.schema.json) `KHR_binary_glTF` extensions object
* [shader](schema/KHR_binary_glTF.shader.schema.json) `KHR_binary_glTF` extensions object

## File Extension

Expand Down Expand Up @@ -178,7 +182,7 @@ Use `model/gltf+binary`.

_This section is non-normative._

Based on experimentation (below & [[1]](#BenchData)) using CESIUM_binary_glTF (only trivial differences to EXT_binary_glTF) and the glTF loader in Cesium 1.10, different configurations are recommended for different scenarios.
Based on experimentation (below & [[1]](#BenchData)) using CESIUM_binary_glTF (only trivial differences to KHR_binary_glTF) and the glTF loader in Cesium 1.10, different configurations are recommended for different scenarios.

* To minimize file size and number of files, use Binary glTF (gzipped), and external compressed image files (PNG, JPEG, etc.) to avoid significant decompression overhead.
* If a single file is desired, use Binary glTF (gzipped) with all files embedded.
Expand Down
4 changes: 2 additions & 2 deletions extensions/Prefixes.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ The following extension prefixes are reserved:

* `CESIUM` - Cesium extensions
* `EXT` - Multi-vendor extensions
* `KHR` - Ratified Khronos extensions
* `KHR` - Ratified or intended-to-be-ratified Khronos extensions

To request a prefix, submit a [GitHub issue](https://github.com/KhronosGroup/glTF/issues/) with the name of the requested prefix and the vendor that will be using it. Assign the `extension` label to the issue.
To request a prefix, submit a [GitHub issue](https://github.com/KhronosGroup/glTF/issues/new) with the name of the requested prefix and the vendor that will be using it. Assign the `extension` label to the issue.
20 changes: 11 additions & 9 deletions extensions/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
# glTF Extension Registry

## Multi-vendor extensions
## Draft Khronos extensions

* [EXT_binary_glTF](MultiVendor/EXT_binary_glTF/README.md)
_Draft Khronos extensions are not ratified yet._

* [KHR_binary_glTF](Khronos/KHR_binary_glTF/README.md)

## Vendor extensions

Expand All @@ -19,7 +21,7 @@ All glTF object properties (see [glTFProperty.schema.json](https://github.com/Kh
Extensions can't remove existing glTF properties or redefine existing glTF properties to mean something else.

Examples include:
* **New properties**: `EXT_binary_glTF` introduces a `bufferView` property for shaders, e.g.,
* **New properties**: `KHR_binary_glTF` introduces a `bufferView` property for shaders, e.g.,
```javascript
"a_shader" : {
"extensions" : {
Expand All @@ -30,13 +32,13 @@ Examples include:
}
```
* **New parameter semantics**: `CESIUM_RTC` introduces the `CESIUM_RTC_MODELVIEW` semantic.
* **Reserved ids**: `EXT_binary_glTF` introduces an explicitly named `buffer` called `binary_glTF`.
* **New container formats**: `EXT_binary_glTF` introduces a binary format that contains the glTF JSON and geometry, textures, etc.
* **Reserved ids**: `KHR_binary_glTF` introduces an explicitly named `buffer` called `binary_glTF`.
* **New container formats**: `KHR_binary_glTF` introduces a binary format that contains the glTF JSON and geometry, textures, etc.

All extensions used in a model are listed as strings in the top-level `extensionsUsed` array, e.g.,
```javascript
"extensionsUsed" : [
"EXT_binary_glTF"
"KHR_binary_glTF"
]
```
This allows an engine to quickly determine if it supports the extensions needed to render the model without inspecting the the `extensions` property of all objects.
Expand All @@ -51,7 +53,7 @@ Extensions start as a vendor extension, then can become a multi-vendor extension

### Vendor Extensions

A list of vendor prefixes is maintained in [Prefixes.md](Prefixes.md). Any vendor, not just Khronos members, can request an extension prefix by submitting an [issue on GitHub](https://github.com/KhronosGroup/glTF/issues/) requesting one. Requests should include:
A list of vendor prefixes is maintained in [Prefixes.md](Prefixes.md). Any vendor, not just Khronos members, can request an extension prefix by submitting an [issue on GitHub](https://github.com/KhronosGroup/glTF/issues/new) requesting one. Requests should include:
* The name of the prefix.
* The name of the vendor using the prefix.
* The `extension` GitHub label.
Expand All @@ -62,13 +64,13 @@ Vendor extensions are not covered by the Khronos IP framework.

### Multi-Vendor Extensions

When an extension is implemented by more than one vendor, its name can use the reserved `EXT` prefix. To promote a vendor extension to a multi-vendor extension, open a pull request labled `extension` that contains a new copy of the extension (even if there aren't any changes) with the new name using the `EXT` prefix, e.g., `EXT_binary_glTF`.
When an extension is implemented by more than one vendor, its name can use the reserved `EXT` prefix. To promote a vendor extension to a multi-vendor extension, open a pull request labled `extension` that contains a new copy of the extension (even if there aren't any changes) with the new name using the `EXT` prefix, e.g., `KHR_binary_glTF`.

Multi-vendor extensions are not covered by the Khronos IP framework.

### Khronos Extensions

Khronos extensions use the reserved `KHR` prefix and are ratified by Khronos and therefore are covered by the Khronos IP framework. Khronos members can submit an extension for ratification, which is then voted on by the Khronos Board of Promoters.
Khronos extensions use the reserved `KHR` prefix and are ratified by Khronos and therefore are covered by the Khronos IP framework. Extensions that are intended to be ratified can also use the `KHR` prefix to avoid name/code/version thrashing. Khronos members can submit an extension for ratification, which is then voted on by the Khronos Board of Promoters.

## Extensions vs. Extras

Expand Down
4 changes: 4 additions & 0 deletions extensions/Template.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@

* TODO: Name, affiliation, and contact info for each contributor

## Status

TODO: Draft or Stable

## Dependencies

Written against the glTF draft 1.0 spec.
Expand Down
4 changes: 4 additions & 0 deletions extensions/Vendor/CESIUM_RTC/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
* Patrick Cozzi, Cesium, [@pjcozzi](https://twitter.com/pjcozzi)
* Tom Fili, Cesium, [@CesiumFili](https://twitter.com/CesiumFili)

## Status

Stable

## Dependencies

Written against the glTF draft 1.0 spec.
Expand Down