RenderMan Artist Tools

PhotoRealistic RenderMan
Application Note #18


Using the RiPoints Primitive

Updated August, 2003 

Motivation

Firework Picture The new RiPoints primitive is intended to be used for small particles such as sparks, snowflakes, or raindrops. They are optimized for the case where the intended particle is small, taking up at most a couple of pixels on the screen.

Why should I use points instead of bilinears or spheres?

RiPoints are much cheaper in terms of memory and in terms of shading time. Each point is only shaded once, and generates only a single "microdisk," which is completely round. You can efficiently render large numbers of particles using the point primitive.

Why shouldn't I use points?

Since points are only shaded at a single point, they have no access to derivative information. If you want your particle to have differing shading accross its surface, or if the particle takes up multiple pixels, you might want to use bilinear patches or spheres.

In other words, one should not use Points if:

The Syntax

The RIB syntax for RiPoints is:
Points "P" [ particle locations ... ] "width" [ particles radii ... ] ...
The corresponding C calls would be

RiPoints(RtInt npoints, parameterlist);

RiPointsV(RtInt npoints, RtInt nargs, RtToken name[], RtPointer value[]);

The width of the points is defined in the current object coordinate system, and defaults to 1.0. You can specify either a single width value for all points using the "constantwidth" parameter, which is defined as a uniform float, or give individual points separate widths by using the varying float variable "width".

Examples

Points are nearly ideal for generating star fields. The following image consists of about five thousand stars, randomly colored.

Points may be motion blurred as well. In this picture, the camera has been rotated to generate a picture reminscent of star trails.
Points may be used to create fire or explosion effects. In the following image, a particle system was used to generate one hundred thousand particles originating from four sources. The following shader was used to sum up particle intensities:
	surface particle( )
	{
	    Ci = Cs;
	    Oi = 0;
	}
Note that the shader sets the opacity, Oi, to 0 causing the particle intensities to accumulate. At the center of an explosion where many particles overlap this gives the illusion of a glowing hot center.
 

 

Pixar Animation Studios
(510) 752-3000 (voice)   (510) 752-3151 (fax)
Copyright © 1996- Pixar. All rights reserved.
RenderMan® is a registered trademark of Pixar.