31.05.2010

Overview

VO Rendering Pixar RenderMan / REYES SS 2010 Highly complex software system used for a large portion of today's industrial CG work

Software shaders Technology behind complex object Unit 9: Pixar RenderMan appearance with simple basic geometry

Sources:

State of the Art in Graphics RenderMan Naming Confusion

What is Renderman? RenderMan – The Product (PRMan)

Pixar Photorealistic RenderMan (PRMan) Maya Houdini Soft Image Evolved gradually since 1982 / 84 from the Lucasfilm Renderer

Basically a sophisticated scanline renderer Render Man Currently at release 14.0 Interface Indirect illumination / GI Hair & fur optimizations Parallel network rendering

PRMan Air RenderDC Aqsis On demand raytracing

1 31.05.2010

PRMan Features - Hair PRMan Features – Motion Blur

REYES REYES Assumptions and Goals 1

“Render everything you High possible model complexity ever saw” Diverse types of primitives REYES = software Esp. data amplification primitives, such as architecture fractals, procedural models etc. PRMan implements the REYES architecture Shading complexity Complexity of real scenes comes from surface appearance as much as from geometry Programmable shaders a necessity

REYES Assumptions and Goals 2 REYES Algorithm: Design Principles

Minimal ray tracing MODEL Natural coordinates ! Approximation of non-local effects through read model Vectorisation ! other means (e.g. shadow maps) " bound Common representation: ! N Micropolygons Speed on screen? " cull N ! Y Locality Important for animations: 2h movie in 1 year - split # diceable? ! Y Linearity < 3 min per frame! TEXTURES " shade ! Large models Image quality sample ! Backdoor Anti-aliasing and proper pixel filtering is BACK DOOR " visibility Efficient texture maps considered to be essential ! filter ! PICTURE

2 31.05.2010

Geometric Primitive Routines Geometric Primitive Routines

MODEL Bound MODEL Diceable test ! ! read model Computes bounding box read model Examines micropolygon ! information ! size & number bound " bound ! ! N Culling N Split on screen? " cull on screen? " cull Primitives which do not N ! Y Subdivision into other intersect the visible region split # diceable? geometric primitives

are discarded without Dice being diced or split Perform the actual split Each part is tested again into micropolygons

Micropolygons Hiding

All primitives are diced into micropolygons MODEL Backdoor feature intended to ! incorporate raytracing The entire shading process operates on this read model ! Sampling single monochrome type of primitive " bound ! N Micropolygons are the Roughly half a pixel across on screen? " cull Nyquist limit for their pixels N ! Y MP generation operates in eye space split # diceable? ! Y Jittered samples trade Subdivision is always done in the primitive's TEXTURES " shade aliasing artifacts for noise ! (u,v) space, never in screen space sample Sampling can be ! influenced BACK DOOR " visibility ! Reconstruction filter functions are user ! PICTURE choice: RiFilter

Complete Algorithm REYES Advantages

Can handle arbitrary number of primitives Basically a batch renderer for individual primitives

No inversions – projections of pixels onto textures

Computations can easily be vectorised (e.g. shading)

No clipping calculations

Frequently no texture filtering is needed

3 31.05.2010

REYES Disadvantages RenderMan Interface

No natural way to dice polygons Interface between rendering and modelling

Shading before sampling causes problems for Powerful set of primitive surface types

motion blur Quadric surfaces Dicing is difficult for some types of primitives Polygons like e.g. blobs Parametric surfaces

No coherency is exploited for large uniform Hierarchical modeling, geometry objects – everything is diced into Constructive solid geometry micropolygons Camera model (orthographic, perspective) No GI information of any kind is computed Generalized shading model

Using the RM Interface RM Program Structure

Two basic options exist: Consistent naming of API calls (Ri...)

Use of RM function calls from a high-level All function calls bracketed between one pair language (e.g. C) implementation of the RM of RiBegin and RiEnd API Feeding archived RM function calls from a One global graphics state is maintained within RenderMan Interface Bytestream (RIB) to a this bracket compliant renderer (hand generated, output All API calls modify this state from modelling program) API calls are frequently varargs, and have to The actual renderers are usually non- interactive be terminated with RI_NULL Most calls deal with surface properties Separate preview renderers are used during the design phase

RIB File API Calls vs. RIB

Sequence of requests to the renderer

No loops, branches, ...

Hierarchical attributes/transformations

Geometry, lights and materials are specified inside a WorldBegin/WorldEnd block

Normally RIB file contains just one frame's worth of data

4 31.05.2010

Shape vs. Shading Shape vs. Shading

Shape Geometric configuration of objects

Shading Calculates the appearance of an object in a scene under a set of light sources Result defined by

Colors of the surface and the light source(s)

Position and orientation of the surface relative to the light Roughness of the surface plain geometry vs. shaded geometry

Shape vs. Shading Example Shading Pipeline

