Color Data and Scalar Data

Channels in Mari can either contain color data or scalar data. Color data holds the RGB values that define the color of the pixels in a texture. Scalar data on the other hand, defines properties of the texture such as shader inputs that define bumpiness, roughness or shininess. Essentially, color data exists to be seen, scalar data is used to calculate.

Mari allows you to switch between scalar and color channels in the Channels Palette, and each channel can be viewed and customized. You normally need to apply a view transform to color data to adjust it according to your monitor's colorspace.

Scalar data's view transform defaults to raw (none) by which it is unchanged. This is because scalar data (unlike color data) is a computational resource and as such does not require color adjustment to be viewed.

Note:  A scalar channel can still be viewed in Mari - think of this as a visualization of the data, drawn as if it was RGB. For example, roughness will be seen as grayscale; the darker the gray, the rougher the surface.

Both color and scalar channels have default view transform types that can be set in the Project Settings Dialog.

View transforms can be selected using the View Transform Toolbar . Each selection is remembered and it can be reset to the default using this toolbar.

Color Data

Color data in Mari consists of RGB values which describe the color of pixels in a texture. This is generally driven by a colorspace conversion to maintain a perceptually accurate result across different colorspaces and data types. Color data is used when a channel needs to display a visual response based on a artist's exact picked color, specifically diffuse color, specular color, or emissive color.

Scalar Data

Scalar data holds raw mathematical values for processing textures as opposed to human perception of colors. Scalar data is used in shader input/channels and masking. For instance, scalar data is used to describe values of shader inputs such as the amount of bumpiness, roughness, shininess, and so on.

Scalar data is not affected by color conversions. It can relate to either coordinate or RGB values typically between 0 - 1 across three components. Scalar data is generally used for simple and compound masking, or to describe a mathematical value used to drive a shader input.

Scalar data can be perceived as grayscale or RGB.

Scalar Data: Grayscale

In the case of grayscale, when the scalar data's RGB values are the same (e.g. 0.3, 0.3, 0.3), this results in a shade of gray when viewed.

As a shader input/channel it is used to display an effect such as the shininess or reflectivity of a surface or opacity.

For masking, it can be used to create a grayscale mask, normally used to indicate surface opacity.

Scalar Data: RGB

When the scalar data is RGB, the values are different for each component (unlike grayscale).

Note:   RGB scalar data doesn't define true RGB color values, it simply uses the same data format (a triplet of numerical values). Even though the resulting RGB value can be perceived as color, it is simply an outcome of using the RGB components of a texel to store three mathematical values.

When using RGB scalar data for shader inputs, one example is to relate to separate coordinates in space. For world space, the value of the three components would be applied to an area in x,y,z coordinate space (for four components it would be x,y,z,w), specifically a normal or vector map. Another example is using the RGB to combine three grayscale scalar channels using their equivalent R, G, and B values to create per component mappings in a single channel.

When masking, RGB scalar data is used for co-ordinate information or channel masking, as opposed to gradient based masking. For example, to create a mask you could use your individual RGB channels to separate objects or areas of your mesh, or even individual shader inputs within your project.

 

Diffuse color channel affected by color management -
Scalar Data option is disabled.

Specular data channel not affected by color management -
Scalar Data option is enabled.

Choosing Scalar Data

By default Mari always assumes data is color, unless specified as scalar.

Scalar data is used in the Image Manager Palette and Channels Palette. Scalar data can be enabled with the Scalar Data checkbox and in the Channels palette's channel list this icon / indicates whether the channel is tagged for scalar data.

Scalar data is also used in the View Transform Toolbar , , which is used to display a number of options for managing your monitor's colorspace. Color and scalar data are represented by the following icons:

- The data is considered as color data and is being color managed.

- The data is considered as non-color data, specifically scalar data, and has no color management applied.


View Transform toolbar

Note:  When viewing nodes that connect to scalar streams of Multi-Channel nodes, Material nodes, or Shader nodes, the View Transform switches automatically to scalar mode.

Some procedurals contain attributes that require a color for configuring their output (see Adding Adjustments and Procedurals and Layer Types and Examples). In these procedurals, the color controls contain a toggle that sets the context in which the procedural effect is to be used for Scalar or Color data. By default, Mari detects the channel's color data type and sets the toggle accordingly for layers created through the Layers palette. For Procedural nodes created through the Node graph, this color/scalar toggle defaults to color. Procedural nodes that are to be used within masks and scalar channels have to be set to scalar manually.


Procedural in the Layers palette

Using Scalar Data

Scalar is generally used to create effects such as bumpiness, roughness, shininess, reflectivity, masks, and so on. If you are painting scalar data, make sure to use scalar channels, source images, and procedurals. Some use examples below:

Channels palette - Scalar Data is enabled

Cloud Procedural - Scalar data toggle

Image Manager palette - Scalar Data is enabled

Paint Through tool - Target channel has Scalar Data