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

KHR_materials_emissive_strength #1994

Merged
merged 21 commits into from
May 23, 2022
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
06cc9e5
initial commit for materials_emissive
bhouston Apr 19, 2021
f93dfd5
change dir name
bhouston Apr 19, 2021
0866188
Update physical units, set default to 100.
emackey Jun 11, 2021
f79df81
Rename folder
emackey Jun 11, 2021
304c470
Merge remote-tracking branch 'origin/master' into KHR_materials_emiss…
emackey Jun 11, 2021
737b655
Add emissive strength schema.
emackey Jun 11, 2021
65486e9
Fix leftover value from earlier draft.
emackey Jun 11, 2021
3c37699
Contributor list update
emackey Jun 11, 2021
64a1db7
Merge remote-tracking branch 'origin/master' into KHR_materials_emiss…
emackey Jul 19, 2021
480f89a
Revise default value and units descriptions based on recent discussion.
emackey Jul 19, 2021
9656682
Update description to match jon-adoc branch.
emackey Jul 26, 2021
f261101
Merge remote-tracking branch 'origin/main' into KHR_materials_emissiv…
emackey Oct 18, 2021
4cf877e
Remove text redundant with core spec.
emackey Oct 18, 2021
5768b3c
Remove section number, per offline review
emackey Oct 18, 2021
931632a
Update to Release Candidate status
emackey Oct 25, 2021
707e3a6
Merge remote-tracking branch 'origin/main' into KHR_materials_emissiv…
emackey Mar 30, 2022
675dade
Update copyright message from main glTF registry.
emackey Mar 30, 2022
1aee7c8
Update contributors
emackey Mar 31, 2022
1a908f8
fix: Added myself as contributor to KHR_materials_emissive_strength (…
atteneder Apr 4, 2022
eb58403
Changes per review
emackey Apr 20, 2022
c58e7e5
Mark KHR_materials_emissive_strength as ratified.
emackey May 23, 2022
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
173 changes: 173 additions & 0 deletions extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
# KHR\_materials\_emissive\_strength

## Contributors

* Mike Bond, Adobe, [@miibond](https://github.com/MiiBond)
* Alex Jamerson, Amazon
* Thomas Dideriksen, Amazon
* Alex Wood, Analytical Graphics, [@abwood](https://twitter.com/abwood)
* Ed Mackey, Analytical Graphics, [@emackey](https://twitter.com/emackey)
* Nicolas Savva, Autodesk [@nicolassavva-autodesk](https://github.com/nicolassavva-autodesk)
* Henrik Edstrom, Autodesk
* Tobias Haeussler, Dassault Systemes [@proog128](https://github.com/proog128)
* Bastian Sdorra, Dassault Systemes [@bsdorra](https://github.com/bsdorra)
* Emmett Lalish, Google [@elalish](https://github.com/elalish)
* Alexey Knyazev, Individual Contributor, [@lexaknyazev](https://github.com/lexaknyazev)
* Bruce Cherniak, Intel
* Gary Hsu, Microsoft [@bghgary](https://twitter.com/bghgary)
* Nicholas Barlow, Microsoft
* Adam Morris, Target [@weegeekps](https://github.com/weegeekps)
* Sandra Voelker, Target
* Ben Houston, Threekit, [@bhouston](https://twitter.com/BenHouston3D)
* Eric Chadwick, Wayfair [echadwick-wayfair](https://github.com/echadwick-wayfair)

Copyright (C) 2021 The Khronos Group Inc. All Rights Reserved. glTF is a trademark of The Khronos Group Inc.
emackey marked this conversation as resolved.
Show resolved Hide resolved
See [Appendix](#appendix-full-khronos-copyright-statement) for full Khronos Copyright Statement.

## Status

Draft

## Dependencies

Written against the glTF 2.0 spec.

## Exclusions

* This extension must not be used on a material that also uses `KHR_materials_unlit`.

## Overview

The core glTF 2.0 material model includes an `emissiveFactor` and an `emissiveTexture` to control the color and
intensity of the light being emitted by the material, clamped to the range [0.0, 1.0]. However, in PBR environments
with high-dynamic range reflections and lighting, stronger emission effects may be desirable.

In this extension, a new `emissiveStrength` scalar factor is supplied, that governs the upper limit of emissive
strength per material.

**Implementation Note**: This strength can be colored and tempered using the core material's `emissiveFactor`
and `emissiveTexture` controls, permitting the strength to vary across the surface of the material.
Supplying values above 1.0 for `emissiveStrength` can have an influence on
reflections, tonemapping, blooming, and more.

### Physical Units

For implementations where a physical light unit is needed, the units for the multiplicative product of
emackey marked this conversation as resolved.
Show resolved Hide resolved
`emissiveStrength`, `emissiveFactor`, and `emissiveTexture` are candela per square
meter (**cd / m<sup>2</sup>**), sometimes called *nits*.

**Implementation Note**:
Because the value is specified per square meter, it indicates the brightness of any given point along
the surface. However, the exact conversion from physical light units to the brightness of rendered
pixels requires knowledge of the camera's exposure settings, which are left as an implementation
emackey marked this conversation as resolved.
Show resolved Hide resolved
detail, unless otherwise defined in a future version of the glTF specification or other extension.
Many rendering engines simplify this calculation by assuming that an emissive factor of `1.0`
results in a fully exposed pixel.

## Extending Materials

*This section is non-normative.*

Any material with an `emissiveFactor` (and optionally an `emissiveTexture`) can have its strength modulated
or amplified by the inclusion of this extension. For example:

```json
{
"materials": [
{
"emissiveFactor": [
1.0,
1.0,
1.0
],
"emissiveTexture": {
"index": 3
},
"extensions": {
"KHR_materials_emissive_strength": {
"emissiveStrength": 5.0
}
}
}
]
}
```

In the above example, the `emissiveFactor` has been set to its maximum value, to enable the `emissiveTexture`.
The `emissiveStrength` has been set to 5.0, making the texture five times brighter than it otherwise
would have been.

### Parameters

The following parameters are contributed by the `KHR_materials_emissive_strength` extension:

| Name | Type | Description | Required |
|------------------------|------------|------------------------------------------------|--------------------|
| **emissiveStrength** | `number` | The maximum strength of the emissive texture. | No, default: `1.0` |
emackey marked this conversation as resolved.
Show resolved Hide resolved


## Implementation Notes

*This section is non-normative.*

A typical (pseudocode) implementation might look like the following:

```
color += emissiveFactor.rgb * sRGB_to_Linear(emissiveTexture.rgb) * emissiveStrength;
```

## Schema

- [glTF.KHR_materials_emissive_strength.schema.json](schema/glTF.KHR_materials_emissive_strength.schema.json)

## Appendix: Full Khronos Copyright Statement

Copyright 2021 The Khronos Group Inc.

Some parts of this Specification are purely informative and do not define requirements
necessary for compliance and so are outside the Scope of this Specification. These
parts of the Specification are marked as being non-normative, or identified as
**Implementation Notes**.

Where this Specification includes normative references to external documents, only the
specifically identified sections and functionality of those external documents are in
Scope. Requirements defined by external documents not created by Khronos may contain
contributions from non-members of Khronos not covered by the Khronos Intellectual
Property Rights Policy.

This specification is protected by copyright laws and contains material proprietary
to Khronos. Except as described by these terms, it or any components
may not be reproduced, republished, distributed, transmitted, displayed, broadcast
or otherwise exploited in any manner without the express prior written permission
of Khronos.

This specification has been created under the Khronos Intellectual Property Rights
Policy, which is Attachment A of the Khronos Group Membership Agreement available at
www.khronos.org/files/member_agreement.pdf. Khronos grants a conditional
copyright license to use and reproduce the unmodified specification for any purpose,
without fee or royalty, EXCEPT no licenses to any patent, trademark or other
intellectual property rights are granted under these terms. Parties desiring to
implement the specification and make use of Khronos trademarks in relation to that
implementation, and receive reciprocal patent license protection under the Khronos
IP Policy must become Adopters and confirm the implementation as conformant under
the process defined by Khronos for this specification;
see https://www.khronos.org/adopters.

Khronos makes no, and expressly disclaims any, representations or warranties,
express or implied, regarding this specification, including, without limitation:
merchantability, fitness for a particular purpose, non-infringement of any
intellectual property, correctness, accuracy, completeness, timeliness, and
reliability. Under no circumstances will Khronos, or any of its Promoters,
Contributors or Members, or their respective partners, officers, directors,
employees, agents or representatives be liable for any damages, whether direct,
indirect, special or consequential damages for lost revenues, lost profits, or
otherwise, arising from or in connection with these materials.

Khronos® and Vulkan® are registered trademarks, and ANARI™, WebGL™, glTF™, NNEF™, OpenVX™,
SPIR™, SPIR-V™, SYCL™, OpenVG™ and 3D Commerce™ are trademarks of The Khronos Group Inc.
OpenXR™ is a trademark owned by The Khronos Group Inc. and is registered as a trademark in
China, the European Union, Japan and the United Kingdom. OpenCL™ is a trademark of Apple Inc.
and OpenGL® is a registered trademark and the OpenGL ES™ and OpenGL SC™ logos are trademarks
of Hewlett Packard Enterprise used under license by Khronos. ASTC is a trademark of
ARM Holdings PLC. All other product names, trademarks, and/or company names are used solely
for identification and belong to their respective owners.
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"title": "KHR_materials_emissive_strength glTF extension",
"type": "object",
"description": "glTF extension that adjusts the strength of emissive material properties.",
"allOf": [ { "$ref": "glTFProperty.schema.json" } ],
"properties": {
"emissiveStrength": {
"type": "number",
"description": "The strength adjustment to be multiplied with the material's emissiveFactor and emissiveTexture.",
emackey marked this conversation as resolved.
Show resolved Hide resolved
"default": 1.0,
"minimum": 0.0
},
"extensions": { },
"extras": { }
}
}