- class eradiate.scenes.bsdfs.MQDiffuseBSDF(id=None, *, data)[source]#
Measured quasi-diffuse BSDF [
This BSDF 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 input is specified using an xarray dataset. It must contain a
brdfdata variable with the following dimensions (the corresponding coordinate range is specified within brackets):
cos_theta_o[0, 1]: cosine of the outgoing zenith angle;
phi_d[0, 2π[: difference between the incoming and outgoing azimuth angles;
cos_theta_i[0, 1]: cosine of the incoming zenith angle.
Coordinates must be evenly spaced and have a “units” metadata field.
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.
While this BSDF may technically represent any isotropic material, its sampling routine’s performance degrades as the material departs from a diffuse behaviour.
Traverse this scene element and collect kernel dictionary template and parameter update map contributions.
SceneTraversal) – Callback data structure storing the collected data.
Enforce internal state consistency. This method should be called when fields are modified. It is automatically called as a post-init step.
- property objects#
Map of child objects associated with this scene element.
dict– A dictionary mapping object names to a corresponding object to be inserted in the Eradiate scene graph.
- property params#
None– A dictionary mapping parameter paths, consisting of dot-separated strings, to a corresponding update protocol.
- property template#
Kernel dictionary template contents associated with this scene element.
dict– A flat dictionary mapping dot-separated strings describing the path of an item in the nested scene dictionary to values. Values may be objects which can be directly used by the
InitParameterinstances which must be rendered.