KhronosGroup / KhronosGroup/glTF

KHR_materials_clearcoat Fresnel should not influence material emission

Open
#2,396 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
HTML
Stars
7.8k
Forks
1.2k
Avg merge
17h 26m
Merged PRs (30d)
5

Description

> The clearcoat layer is on top of emission in the layering stack. Consequently, the emission is darkened by the Fresnel term.
>coated_emission = emission * (0.04 + (1 - 0.04) * (1 - NdotV)^5)

Thought experiment:
You have an emissive glass sphere with IOR 1.5 and add an infinitely thin white clearcoat with IOR 1.5 on top of it.
What changes? Nothing. The resulting image should be exactly the same.

There is no vacuum to clearcoat boundary _beneath_ the clearcoat surface, so any emitted light from that surface should not be affected at all by the clearcoat Fresnel, no matter what the base material is.

The clearcoat would potentially just _add_ reflections from other lights with the Fresnel between the surrounding medium (usually vacuum) and the hardcoded IOR of 1.5 of the clearcoat. Only the weighting of the base material BSDF under the clearcoat layer is affected by that Fresnel.
(If the KHR_materials_clearcoat had specified a color, that would affect the emission, but as long as the clearcoat is white and infinitely thin, it should not block light emissions in any way.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the KHR_materials_clearcoat layering description and the emission weighting described in this issue. Compare the Fresnel equation with the emissive glass-sphere thought experiment; done means the specification clearly distinguishes clearcoat reflection from emission and no longer darkens emission for a white, infinitely thin clearcoat.

Written by the indexing model from the issue text.

Assessment

Domain
computer-graphics
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.