AcademySoftwareFoundation / AcademySoftwareFoundation/OpenPBR

Suggest Hoffman approximations for Fresnel factor of metal under coat/film

Open
#225 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
CSS
Stars
793
Forks
44
PR merge metrics
No merged PRs in 30d

Description

When metal is coated by a dielectric (or a thin film), its Fresnel factor will be modified due to the adjacent dielectric IOR differing from air.

Modeling this in OpenPBR is currently not clearly stated since our metal lobe uses the "F82-tint" model, which is based on the Schlick approximation, where don't know the underlying IOR and absorption of the metal (needed to compute the Fresnel factor correctly).

So we currently just suggest to use the Gulbrandsen approach to calculate this (we mention this only in the thin-film section, but I'd also suggest we move this to the Metal section, as it applies in the case of a coated metal also):

>In the case of the metallic base the physics is somewhat ambiguous since, as described in the [Metal](https://academysoftwarefoundation.github.io/OpenPBR/#metal) section, the Fresnel factor for metal is defined according to the Schlick-based “F82-tint” parametrization which does not specify the underlying physical complex IOR. We suggest here that some reasonable approximation is employed to map the Fresnel factor to the best matching effective complex IOR, for example that described by [[Gulbrandsen2014](https://academysoftwarefoundation.github.io/OpenPBR/#citation-gulbrandsen2014)].

However, Naty Hoffman (@natyh) (who developed the F82-tint model) has suggested some approximations to compute the modified Fresnel of metal under dielectric, within the F82-tint model. As he noted, this could be just as (or more) accurate than working with the true Fresnel equations, in the context of an RGB renderer.

His formulas are given in his talk at the SIGGRAPH 2020 [course ](https://blog.selfshadow.com/publications/s2020-shading-course/)"Physically Based Shading in Theory and Practice":

https://blog.selfshadow.com/publications/s2020-shading-course/hoffman/s2020_pbs_hoffman_slides.pdf

His first suggestion is to just use the IORs alone (inferred from the F0) to do the calculation, which he shows works reasonably well:

![image](https://github.com/user-attachments/assets/e0ac7cbf-e76b-4af5-830f-56767823c87a)

His more accurate suggestion is the following formula (which isn't derived, so we should ask where this comes from):

![image](https://github.com/user-attachments/assets/c75bbf38-2842-4364-8dad-53bbe45bb917)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the OpenPBR Metal and thin-film sections and review Hoffman's SIGGRAPH 2020 shading-course slides linked in the issue. Determine the source and applicability of the proposed F82-tint approximations for coated metals, then document a decided recommendation and update the relevant specification text.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.