Basic Appearance | Taper | Variation | Pressure | Sampling | Background | Lens Effects | Advanced | Render Tree Usage
Category: Toon
Shader Family: Lens
Output: Color
Renders ink contours over the image. Ink can be drawn between different materials, objects, or where there are great discrepancies
in distance or direction, for example. Contours are detected using a stratified adaptive stochastic super-sampling technique
(!). This means that for each primary-ray sample normally fired to compute an image, the shader fires additional rays into
the scene until various conditions are met (that is, until a contour is detected); Quasi-Monte-Carlo (QMC) methods are used
to compute the direction of each additional ray. At the intersection of one of these rays with a surface, some information
about the intersection point, such as the surface direction or its distance from the camera, is stored for later analysis.
After each additional ray is fired, the information gathered at its intersection is compared with that stored for the nominal
ray. If a contour is detected, sampling ceases and a user-specified contour-color is composited over the image.
|
The shader's name. Enter any name you like, or leave the default.
|
Basic Appearance
Basic ink attributes, such as thickness ("spread") and color.
|
The shader may be bypassed and the image rendered without ink. This parameter is useful because it is texturable. Since rendering
ink contours can be very time-consuming, it is often useful to create a garbage matte texture to mask out large areas of the
screen that do not require contours, and connect the garbage matte to this parameter in the Render Tree.
|
|
Renders ink only. The Ink Only control in this shader's Advanced tab allows for the ink color to be influenced by underlying
surface color, or composited over black.
|
|
Ink color and alpha. Ink is composited according to its alpha, so an alpha less than 1 will result in underlying surfaces
being partially visible through the contours. Local controls for overriding this parameter are available from the Toon Host
material shader.
|
|
Choose from a variety of available transfer modes for controlling the compositing of ink over underlying surface color:
-
. This is the default. It simply takes the foreground.
-
. The foreground is added to the background. Thus, no foreground will be visible if the foreground is black. This is useful
for compositing such that the foreground appears to glow.
-
. Multiplies the foreground by the background. The result is always a color darker than either original foreground or background,
much like the result of two overhead transparencies stacked and projected from a single projector.
-
. The inverses of the two color values are multiplied. The result is a foreground brighter than either the original foreground
or background.
-
. Either multiplies or screens, depending on the value of the background underneath. The overall result is that the background
is not replaced by the foreground, but is mixed with it, while weighted by the value of the original background.
-
. Compares the values of the foreground and background and chooses the lighter of the two. The overall result is that the
foreground can never do anything except make the background lighter.
-
. Compares the values of the foreground and background and chooses the darker of the two. The overall result is that the foreground
can never do anything except make the background darker.
-
. The foreground is subtracted from the background, producing an inverted color effect.
-
. Uses the luminance and saturation of the background and the hue of the foreground.
-
. Uses the hue and luminance of the background and the saturation of the foreground.
-
. Uses the hue and saturation of the background and the luminance (value) of the foreground.
-
. If the value of the foreground is greater/less than 50% gray, the underlying background is lightened/darkened by the foreground.
This is similar to shining a diffuse light on the image.
-
. If the value of the foreground is greater/less than 50% gray, the background is screened/multiplied by the foreground. This
is similar to shining a harsh light on the image.
-
. Similar (though not identical) to mode.
|
|
Controls the thickness of ink contours. Ink spread may be modified by a variety of procedural methods, such as Taper and Variation,
and also by local controls in the Toon Host material shader.
The Spread Scale control in this shader's Advanced tab allows spread to remain fixed relative to a specified screen resolution,
so that changing resolutions will not affect the relative thickness of ink contours.
|
Taper
Tapering is a procedural variation of ink spread. For example, surface-direction can be used so that contours are drawn thickest
where a surface faces the camera directly, and thinner as a surface curves away. Tapering is a useful way of simulating a
variety of artistic techniques for emphasizing object shape and placement.
Anisotropy
Increase ink spread at a preferred angle. This is useful for simulating a calligraphy pen, for example.
|
The strength of the effect (a setting of 0 disables it).
|
|
The preferred angle, specified in degrees (such that 0 corresponds to 12:00 on the clock face, 90 to 3:00, etc.).
|
Direction
Vary contour spread as a function of surface-direction. By default, direction taper alters ink spread according to the degree
of a surface's incidence to the camera (such that spread is greatest when a surface faces towards the camera, and least when
facing away).
|
The strength of the effect (a setting of 0 disables it).
|
|
The direction-based tapering effect relies on an incident vector pointed towards the surface in question. Usually this is
the camera direction itself but, alternatively, a user-specified vector or one of a variety of presets may be used.
The Custom Vector can be used to create thicker ink contours on the underside of objects and thinner ink contours on top,
for example.
|
|
The coordinate space (World | Camera | Object) used for specifying the incident vector. Selecting camera coordinates will compute incident direction relative to the camera ("Upper Right" remaining in the upper
right of the rendered image regardless of camera position or orientation, for example). Camera coordinates would probably
be most appropriate to simulating hand-painted techniques, but will also cause ink spread to vary as the camera moves.
Using world coordinates will lock the effect to the direction of a surface regardless of its global orientation, while using
object coordinates will rotate the effect along with the surface.
|
|
A three-dimensional (x, y, z) vector. The vector is automatically normalized internally.
|
|
The range of directions on which the effect acts. A value of 0 implies that the surface faces the incident vector (i.e., the
surface normal is parallel to the incident vector). A value of 90 implies a surface grazed by the incident vector (i.e., the
surface normal is perpendicular to the incident vector).
|
|
The range of spread values to which surface directions are mapped. A Min Spread of 2 would cause spread to increase by a factor
of two at the specified Min Direction, for example.
|
|
Specifies a non-linear emphasis to the effect, so that changes in spread may ease-in smoothly or cut in abruptly, for example.
Two power functions, Bias and Gain, are provided. The response of the bias function resembles that of a gamma curve, while
the gain function creates an S-shaped profile.
The Power parameter controls the amount of emphasis. Regardless of the function chosen, a Power of 0.5 results in a linear
response.
|
Distance
Vary contour spread as a function of distance from the camera. This can be used to create depth-fading effects (ink contours
thicker where they are close to the camera, etc.).
In the case of secondary rays (those spawned as a result of reflection or transparency effects), the distance considered is
that accumulated over the entire ray path, beginning at the camera and ending at the current ray-surface intersection.
|
The strength of the effect (a setting of 0 disables it).
|
|
The direction-based tapering effect relies on an incident vector pointed towards the surface in question. Usually this is
the camera direction itself but, alternatively, a user-specified vector or one of a variety of presets may be used.
The Custom Vector can be used to create thicker ink contours on the underside of objects and thinner ink contours on top,
for example.
|
|
The range of distances on which the taper effect acts.
|
|
The range of spread values to which distances are mapped. A Min Spread of 2 would cause spread to increase by a factor of
two at the specified Near Distance, for example.
|
|
Specifies a non-linear emphasis to the effect, so that changes in spread may ease-in smoothly or cut in abruptly, for example.
Two power functions, Bias and Gain, are provided. The response of the bias function resembles that of a gamma curve, while
the gain function creates an S-shaped profile.
The Power parameter controls the amount of emphasis. Regardless of the function chosen, a Power of 0.5 results in a linear
response.
|
Other
|
Varies contour spread as a function of ray-traced depth. Primary rays (eye rays) are considered to have a trace depth of 0,
while reflections or transmissions will have trace depths of 1 or greater.
A setting of 1 will result in contour spread being reduced 100% on the first reflection or transmission. A setting of 0 will have no effect. Negative settings may be used to cause contours to get thicker when appearing in reflective or through transparent surfaces.
|
Variation
Allows pseudo-random variation of ink properties, such as spread. Variation is useful to suggest the natural quirks and deviations
of an artist's hand.
Spread
Perturbation of ink spread.
|
The strength of the effect (a setting of 0 disables it).
|
|
A setting of 0 disables the effect and causes the randomness to be frozen over time. Low values will cause inked lines to
crawl over time. Very high values will cause inked lines to chatter.
|
|
Random variations are based on one of the following bases: Ray Direction, Intersection Point, or Intersection Normal. Each
of these has a distinct flavor.
Choosing Ray Direction will result in any recognizable patterns remaining more-or-less constant relative to the screen. Other
options will result in features seeming to adhere to surface features.
|
|
The coordinate space (World | Camera | Object) used for specifying the variation basis. Selecting camera coordinates will compute variation relative to the camera. Camera coordinates might be appropriate for simulating
hand-painted techniques.
Using world coordinates will lock the effect to the direction of a surface regardless of its global orientation, while using
object coordinates will rotate the effect along with the surface.
|
|
A three-dimensional (x, y, z) vector. The vector is automatically normalized internally.
|
|
The range of input on which the effect acts.
|
|
The range of spread to which surface directions are mapped.
|
|
Specifies a non-linear emphasis to the effect, so that changes in spread may ease-in smoothly or cut in abruptly, for example.
Two power functions, Bias and Gain, are provided. The response of the bias function resembles that of a gamma curve, while
the gain function creates an S-shaped profile.
The Power parameter controls the amount of emphasis. Regardless of the function chosen, a Power of 0.5 results in a linear
response.
|
|
Spatial frequency (x, y, z) of the random variation. Higher values will result in apparently noisier ink contours, while lower
values will result in more smoothly varying contours.
|
Pressure
Simulates varying pressure of pen or brush by altering ink color (saturation and brightness) and alpha, proportional to spread
(after Taper and Variation effects are accounted for). It is possible, for example, to create ink that becomes darker and
more saturated where it spreads out; or ink that fades away where it spreads least.
Brightness
Varies the intensity of the ink color according to spread.
|
Switches on the effect.
|
|
The range of spread values on which the effect acts.
|
|
The range of brightness to which distances are mapped. A Min Brightness of 0.5 would cause ink to darken to half its original
intensity at the specified Min Spread.
|
Saturation
Varies the ink saturation according to spread. Saturation has parameters with the same names (and corresponding functions)
as those for Brightness and Alpha.
Alpha
Varies the ink alpha according to spread. Alpha has parameters with the same names (and corresponding functions) as those
for Brightness and Saturation.
Sampling
Control over contour sampling and detection.
|
The maximum number of rays fired to locate contours. Increasing this parameter to high values (6 or 7) results in higher-quality
contours, while setting lower values (2 or 3) result in proportionately lower quality contours.
In most cases a setting of 4 or 5 will suffice. Thicker contours will require higher settings. Because increasing this parameter by 1 will slow rendering by a factor of 11/4 on a typical scene, it is essential to use
as low a value as possible! This setting should also be balanced with anti-aliasing settings for the entire scene. Typical
settings for high quality contours might be:
samples -1 2 contrast 0.200000 0.200000 0.200000 for the scene, and samples 5 for the shader with a spread setting of 2.0. Faster previews could be accomplished, with some loss in quality, using settings
such as
samples -1 1 contrast 0.200000 0.200000 0.200000 samples 4
|
|
Sets the maximum trace depth to which contours are computed. If no reflections or refractions are needed, than a setting of
1 will result in the fastest render. If contours are only necessary for eye rays, and in the first reflective surface, or
though the first transparent surface encountered, then a setting of 2 will suffice. Higher settings will result in greater
levels of contours traced (as well as longer rendering times).
A warning will be issued if this parameter is set to a value lower than that of the scene's maximum trace depth for reflections,
refractions, or their sum.
|
Boundaries
Contours detected according to various criteria. These options are not mutually exclusive (a contour may be both between materials
and also between objects, for example); so turning one option off does not guarantee that all affected contours will disappear.
If an option is not required, turning it off will result in a slight performance increase.
|
Enables contour detection at the boundaries between surfaces and the background environment.
|
|
Enables contour detection where surfaces intersect or overlap.
|
|
Enables contour detection at the boundaries between different materials.
|
|
These options allow properties associated with the Toon Host material shader to affect ink placement. When the Paint option is enabled, ink will be drawn at the boundaries of various paint layers (highlight, rimlight, etc.).
This feature might be useful if the final ink contours are to be subsequently filled using a digital ink-and-paint system.
When the Transparency option is enabled, ink will be drawn at the boundary between transparent and opaque surfaces. With the Shadow option enabled, ink will be drawn between surfaces on which shadows are cast and those unaffected by shadows.
The transparency threshold for determining whether a surface is considered opaque or transparent may be adjusted with the
Toon Host shader's > parameter.
|
|
Detects contours at facet boundaries - this will result at contours being drawn between intersecting, adjoining, or overlapping
triangles in the tessellated surface.
switches on the effect.
is provided for ignoring facet boundaries between adjacent co-planar triangles.
|
Thresholds
Contours detected according to surface properties at the ray intersection. These are not mutually exclusive (a contour may
be both direction and also distance-related, for example), so setting one parameter to a value of 0 does not guarantee that
all affected contours will disappear. Direction and distance contours are only detected within surfaces of the same object,
with the same material applied.
|
Inks where the difference in surface orientation of sampled points not on the same triangle exceeds this angle. The angle
is specified in degrees.
This threshold may be modified by the Depth-Fade Thresholds controls in the Advanced tab of this shader, and also by local
controls in the Toon Host material shader.
|
|
Draws a contour where sampled points not on the same triangle exceed this distance from each other. This threshold may be modified by the Depth-Fade Thresholds controls in the Advanced tab of this shader.
|
Background
This is a quick way to preview or render a contour image against a specified color (or image) background.
|
Activates the effect.
|
|
Specifies a background color. Because this parameter is texturable it may be used as the input for other rendering nodes (for
example, an image or image sequence).
Because of the effects of alpha pre-multiplication (mental ray's default color format), the alpha-channel value in the final
rendered image may differ from that specified here.
|
Lens Effects
The Lens Effects options allow for a variety of lens-distortion effects useful for simulating distorted perspectives often
found in hand-drawn artwork and non-photorealistic rendering.
Fisheye
The fisheye parameters simulate a hemispherical (fisheye) lens capable of rendering a 180-degree field of view with characteristic
hemispherical distortion typical of real-world fisheye lenses. These parameters are identical to those of the Lens Effects shader, but have been built into the Toon Ink Lens shader both for speed and to allow distortion of the rendered image rather
than the inklines themselves.
|
Activates fisheye distortion.
|
|
Adjusts the degree of fisheye distortion. A value of 0.0 effectively "flattens" the lens, while a value of 1.0 results in
completely hemispherical distortion.
Distortion is relative to the pass camera's field of view (FOV). Hence, only if FOV is set to 180 degrees, and Distortion
to 1.0, will the lens be truly hemispherical.
You can adjust the pass camera's field of view from the Camera property editor.
|
Scale
|
Adjust the proportions of the image in X and Y.
|
|
When activated, the X and Y scale values are kept identical, and changing them zooms into or out of the image uniformly. Zooming
out reveals an undefined (black) area outside of the area covered by the lens.
|
Bulge
The bulge parameters allow "bulging" of the lens by altering eye-ray direction. The lens may bulge out (convex, like a fisheye
lens) or bulge in (concave). This effect may vary over the surface of the lens, and is best controlled via the render tree.
|
Activates bulge distortion.
|
|
Adjusts the amount of bulge distortion. A value of 0.0 effectively disables the bulge effect, while a value of 1.0 results
in the full effect (as determined by the Magnitude sliders).
|
Magnitude
|
Controls horizontal and vertical bulge, respectively. Using the render tree, you can generate scalar values for these parameters
by mapping a procedural texture (GradientGradient_Mixer, for example) to screen space, using the Texture Space GeneratorPreset
node to compute screen coordinates for each eye ray.
|
Advanced
|
When enabled, contours are drawn only on surfaces with a Toon Host material shader applied.
|
|
Include or Exclude underlying surface color's influence on the ink color. When excluded, ink is composited over black.
|
|
Whenever possible the ink properties of the sample nearest the camera are used when drawing contours. However, when samples
occupy nearly the same position in space, it is necessary to use alternative criteria, such as the incidence of a sample relative
to the camera, to prevent noisy contours. Sorting Tolerance defines the range of distances (plus-or-minus this value) between
two samples within which incidence, rather than distance, is used to determine which sample's contour to draw.
|
|
Older versions of this shader jittered contour rays' directions in two dimensions (raster space). The current version is able
to render ink contours faster and with more accuracy by jittering the rays' directions in one dimension (the angle of a circular
target with fixed radius). Select Angular for the improved behavior. Area distribution is provided only for compatibility
with older versions.
|
|
Contour spread may be expressed absolutely (in internal units) or relative to a specified screen resolution. Choosing Relative causes spread to be maintained constant in relation to a specified (horizontal resolution). Rendering at twice the specified resolution then would result in ink twice as thick, for example.
Choosing Absolute will keep spread constant regardless of rendered resolution.
|
Fade Sampling Thresholds
Allows altering the Distance and Direction sampling thresholds according to samples' distance from the ray origin (camera
or reflecting/refracting surface). This can be used to reduce the apparent detail of faraway objects.
|
The strength of the effect (a setting of 0 disables).
|
|
The range of distances over which the Direction Threshold is modified.
|
|
The thresholds for Direction (in degrees) and Distance where the samples' distance exceeds the specified Far Distance above.
|
Render Tree Usage
This shader can be applied directly to the camera in the lens shader stack. See Applying Lens Shaders to Cameras.
Alternatively, it may be used with companion Toon Host material shaders to allow some of its parameters to be overridden or
modified, depending on settings at the intersected surface.