26.01.2015 Views

The RenderMan Interface - Paul Bourke

The RenderMan Interface - Paul Bourke

The RenderMan Interface - Paul Bourke

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Opcode Operands Operation<br />

0 count, ... add<br />

1 count, ... multiply<br />

2 count, ... maximum<br />

3 count, ... minimum<br />

4 subtrahend, minuend subtract<br />

5 dividend, divisor divide<br />

6 negand negate<br />

7 idempotentate identity<br />

8-99 reserved<br />

Table 5.3: RiBlobby opcodes for combining fields.<br />

<strong>The</strong> add, multiply, maximum and minimum operations all take variable numbers of<br />

arguments. <strong>The</strong> first argument is the number of operands, and the rest are indices of<br />

results computed by previous instructions. <strong>The</strong> identity operator does nothing useful,<br />

and is only included for the convenience of programs that automatically generate<br />

<strong>RenderMan</strong> input.<br />

RiBlobby primitives may be shaded much like ordinary parametric primitives, with<br />

the caveat that just like subdivision surfaces, they have no global u and v parameters.<br />

Nevertheless, they may be given vertex values by attaching scalar values or reference<br />

coordinate fields to primitive sub-objects.<br />

RIB BINDING<br />

Blobby nleaf [ floats ] [ strings ] ...parameterlist...<br />

<strong>The</strong> number of points is determined implicitly by the length of the ”P” array.<br />

EXAMPLE<br />

Blobby 2 [ 1001 0 1003 0 16 0 2 0 1 ]<br />

[1.5 0 0 0 0 1.5 0 0 0 0 1.5 0 0 0 -.1 1 .4 .01 .3 .08] [”flat.zfile”]<br />

5.7 Procedural Primitives<br />

Procedural primitives can be specified as follows:<br />

RiProcedural ( RtPointer data, RtBound bound,<br />

RtProcSubdivFunc subdividefunc, RtProcFreeFunc freefunc )<br />

This defines a procedural primitive. <strong>The</strong> data parameter is a pointer to an opaque<br />

data structure that defines the primitive. (<strong>The</strong> rendering program does not “look<br />

inside” data, it simply records it for later use by the procedural primitive.) bound<br />

87

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!