
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
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages12 Page
-
File Size-