Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 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
55 changes: 55 additions & 0 deletions approximation.md.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<meta charset="utf-8" emacsmode="-*- markdown -*-">
<link rel="stylesheet" href="style/style.css">
<meta name="viewport" content="width=device-width,initial-scale=1">


Approximations for constrained implementations
==============================================

This specification describes a model which includes a number of features that can be computationally expensive and therefore impractical to support in certain contexts, like real-time applications or mobile devices.

The Historical background and objectives section explains how the goal of this specification is to provide an ideal, reference appearance. The implementer is, however, free to make decisions and approximations to satisfy their practical constraints. We do not dictate what those approximations should be, as this depends on the use case. We can, however, propose some possible ones and offer guidelines to help the implementer make those decisions.

As a general rule of thumb, we invite the implementer to think of those approximations in the same way one would think of different levels of detail (LOD) variants of an asset. Just like such an asset would become coarser with distance while retaining as much detail as necessary to remain faithful to the original, an implementation of OpenPBR may decide to make simplifications, as long as the result remains reasonably faithful to the intent given the practical constraints. In the most extreme hypothetical case, the model might even get reduced to as little as a single Lambert BRDF.

This means the implementer must carefully consider what to do with parameters they do not plan to fully support. A parameter that drastically modifies the appearance of a material should not be discarded just because the corresponding effect is not supported. As an example, in a renderer that doesn't have subsurface scattering, the subsurface color might be used as the albedo of a diffuse BRDF.

In the following sections we propose possible approximations for the different components of the OpenPBR Surface material.


Layering and mixing
-------------------------------------

As mentioned in the Reduction to a mixture of lobes section, the mix and layer operations can be approximated as a weighted sum of BSDF lobes.
Comment thread
virtualzavie marked this conversation as resolved.
Outdated


Specular lobes
-------------------------------------

The specular BRDF described in the specification is the classic GGX-Smith model, which has been common in both offline and real-time rendering for a decade. The so called "split-sum" approximation introduced by [#Karis2013] allows efficient rendering of the isotropic version of this BRDF with image-based lighting.


### Anisotropic case

Several solutions are possible for the anisotropic case:

- [#Cocco2024] recently proposed an image-based lighting approximation of anisotropic specular reflection consisting in several samples along the main BRDF axis.

- [#McAuley15] describes a simpler and cheaper method based on [#Revie2011], consisting in modifying normals and offering a very crude approximation of anisotropic reflection.

- Finally, the crudest approximation would be to ignore entirely the `specular_roughness_anisotropy` for the base layer specular lobe (respectively `coat_roughness_anisotropy` for the coat specular lobe), as the anisotropy parametrization in designed to preserve the average roughness regardless of the anisotropy (see the Microfacet model section for details).
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since the Microfacet model section is not a named section in this document, can we link or otherwise direct the reader somehow?



<!-- Markdeep: -->
<style class="fallback">
body { visibility:hidden }
</style>

<script src="style/markdeep-1.04.min.js" charset="utf-8">
window.markdeepOptions = {tocStyle: "long", smartQuotes=true}
</script>

<script>
window.alreadyProcessedMarkdeep || (document.body.style.visibility="visible")
</script>

16 changes: 16 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1431,6 +1431,14 @@
We provide a [reference implementation](reference/open_pbr_surface.mtlx) in MaterialX, which is based on the derivation in the previous section and the implementation of Autodesk Standard Surface [#Georgiev2019].


<!--
Approximations for contrained implementations
================================================================================
-->

(insert approximation.md.html here)


<!--
Parameter reference
================================================================================
Expand Down Expand Up @@ -1502,6 +1510,8 @@

[#Burley2018]: Brent Burley, David Adler, Matt Jen-Yuan Chiang, Hank Driskill, Ralf Habel, Patrick Kelly, Peter Kutz, Yining Karl Li, Daniel Teece. *The Design and Evolution of Disney’s Hyperion Renderer*, ACM TOG (2018).

[#Cocco2024]: Giovanni Cocco, Cédric Zanni, and Xavier Chermain. *Anisotropic Specular Image-Based Lighting Based on BRDF Major Axis Sampling*, Eurographics (2024).

[#Dupuy2023]: Jonathan Dupuy, Anis Benyoub. *Sampling Visible GGX Normals with Spherical Caps*, High-Performance Graphics (2023).

[#Elias2001]: Mady Elias, Lionel Simonot, and Michel Menu. “Bidirectional reflectance of a diffuse background covered by a partly absorbing layer”. In: Optics Communications 191.1 (2001).
Expand Down Expand Up @@ -1534,6 +1544,8 @@

[#Jensen2001]: Henrik Wann Jensen, Stephen R. Marschner, Marc Levoy, and Pat Hanrahan. *A Practical Model for Subsurface Light Transport*, ACM SIGGRAPH (2001).

[#Karis2013]: Brian Karis, *Real Shading in Unreal Engine 4*, ACM SIGGRAPH Courses: Physically Based Shading in Theory and Practice (2013).

[#Kelemen2001]: Csaba Kelemen and Laszlo Szirmay-Kalos. *A Microfacet Based Coupled Specular-Matte BRDF Model with Importance Sampling*, Eurographics (2001).

[#Kettner2015]: Lutz Kettner, Matthias Raab, Daniel Seibert, Jan Jordan, Alexander Keller. *The Material Definition Language*, Eurographics (2015).
Expand All @@ -1546,6 +1558,8 @@

[#Langlands2014]: Anders Langlands. *Physically Based Shader Design in Arnold*, ACM SIGGRAPH Talks (2014).

[#McAuley15]: Stephen McAuley, *Rendering the World of Far Cry 4*, GDC (2015).

[#McDermott2018]: Wes McDermott. [*The PBR Guide*](https://substance3d.adobe.com/tutorials/courses/the-pbr-guide-part-1), Allegorithmic white paper (2018).

[#Neubelt13]: David Neubelt, Matt Pettineo. *Crafting a Next-Gen Material Pipeline for The Order: 1886*, ACM SIGGRAPH Courses: Physically Based Shading in Theory and Practice (2013).
Expand All @@ -1558,6 +1572,8 @@

[#Polyanskiy2023]: Mikhail N. Polyanskiy. [*Refractive Index Database*](https://refractiveindex.info/) (2023).

[#Revie2011]: Donald Revie, *Implementing Fur Using Deferred Shading*, GPU Pro 2 (2011).

[#Schott2023]: SCHOTT. [*Interactive Abbe Diagram*](https://www.schott.com/en-gb/interactive-abbe-diagram) (2023).

[#Smythe2016]: Doug Smythe and Jonathan Stone. [*MaterialX: An Open Standard for Network-Based CG Object Looks*](https://materialx.org)
Expand Down