eradiate.scenes.bsdfs.HapkeBSDF

class eradiate.scenes.bsdfs.HapkeBSDF(id=None, w=0.5, b=0.2, c=0.5, theta=<Quantity(30.0, 'degree')>, B_0=0.0, h=0.0)[source]

Bases: BSDF

Hapke BSDF [hapke].

This BSDF 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 unit test suite used to validate this implementation used reference data from Pommerol et al. [2013].

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.

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

  • w (Spectrum or dict or float, default: 0.5) – Single scattering albedo ω. Must be in [0, 1].

  • b (Spectrum or dict or float, default: 0.2) – Asymmetry parameter of the Henyey-Greenstein phase function. Must be in [0, 1].

  • c (Spectrum or dict or float, default: 0.5) – Backscattering parameter of the Henyey-Greenstein phase function. Must be in [0, 1].

  • theta (quantity or float, default: 30.0) – Photometric roughness θ. Angle in degree. Must be in [0, 90]°.

  • B_0 (Spectrum or dict or float, default: 0.0) – Intensity of shadow hiding opposition effect. Must be in [0, 1].

  • h (Spectrum or dict or float, default: 0.0) – Width of shadow hiding opposition effect . Must be in [0, 1].

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

  • w (Spectrum) – Single scattering albedo ω.

  • b (Spectrum) – Asymmetry parameter of the Henyey-Greenstein phase function.

  • c (Spectrum) – Backscattering parameter of the Henyey-Greenstein phase function.

  • theta (Spectrum) – Photometric roughness θ.

  • B_0 (Spectrum) – Intensity of shadow hiding opposition effect.

  • h (Spectrum) – Width of shadow hiding opposition effect.

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, SceneParameter] 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 DictParameter instances which must be rendered.