RedSDK Materials are based on the following components:
Diffusion | This is the diffuse color / texture information of the material, used in a Lambertian equation. | |
---|---|---|
Transmission | This is the transmission color / texture information of the material. The transmission has precedence over the diffusion term for the calculation of energy preservation. | |
Reflection | This is the reflection color / texture information of the material. The reflection has precedence over the diffusion and transparency terms for the calculation of energy preservation. |
These inputs can be modified using special parameters:
Fresnel | The fresnel option is a very powerful term that is used to modulate the amount of reflection emitted by the material based on the angle of the viewing direction with the surface. This must be turned on for all glasses materials. | |
---|---|---|
Anisotropic reflectance | This is an extra anisotropic term that can be set to specify anisotropic reflections in the realistic material. Two anisotropy values (anisotropy in U and anisotropy in V) can be set, or texture with at least two channels (red and green) can be set instead, to define a per-pixel anisotropic information. Anisotropy values are in [0.0, 1.0]. The larger the value the wider the reflection angle. | |
Anisotropy orientation | This term defines the orientation of the anisotropy. Either a single angular value or a texture with at least one channel (red) defines the value of the rotation angle to apply to the basis used to define the reflectance of the material. Angles are expressed in radians. The read texture value is multiplied by 2PI to map the usual [0.0,1.0] range to [0.0,2PI]. | |
Transmission glossiness | This term defines the glossiness value of the material. A single glossiness value or a texture with at least one channel (red) can be used to define the per-pixel transmission glossiness of the material. Glossiness values are in [0.0,1.0]. The larger the value the wider the transmission glossiness cone. | |
Transmission scattering | This is an extra absorption term that can be specified for the material transmission. It uses an out-scattering color and an out-scattering scale used to specifiy the amount of energy being absorbed along the path of a ray for each unit length crossed in the model media volume. | |
Reflection fog | This is fade-out term that can be specified for reflections. At a certain distance, the color of the reflection becomes equal to the specified reflection fog color, and any other visible reflection is lost. |
Finally, materials also feature surface modifiers that are detailed below:
Bump map | The bump map of the realistic material affects the surface normal of the geometry at the shaded fragment. | |
---|---|---|
Displacement map | The displacement map of the realistic material modifies the surface of the geometry that uses it. |
Diffusion The diffusion model used is Lambertian, meaning that the incoming light is diffused uniformly in every outgoing direction (i.e. in the whole hemisphere around the surface hit point). It is controlled giving one color (constant over the surface or by texel using a texture). A light that illuminates a surface produces a more visible lighting if it's aligned with the surface normal.
Reflection
In our realistic material, reflections have greater weight than two others shading components. First, the user has to choose between two different behaviors (see the figure below):
- Fresnel-like reflections: the reflection amount is proportional to the opposite of the dot product between the eye vector and the surface normal. Reflections are then stronger near the grazing angles. We use the Schlick Fresnel term approximation in our model (as in almost any other shading models found in the literature). Note that the reflection amount is still post-multiplied by the user-given reflection color.
- Uniform reflection: the reflection amount is read from the material input (constant color or texture)
Fresnel reflections (on the left) compared to uniform ones (on the right); in the Fresnel case, note how the reflection fades off as the angle between the eye vector and the surface normal decreases Whatever the model you choose, reflections can be made glossy and / or anisotropic. The glossiness is a measure of the dispersion of the reflection rays around the perfectly specular reflection vector. It can be seen as the half-angle of the cone subtended by the reflection vector where reflection samples are taken. The more the angle increases the more the reflections are blurry (and will require samples to avoid too much noise; see figure below)
.
The sphere on the right is less glossy than the one on the left. The anisotropy defines the shape of the reflections. Anisotropic materials reflect light according to the surface orientation (see figure below). It means that a local surface coordinate system is needed to handle oriented reflections.
The sphere on the left is isotropic as the one on the right is anisotropic. Notice how reflections are vertically distorted in the anisotropic case
Transmission
Every realistic material has its own index of refraction (IOR) When transparent, the material IOR is used to deviate light rays when they travel through the volume (see figure below).
The same realistic material with two different IOR values (1.02 on the left and 1.1 on the right) As for reflections, refractions can be glossy to simulate a wide range of materials:
The same realistic material with (on the right) or without (on the left) refraction glossiness The Bidirectional Reflectance Distribution Function is a function that defines how light is reflected at an opaque surface. BRDF - Reflection This group lets you set the glossiness parameter of reflection. The glossiness parameters control how much the reflections/transmissions are blurry. Depending on the chosen glossiness values, the results may vary a lot:
Different reflection glossiness settings Glossiness is achieved by increasing the "Anisotropy in U" and "Anisotropy in V" parameters. If both parameters are identical, then, the reflection is isotropic. If both parameters have different values, the reflection is anisotropic, like on a CD-ROM surface or on hairs and furs.
Parameters for a strong anisotropy
BRDF - Orientation
Different reflection anisotropic settings
BRDF - Transmission
Like for the BRDF - Reflection group, this one lets you set the glossiness parameter for the transmission. The IOR (Index Of Refraction) is exposed to control the amount of refraction.
A transparent material with different IOR
Bump and Displacement
For bump or displacement, things are a little bit different as those channels can't be color-based. The combo box is then adjusted to propose only the texture mode. The height of the bump/displacement can be set via a parameter. Like the previous material channels, Offset, Scale and Rotation parameters are used to transform the texture mapping.
Difference between Bump (on the left) and Displacement (on the right)
Advanced options
When it comes to setup reflection/transmission, Fresnel support is essential. It describes the way real surfaces interacts with the light. The strength of the reflection generally depends on the viewing angle (the angle between the observer and the surface normal). For example, see how your office window panes or car paint reflect more when viewed under grazing angles rather than when front facing.
Difference between Fresnel (on the left) and non-Fresnel (on the right) reflections This is also the place where you can turn on Caustics generation (both reflective and refractive) for your material.
A glass material with caustics turned on (on the left) or off (on the right) A Double sided option is also available in this category to set the back-face rendering of the shape.
RedSDK Material Properties
Property | Description | Min | Max | Default |
---|---|---|---|---|
Options | ||||
Double sided: | Controls the front and back sides visibility | 0; | ||
Note: Caustics are produced by objects when light gets concentrated through reflections and refractions. Well-known examples are visible at the bottom of a swimming pool under the summer sun or a glass on a table. | ||||
Reflective caustics: | Enables/disables reflective caustics | 0; | ||
Refractive caustics: | Enables/disables refractive caustics | 0; | ||
Fresnel: | Controls the Fresnel behavior | 0; | ||
IOR: | Controls the index of refraction (IOR) of the material | -1e+038 | 1e+038 | 1.5; |
Transmission scattering color: | Controls the out-scattering along the transmission ray in the material | 255 | 255 | 255; |
Transmission scattering scale: | Scales the effect of the transmission scattering color | -1e+038 | 1e+038 | 0; |
Reflection fog: | Enables/disables Reflection fog | 0 | 0 | 0; |
Reflection fog color: | Controls the color of the reflection fog | 0 | 0 | 0; |
Reflection fog distance: | Defines the distance at which the true reflection color gets replaced by the reflection fog color | -1e+038 | 1e+038 | 3.40282e+038; |
Pattern | ||||
---|---|---|---|---|
Color shader | ||||
Diffuse color: | Controls the diffuse color | 255 | 0 | 0; |
Texture Shader | ||||
Diffuse texture: | Controls the diffuse texture | bmp, jpg, tif, png | ||
Diffuse UV matrix U offset: | Controls the translation of the texture along U | -1e+038 | 1e+038 | 0; |
Diffuse UV matrix V offset: | Controls the translation of the texture along V | -1e+038 | 1e+038 | 0; |
Diffuse UV matrix U tiling: | Controls the number of texture repetitions along U | -1e+038 | 1e+038 | 1; |
Diffuse UV matrix V tiling: | Controls the number of texture repetitions along V | -1e+038 | 1e+038 | 1; |
Diffuse UV matrix UV rotation angle: | Controls the rotation angle of the texture | 0 | 360 | 0; |
Reflectance | ||||
---|---|---|---|---|
Color shader | ||||
Reflection color: | Controls the reflection color | 127 | 127 | 127; |
Texture Shader | ||||
Reflection texture: | Controls the reflection texture | bmp, jpg, tif, png | ||
Reflection UV matrix U offset: | Controls the translation of the texture along U | -1e+038 | 1e+038 | 0; |
Reflection UV matrix V offset: | Controls the translation of the texture along V | -1e+038 | 1e+038 | 0; |
Reflection UV matrix U tiling: | Controls the number of texture repetitions along U | -1e+038 | 1e+038 | 1; |
Reflection UV matrix V tiling: | Controls the number of texture repetitions along V | -1e+038 | 1e+038 | 1; |
Reflection UV matrix UV rotation angle: | Controls the rotation angle of the texture | 0 | 360 | 0; |
Transparency | ||||
---|---|---|---|---|
Color Shader | ||||
Transmission color: | Controls the transmission color | 0 | 0 | 0; |
Texture Shader | ||||
Transmission texture: | Controls the transmission texture | bmp, jpg, tif, png | ||
Transmission UV matrix U offset: | Controls the translation of the texture along U | -1e+038 | 1e+038 | 0; |
Transmission UV matrix V offset: | Controls the translation of the texture along V | -1e+038 | 1e+038 | 0; |
Transmission UV matrix U tiling: | Controls the number of texture repetitions along U | -1e+038 | 1e+038 | 1; |
Transmission UV matrix V tiling: | Controls the number of texture repetitions along V | -1e+038 | 1e+038 | 1; |
Transmission UV matrix UV rotation angle: | Controls the rotation angle of the texture | 0 | 360 | 0; |
BRDF-Reflection | ||||
---|---|---|---|---|
NOTE: The Bidirectional Reflectance Distribution Function is a function that defines how light is reflected at an opaque surface. | ||||
Values Shader | ||||
Anisotropy in u: | Controls the material anisotropy in u | -1e+038 | 1e+038 | 0.01; |
Anisotropy in v: | Controls the material anisotropy in v | -1e+038 | 1e+038 | 0.01; |
Texture Shader | ||||
Anisotropy texture: | Controls the anisotropy texture | bmp, jpg, tif, png | ||
Anisotropy UV matrix U offset: | Controls the translation of the texture along U | -1e+038 | 1e+038 | 0; |
Anisotropy UV matrix V offset: | Controls the translation of the texture along V | -1e+038 | 1e+038 | 0; |
Anisotropy UV matrix U tiling: | Controls the number of texture repetitions along U | -1e+038 | 1e+038 | 1; |
Anisotropy UV matrix V tiling: | Controls the number of texture repetitions along V | -1e+038 | 1e+038 | 1; |
Anisotropy UV matrix UV rotation angle: | Controls the rotation angle of the texture | 0 | 360 | 0; |
BRDF-Orientation | ||||
---|---|---|---|---|
Rotation Shader | ||||
Anisotropy rotation: | Controls the rotation of the anisotropy | 0 | 1 | 0; |
Texture Shader | ||||
Anisotropy rotation texture: | Controls the orientation of the anisotropy | bmp, jpg, tif, png | ||
Anisotropy rotation UV matrix U offset: | Controls the translation of the texture along U | -1e+038 | 1e+038 | 0; |
Anisotropy rotation UV matrix V offset: | Controls the translation of the texture along V | -1e+038 | 1e+038 | 0; |
Anisotropy rotation UV matrix U tiling: | Controls the number of texture repetitions along U | -1e+038 | 1e+038 | 1; |
Anisotropy rotation UV matrix V tiling: | Controls the number of texture repetitions along V | -1e+038 | 1e+038 | 1; |
Anisotropy rotation UV matrix UV rotation angle: | Controls the rotation angle of the texture | 0 | 360 | 0; |
BRDF-Transmission | ||||
---|---|---|---|---|
Angle Shader | ||||
Transmission glossiness angle: | Controls the glossiness angle of the transmission | 0 | 1 | 0; |
Texture Shader | ||||
Transmission glossiness texture: | Controls the transmission glossiness texture | bmp, jpg, tif, png | ||
Transmission glossiness UV matrix U offset: | Controls the translation of the texture along U | -1e+038 | 1e+038 | 0; |
Transmission glossiness UV matrix V offset: | Controls the translation of the texture along V | -1e+038 | 1e+038 | 0; |
Transmission glossiness UV matrix U tiling: | Controls the number of texture repetitions along U | -1e+038 | 1e+038 | 1; |
Transmission glossiness UV matrix V tiling: | Controls the number of texture repetitions along V | -1e+038 | 1e+038 | 1; |
Transmission glossiness UV matrix UV rotation angle: | Controls the rotation angle of the texture | 0 | 360 | 0; |
Bump | ||||
---|---|---|---|---|
Texture Shader | ||||
Bump texture: | Controls the bump texture | bmp, jpg, tif, png | ||
Bump UV matrix U offset: | Controls the translation of the texture along U | -1e+038 | 1e+038 | 0; |
Bump UV matrix V offset: | Controls the translation of the texture along V | -1e+038 | 1e+038 | 0; |
Bump UV matrix U tiling: | Controls the number of texture repetitions along U | -1e+038 | 1e+038 | 1; |
Bump UV matrix V tiling: | Controls the number of texture repetitions along V | -1e+038 | 1e+038 | 1; |
Bump UV matrix UV rotation angle: | Controls the rotation angle of the texture | 0 | 360 | 0; |
Displacement | ||||
---|---|---|---|---|
Texture Shader | ||||
Displacement texture: | Controls the surface displacement | bmp, jpg, tif, png | ||
Displacement height: | Controls the amount of geometry displacement | -1e+038 | 1e+038 | 0; |
Displacement offset: | Controls the relative position of displacement | -1e+038 | 1e+038 | 0; |
Displacement UV matrix U offset: | Controls the translation of the texture along U | -1e+038 | 1e+038 | 0; |
Displacement UV matrix V offset: | Controls the translation of the texture along V | -1e+038 | 1e+038 | 0; |
Displacement UV matrix U tiling: | Controls the number of texture repetitions along U | -1e+038 | 1e+038 | 1; |
Displacement UV matrix V tiling: | Controls the number of texture repetitions along V | -1e+038 | 1e+038 | 1; |
Displacement UV matrix UV rotation angle: | Controls the rotation angle of the texture | 0 | 360 | 0; |
Common Indices of Refraction
Material | IOR |
---|---|
Acetone | 1.36 |
Air | 1.0 |
Alcohol | 1.33 |
Chromium Oxide | 2.7 |
Copper Oxyde | 2.7 |
Crystal | 2.0 |
Diamond | 2.42 |
Emerald | 1.57 |
Ethyl Alcohol | 1.36 |
Glass | 1.5 |
Glass, Crown | 1.52 |
Glass, Heaviest Flint | 1.89 |
Glass, Heavy Flint | 1.65 |
Glass, Light Flint | 1.58 |