Only two square polygons Three major types of shaders Transformed by shading Emission at the light source Interaction of the light with the surface Atmospheric effects between the surface and the viewpoint

Types of Shaders Shader Language Var Types

RenderMan Interface Floats supports Colours Light source shaders Surface shaders Multiple colour models can be used, RGB Volume shaders default Displacement shaders Points Imager shaders Strings Each shader type has a specific set of variables Uniform vs. Varying variables and result types Uniform vars are constant everywhere over the area under consideration

5 31.05.2010

Surface Shader Surface Shader Environment

Determines the colour Expected results: incident ray colour and of light reflecting from a opacity point on a surface in a particular direction Does not have to be physically plausible!

Surface Shader Vars Example: Surface Shader #1

surface metal (! Some of these float Ka = 1,! float Ks = 1,! input variables can roughness = .25)! {! point Nf = faceforward(normalize(N),I);! be modified, e.g. Oi = Os;! Ci = Os * Cs * (Ka * ambient() +! Ks * specular(Nf, -I, roughness));! the shading normal }! Most – such as the geometric normal – are fixed

Example: Surface Shader #2 Bubbles from Finding Nemo

surface txtplastic(! float Ka = 1;! float Kd = .5;! float Ks = .5;! float roughness = .1;! color specularcolor = 1;! string mapname = ““)! {! point Nf = faceforward(N,I);!

if (mapname != ““)! Ci = color texture(mapname);! else! Ci = Cs;!

Oi = Os;! Ci = Os * (Ci * (Ka * ambient() + Kd * diffuse(Nf)) +! specularcolor * Ks * specular(Nf, -I, roughness));! }!

6 31.05.2010

Example: Shading Fish Guts Light Source Shader

Calculates the intensity and color of light sent by the light source to a point on a surface

Light Source Shader Vars Example: Slideprojector

Very similar to surface variable set

Describes lightsource, not the surface being illuminated!

Flexible Lightsource Examples Volume (Atmosphere) Shader

Generalizes the idea of atmosphere affecting light passing through space between a surface and the eye

(Not really supported until very recently)

7 31.05.2010

Volume Shader Example Volumetric Shader in Open Season

© 2006 Sony Pictures Imageworks

Displacement Shaders Displacement Shader Geometry

Distort the geometry of the basic object Difference to bump maps (which would be a surface shader): the silhouette is correct! Costly to evaluate

Displacement Vars Displacement Shader Example #1

Full gamut of surface environment variables is accessible

8 31.05.2010

Displacement Shader Example #2 River Raindrops in Ratatouille

Displacement pits(! float Km = 0.03;! string mapname = ““)! {! float magnitude;!

if (marks!= ““)! magnitude = float texture(marks);! else! magnitude = 0;!

P += -Km * magnitude * normalize(N);! N = calculatenormal(P);! }!

© Disney / Pixar.

WALL-E Trash Shader Transformation Shaders

Similar to displacement shaders in that they modify object geometry resp. point coordinates

Difference: used at a different, earlier stage of the rendering pipeline

Used to transform entire objects

Restricted variable set

Imager Shaders Imager Variables

Used to transform already computed colours to something else

Applications: e.g. cartoonish distortions of realistic renderings

Only colour information and z-Buffer data are provided

9 31.05.2010

Combined Example: Bowling Pin Bowling Pins

Easter Egg: Bowling Pins in WALL䏙E Shadows: A Sore Point

Automatic shadow generation not classic RM

Shadow maps (i.e. depth images from the perspective of the light) have to be prepared for each lightsource (!)

Surface shaders have to use this information The simple shaders in the previous examples are not capable of exhibiting shadows!

Raytracing and GI options in newer RM versions somewhat obsolete this

Deep Shadow Maps Reflections: Also A Sore Point

DSM store representation Similar to depth images for the lights, of the fratcional visibility reflections have to be pre-computed through a pixel at all possible depths Reflection maps have artefacts: no multiple inter-reflections Transmittance function describes light falloff Fast Stored as an array of (Sort of obsoleted by raytracing on demand) floating-point pairs Can handle volumetric effects and semi- transparent surfaces

10 31.05.2010

Reflection/Refraction Multipass Rendering Example: Reflection Map

1st pass nd Multi-pass rendering 2 pass

Reflection and refraction images are imput for tank shader Each wall has unique pair of reflection and refraction camera

Texture is projected 3rd pass

Final Rendering Ray Tracing On Demand

Scanline: fast, can handle complex scenes; shadows and reflections are problematic

Ray tracing can not deal with complex scenes

Ray differentials

First-level rays originate from REYES shading points

Luigi – CG and RL :-) Implementations

Original Pixar renderer (REYES) Micropolygon-based hybrid with raytracing capabilites

BMRT Raytracer, has disappeared after legal action was taken against author

Open-source RenderMan

Realtime techniques Ongoing research topic

11 31.05.2010

Rendering VO Unit 9

The End Thank you for your attention!

12