Skip to content

What are texture operators?#

Texture operators are a special class of items that define one or multiple output values meant to be connected to attributes in order to drive their values. While they are mainly used for materials, they are also used on any items defining texturable attributes such as scatterers, point clouds etc...

Texture operators can also be extended by 3rd party renderer vendors in order to declare their specific set of textures and materials for their custom rendering engines. Since Clarisse may not be able to interpret/evaluate these textures, Clarisse built-in materials/textures prevents any incoming connections to unsupported textures and materials.

Note

Built-in texture operators can be viewed using the Texture View.

Clarisse provides quite a few different built-in textures performing many types of operations. They internally rely on a texture context which consists of a geometric fragment among other things and all return a single 4D floating point vector output that represents anything from a color to a single value.

There are two types of textures to consider in Clarisse: the ones directly inheriting from the Texture class which are usually operators and the others that inherit from Texture Spatial which define spatial projections for texturing. Most textures have a pretty explicit class name defining their purpose. They are also sorted by categories:

Texture Category Description
Color Regroup textures generating or operating on colors
Map Regroup textures generating color from a map (image map or vertex map)
Math Regroup textures providing mathematical operations
Normal Regroup textures generating shading normals
OSL Regroup textures supporting Open Shading Language (OSL). Please refer to OSL for more information.
Procedural Regroup procedural texture maps such as Fractal Noise
Raytrace Regroup textures relying on Raytracing
Utility Regroup general utility textures

Spatial Projections#

All textures inheriting from Texture Spatial provide many quite a few attributes to control the spatial projection of the texture.

Attribute Description
Projection Sets the implicit projection mode
Space Sets texture mode as 2D or 3D texture. In 3D space all components are used to evaluate the texture (useful for 3d noise textures)
Axis Sets the projection axis.
Camera Sets the camera used for projection when in Camera projection mode
UV Slot Sets which UV Slot to use
Object Space Sets if the texture reference frame is in Object/Instance/World. In World space object transformations deformations affect texturing.
Reference Object Use the transformation of the specified scene item for control the projection transformation matrix.
Projection Translate Translates the position of the texture projection
Projection Rotate Rotates the texture projection
Projection Scale Scales the texture projection
UV Translate Translates the uv coordinate
UV Rotate Rotates the uv coordinate
UV Scale Scales the uv coordinate

UV Projection#

In Clarisse, textures can be shared between materials and geometries which is why UV maps are defined as application wide items called UV Slots. UV Slots are globally mapping UV Maps by index.

They are statically generated project items that are not saved in the project. They can be found in the default://context. The maximum number of UV Slots in the project is always equal to the maximum number of different UV Maps that are in the geometries of the project.

For example if one of your geometries has 10 UV Maps while others have less, the total number of UV Slots declared will equal to 10.

Tip

When a texture is using a UV Slot that doesn't exist in the rendered object, the texture returns pure black (0.0, 0.0, 0.0, 0.0).

All the geometries share the same material. UV Mode and UV Slot set to Use First Available (default). Since the cylinder is black we can assume it doesn't declare any UV maps

All the geometries share the same material UV Mode and UV Slot set to Use First Available default Since the cylinder is black we can assume it doesn't declare any UV maps

Here we set UV Slot to default://uv_slot_1. Only the box declares this UV

Here we set UV Slot to default//uvslot1 Only the box declares this UV

Tip

It is possible to list the number of UV Maps declared by the objects by using the Texture View.

UV Property#

Instead of specifying UV Slots you can alternatively use geometry properties as UV maps via the attribute Uv Property. In Clarisse, Geometry properties are named arbitrary properties that are declared directly by geometries. They are usually accessed through the texture node Extract Property.

Unlike with UV Slots, assigning Uv Property via geometry properties is more robust as the mapping resolution is performed by name. As soon as you respect naming convention, this method allows you to reuse more easily existing texture networks as they don't really on the actual existence of geometries and corresponding UV Slot items.

Same material used on the sphere and the head. Note the Uv Property is only defined on the head.

Uv Property

Implicit Projections#

