# 3.5. Optical Surface Materials¶

## 3.5.1. Absorber¶

class raysect.optical.material.absorber.AbsorbingSurface

A perfectly absorbing surface material.

## 3.5.2. Emitters¶

class raysect.optical.material.emitter.UnitySurfaceEmitter

Uniform and isotropic surface emitter with emission 1W/str/m^2/ x nm, where x is the spectrum’s wavelength interval.

This material is useful for general purpose debugging and testing energy conservation.

class raysect.optical.material.emitter.UniformSurfaceEmitter

Uniform and isotropic surface emitter.

Uniform emission will be given by the emission_spectrum multiplied by the emission scale.

Parameters: emission_spectrum (SpectralFunction) – The surface’s emission function. scale (float) – Scale of the emission function (default = 1 W/m^2/str/nm).

## 3.5.3. Lambertian¶

class raysect.optical.material.lambert.Lambert

An ideal Lambertian surface material.

A Lambertian is a perfectly diffuse surface that scatters light equally in all directions. It is a good approximation to many real world surfaces.

Parameters: reflectivity (SpectralFunction) – Reflectance function which defines the fraction of light scattered at each wavelength.

## 3.5.4. Conductors¶

class raysect.optical.material.conductor.Conductor

Conductor material.

The conductor material simulates the interaction of light with a homogeneous conducting material, such as, gold, silver or aluminium.

This material implements the Fresnel equations for a conducting surface. To use the material, the complex refractive index of the conductor must be supplied.

Parameters: index (SpectralFunction) – Real component of the refractive index - $$n(\lambda)$$. extinction (SpectralFunction) – Imaginary component of the refractive index (extinction) - $$k(\lambda)$$.
class raysect.optical.material.conductor.RoughConductor

This is implementing Cook-Torrence with conducting fresnel microfacets.

Smith shadowing and GGX facet distribution used to model roughness.

Parameters: index (SpectralFunction) – Real component of the refractive index - $$n(\lambda)$$. extinction (SpectralFunction) – Imaginary component of the refractive index (extinction) - $$k(\lambda)$$. roughness (float) – The roughness parameter in range (0, 1]. 0 is perfectly specular, 1 is perfectly rough.

## 3.5.5. Dielectrics¶

class raysect.optical.material.dielectric.Sellmeier

Material with refractive index defined by Sellmeier equation

Parameters: b1 (float) – Sellmeier $$B_1$$ coefficient. b2 (float) – Sellmeier $$B_2$$ coefficient. b3 (float) – Sellmeier $$B_3$$ coefficient. c1 (float) – Sellmeier $$C_1$$ coefficient. c2 (float) – Sellmeier $$C_2$$ coefficient. c3 (float) – Sellmeier $$B_1$$ coefficient. sample_resolution (float) – The numerical sampling resolution in nanometers.
function()

Returns a sample of the three term Sellmeier equation at the specified wavelength.

Parameters: wavelength (float) – Wavelength in nm. Refractive index sample. float
class raysect.optical.material.dielectric.Dielectric

An ideal dielectric material.

Parameters: index (SpectralFunction) – Refractive index as a function of wavelength. transmission (SpectralFunction) – Transmission per metre as a function of wavelength. external_index (SpectralFunction) – Refractive index of the external material at the interface, defaults to a vacuum (n=1). transmission_only (bool) – toggles transmission only, no reflection (default=False).
class raysect.optical.material.debug.PerfectReflectingSurface

A material that is perfectly reflecting.

## 3.5.6. Modifiers¶

class raysect.optical.material.modifiers.Roughen

Modifies the surface normal to approximate a rough surface.

This is a modifier material, it takes another material (the base material) as an argument.

The roughen modifier works by randomly deflecting the surface normal about its true position before passing the intersection parameters on to the base material.

The deflection is calculated by interpolating between the existing normal and a vector sampled from a cosine weighted hemisphere. The strength of the interpolation, and hence the roughness of the surface, is controlled by the roughness argument. The roughness argument takes a value in the range [0, 1] where 1 is a fully rough, lambert-like surface and 0 is a smooth, untainted surface.

Parameters: material – The base material. roughness – A double value in the range [0, 1].

## 3.5.7. Debugging¶

This module contains materials to aid with debugging and creating test scenes.

class raysect.optical.material.emitter.Checkerboard

Isotropic checkerboard surface emitter

Defines a plane of alternating squares of emission forming a checkerboard pattern. Useful in debugging and as a light source in test scenes.

Parameters: width (float) – The width of the squares in metres. emission_spectrum1 (SpectralFunction) – Emission spectrum for square one. emission_spectrum2 (SpectralFunction) – Emission spectrum for square two. scale1 (float) – Intensity of square one emission. scale2 (float) – Intensity of square two emission.
width

The width of the squares in metres.

Return type: float
class raysect.optical.material.debug.Light

A Lambertian surface material illuminated by a distant light source.

This debug material lights the primitive from the world direction specified by a vector passed to the light_direction parameter. An optional intensity and emission spectrum may be supplied. By default the light spectrum is the D65 white point spectrum.

Parameters: light_direction (Vector3D) – A world space Vector3D defining the light direction. intensity (float) – The light intensity in units of radiance (default is 1.0). spectrum (SpectralFunction) – A SpectralFunction defining the light’s emission spectrum (default is D65 white).