Radeon ProRender

Reflection

The reflection component is used to simulate reflective objects, such as mirrors and shiny surfaces.

When light hits the surface between two media with different refractive indexes, some of it is reflected from the surface in the direction of the opposing side of the surface normal. On a smooth or polished surface, this results in a mirror-like appearance called “specular reflection” in which the incident light is reflected in a single outgoing direction, with the angle of reflection being equal to the angle of incidence.

Rough or non-smooth surfaces are not good specular reflectors, as they reflect light in all directions. Usually, not all light is reflected from a surface — some light penetrates the illuminated object, where it is absorbed by the material and/or scattered internally. Some of this scattered light may make its way back out through the surface and become visible. This is known as “diffusion/diffuse light” and “subsurface scattering”.

Materials can absorb and scatter diffuse light in different ways for different wavelengths, and the color of a material is determined by the wavelengths it reflects and absorbs. A material that reflects/absorbs all wavelengths of visible light appears white/black. A red apple absorbs most wavelengths but reflects red, which makes the apple look red. In contrast to specular reflection, the scattering is often so uniformly chaotic that it appears the same from all directions. A shader that uses this approximation requires only one input — albedo, a color made up of the fractions of various colors of light that will come out from a surface. “Diffuse color” is a synonymous term.

There are the two modes in the reflection layer workflow: IOR or metallness used to describe the reflection behavior of non-metals (“dielectric”) and metals, respectfully.

The IOR mode uses the index of refraction to attenuate reflectivity as the angle between the surface normal and camera ray increases. That is, objects become more reflective when viewed at a grazing angle. The metalness mode uses a parameter called “Metalness”. This follows the system set forth in Physically-Based Shading at Disney where reflection can be metallic or dielectric, using either a colored specular or white respectively, or somewhere in between.

More diffuse and rough materials will reflect dimmer and wider highlights, while smoother and more reflective materials will reflect brighter and more condensed highlights.

See Reflection of Light, Reflection and Total Internal Reflection for more details of the science.

In AMD Radeon ProRender, the reflection component can be controlled using the following parameters:

For most transparent surfaces, such as water or glass, the reflection component should be used in combination with the Refraction component, as these materials can be both reflective and refractive.

Reflection Mode

This parameter determines the reflection workflow: IOR or metalness. The default mode is metalness.

To calculate reflectance, the physical index of reflection is used in the IOR mode, while a set empirical value of metalness is used in the metalness mode. In metalness mode, at a metalness of 1 gives the object a reflection color of colored metal, and at 0, the object is treated as a dielectric that has white speculars.

Reflection mode: IOR

Reflection mode: metallness (1.0)

 

Reflection Color

The reflection color, also called the base reflection albedo, controls the color of the reflective material.

The input type for this parameter is a numeric value within the range from 0 to 1 per component, with the default being 1. To create a non-uniform reflection color, a texture map can be used.

Reflection color: white

Reflection color: yellow

Reflection color: blue

A material can only reflect wavelengths that are in the light that shines on it. In white light, a white material reflects all the wavelengths of visible light and therefore appears white. If only red light is shined on a white piece of paper or a white shader ball, the object will appear red, because only red light is available to be reflected. A mixture of white and red light shined on the same model can produce some interesting effects:

Reflection color: white

Light: white and red

Reflection color: yellow

Light: white and red

Reflection color: blue

Light: white and red

Reflection Weight

The reflection weight is a scaling factor that controls how reflection parameters contribute to the overall appearance of the material. AMD Radeon ProRender multiplies the reflection weight by the color’s albedo to calculate the effect of the reflection component. A smaller refraction weight makes the material look darker, allowing less reflection. A greater refraction weight makes the color look brighter and the material more mirror-like.

The input type for this parameter is a numeric value within the range from 0 to 1 per component, with the default being 1. To create a non-uniform reflection weight, a map can be used.

Reflection weight: 0

Reflection weight: 0.5

Reflection weight: 1

Anisotropy and Anisotropy Rotation