The Projection attribute can be set to compute implicit projection on the geometric fragment during rendering. There are 4 types of implicit projections:

Attribute Description
Planar Compute a planar projection on the specified Axis
Cylindrical Compute a cylindrical projection on the specified Axis
Spherical Compute a spherical projection on the specified Axis
Cubic Compute a cubic projection which is a planar projection that automatically set the proper axis based on the surface normal. It is possible to use a Triplanar texture instead that can let you choose which texture to apply for the 6 faces of the cube.

Implicit projections can be further controlled using dedicated projection attributes that control the projection transformation matrix. It is also possible to entirely drive the transformation of the projection by connecting Reference Object to an item of the scene.

Planar#

Projection set to Planar and Axis set to X

Projection set to Planar and Axis set to Y

Projection set to Planar and Axis set to Z

Cylindrical#

Projection set to Cylindrical and Axis set to X

Projection set to Cylindrical and Axis set to Y

Projection set to Cylindrical and Axis set to Z

Spherical#

Projection set to Spherical and Axis set to X

Projection set to Spherical and Axis set to Y

Projection set to Spherical and Axis set to Z

Cubic#

Projection set to Cubic

Object Space#

Object Space sets the reference space used for texturing. By default it is set to Object (Base) space which means the texture space uses the base geometry without transformation nor deformation.

It is also possible to set it to Object (Deform) so that the texture space uses the deformed geometry instead of the base one.

The texture spatial also provides two other modes: Instance and World. These modes are useful when you respectively work with combiners/scatterers and Camera maps.

Object Space set to Object: each box have the same texturing despite their transformation

Object Space set to Object each box have the same texturing despite their transformation

Object Space set to Instance: each box have different texturing according to their transformation

Object Space set to Instance each box have different texturing according to their transformation

When Object Space is set to Instance texturing behaves the same way as if it was set to World. However, when used in scatterers and combiners the texture isn't affected by the transformation of scatterers or combiners unlike in World space. Instance is extremely useful when building assets from multiple elements combined in a combiner.

All 3 modes in 3 combiners, note the one in World space (top right)

All 3 modes in 3 combiners, note the one in World space top right

Camera#

Camera projection allows camera mapping. The viewpoint and the projection are defined by the camera connected to the Camera attribute.

The texture uses the real projection of the camera it references as its projection. If you connect a panoramic camera, it creates panoramic camera mapping.

Same camera used both camera projection and rendering

Same camera used both camera projection and rendering

When setting the projection to Camera, it is possible to enable Camera Occlusion which looks for potential occluders between the camera and the evaluated surface.

When an occluder is found, the texture returns a pure black color (0,0,0,0). This is very handy when working with multiple camera projections to texture a scene.

Camera Occlusion Disabled

Camera Occlusion Enabled

Camera Occluders#

It is also possible to specify a group of objects that are considered as occluders. This is very useful to exclude certain objects that are passing between the camera and the cam mapped objects.

For example, imagine you have a spaceship moving between the camera and a city that is cam mapped. This would be problematic since the occlusion of the spaceship would affect the camera projection.

By setting the occluders to the city objects, you aren't obliged to create a specific render layer to isolate the spaceship from the camera occlusion computations.

Parametric#

Parametric projection uses the natural UV coordinates of primitives.

Parametric

Environment#

The Environment projection mode is view dependent since it projects the texture as if it was the reflection of infinite sphere surrounding the scene. This is especially useful when used in conjunction with the Shadow Catcher Material.

X axis

Y axis

Z axis

Reference Positions#

By default, Clarisse considers the frame 0 to be the base pose of geometries. Instead of using the base geometry for texture space computations, it is possible to set explicit positions when they are properly exported as a geometric property. Alternatively, it is possible to use the Reference Frame attribute of Scene Objects. For more information please refer to Reference Frame.

Displacing UVs#

It is possible to displace (offset) UV coordinates by texturing UV transforms attributes of spatial textures. This feature is extremely useful when you want to break obvious repetitions that are visible when using tiled textures.

Original texture

Displaced texture

Texture used as displacements for UVs

Note

Displacing UV transform properly recomputes ray differentials to keep mip mapping.