From 95d1828dc4ac8d3586d3c4d03e11e18864c1ce47 Mon Sep 17 00:00:00 2001 From: Bernard Kwok Date: Tue, 17 Sep 2024 14:15:15 -0400 Subject: [PATCH] Merge update. (#2440) * KHR_materials_ior: Minor typo: plural instead of singular (#2413) * Update anisotropy extension spec (#2409) * Clarify and simplify formula for attenuation. (#2414) * Add TRACE prefix (#2417) * Update clearcoat extension spec (#2415) * Update README. (#2427) * Add KHR_node_hoverability (#2428) * Add KHR_node_hoverability * Resort extension list * EXT_mesh_gpu_instancing: Suggest extensionRequired usage (#2405) * Add button/link to glTF Discord (#2429) As there is a lot more traffic to the Khronos glTF Discord than there is to Slack, a button pointing users to Discord will be helpful. --------- Co-authored-by: Andreas Atteneder Co-authored-by: Alexey Knyazev <3479527+lexaknyazev@users.noreply.github.com> Co-authored-by: Ed Mackey Co-authored-by: Marco Hutter Co-authored-by: Khronos Group Web Services Co-authored-by: Arseny Kapoulkine Co-authored-by: James Riordon --- README.md | 3 +- .../KHR_materials_anisotropy/README.md | 18 ++-- ...erial.KHR_materials_anisotropy.schema.json | 6 +- .../Khronos/KHR_materials_clearcoat/README.md | 6 ++ .../2.0/Khronos/KHR_materials_ior/README.md | 2 +- .../Khronos/KHR_materials_volume/README.md | 10 +- .../Vendor/EXT_mesh_gpu_instancing/README.md | 2 + extensions/Prefixes.md | 1 + extensions/README.md | 93 ++++++++++++------- 9 files changed, 91 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 26a1f7aad6..fa6c8287ff 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,9 @@ SPDX-License-Identifier: CC-BY-4.0

-[![Join the Slack group](https://img.shields.io/badge/chat-on%20slack-blue.svg)](https://www.khr.io/slack) +[![Join glTF Discord](https://img.shields.io/badge/discuss-on%20discord-blue.svg)](https://khr.io/khrdiscord) [![Join the forums](https://img.shields.io/badge/discuss-in%20forums-blue.svg)](https://community.khronos.org/c/gltf-general) +[![Join the Slack group](https://img.shields.io/badge/chat-on%20slack-blue.svg)](https://www.khr.io/slack) glTF™ (GL Transmission Format) is a royalty-free specification for the efficient transmission and loading of 3D scenes and models by applications. glTF minimizes both the size of 3D assets, and the runtime processing needed to unpack and use those assets. glTF defines an extensible, common publishing format for 3D content tools and services that streamlines authoring workflows and enables interoperable use of content across the industry. diff --git a/extensions/2.0/Khronos/KHR_materials_anisotropy/README.md b/extensions/2.0/Khronos/KHR_materials_anisotropy/README.md index 3075483a23..80ae5e996e 100644 --- a/extensions/2.0/Khronos/KHR_materials_anisotropy/README.md +++ b/extensions/2.0/Khronos/KHR_materials_anisotropy/README.md @@ -64,18 +64,24 @@ Sample values: | | Type | Description | Required | | ----------------------- | -------- | ------------------------- | ------------------ | -| **anisotropyStrength** | `number` | The anisotropy strength. When anisotropyTexture is present, this value is multiplied by the blue channel. | No, default: `0.0` | -| **anisotropyRotation** | `number` | The rotation of the anisotropy in tangent, bitangent space, measured in radians counter-clockwise from the tangent. When anisotropyTexture is present, anisotropyRotation provides additional rotation to the vectors in the texture. | No, default: `0.0` | -| **anisotropyTexture** | [`textureInfo`](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#reference-textureinfo) | The anisotropy texture. Red and green channels represent the anisotropy direction in [-1, 1] tangent, bitangent space, to be rotated by anisotropyRotation. The blue channel contains strength as [0, 1] to be multiplied by anisotropyStrength. | No | +| **anisotropyStrength** | `number` | The anisotropy strength. When the anisotropy texture is present, this value is multiplied by the texture's blue channel. | No, default: `0.0` | +| **anisotropyRotation** | `number` | The rotation of the anisotropy in tangent, bitangent space, measured in radians counter-clockwise from the tangent. When the anisotropy texture is present, this value provides additional rotation to the vectors in the texture. | No, default: `0.0` | +| **anisotropyTexture** | [`textureInfo`](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#reference-textureinfo) | The anisotropy texture. Red and green channels represent the anisotropy direction in $[-1, 1]$ tangent, bitangent space to be rotated by the anisotropy rotation. The blue channel contains strength as $[0, 1]$ to be multiplied by the anisotropy strength. | No | ## Anisotropy Two new material properties are introduced: a strength parameter and the direction in which the specular reflection elongates relative to the surface tangents. -The strength parameter is a dimensionless number in the range `[0, 1]` and increases the roughness along a chosen direction. The default direction aligns with the tangent to the mesh as described in the glTF 2.0 specification, [Meshes section](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#meshes). +The strength parameter is a dimensionless number in the range $[0, 1]$ and increases the roughness along a chosen direction. The default direction aligns with the tangent to the mesh as described in the glTF 2.0 specification, [Meshes section](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#meshes). -All meshes with materials that use anisotropy **SHOULD** supply `TANGENT` vectors as a mesh attribute. If `TANGENT` vectors are not supplied for such a mesh, the mesh **MUST** supply a `normalTexture`, and tangents are computed according to rules in the [Meshes section](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#meshes) of the glTF specification. Likewise when `TANGENT` vectors are not supplied for a mesh, the mesh **MUST NOT** supply different texture coordinates on the `normalTexture` and `anisotropyTexture`. +A mesh primitive using an anisotropy material **MUST** have a defined tangent space, i.e., it **MUST** have `NORMAL` and `TANGENT` attributes or its base material **MUST** have a normal texture. When the mesh primitive does not have `NORMAL` or `TANGENT` vectors, they are computed as defined in the glTF 2.0 specification. -The `anisotropyTexture`, when supplied, encodes XY components of the direction vector in tangent space as red and green values, and strength as blue values, all stored with linear transfer function. After dequantization, red and green texel values **MUST** be mapped as follows: red [0.0 .. 1.0] to X [-1 .. 1], green [0.0 .. 1.0] to Y [-1 .. 1]. Blue does not require remapping. When `anisotropyTexture` is not supplied, the default value is red 1.0 (X 1.0), green 0.5 (Y 0.0), and blue 1.0 (strength 1.0). The direction of this XY vector specifies the per-texel direction of increased anisotropy roughness in tangent, bitangent space, prior to being rotated by `anisotropyRotation`. The blue channel contains strength as [0.0 .. 1.0] to be multiplied by `anisotropyStrength` to determine the per-texel anisotropy strength. +Since the glTF 2.0 specification does not mandate any particular tangent space derivation algorithm, mesh primitives using anisotropy materials **SHOULD** always provide their `NORMAL` and `TANGENT` vectors. + +When the material has both `normalTexture` and `anisotropyTexture` properties defined, these textures **SHOULD** use the same texture coordinates because they operate in the same tangent space and their texel values are usually correlated to each other. + +The anisotropy texture, when supplied, encodes XY components of the anisotropy direction vector in tangent space as red and green values, and the anisotropy strength as blue values, all stored with linear transfer function. After dequantization, red and green texel values **MUST** be mapped as follows: red $[0, 1]$ to X $[-1, 1]$, green $[0, 1]$ to Y $[-1, 1]$. Blue does not require remapping. When the anisotropy texture is not supplied, the default dequantized texel value is $(1.0; 0.5; 1.0)$, which corresponds to the $(1; 0)$ direction vector (+X axis) and full strength. + +The direction of this XY vector specifies the per-texel direction of increased anisotropy roughness in tangent, bitangent space, prior to being rotated by the `anisotropyRotation` property value. After dequantization, the blue channel contains strength as $[0, 1]$ to be multiplied by the `anisotropyStrength` property value to determine the per-texel anisotropy strength. > **Note:** The direction vector of the anisotropy is the direction in which highlights will be stretched. The direction of the micro-grooves in the material causing the anisotropy will run perpendicular. diff --git a/extensions/2.0/Khronos/KHR_materials_anisotropy/schema/material.KHR_materials_anisotropy.schema.json b/extensions/2.0/Khronos/KHR_materials_anisotropy/schema/material.KHR_materials_anisotropy.schema.json index ec52f78ee2..427e71dbda 100644 --- a/extensions/2.0/Khronos/KHR_materials_anisotropy/schema/material.KHR_materials_anisotropy.schema.json +++ b/extensions/2.0/Khronos/KHR_materials_anisotropy/schema/material.KHR_materials_anisotropy.schema.json @@ -11,18 +11,18 @@ "default": 0.0, "minimum": 0.0, "maximum": 1.0, - "gltf_detailedDescription": "The anisotropy strength. When anisotropyTexture is present, this value is multiplied by the blue channel." + "gltf_detailedDescription": "The anisotropy strength. When the anisotropy texture is present, this value is multiplied by the texture's blue channel." }, "anisotropyRotation": { "type": "number", "description": "The rotation of the anisotropy.", "default": 0.0, - "gltf_detailedDescription": "The rotation of the anisotropy in tangent, bitangent space, measured in radians counter-clockwise from the tangent. When anisotropyTexture is present, anisotropyRotation provides additional rotation to the vectors in the texture." + "gltf_detailedDescription": "The rotation of the anisotropy in tangent, bitangent space, measured in radians counter-clockwise from the tangent. When the anisotropy texture is present, this value provides additional rotation to the vectors in the texture." }, "anisotropyTexture": { "allOf": [ { "$ref": "textureInfo.schema.json" } ], "description": "The anisotropy texture.", - "gltf_detailedDescription": "The anisotropy texture. Red and green channels represent the anisotropy direction in [-1, 1] tangent, bitangent space, to be rotated by anisotropyRotation. The blue channel contains strength as [0, 1] to be multiplied by anisotropyStrength." + "gltf_detailedDescription": "The anisotropy texture. Red and green channels represent the anisotropy direction in $[-1, 1]$ tangent, bitangent space, to be rotated by the anisotropy rotation. The blue channel contains strength as $[0, 1]$ to be multiplied by the anisotropy strength." }, "extensions": { }, "extras": { } diff --git a/extensions/2.0/Khronos/KHR_materials_clearcoat/README.md b/extensions/2.0/Khronos/KHR_materials_clearcoat/README.md index db065e76ec..532bd6360e 100644 --- a/extensions/2.0/Khronos/KHR_materials_clearcoat/README.md +++ b/extensions/2.0/Khronos/KHR_materials_clearcoat/README.md @@ -77,6 +77,12 @@ clearcoatRoughness = clearcoatRoughnessFactor * clearcoatRoughnessTexture.g If `clearcoatNormalTexture` is not given, no normal mapping is applied to the clear coat layer, even if normal mapping is applied to the base material. Otherwise, `clearcoatNormalTexture` may be a reference to the same normal map used by the base material, or any other compatible normal map. +A mesh primitive using a clearcoat material with a clearcoat normal texture **MUST** have a defined tangent space, i.e., it **MUST** have `NORMAL` and `TANGENT` attributes or its base material **MUST** have a normal texture. When the mesh primitive does not have `NORMAL` or `TANGENT` vectors, they are computed as defined in the glTF 2.0 specification. + +Since the glTF 2.0 specification does not mandate any particular tangent space derivation algorithm, mesh primitives using clearcoat materials with clearcoat normal textures **SHOULD** always provide their `NORMAL` and `TANGENT` vectors. + +When the material has both `normalTexture` and `clearcoatNormalTexture` properties defined, these textures **SHOULD** use the same texture coordinates because they operate in the same tangent space and their texel values are usually correlated to each other. + The clearcoat effect is modeled via a microfacet BRDF. The BRDF is layered on top of the glTF 2.0 Metallic-Roughness material, including emission and all extensions, using a new `fresnel_coat` function: ``` diff --git a/extensions/2.0/Khronos/KHR_materials_ior/README.md b/extensions/2.0/Khronos/KHR_materials_ior/README.md index 2c8e9d0d70..a28011f14c 100644 --- a/extensions/2.0/Khronos/KHR_materials_ior/README.md +++ b/extensions/2.0/Khronos/KHR_materials_ior/README.md @@ -47,7 +47,7 @@ Written against the glTF 2.0 spec. ## Overview -The dielectric BRDF of the metallic-roughness material in glTF uses a fixed value of 1.5 for the index of refraction. This is a good fit for many plastics and glass, but not for other materials like water or asphalt, sapphire or diamond. This extensions allows users to set the index of refraction to a certain value. +The dielectric BRDF of the metallic-roughness material in glTF uses a fixed value of 1.5 for the index of refraction. This is a good fit for many plastics and glass, but not for other materials like water or asphalt, sapphire or diamond. This extension allows users to set the index of refraction to a certain value. ## Extending Materials diff --git a/extensions/2.0/Khronos/KHR_materials_volume/README.md b/extensions/2.0/Khronos/KHR_materials_volume/README.md index 168cf70d25..e31ebdb96a 100644 --- a/extensions/2.0/Khronos/KHR_materials_volume/README.md +++ b/extensions/2.0/Khronos/KHR_materials_volume/README.md @@ -157,11 +157,15 @@ T(*x*) = et*x* where T is commonly referred to as *transmittance*. -Substituting σt in the previous equation by its definition via *attenuation color* and *attenuation distance*, as defined above, and setting *x* = *d* we get +Substituting σt in the previous equation by its definition via *attenuation color* and *attenuation distance*, as defined above, we get -T(da) = e(log(*c*) / *d*) * *d* = *c* +T(x) = e(log(*c*) / *d*) * *x* -So, after traveling distance *d* through the medium we get attenuation color *c*. +The above formula can be simplified as: + +T(x) = *c* *x* / *d* + +So, after traveling distance *x* through a medium with attenuation color *c* and attenuation distance *d*, we get we get transmittance T(x). ## Base Color and Absorption diff --git a/extensions/2.0/Vendor/EXT_mesh_gpu_instancing/README.md b/extensions/2.0/Vendor/EXT_mesh_gpu_instancing/README.md index 017272482c..22c33de18c 100644 --- a/extensions/2.0/Vendor/EXT_mesh_gpu_instancing/README.md +++ b/extensions/2.0/Vendor/EXT_mesh_gpu_instancing/README.md @@ -57,6 +57,8 @@ All attribute accessors in a given node **must** have the same `count`. > **Implementation Note:** When instancing is used on the node, the non-instanced version of the mesh should not be rendered. +Because the extension does not provide a way to specify a non-instanced fallback, files that use the extension **should** specify it in `extensionsRequired` array. + ## Transformation Order When using instancing, the instance transform matrix is constructed by multiplying translation (if present), rotation (if present), and scale in the same order as they are for nodes: diff --git a/extensions/Prefixes.md b/extensions/Prefixes.md index 084ef57d4e..6449498a1d 100644 --- a/extensions/Prefixes.md +++ b/extensions/Prefixes.md @@ -82,6 +82,7 @@ To request a prefix, submit a [GitHub issue](https://github.com/KhronosGroup/glT | `SNAP` | Snap, Inc. | https://snap.com/ | [#2125](https://github.com/KhronosGroup/glTF/issues/2125) | | `SPECTRUM` | Spectrum | https://spectrumcustomizer.com/ | [#1804](https://github.com/KhronosGroup/glTF/issues/1804) | | `TENCENT` | Tencent, Inc. | https://www.tencent.com/ | [#2118](https://github.com/KhronosGroup/glTF/issues/2118) | +| `TRACE` | Trace | https://www.trace3d.app/
`martin at trace3d.app` | [#2416](https://github.com/KhronosGroup/glTF/issues/2416) | | `TRYON` | TRYON Technology Ltd. | https://tryon.technology/ | [#1785](https://github.com/KhronosGroup/glTF/issues/1785) | | `UNITY` | Unity Software Inc. | https://unity.com/ | [#2185](https://github.com/KhronosGroup/glTF/issues/2185) | | `USSF` | US Space Force | https://www.spaceforce.mil/ | [#2177](https://github.com/KhronosGroup/glTF/issues/2177) | diff --git a/extensions/README.md b/extensions/README.md index d67a7b966c..5952c3f272 100644 --- a/extensions/README.md +++ b/extensions/README.md @@ -3,13 +3,9 @@ Copyright 2015-2021 The Khronos Group Inc. SPDX-License-Identifier: CC-BY-4.0 --> -# glTF Extension Registry +# glTF 2.0 Extension Registry -## Extensions for glTF 2.0 - -### Ratified Khronos Extensions for glTF 2.0 - -Khronos extensions use the reserved `KHR` prefix. Once ratified by the Khronos Group, they 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. +## Ratified Khronos Extensions The following extensions have been ratified by the Khronos Group: @@ -36,7 +32,52 @@ The following extensions have been ratified by the Khronos Group: * [EXT_meshopt_compression](2.0/Vendor/EXT_meshopt_compression/README.md) * [EXT_texture_webp](2.0/Vendor/EXT_texture_webp/README.md) -### Multi-Vendor Extensions for glTF 2.0 +Khronos extensions use the reserved `KHR` prefix. Once ratified by the Khronos Group, they 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. + +## In-progress Khronos and Multi-Vendor Extensions and Projects + +This section tracks the status of extensions and projects that are in development and is intended to provide the glTF community with a general sense of the priorities and direction of the glTF roadmap. The items listed are felt to show enough consensus to be considered for future ratification. We welcome community feedback and encourage everyone to add comments to the Github Pull Requests. All items are listed in alphabetical order. There is no order of priority of items with the same status. + + +| Extensions | Status | Pull Request | +|------------|--------|--------------| +| KHR_accessor_float64 | Review Draft | [PR #2397](https://github.com/KhronosGroup/glTF/pull/2397) | +| KHR_audio_graph | Proposal | [PR #2421](https://github.com/KhronosGroup/glTF/pull/2421) | +| KHR_collision_shapes | Review Draft | [PR #2370](https://github.com/KhronosGroup/glTF/pull/2370) | +| KHR_interactivity | Review Draft | [PR #2293](https://github.com/KhronosGroup/glTF/pull/2293) | +| KHR_materials_diffuse_transmission | Review Draft | [PR #1825](https://github.com/KhronosGroup/glTF/pull/1825) | +| KHR_materials_subsurface | Initial Draft | [PR #1928](https://github.com/KhronosGroup/glTF/pull/1928) | +| KHR_node_hoverability | Review Draft | [PR #2426](https://github.com/KhronosGroup/glTF/pull/2426) | +| KHR_node_selectability | Review Draft | [PR #2422](https://github.com/KhronosGroup/glTF/pull/2422) | +| KHR_node_visibility | Review Draft | [PR #2410](https://github.com/KhronosGroup/glTF/pull/2410) | +| KHR_physics_rigid_bodies | Review Draft | [PR #2424](https://github.com/KhronosGroup/glTF/pull/2424) | +| KHR_texture_procedurals | Initial Draft | [PR #2381](https://github.com/KhronosGroup/glTF/pull/2381) | +| EXT_texture_procedurals_mx_1_39 | Review Draft | [PR #2381](https://github.com/KhronosGroup/glTF/pull/2381) | +| KHR_texture_video | Initial Draft | [PR #2285](https://github.com/KhronosGroup/glTF/pull/2285) | + +| Projects | Status | Pull Request | +|----------|--------|--------------| +| glTF External References | Proposal | [Repository](https://github.com/KhronosGroup/glTF-External-Reference/tree/main) | + + +**How to view the latest draft specifications from a GitHub pull request** - Visit the files section of the Pull Request and find the file: README.md. In the top-right of that file's title bar select the three dots (...) and select ‘View file’. This will render the latest version of the draft specification. + +### Specification Status Explained +The status provides a guide to the current position of a specification through the main stages of extension development, and the community feedback that is requested at each stage. This is a general guide and the stages and deliverables for an individual extension or project may differ. Additional information can be found in the read.me file for each extension or project. + +| Status | Typical Start and End Deliverables | Community Engagement | +|--------|------------------------------------|----------------------| +| Proposal | This stage starts with the posting of a proposal document for discussion with an emphasis on the motivation and requirements of the desired feature/s rather than a detailed specification. These discussions may lead to an Initial Draft. | +| Initial Draft | During this stage an early draft specification will undergo ongoing development but it will typically not be ready for detailed review | Request for directional feedback rather than a detailed review of the specification. | +| Review Draft | This stage starts with the publication of a well-formed Review Draft of the specification based on the Initial Draft and earlier feedback. The specification will continue to be developed, including adding any missing JSON schema, initial test assets, etc. At least one third party glTF implementation will be released to enable initial testing. | On-going discussion and detailed review of the Review Draft. | +| Release Candidate | This stage will start with the release of a stable Release Candidate specification based on the Review Draft. If not already done, the feature will be incorporated into the Khronos Sample Viewer and supported by the Khronos Asset Validator. A public notice will be published that the specification is ready for final public review, along with a given review period. After this review period the specification will be put forward for ratification. | Final opportunity to provide feedback | +| Ratified | Once ratified by the Khronos board the extension or project will move to the Ratified section of the glTF 2.0 specification. | Report bugs | + +### Adding Additional Features to glTF + +If you have a requirement for a feature that is not listed as part of a Ratified or In-Progress extensions, please check to see if others have already identified similar requirements by reviewing the existing [Vendor Extensions](https://github.com/KhronosGroup/glTF/tree/main/extensions#vendor-extensions-for-gltf-20), [Multi-Vendor extensions](https://github.com/KhronosGroup/glTF/tree/main/extensions#multi-vendor-extensions-for-gltf-20), [glTF GitHub Issues](https://github.com/KhronosGroup/glTF/issues) and [glTF Pull Requests](https://github.com/KhronosGroup/glTF/pulls). If you do find something on a similar topic we recommend you reach out and collaborate. If nothing matches your requirement we encourage you to reach out to the community for feedback and collaborators. As a consensus develops please reach out to Khronos to discuss how an extension can be brought into the broader ecosystem, and potentially added to the official Khronos glTF Roadmap. + +## Multi-Vendor Extensions When an extension is implemented by more than one vendor, its name can use the reserved `EXT` prefix. Multi-vendor extensions are typically not covered by the Khronos IP framework, with a few notable exceptions (listed above) that have been through the Khronos ratification process after becoming widely used under the `EXT` prefix. @@ -44,13 +85,7 @@ When an extension is implemented by more than one vendor, its name can use the r * [EXT_lights_image_based](2.0/Vendor/EXT_lights_image_based/README.md) * [EXT_mesh_manifold](2.0/Vendor/EXT_mesh_manifold/README.md) -### Vendor Extensions for glTF 2.0 - -The 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 requesting the prefix. -* The vendor's URL and/or contact information. +## Vendor Extensions Vendor extensions are not covered by the Khronos IP framework. @@ -77,7 +112,13 @@ Vendor extensions are not covered by the Khronos IP framework. * [MSFT_texture_dds](2.0/Vendor/MSFT_texture_dds/README.md) * [NV_materials_mdl](2.0/Vendor/NV_materials_mdl/README.md) -### Archived Extensions for glTF 2.0 +The 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 requesting the prefix. +* The vendor's URL and/or contact information. + +## Archived Extensions _Archived extensions may be useful for reading older glTF files, but they are no longer recommended for creating new files._ @@ -85,26 +126,6 @@ _Archived extensions may be useful for reading older glTF files, but they are no * [KHR_techniques_webgl](2.0/Archived/KHR_techniques_webgl/README.md) * [KHR_xmp](2.0/Archived/KHR_xmp/README.md) -### In-progress Khronos and multi-vendor extensions for glTF 2.0 - -_Draft Khronos (KHR) extensions are not ratified yet. Multi-vendor (EXT) extensions do not require ratification, -but may still change before they are complete._ - -This section tracks the status of Khronos and multi-vendor extensions that are either already in development, -or that we feel show enough consensus to be highly likely for future development. We welcome feedback for these -and all other extensions (see [GitHub issues](https://github.com/KhronosGroup/glTF/issues?q=is%3Aopen+is%3Aissue+label%3Aextension)). This list is intended to give a general sense of current priorities and direction. - -For features that are not listed here but may be important for different uses, we encourage the community to -begin with vendor extensions (which do not require review), reach out for feedback and collaborators, and as -consensus forms we may consider the best way to bring a vendor extension into the broader ecosystem: via multi-vendor -extensions, Khronos extensions, or inclusion in a future version of the glTF specification. - -| Extension | Status | -|-----------|--------| -| [KHR_audio](https://github.com/KhronosGroup/glTF/pull/2137) | Ready for testing. | -| [KHR_materials_diffuse_transmission](https://github.com/KhronosGroup/glTF/pull/1825) | Ready for testing. | -| [KHR_materials_subsurface](https://github.com/KhronosGroup/glTF/pull/1928) | In development. | - # About glTF Extensions glTF extensions extend the base glTF model format. Extensions can introduce new properties (including properties that reference external data, and the extension can define the format of those data), new parameter semantics, reserved IDs, and new container formats. Extensions are written against a specific version of glTF and may be promoted to core glTF in a later glTF version. @@ -158,7 +179,7 @@ If the extension adds a new top-level array (by extending the root glTF object), If lack of extension support prevents proper geometry loading, extension specification _must_ state that (and such extension must be mentioned in `extensionsRequired` top-level glTF property). -### Naming +## Naming > **NOTE:** For historical reasons, older extensions may not follow these guidelines. Future extensions should do so.