Chpt. 8 presented viewing by analogy w / camera Chpt. 9 looks
at uniagl quality vuwer ub digital image synthesis First -->
curved surfaces Second --> producing pixels Third -->
special effects (motion blurd depth_of_field) Surface
Approximation even surfaces that are defined as implicit
(Qradrics) or Patches are converted to polys called Upolys when
rendered. - want adaptive process ie move polys for higher
curvature can set this by RiGeometric Approximaton ( type, value
) where type = flatness value = amount poly deviates from true
curved surface ( default = 0.5 ) Look at how Renderman actually
renders image ref. Cook, Carpenter, Cutmull " The Reyes
Image Rendering Archict " SIGGRAPH '87 Design Principles 1.
Natural Coordinates --> calcs should be done in most nad.
coord. eg. texture mapping in U V space for patches, visible
surface defintion in pixel coord (Screen Space) 2. Vectorization
- should be able to exploit vect, parallelism & pipelining 3.
Common Representation - single object - everything is turned into
micropolygous - flat - shaded sub-pixel sized, quadrilaterals
prman 9 -- 2 4. Locality - Geometric & texture with very
large models some rendering techniques can arbitrarily access any
object which may meccitate disk - memory paging ( eg. ray trseing
) -so use other methods (reflection maps, shadow maps) for
non-local shading 5. High quality images common to use point
sampling at higher resolution than final image --> ****** but
still have aliasing so use stochastic sampling w/ jitfored
samples - may divide pixel into 16 sub-pixels with each sample
jitboo from centry. - all u polys that overlap sub-pixel are
sampled w/ depth kept in Z -buffer U-polys are 1 / 2 pixel on a
side : 1 / 2 a pixel is Nyquist limit for an image (thus) can use
1 color / upoly a geometric premitive is converted to upolys (
dicing ) in most natural coord. system - eg. forh patch the
upolys are // to u & v - so get a 2 D gird of u polys - done
in eye space ( camera space ) w/ fineness of dicing definition by
esy. size in pixel space( 1/2 pixel ) Shading done for every
upolys (except for back -face wll) so many u polys will be shaded
that aren't visible - other possibility is to shade only visible
upolys, but then might be jumping from surface to surface prman 9
-- 3 Advantages to this shading enties surface - easier to
vectorize - texture locality - just using one texture map ( are
large) so no thrashing ( Upstill ) prman 9 -- 4 image formed in
PRman is a ruster --> rectangular grid of pixels - each pixel
represents a finite area which may contain several surface -->
so somehow must devids "best" color for pixel hased on
"average" of surfaces -simplest - point sample at
center of pixel **** -->this is color of pixel --> bads to
aliaring ********* ********* then pixel color ( $ --> 1.0) is
quentied --> usually 0-->255 RGE defalut is a linear
mapping to integer steps represent equal differences in original
color. Problem: at low levels loads to high contrast given by (c1
- c2) / (c1 + c2) if c1 = 15, c2 = 10 then --> 5 / 25 = 1 / 5
if c1 = 250 c2 = 245 --> 5/495=1/99 at low levels exaggreate
diff eg. c1 = 0.05 * 255 = 12.75 = 13 c2 = 0.04 * 255 = 10.2 = 10
give c = (13 -10) / 23 = 3 / 23 = 0.13 ~~ 20% enor but actual c =
(0.05-0.04) / 0.09 = 0.01/0.09 = 1/9= 0.11 prman 9 -- 5 Look at
complete imaging pipeline ( fig 9.1) Filtering & Sampling
ideal would be to integrate all surfaces in pixel &
definition. average color ********* Note: eye integrates colors
over small areas to give overall color So instead supersample
**** or supersample with jiffering **** than filter the samples
|__> coments aliasing to noise default is 4 u polys /pixel
& 1 jiffered sample /upoly or 4/pixel can change by Ripixel
Samples (X samples Y samples) so default --> RiPixel Samples
(2, 2) then combine samples using a filter fn. simplest is box
filter ie. color = **** all have equal weight many filter over
multiple pixels can specify filter fn by RiPixel Filter(
function, xwidth, ywidth ) width gives #pixels so = 1 only
samples within a single pixel influence color of pixel look at
standard PRman filters Fig 9.2 triangle & box filters are
symmetric --> pyramid & cube --> not / piped so /=(Y,Y
) = min ( f(x), f(y)) but sine, C - R, Gaussian are circularly
symmetric so /=( x, y ) = f((x**2 + y**2)**1/2) prman 9 -- 6 Note
---> triangle, box, Curresion are widrred or nerrowed by width
parameter -- C - R & sine have some shape but are clipped -
can write your own files function & pass to interface Problem
with general super sampling -- may waste time by over sampling
eg. --fig-- or --fig-- -- -- so really want to
highlysupersamplesome over & not others ---> use adaptive
supersapling - from statistics we ( statistics ) can estimate the
accurent of computed pixel value(various) ---> so we can det
the level of the various by better--> Ri Pixel various(
varioul) where --
Last changed February 09, 1997, G. Scott Owen, owen@siggraph.org