With anisotropy, light is reflected and transmitted with a directional bias. The anisotropy parameter sets the level of anisotropy, which controls the shape of the specular highlights and reflections. A value of 0 is used for a fully isotropic reflection which gives a regular circular specular highlight, while values from -1 to 1 give a range of ellipses from wide to tall: the greater/smaller the anisotropy parameter, the more stretched out/compressed the refraction highlight. This is where you can achieve, for instance, an anisotropic roughness, such as a brushed metal surface.

The input type for the anisotropy parameter is a numeric value within the range from -1 to 1 per component, with the default being 0 (fully isotropic).

The anisotropy rotation parameter controls the orientation of the anisotropic component. This rotates the cone of reflection around UV. The input type for the anisotropy rotation parameter is a numeric value within the range from 0 to 1 radians per component, with the default being 0 (no rotation).

The examples below show the shader ball model rendered for different values of anisotropy and anisotropy rotation (for all the three examples for anisotropy rotation, the anisotropy value is 1).

Reflection anisotropy: 0

Reflection anisotropy: 0.5

Reflection anisotropy: 1

Anisotropy rotation: 0

Anisotropy rotation: 0.3

Anisotropy rotation: 0.6

Reflection Roughness

The reflection roughness controls the glossiness of the reflective surface. The lower the value, the sharper the reflection. A value of 0 creates a perfectly sharp mirror reflection, while 1 results in reflections that are close to a diffuse reflection. The roughness parameter is used in both Reflective and Refractive layers. The difference between the two is that the reflection roughness deals strictly with the amount of reflection dealing with the surface, while the refraction roughness will have an effect on what happened inside the material, changing its transparency.

The input type for this parameter is a numeric value within the range from 0 to 1 per component, with the default being 0.25. The roughness slider has a nonlinear (logarithmic) behavior: from 0 to 0.5, a sharp spike in the amount of roughness is observed, while from 0.5 to 1, the rate of increase falls off considerably. To create a non-uniform reflection roughness, a texture map can be used.

Reflection roughness: 0

Reflection roughness: 0.5

Reflection roughness: 1

Tiny features of the surface have an effect on both the diffusion and reflection of light, especially in specular reflections. The rougher the surface, the more the reflected light diverges or appears blurred.

Metalness

This parameter determines how metallic a material looks. It controls its reflection model from dielectric (metalness 0) to metallic (metalness 1), so greater values give the shader a more metallic appearance. You can select which part of the objects appear more or less metallic by setting a map.

The input type for this parameter is a numeric value within the range from 0 to 1 per component, with the default being 0. To create a non-uniform reflection weight, a map can be used.

Reflection metalness: 0

Reflection metalness: 0.5

Reflection metalness: 1

IOR

The IOR (Index Of Reflection) parameter controls the angular falloff of reflection intensity. An object becomes more reflective the greater the angle at which it is seen is, roughly speaking, the angle at which you see reflections. With a higher value for the IOR, reflection is greater at grazing angles. This IOR value has a significant effect on what the material will look like, and its values range from 1 to infinite, although when increasing the IOR beyond 30-40, any difference in appearance is almost unnoticeable. In the example below, we have three examples of different reflections with different IOR values. With an IOR of 1, we observe weak reflections, as the angle is too steep for reflections to show up; with an IOR of 2, we can see reflections starting to form; and with an IOR of 6, we obtain an even more reflective surface.

The input type for this parameter is a floating point numeric value, normally from 1 to 3 to provide for physically realistic rendering, although the parameter’s range is wider, from 0 to infinity. Values smaller than 0 or greater than 3 are used mainly to produce some physically incorrect effects.

Note

In most cases, the IOR default value can be used.

Reflection IOR: 1.5

Reflection IOR: 3

Reflection IOR: 6

Reflection Normal

The reflection normal parameter defines what normal map will be used by the reflection layer of the material. By default, this layer uses shader’s Normal, i. e. a normal map defined with the shader’s Normal component. However, in Reflection Normal, you can also provide a separate normal map for the reflection layer to add a special effect.

The images below compare the images rendered with and without a reflection normal map applied to the reflection layer, as well as the reflection normal map used. The reflection normal parameter supports the same input types as the shader’s Normal component.

No reflection normal map

Reflection normal map 1

Reflection normal map