|
428 | 428 | ![Figure [anisotropy]: Textured **`geometry_tangent`**, with **`specular_roughness_anisotropy`** varying over 0 (default), 0.5, 0.9.](dummy) |
429 | 429 | </div> |
430 | 430 |
|
| 431 | +### Specular haze |
| 432 | + |
| 433 | +It is also useful to provide a more configurable NDF which can support a "hazy gloss" look. This can easily be supported simply by having the BSDF be a blend between BSDFs with different roughnesses. This is provided for both the metallic and dielectric BSDFs of the [base substrate](index.html#model/basesubstrate) (but not the coat). |
| 434 | + |
| 435 | +We provide this via the following parameters: |
| 436 | + |
| 437 | + - **`specular_haze`**: Provides the $[0, 1]$ blend weight $w_\mathrm{haze}$ of a secondary specular NDF (which defaults to 0). The resulting base BSDF thus has the form $(1 - w_\mathrm{haze}) f_\mathrm{core} + w_\mathrm{haze} f_\mathrm{haze}$. For the [dielectric base](index.html#model/basesubstrate/dielectricbase), both core and haze BSDF lobes are given by $f_\mathrm{dielectric}$ except with a different roughness value for the haze. Similarly, for the [metallic base](index.html#model/basesubstrate/metal), both core and haze lobes are given by $f_\mathrm{metal}$ except with a different roughness value for the haze. |
| 438 | + |
| 439 | + - **`specular_haze_spread`**: Specifies the extra roughness $\xi_h$ of the haze lobe, with $\xi_\mathrm{haze} \in [0, 1]$. This functions as the interpolation factor between the original core roughness $r_\mathrm{core}=$ **`specular_roughness`** and 1, i.e. the haze lobe has roughness given by $r_\mathrm{haze} = (1 - \xi_\mathrm{haze}) r_\mathrm{core} + \xi_\mathrm{haze} = \mathrm{lerp}(r_\mathrm{core}, 1, \xi_\mathrm{haze})$. |
| 440 | + |
| 441 | + The anisotropy of the haze lobe is assumed to be identical to that of the core, i.e. the $\alpha_t, \alpha_b$ values for the haze lobe are determined by equation [openpbr-anisotropy-formula] with $r$ replaced by $r_\mathrm{haze}$, and $a$ equal to the **`specular_roughness_anisotropy`**. |
| 442 | + |
| 443 | +Note that in a practical implementation, one may prefer to implement the haze via a stochastic choice between core and haze lobes within the microfacet model. Though formally equivalent, introducing an extra BSDF lobe for the haze which is evaluated and sampled independently may be less efficient. |
| 444 | + |
| 445 | + |
431 | 446 | ### Multiple Scattering |
432 | 447 |
|
433 | 448 | The single-scattering microfacet BRDF of equation [microfacet_brdf_ss] does not conserve energy, as it neglects to account for multiple scattering between the microfacets. An implementation should ideally account for this, via one of a number of schemes, otherwise the reflection from rough metals and dielectrics is dimmer and less saturated than it should be. A fully accurate approach is described in [#Heitz2016a], where the multiple bounces are explicitly modeled via Monte Carlo. Simpler approximate models are presented in [#Kulla2017] (which functions by adding compensation lobes to account for the missing energy), and [#Turquin2019] (which scales the albedo of the lobe to maintain energy preservation at the expense of reciprocity). |
434 | 449 |
|
| 450 | +Note that the multiple scattering compensation is assumed to apply to both the primary and secondary specular lobes, which are then blended. Thus energy conservation of the blend is ensured, if each individual lobe conserves energy. |
| 451 | + |
| 452 | + |
435 | 453 | ### Retroreflectivity |
436 | 454 |
|
437 | 455 | It is useful to be able to model *retroreflective* materials in which the light is predominantly scattered backwards towards its source, which are familiar in safety applications such as road markings, signs, vehicles and clothing items. Such materials are typically designed to be retroreflective via a substructure of elements which preferentially scatter light backwards. Various models have been proposed, but we adopt here the empirically-based approach of [#Belcour2014], in which the standard conductor microfacet BRDF is made retroreflective via a simple modification, which produces a visually plausible retroreflective effect. |
|
443 | 461 | \begin{equation} |
444 | 462 | f_\mathrm{conductor} \rightarrow (1 - w_\mathrm{retro}) f_\mathrm{conductor} + w_\mathrm{retro}f_\mathrm{retroreflective} |
445 | 463 | \end{equation} |
446 | | -This is applied in both the metallic BRDF $f_\mathrm{conductor}$ and dielectric BSDF $f_\mathrm{dielectric}$. Howevever, in the dielectric case we require that the view vector reflection is applied in the BRDF *only*, leaving the BTDF unchanged, since this produces a more physically plausible look with undisturbed refraction, while remaining energy conserving and reciprocal [#Portsmouth2025],. |
447 | | - |
| 464 | +This is applied in both the metallic BRDF $f_\mathrm{conductor}$ and dielectric BSDF $f_\mathrm{dielectric}$. Howevever, in the dielectric case we require that the view vector reflection is applied in the BRDF *only*, leaving the BTDF unchanged, since this produces a more physically plausible look with undisturbed refraction, while remaining energy conserving and reciprocal [#Portsmouth2025]. |
448 | 465 |
|
449 | 466 |
|
450 | 467 | Base Substrate |
|
505 | 522 | ### Metallic Base |
506 | 523 |
|
507 | 524 | Metals are completely opaque and have a characteristic and familiar form of specularity due to the Fresnel factor for conductors differing from that for dielectrics. |
508 | | -The metallic base is thus represented as a separate bulk slab which consists of an opaque GGX microfacet conductor BRDF $f_\mathrm{conductor}$, whose NDF is parametrized by **`specular_roughness`** and **`specular_roughness_anisotropy`** (overloading the same parameters used for the dielectric BSDF $f_\mathrm{dielectric}$, as noted in the [Microfacet model](index.html#model/microfacetmodel) section): |
| 525 | +The metallic base is thus represented as a separate bulk slab which consists of an opaque GGX microfacet conductor BRDF $f_\mathrm{conductor}$, whose NDF is parametrized by **`specular_roughness`** and **`specular_roughness_anisotropy`**, as well as **`specular_haze`** and **`specular_haze_spread`** (overloading the same parameters used for the dielectric BSDF $f_\mathrm{dielectric}$, as noted in the [Microfacet model](index.html#model/microfacetmodel) section): |
509 | 526 | \begin{equation} |
510 | 527 | S_\mathrm{metal} = \mathrm{Slab}(f_\mathrm{conductor}) \ . |
511 | 528 | \end{equation} |
|
555 | 572 | **`specular_color`** | Color | `color3` | $ [0, 1]^3 $ | | $ (1, 1, 1) $ | Tint color of metallic Fresnel reflection albedo at near-grazing incidence (i.e. around silhouettes) |
556 | 573 | **`specular_roughness`** | Roughness | `float` | $ [0, 1] $ | | $ 0.3 $ | Roughness of NDF of BRDF $f_\mathrm{conductor}$ |
557 | 574 | **`specular_roughness_anisotropy`** | Anisotropy | `float` | $ [0, 1] $ | | $ 0 $ | Anisotropy of NDF of BRDF $f_\mathrm{conductor}$ |
558 | | -**`specular_retroreflectivity`** | Retroreflectivity | `float` | $ [0, 1] $ | | $ 0 $ | Retroreflectivity of BRDF $f_\mathrm{conductor}$ |
559 | | - |
| 575 | +**`specular_haze`** | Haze | `float` | $ [0, 1] $ | | $ 0.0 $ | Mix weight of metallic haze lobe |
| 576 | +**`specular_haze_spread`** | Haze Spread | `float` | $ [0, 1] $ | | $ 0.3 $ | Extra roughness of metallic haze lobe |
| 577 | +**`specular_retroreflectivity`** | Retroreflectivity | `float` | $ [0, 1] $ | | $ 0 $ | Retroreflectivity of BRDF $f_\mathrm{conductor}$ |
560 | 578 |
|
561 | 579 |   |
562 | 580 | <div class="shifted-caption"> |
|
566 | 584 |
|
567 | 585 | ### Dielectric Base |
568 | 586 |
|
569 | | -Both the opaque and translucent dielectric-base share the same dielectric interface BSDF $f_\mathrm{dielectric}$. This section details the parametrization of the dielectric BSDF, which defines the upper interface of the [Translucent](index.html#model/basesubstrate/translucentbase), [Glossy-diffuse](index.html#model/basesubstrate/glossy-diffuse) and [Subsurface](index.html#model/basesubstrate/subsurface) base slabs. The base dielectric BSDF (and the [Metal](index.html#model/basesubstrate/metallicbase) BRDF) are informally termed the "specular" lobe, since they provide the primary specular reflection (while the coat provides a secondary specular lobe, see the Coat section). |
| 587 | +Both the opaque and translucent dielectric-base share the same dielectric interface BSDF $f_\mathrm{dielectric}$. This section details the parametrization of the dielectric BSDF, which defines the upper interface of the [Translucent](index.html#model/basesubstrate/translucentbase), [Glossy-diffuse](index.html#model/basesubstrate/glossy-diffuse) and [Subsurface](index.html#model/basesubstrate/subsurface) base slabs. The base dielectric BSDF (and the [metal](index.html#model/basesubstrate/metallicbase) BRDF) are informally termed the "specular" lobe, since they provide the primary specular reflection (while the coat provides a secondary specular lobe, see the Coat section). |
570 | 588 |
|
571 | | -- The specular lobe shape is controlled by the roughness properties of the surface, parametrized by **`specular_roughness`** and **`specular_roughness_anisotropy`** (see the section on the [Microfacet model](index.html#model/microfacetmodel) NDF). |
| 589 | +- The specular lobe shape is controlled by the roughness properties of the surface, parametrized by **`specular_roughness`** and **`specular_roughness_anisotropy`**, as well as **`specular_haze`** and **`specular_haze_spread`** (see the section on the [Microfacet model](index.html#model/microfacetmodel) NDF). |
572 | 590 |
|
573 | 591 | - The **`specular_ior`** parameter controls the index of refraction (IOR) of the base dielectric. |
574 | 592 |
|
|
619 | 637 | As noted, a further tint factor of **`specular_color`** is applied to the entire macroscopic dielectric BRDF (for both entering and exiting rays), while the BTDF is unaffected by this tint. |
620 | 638 |
|
621 | 639 |
|
622 | | -Specular params | Label | Type | Range | Norm | Default | Description |
623 | | -------------------------------------|-------------------|----------|:---------------:|:----------:|:-------------:|---------------------------------------------- |
624 | | -**`specular_weight`** | Weight | `float` | $ [0, \infty) $ | $ [0, 1] $ | $ 1 $ | Modulates the dielectric reflectivity at normal incidence |
625 | | -**`specular_color`** | Color | `color3` | $ [0, 1]^3 $ | | $ (1, 1, 1) $ | Tints the dielectric BRDF |
626 | | -**`specular_roughness`** | Roughness | `float` | $ [0, 1] $ | | $ 0.3 $ | Roughness of NDF of dielectric BSDF $f_\mathrm{dielectric}$ |
627 | | -**`specular_roughness_anisotropy`** | Anisotropy | `float` | $ [0, 1] $ | | $ 0 $ | Anisotropy of NDF of dielectric BSDF $f_\mathrm{dielectric}$ |
628 | | -**`specular_ior`** | IOR | `float` | $ (0, \infty) $ | $ [1, 3] $ | $ 1.5 $ | Refractive index of $V_\mathrm{dielectric}$ |
| 640 | +Specular params | Label | Type | Range | Norm | Default | Description |
| 641 | +------------------------------------|------------|----------|:---------------:|:----------:|:-------------:|---------------------------------------------- |
| 642 | +**`specular_weight`** | Weight | `float` | $ [0, \infty) $ | $ [0, 1] $ | $ 1 $ | Modulates the dielectric reflectivity at normal incidence |
| 643 | +**`specular_color`** | Color | `color3` | $ [0, 1]^3 $ | | $ (1, 1, 1) $ | Tints the dielectric BRDF |
| 644 | +**`specular_roughness`** | Roughness | `float` | $ [0, 1] $ | | $ 0.3 $ | Roughness of NDF of dielectric BSDF $f_\mathrm{dielectric}$ |
| 645 | +**`specular_roughness_anisotropy`** | Anisotropy | `float` | $ [0, 1] $ | | $ 0 $ | Anisotropy of NDF of dielectric BSDF $f_\mathrm{dielectric}$ |
| 646 | +**`specular_haze`** | Haze | `float` | $ [0, 1] $ | | $ 0.0 $ | Mix weight of dielectric haze lobe |
| 647 | +**`specular_haze_spread`** | Haze Spread| `float` | $ [0, 1] $ | | $ 0.3 $ | Extra roughness of dielectric haze lobe |
| 648 | +**`specular_ior`** | IOR | `float` | $ (0, \infty) $ | $ [1, 3] $ | $ 1.5 $ | Refractive index of $V_\mathrm{dielectric}$ |
629 | 649 | **`specular_retroreflectivity`** | Retroreflectivity | `float` | $ [0, 1] $ | | $ 0 $ | Retroreflectivity of BRDF $f_\mathrm{dielectric}$ |
630 | 650 |
|
631 | 651 |
|
|
637 | 657 |
|
638 | 658 | ### Dielectric Base: Glossy-diffuse |
639 | 659 |
|
640 | | -The glossy-diffuse slab represents the base dielectric (parametrized as described in the Dielectric base section), embedding a semi-infinite bulk of extremely dense scattering material. The BRDF of the slab is the combination of a "glossy" specular lobe provided by immediate reflection from the dielectric interface, and a diffuse lobe provided by scattering off the embedded substrate. This models for example the reflection from shiny, totally opaque surfaces such as dense plastic, rock, and concrete. |
| 660 | +The glossy-diffuse slab represents the base dielectric (parametrized as described in the Dielectric Base section), embedding a semi-infinite bulk of extremely dense scattering material. The BRDF of the slab is the combination of a "glossy" specular lobe provided by immediate reflection from the dielectric interface, and a diffuse lobe provided by scattering off the embedded substrate. This models for example the reflection from shiny, totally opaque surfaces such as dense plastic, rock, and concrete. |
641 | 661 |
|
642 | 662 | We choose to model this concretely as a layer of dielectric "gloss" on top of an (index-matched) opaque slab with a |
643 | 663 | diffuse BRDF: |
|
653 | 673 | * +-------------------------------------------------+ * |
654 | 674 | ******************************************************* |
655 | 675 |
|
656 | | -where $S_\textrm{gloss}$ is a thin slab of dielectric with the rough dielectric microfacet BRDF as parametrized in the Dielectric base section, and the same internal medium as the base dielectric except with zero extinction due to infinitesimal layer thickness: |
| 676 | +where $S_\textrm{gloss}$ is a thin slab of dielectric with the rough dielectric microfacet BRDF as parametrized in the Dielectric Base section, and the same internal medium as the base dielectric except with zero extinction due to infinitesimal layer thickness: |
657 | 677 | \begin{eqnarray} |
658 | 678 | S_\textrm{gloss} = \mathrm{Slab}(f_\mathrm{dielectric}, V_\mathrm{dielectric}) \ . |
659 | 679 | \end{eqnarray} |
|
768 | 788 | S_\mathrm{subsurface} = \mathrm{Slab}(f_\mathrm{dielectric}, V^\infty_\mathrm{subsurface}) \ . |
769 | 789 | \end{equation} |
770 | 790 |
|
771 | | -As in the cases of the [glossy-diffuse](index.html#model/basesubstrate/glossy-diffuse) slab and the [translucent-base](index.html#model/basesubstrate/translucentbase), the subsurface is bounded by a dielectric interface with BSDF $f_\mathrm{dielectric}$, which generates the primary specular reflection lobe parametrized via the "specular" parameters as described in the Dielectric base section. Combined with this is the reflection generated by light which is transmitted through the dielectric interface into the underlying embedded subsurface medium, where it scatters around and eventually transmits back out. In this case the subsurface medium $V^\infty_\mathrm{subsurface}$ is given a parametrization which is particularly convenient for controlling the volumetric effect of dense subsurface scattering: |
| 791 | +As in the cases of the [glossy-diffuse](index.html#model/basesubstrate/glossy-diffuse) slab and the [translucent-base](index.html#model/basesubstrate/translucentbase), the subsurface is bounded by a dielectric interface with BSDF $f_\mathrm{dielectric}$, which generates the primary specular reflection lobe parametrized via the "specular" parameters as described in the Dielectric Base section. Combined with this is the reflection generated by light which is transmitted through the dielectric interface into the underlying embedded subsurface medium, where it scatters around and eventually transmits back out. In this case the subsurface medium $V^\infty_\mathrm{subsurface}$ is given a parametrization which is particularly convenient for controlling the volumetric effect of dense subsurface scattering: |
772 | 792 |
|
773 | 793 | - **`subsurface_radius`** * **`subsurface_radius_scale`**: the _mean free path_ (MFP) per RGB channel, $\mathbf{r}$, i.e. the average distance that a ray of light travels through the medium before being absorbed or scattered. This thus controls the apparent density of the medium. In the limit of zero MFP, the medium tends towards infinite density, and approaches the look of an opaque diffuse surface. Being a length, **`subsurface_radius`** can be any value greater than or equal to zero. For convenience, we make the soft range $[0, 1]$, thus covering common cases such as skin where the MFP is lower than the scene length units. The **`subsurface_radius_scale`** controls the color channel dependence of the MFP, and thus this color is visible in the light transmitted through thinner regions of the subsurface volume. |
774 | 794 | - **`subsurface_color`**: the observed RGB reflection albedo color taking into account all orders of multiple scattering, $\mathbf{C}$ (where the sense in which this parametrizes the observed color is discussed in detail below). |
|
828 | 848 |
|
829 | 849 | For cases where the substrate medium is translucent, i.e. transmits and refracts a significant quantity of light, we provide a separate parametrization of the underlying medium more appropriate for this use case than the subsurface model, where the **`transmission_weight`** mix weight selects this model rather than the opaque mix of glossy-diffuse and subsurface. This is a more traditional volumetric parametrization specifying the properties of a homogeneous medium interior to the object, with or without absorption and scattering, which is useful for modeling materials ranging from clear or colored absorbing-only glass and liquids to translucent materials with visually significant scattering such as honey, fruit juice, murky water, opalescent glass, or milky glass. |
830 | 850 |
|
831 | | -As for the dielectric slabs defined in the Glossy-diffuse section and Subsurface section, the top interface is described by a rough GGX microfacet BSDF $f_\mathrm{dielectric}$ whose "specular" parameters are described in the Dielectric base section. The bulk of the dielectric, $V^\infty_\mathrm{dielectric}$ is a volumetric medium supporting absorption and scattering: |
| 851 | +As for the dielectric slabs defined in the Glossy-diffuse section and Subsurface section, the top interface is described by a rough GGX microfacet BSDF $f_\mathrm{dielectric}$ whose "specular" parameters are described in the Dielectric Base section. The bulk of the dielectric, $V^\infty_\mathrm{dielectric}$ is a volumetric medium supporting absorption and scattering: |
832 | 852 | \begin{equation} |
833 | 853 | S_\textrm{translucent-base} = \mathrm{Slab}(f_\mathrm{dielectric}, V^\infty_\mathrm{dielectric}) \ . |
834 | 854 | \end{equation} |
|
0 commit comments