Shading State

state_float state_int state_vector

The state shaders allow access to ray and geometric properties such as the surface normal, the UV surface parameters, ray depth etc. The nodes are separated into float, int and vector data types.

Float

Name Variable Description
Screen XY sx, sy XY image-space coordinate, in range [-1,1).
Shutter Time time For motion blur, the absolute time at which the current sample is being shaded. A value between shutter-open and shutter-close times.
Ray Length Rl For surface shaders, the ray length from the camera or previous bounce to the shading point. For volume shaders, the length of the volume segment being shaded.
Barycentric UV bu, bv For triangles, barycentric coordinate within the triangle. For curves, parametric coordinate along the curve length and width respectively.
Surface UV u, v UV coordinates typically used as texture coordinates. Same as bu and bv in case no uvlist or uvs parameter was provided.
Shaded Area area The differential area covered by the current shading point, typically used for texture filtering. For surface shaders this the area spanned by ray differentials, for displacement shaders it is the average area of triangles surrounding the vertex.
UV Derivatives dudx, dudy, dvdx, dvdy UV derivative with respect to the XY pixel coordinates. This contains the rate of change of the UV from the current pixel to the neighboring pixels to the right and top, typically used for texture filtering.
Shutter start and end Absolute start and end time of the motion blur range.

Int

Name Variable Description
Raster X / Y x, y Raster-space pixel coordinate the camera ray started from.
Subpixel Sample Index si AA sample index, in range [0, AA_samples].
Ray Type Rt Ray type of the incoming ray.
Transparency Index transp_index The number of transparent surfaces shaded before the current shading point.
Thread ID tid Unique thread ID.
Bounces bounces The number of bounces up to the current shading point.
Diffuse Bounces bounces_diffuse The number of diffuse bounces.
Specular Bounces bounces_specular The number of specular bounces.
Reflection Bounces bounces_reflect Number reflection bounces.
Transmission Bounces bounces_transmit The number of transmission bounces.
Volume Bounces bounces_volume The number of volume bounces.
Force Hemispherical Lighting fhemi Force hemispherical lighting.
Primitive ID fi Primitive ID (triangle, curve segment, etc) .
Number of Active Lights nlights The number of active lights affecting shading point.
Inclusive Traceset inclusive_traceset If a traceset is used, is it inclusive or exclusive?
Skip Shadow Rays skip_shadow If true, don't trace shadow rays for lighting.
Shading Context sc Type of shading context (surface, displacement, volume, background, importance).

Vector

Name Variable Description
Ray Origin Ro For surfaces, ray origin (camera or previous bounce position). For volumes, the start of the volume segment being shaded.
Ray Direction Rd Ray direction from ray origin to shading point. For volumes, the direction of the volume segment being shaded.
Shading Point in Object-Space Po Shading position in object-space.
Shading Point in World-Space P Shading position in world-space.
Surface Derivative wrt Screen XY dPdx, dPdy Surface derivative with respect to XY pixel coordinates.
Shading Normal N Shading normal, including smooth normals and bump mapping.
Face-Forward Shading Normal Nf Face-forward shading normal.
Geometric Normal Ng Normal of the actual geometry, without smoothing or bump.
Face-Forward Geometric Normal Ngf Face-forward geometric normal.
Smoothed Normal without Bump Ns Smoothed normal (same as N but without bump).
Surface Derivative wrt UV dPdu, dPdv Surface derivative with respect to UV coordinates (not normalized). May be used as tangent for anisotropic shading or vector displacement.
Ray Direction Derivative wrt Screen XY dDdx, dDdy Ray direction derivative wrt XY pixel coordinates.
Surface Normal Derivative wrt Screen XY dNdx, dNdy The derivative of the surface normal with respect to XY pixel coordinates.

Example 1

Mapping color to the motion blur using Shutter Time

Example 2

Using surface v with a ramp float shader