[comp.graphics] A modest proposal

dwrowley@watserv1.waterloo.edu (David W. Rowley) (08/15/90)

Raytracers and renderers are a great thing to hack.  Currently we have
a host of well written systems available as freeware or shareware,
including Craig Kolb's excellent Rayshade, David Buck's DKB, Steve
Koren's QRT, Dave Wecker's DKB, Mark VandeWetterig's MTV and the
Australian VORT.  Some have CSG, some have procedural maps, texture 
mapping, gridtracing, kajiya bounding slabs, octrees, heightfields,
snazzy input languages, etc.

But no one program has it all.

One of the problems inherent in a 'raytracing program' is since it
is a 'program', it is limited to its current set of features.

Renderman (tm) takes the approach of a rendering library, along with a
shading language.  The more I think about this approach the more
I like it.  Wouldn't it be great if you could create, say, a
snow procedural map, and donate it to the raytracing community
at large ?  Take one of the 'Graphics Gems' and speed up one
aspect of tracing and contribute that ? 

Bearing this in mind, how about the collective resources on
Usenet, CompuServe, etc pool their efforts to implement a common
raytracing skeleton, perhaps similar in concept to Renderman (tm) ?

In fact, since Pixar allows anyone to license the Renderman (tm)
interface specification, would it be possible to implement a
public domain version of Renderman (tm) itself ?

Would Pixar allow a public domain version ?  Is Renderman (tm) the
best specification for a system like this ?  How about writing it
under the auspices of Richard Stallman's Free Software Foundation ?
(gnu-render ?)

We could even write different renderers for the same rendering
language, such as a raytracing version for high quality and a
scanline version for speed / previewing (perhaps built on top
of something like VOGLE ?)

Well, enough rambling.  Let me know what you think.  I'd certainly
like to work on a project like this.  I have seen the benefits of
standards in a variety of arenas.  With the talent around I'm
sure we could create something quite sophisticated.  

David Rowley
Mutual Life of Canada
dwrowley@watserv1.uwaterloo.ca

stephens@motcid.UUCP (Kurt Stephens) (08/24/90)

	Renderman is not a render.  (The name is misleading)
The Renderman Interface (Ri) provides a standardized interface to high
quality rendering software.  Pixar published it to provide an
industry standard, much in the way that Adobe's PostScript
is an industry standard for page description.  A public
domain renderer can have the Ri.
	For a C binding, we must typedef all the different data
types are defined by Ri.  (i.e. typedef double RiFloat; typedef int RiInt)
And define the internal data structures, like the transformation stacks and
etc.  Then define the procedure stubs (i.e. RiSphere( RiFloat radius, ... )),
and interface them to the PD renderer.  I began to do this based on
information I could reverse engineer and disect from the first
version of the Ri Spec.  ANYBODY is welcome my Ri header files.
I have also written a few ray/RiPrimative intersection routines.
I don't know how different the new version is.
The _Renderman Companion_ book might be helpful, but I haven't seen it.
	As far as the shading language, it seems one would have
to write a shading language compiler. (I doubt that they are 
interpreted ;^)), to convert the shading language into a subroutine
that the renderer can call.  Therefore, we may need a different
compiler for each renderer.  The specification gives a brief BNF grammar
for the shading language.  (Maybe Pixar could provide an actual YACC grammar)
We must provide someway to link the compiled shading routines
to the renderer.  The linking may have to be done dynamically,
due to the way shaders are specified in the C language binding.
(i.e. RiSphere( 5, RiShader, "FooShader" );)
	Maybe somebody at Pixar who is familar with Ri internals could
help us, without divulging proprietary information.
	Its a big task, but it can be done, look at all the
PD PostScript interpeters floating around! (Ghostscript, xps)


Kurt A. Stephens
...uunet!motcid!stephens


P.S. You could purchase Renderman for $2500 (for 386, Sun, SG)
from Pixar, with their renderers included.  I have an order form. ;^)

P.S.S. I heard that the new Color NeXT machine is being bundled
with Renderman.  Any truth to this?

-- 

Kurt A. Stephens			UUNET: ...!uunet!motcid!stephens
Motorola, Inc.				WORK: 708 632 6728
EMX2500 Release Group