eradiate.scenes.bsdfs.MQDiffuseBSDF#

class eradiate.scenes.bsdfs.MQDiffuseBSDF(id=None, *, data)[source]#

Bases: BSDF

Measured quasi-diffuse BSDF [mqdiffuse].

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.

Parameters:
  • id (str, optional) – Identifier of the current scene element.

  • data (Dataset) – Measured quasi-diffuse BRDF data formatted as an xarray dataset.

Fields:
  • id (str or None) – Identifier of the current scene element.

  • data (Dataset) – Measured quasi-diffuse BRDF data formatted as an xarray dataset.

Warning

The input is specified using an xarray dataset. It must contain a brdf data 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.

Notes

  • 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(callback)#

Traverse this scene element and collect kernel dictionary template and parameter update map contributions.

Parameters:

callback (SceneTraversal) – Callback data structure storing the collected data.

update()#

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.

Returns:

dict – A dictionary mapping object names to a corresponding object to be inserted in the Eradiate scene graph.

property params#
Returns:

dict[str, UpdateParameter] or 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.

Returns:

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 mitsuba.load_dict() function, or InitParameter instances which must be rendered.