BSDFs¶
Bi-Lambertian material (bilambertian)¶
Parameter |
Type |
Description |
Flags |
|---|---|---|---|
reflectance |
spectrum or texture |
Specifies the diffuse reflectance of the material. Default: 0.5 |
P ∂ |
transmittance |
spectrum or texture |
Specifies the diffuse transmittance of the material. Default: 0.5 |
P ∂ |
The bi-Lambertian material scatters light diffusely into the entire sphere. The reflectance specifies the amount of light scattered into the incoming hemisphere, while the transmittance specifies the amount of light scattered into the outgoing hemisphere. This material is two-sided.
Note
This material is not designed for realistic rendering, but rather for large-scale simulation of atmospheric radiative transfer over vegetated surfaces.
Rahman Pinty Verstraete reflection model (rpv)¶
Parameter |
Type |
Description |
Flags |
|---|---|---|---|
rho_0 |
spectrum or texture |
\(\rho_0 \ge 0\). Default: 0.1 |
P ∂ |
k |
spectrum or texture |
\(k \in \mathbb{R}\). Default: 0.1 |
P ∂ |
g |
spectrum or texture |
\(-1 \le g \le 1\). Default: 0.0 |
P ∂ |
rho_c |
spectrum or texture |
Default: Equal to rho_0 |
P ∂ |
This plugin implements the reflection model proposed by [Rahman et al., 1993].
Apart from floating point values, model parameters can be defined by nested or referenced textures which are then mapped onto the shape based on its UV parameterization.
This plugin also supports the most common extension of the RPV model to four parameters, namely the \(\rho_c\) extension, as used in [Widlowski et al., 2006].
For the fundamental formulae defining the RPV model, please refer to the Eradiate Scientific Handbook.
Note that this material is one-sided—that is, observed from the
back side, it will be completely black. If this is undesirable,
consider using the twosided BSDF adapter plugin.
The following snippet describes an RPV material with monochromatic parameters:
"type": "rpv",
"rho_0": 0.02,
"k": 0.3,
"g": -0.12
<bsdf type="rpv">
<float name="rho_0" value="0.02"/>
<float name="k" value="0.3"/>
<float name="g" value="-0.12"/>
</bsdf>
Ross-Thick Li-Sparse reflection model (rtls)¶
Parameter |
Type |
Description |
Flags |
|---|---|---|---|
f_iso |
spectrum or texture |
\(f_{iso}\). Default: 0.209741 |
P ∂ |
f_geo |
spectrum or texture |
\(f_{geo}\). Default: 0.081384 |
P ∂ |
f_vol |
spectrum or texture |
\(f_{vol}\). Default: 0.004140 |
P ∂ |
h |
float |
\(h\). Default: 2.f |
P |
r |
float |
\(r\). Default: 1.f |
P |
b |
float |
\(b\). Default: 1.f |
P |
The RTLS plugin implement the Ross-Thick, Li-Sparse model proposed by (Strahler et al, 1999) for the MODIS operational the BRDF model Version 5.0
Default parameters for \(f_k\) parameters are taken from the RAMI4ATM benchmark test cases defined by the JRC, for measures done using the Sentinel-2A MSI band 8A spectral region (centered around 865nm): https://rami-benchmark.jrc.ec.europa.eu
Selector material (selectbsdf)¶
Parameter |
Type |
Description |
Flags |
|---|---|---|---|
indices |
texture |
A texture of integer indices indicating which underlying BSDF is active as a function of space coordinates. |
P |
(Nested plugin) |
bsdf |
At least two nested BSDF instances that are selected based on selection indices. |
P, ∂ |
This plugin implements a selector material, which uses a texture to select one of an arbitrary number of nested BSDF plugins. The index texture should take discrete integer values (even if it is internally stored using floating-point numbers).
The index texture should be initialized carefully when using a bitmap
plugin:
set the
rawparameter toTrueto prevent spectral pre-processing;use a
nearestfilter type to avoid interpolation between pixels;it is more efficient to use a single-channel storage.
Measured quasi-diffuse material (mqdiffuse)¶
Parameter |
Type |
Description |
Flags |
|---|---|---|---|
filename |
string |
Filename of the volume to be loaded. |
— |
grid |
VolumeGrid object |
When creating a grid volume at runtime, e.g. from Python or C++,
an existing |
— |
accel |
boolean |
Hardware acceleration features can be used in CUDA mode. These features can cause small differences as hardware interpolation methods typically have a loss of precision (not exactly 32-bit arithmetic). (Default: true) |
— |
This plugin models the reflection of light by opaque materials with a behaviour close to diffuse, i.e with no strong scattering lobe. Assumptions are as follows:
The material is isotropic. Consequently, only the azimuth difference matters.
The material is gray. Consequently, no spectral dimension is used.
The data dimension order is (cos_theta_o, phi_d, cos_theta_i).
The sampling routine is uniform cosine-weighted (i.e. the same as for the
diffuse plugin).
Warning
Table values are not checked internally: ensuring that the data is consistent (e.g that the corresponding reflectance is not greater than 1) is the user’s responsibility.
Oceanic reflection model (ocean-mishchenko)¶
Parameter |
Type |
Description |
Flags |
|---|---|---|---|
wind_speed |
float |
Specifies the wind speed at which to evaluate the oceanic reflectance. Range: [0, 37.54] m/s. Default: 0.1 m/s |
P, ∂ |
eta, k |
spectrum or texture |
Real and imaginary components of the water’s index of refraction. Default: 1.33, 0.0 |
P, ∂ |
ext_ior |
spectrum or texture |
Exterior index of refraction specified numerically or using a known material name. Note that the complex component is assumed to be 0. Default: 1.000277 |
P, ∂ |
shadowing |
boolean |
Indicates whether evaluation accounts for the shadowing-masking term. Default: true |
— |
This plugin implements the polarized oceanic reflection model originally implemented by [Mishchenko and Travis, 1997]. This model focuses on the sunglint reflectance, which follows the Cox and Munk surface slope probability distribution.
Note that this material is one-sided—that is, observed from the
back side, it will be completely black. If this is undesirable,
consider using the twosided BSDF adapter plugin.
The following snippet describes an oceanic surface material with monochromatic
parameters:
"type": "ocean_mishchenko",
"wind_speed": 10,
"eta": 1.33,
"k": 0.,
"ext_ior": 1.0,
<bsdf type="ocean_mishchenko">
<float name="wind_speed" value="10"/>
<float name="eta" value="1.33"/>
<float name="k" value="0."/>
<float name="ext_ior" value=1.0/>
</bsdf>
Note
This model only implements the sunglint reflection. See ocean legacy for a BSDF that includes whitecap, sunglint, and underlight reflectance.
Hapke surface model (hapke)¶
Parameter |
Type |
Description |
Flags |
|---|---|---|---|
w |
spectrum or texture |
Single scattering albedo (in \([0, 1]\); default: 0.5). |
P ∂ |
b |
spectrum or texture |
Asymmetry parameter of the Henyey-Greenstein phase function (in \([0, 1]\); default: 0.2). |
P ∂ |
c |
spectrum or texture |
Backscattering parameter of the Henyey-Greenstein phase function (in \([0, 1]\); default: 0.5). |
P ∂ |
theta |
spectrum or texture |
Macroscopic roughness, expressed as the mean slope angle (in \([0°, 90°]\); default: 30°). |
P ∂ |
B_0 |
spectrum or texture |
Intensity of shadow hiding opposition effect (in \([0, 1]\); default: 0). |
P ∂ |
h |
spectrum or texture |
Width of shadow hiding opposition effect (in \([0, 1]\); default: 0). |
P ∂ |
This plugin implements a bare soil reflection model based on the work of Bruce Hapke. This variant is validated against the one presented by Nguyen et al. [2025]. It features 6 parameters and includes adjustments compared to the core reference [Hapke, 2012].
The default parameters are an order of magnitude of the results presented by Nguyen et al. [2025] and notably neglect the influence of the opposition effect.
Measured material (measured_mono)¶
Parameter |
Type |
Description |
Flags |
|---|---|---|---|
filename |
string |
Filename of the material data file to be loaded |
|
wavelength |
float |
Specifies the wavelength at which the model is evaluated with monochromatic variants. |
This plugin is a modified version of the measured BSDF which supports
monochromatic variants.
(Legacy 6S) Oceanic reflection model (ocean-legacy)¶
Parameter |
Type |
Description |
Flags |
|---|---|---|---|
wavelength |
float |
Specifies the wavelength at which to evaluate the oceanic reflectance. Range: [200, 4000] nm |
P |
wind_speed |
spectrum or texture |
Specifies the wind speed at which to evaluate the oceanic reflectance. Range: [0, 37.54] m/s. Default: 0.1 m/s |
P ∂ |
wind_direction |
float |
Specifies the wind direction at which to evaluate the oceanic reflectance in North Left convention. Range: [0, 360]. Default: 0.0° |
P ∂ |
chlorinity |
float |
Specifies the chlorinity of the water at which to evaluate the oceanic reflectance. Default: 19.0 g/kg |
P ∂ |
pigmentation |
float |
Specifies the pigmentation of the water at which to evaluate the oceanic reflectance. Range: [0.3, ∞[. Default: 0.3 mg/m^3 |
P ∂ |
shadowing |
boolean |
Indicates whether evaluation accounts for the shadowing-masking term. (Default: true). |
P |
component |
integer |
Debug: specifies which component of the oceanic reflection model to evaluate. Default: 0 Component 0 is used to evaluate the total oceanic reflectance. Component 1 evaluates the whitecap reflectance. Component 2 evaluates the sun glint reflectance. Component 3 evaluates the underlight reflectance. Component 4 evaluates the whitecap and underlight reflectance together. |
P |
State parameters |
|||
coverage |
float |
Fraction of the surface occupied by whitecaps. Modifying this parameter has no effect: it is automatically computed from the wind speed. |
P |
This plugin implements the oceanic reflection model originally implemented in the 6S radiative transfer model. Note that this model is monochromatic.
For the fundamental formulae defining the oceanic reflectance model, please refer to the Eradiate Scientific Handbook.
Note that this material is one-sided—that is, observed from the
back side, it will be completely black. If this is undesirable,
consider using the twosided BSDF adapter plugin.
The following snippet describes an oceanic surface material with monochromatic
parameters:
Warning
The wind direction is given in degrees and follows the North Left convention as in 6SV.
"type": "ocean_legacy",
"wavelength": 550,
"wind_speed": 10,
"wind_direction": 0,
"chlorinity": 19,
"pigmentation": 0.3,
"shadowing": True,
"component": 0,
<bsdf type="ocean_legacy">
<float name="wavelength" value="550"/>
<float name="wind_speed" value="10"/>
<float name="wind_direction" value="0"/>
<float name="chlorinity" value="19"/>
<float name="pigmentation" value="0.3"/>
<float name="shadowing" value="True"/>
<int name="component" value="0"/>
</bsdf>
(GRASP) Oceanic reflection model (ocean-grasp)¶
Parameter |
Type |
Description |
Flags |
|---|---|---|---|
wavelength |
float |
Specifies the wavelength at which to evaluate the oceanic reflectance. Range: [200, 4000] nm. Required |
P |
wind_speed |
spectrum or texture |
Specifies the wind speed at which to evaluate the oceanic reflectance. Range: [0, 37.54] m/s. Default: 0.1 m/s |
P ∂ |
eta, k |
spectrum or texture |
Real and imaginary components of the water’s index of refraction. Default: 1.33, 0.0 |
P ∂ |
ext_ior |
spectrum or texture |
Exterior index of refraction specified numerically or using a known material name. Note that the complex component is assumed to be 0. Default: 1.000277 |
P ∂ |
water_body_reflectance |
spectrum or texture |
Diffuse reflectance of radiations that entered and exited the water body. (Default: 0.). |
P ∂ |
component |
integer |
Debug: specifies which component of the oceanic reflection model to evaluate. Default: 0.
|
— |
State parameters |
This plugin implements the oceanic reflection model originally detailed in [Litvinov et al., 2024]. Note that this model is monochromatic.
For the fundamental formulae defining the oceanic reflectance model, please refer to the Eradiate Scientific Handbook.
Note that this material is one-sided—that is, observed from the
back side, it will be completely black. If this is undesirable,
consider using the twosided BSDF adapter plugin.
The following snippet describes an oceanic surface material with monochromatic
parameters:
"type": "ocean_grasp",
"wavelength": 550,
"wind_speed": 10,
"eta": 1.33,
"k": 0.,
"ext_ior": 1.0,
"water_body_reflectance": 0.02,
"component": 0,
<bsdf type="ocean_grasp">
<float name="wavelength" value="550"/>
<float name="wind_speed" value="10"/>
<float name="eta" value="1.33"/>
<float name="k" value="0."/>
<float name="ext_ior" value=1.0/>
<float name="water_body_reflectance" value=0.02/>
<int name="component" value="0"/>
</bsdf>
Polarized reflection model by Maignan et al. (maignan)¶
Parameter |
Type |
Description |
Flags |
|---|---|---|---|
C |
spectrum or texture |
\(\rho_0 \ge 0\). Default: 5.0 |
P ∂ |
ndvi |
spectrum or texture |
\(0 \le ndvi \le 1\). Default: 0.8 |
P ∂ |
refr_re |
spectrum or texture |
\(1 \le refr{_re} \le \infty\). Default: 1.5 |
P ∂ |
refr_im |
spectrum or texture |
\(0 \le refr{_im} \le \infty\). Default: 0.0 |
P ∂ |
ext_ior |
spectrum or texture |
Exterior index of refraction specified numerically or using a known material name. Note that the complex component is assumed to be 0. Default: 1.000277 |
This plugin implements the reflection model proposed by [Maignan et al., 2009].
Apart from floating point values, model parameters can be defined by nested or referenced textures which are then mapped onto the shape based on its UV parameterization.
The model is based on fits to POLDER observations and combines a BRDF with the Fresnel reflectance matrix (see Eq. 21 in [Maignan et al., 2009]).
Note that this material is one-sided—that is, observed from the
back side, it will be completely black. If this is undesirable,
consider using the twosided BSDF adapter plugin.
The following snippet describes an RPV material with monochromatic parameters:
"type": "maignan",
"C": 5.0,
"ndvi": 0.8,
"refr_re": 1.5,
"refr_im": 0.0,
<bsdf type="maignan">
<float name="C" value="5"/>
<float name="ndvi" value="0.8"/>
<float name="refr_re" value="1.5"/>
<float name="refr_im" value="0.0"/>
<float name="ext_ior" value="1.0"/>
</bsdf>