pub trait Material {
// Required method
fn compute_scattering_functions(
&self,
si: &mut SurfaceInteraction,
arena: &mut MemoryArena,
mode: TransportMode,
_allow_multiple_lobes: bool,
);
// Provided method
fn bump(&self, d: &Arc<dyn Texture<Float>>, si: &mut SurfaceInteraction) { ... }
}