In this version of EnSight, we provide a predefined material library with some commonly used material types. To maintain compatibility, EnSight sets the default material to be of type "Default", which is compatible with the lighting model used in previous EnSight versions. For other material types, some different lighting models will be used in the raytracer.
The materials are physically based. Their major differences come from the individual microfacet representation. In computer graphics, we use a term Bidirectional Reflectance Distribution Function (BRDF) to describe the distribution of light scattering on the surface. Different materials have different BRDFs. Some of the BRDFs are:
Lambertian |
an ideal model that equally reflects in all directions. |
OrenNayer |
a kind of diffuse reflection controlled by a smoothness term. Can degenerate into Lambertian when smoothness becomes zero. |
GGX, Velvety, BlinnPhong |
are different specular highlighting models |
Coated GGX |
a double-layer model, where the outer layer is transparent with an index of refraction value controlled by the user, and the inner layer is a normal layer such as GGX or BlinnPhong |
Another significant difference for the materials is their Fresnel terms. For some of the materials, their Fresnel reflection terms are fixed and hidden from the user. When light moves from one media into another with different refraction indices, both reflection and refraction may occur. The Fresnel equations describe what fraction of the light is reflected, and what fraction is refracted. Fig. 1 shows the reflection ratio according to the changes of incident angles for various materials. It clearly indicates that differences between metals and non-metals are significant. For example, at zero incidence angle, all the metals in the figure have reflection ratio > 0.5, while the non metals have low reflection ratio < 0.2. Real world perceptions substantiate this. However, note that at glancing angles, all materials reflect almost all light.
Internally, the Fresnel terms are controlled by the factor of refraction index. For metals, we assign default values for different metal types. A user thus does not need to know anything about it. Once selecting a metal type, a user can freely modify its appearance while EnSight will still use the same Fresnel terms for computation. For non-metals, sometimes the refraction index is exposed. If it is exposed to the user, a user can adjust this value to control the reflection and/or refraction ratios for incident light.

The materials are designed as shown in Material Definition. You can see that some do not have a diffuse component, while others do not have reflective highlights. Both the graphics hardware rendering & raytracing implementations roughly follow the same design. However, in the interactive graphics windows, they may look similar. This is done for realtime performance reasons. Namely, we have to use a simple implementation to handle several material types quickly.
Material Definition
Material |
Diffuse |
Specular |
Reflective |
Transmitive |
|
BRDF |
BRDF |
Fresnel |
|||
Default |
Lambertian |
BlinnPhong |
no |
n/a |
yes |
Cloth |
Minnaert |
Velvety |
no |
n/a |
n/a |
Glass |
n/a |
n/a |
n/a |
yes |
yes |
Liquid |
Lambertian |
GGX |
yes |
yes |
yes |
n/a |
GGX |
yes |
yes |
yes |
|
Paint high-gloss |
Lambertian |
coated GGX |
yes |
yes |
yes |
Paint semi-gloss |
Lambertian |
coated GGX |
yes |
yes |
yes |
Paint satin |
Lambertian |
Anisotropic |
yes |
n/a |
yes |
Paint eggshell |
Lambertian |
Anisotropic |
yes |
n/a |
yes |
Paint Matte |
OrenNayar |
n/a |
n/a |
n/a |
yes |
Plastic |
Lambertian |
GGX |
yes |
n/a |
yes |
Rubber |
OrenNayar |
n/a |
n/a |
n/a |
yes |