Skip to content

Geometry#

A Geometry light allows you to create lights that have an arbitrary shape. Using the Geometry attribute you can to specify the scene object that will define the shape of the light.

This scene object can be anything including a combiner or a scatterer. However, please note that geometry lights can't be created from volume or curves.

Clarisse logo used as geometry light

Clarisse logo used as geometry light

Sidedness#

A geometry light can either emit light from a single side or from both sides of its primitives. This behavior is controlled using the Sidedness attribute.

Sidedness Description
Single Emit light forward according to the side facing the geometric normal.
Double Emit light from both sides of the primitives.
Invert Emit light backward from the side facing back the geometric normal.

Texture Importance Sampling#

Geometry lights support texture importance sampling to greatly reduce the amount of noise of textured lights. By default, texture importance sampling is disabled.

To enable it, you need to set the Texture Importance Sampling attribute to one of the following modes below:

Texture Importance Sampling Description
None No texture importance sampling is performed.
Color The Color input texture is importance sampled. This mode should be used when only the Color attribute of the light textured. This is typically the case when using an HDR texture encoding both color and intensity.
Weight The Weight input texture is importance sampled. This mode can be useful when you explicitly want to vary the color texture according to a spatial projection based on the position of the instance such as world projections, texture switch or instance color for example. Please note that setting this mode while texturing Color can lead to a degradation of the quality of the importance sampling if the intensity/weight component is encoded to the color textures.
Both Both Color and Weight input textures are importance sampled. This mode should be used when using specific textures for Color and Weight.

Important

Due to memory constraints consideration when instancing geometries, color and weight texture projections are forced in to be evaluated in object space when importance sampled. This means that all types of projections should work with the exception of world space and camera projections on which the texture is evaluated as if the object was located at the origin of the world.

Sampling Resolution#

Unlike other types of lights, a geometry light doesn't necessarily define a natural 2D parametric coordinate system. For this reason, the resolution of the sampling can't be defined by a simple resolution. It is instead directly correlated to the number of primitives of the input Geometry since textures are pre-evaluated are the center of each primitive.

The number of primitives is then what defines the precision/resolution of the sampling used for texture importance sampling. This is why, you need to make sure there are enough primitives in the input Geometry, so that the path tracer retrieves enough information to properly perform importance sampling.

As a general rule, the more primitives there are in the geometry, the more accurate results are. Actually to make it simple, just imagine that each primitive is a single color area light.

For example, if you are using a 512x256 texture map on an entire polygrid used as geometry light, you'll need to set its Spans attribute to 512 and 256 to retrieve all the small details available in the texture.

Note

When the input Geometry doesn't have enough primitives, it is possible to increase the subdivision using Subdivision Surfaces on polymeshes. However, since it is not possible to increase the number of primitives on implicit geometries such as implicit spheres, box and cylinders, it is best to use their polymesh counterparts instead.

Here the tessellation of the Polycylinder is too low (Spans set to 16x16), Texture Importance Sampling misses some features of the texture.

Here the tessellation of the Polycylinder is too low, Texture Importance Sampling misses some features of the texture

Setting the Polycylinder Spans to 256x256 resolves finer details of the texture.

Setting the Polycylinder Span to 256x256 resolves finer details of the texture

Going further with Texture Importance Sampling#

Internally, Clarisse performs texture importance sampling based on the intensity of the texture. The Color and Both modes of the Texture Importance Sampling are provided for workflow convenience.

As a matter of fact, it's best to work in Weight mode when possible to maximize the sampling quality and the prepass performance. In that case, you need the emission color to define chromaticity (actual color separated from its luminance/intensity) and an emission weight texture defining the intensity.

More importantly doing so allows to make hue operations on a color texture defining chromaticity while ensuring the best sampling possible. Thankfully the raytracer provides two dedicated texture nodes to simplify the extraction of the chromaticity and weight from any input texture:

  • GetEmissionColor that extracts the chromaticity (color without its intensity component).
  • GetEmissionWeight that extracts the emission weight of the color.

For more information please refer to Get Emission Color/Weight.