An Introduction to Renderman for All You Glslers!

An Introduction to Renderman for All You Glslers!

1 Why Are We Talking About This? 2 An Introduction to RenderMan for all you GLSLers! 1. You never know – a future you might be in a position to use RenderMan in the making of movies, TV commercials, etc. 2. You can get RenderMan for free. It is fun to experiment with. 3. You will be surprised how close what you know now matches what you need to know to run RenderMan shaders. (Congratulations!) Mike Bailey [email protected] This work is licensed under a Creative Commons You can get the non-commercial version of RenderMan by starting here: Attribution-NonCommercial-NoDerivatives 4.0 International License https://renderman.pixar.com/intro Computer Graphics Computer Graphics IntroToRenderManForGLSL.pptx mjb – February 28, 2021 mjb – February 28, 2021 12 History of RenderMan, II 3 History of RenderMan, III 4 Image/Volume Rendering Hardware Pixar Animation Studios Pixar Image Rendering Computer Software 1986: Luxo Jr.– Nominated for an Academy Award Star Trek II (1982) Young Sherlock Holmes (1985) 1988: Tin Toy – won Academy Award for Best Animated Short REYES 1993: RenderMan wins a Technical Academy Award 1995: Toy Story RenderMan 1984 (1984) Pixar Animation Studios RIB Shade Trees Computer Graphics prman Computer Graphics mjb – February 28, 2021 mjb – February 28, 2021 34 Early Uses of RenderMan in Movies 5 6 Toy Story 2, Toy Story 3, Up, 2009 1999 2010 Brave, 2012 A Bug’s Life, 1998 Finding Nemo, 2003 Inside Out, 2015 Finding Dory, 2016 Coco, 2017 The Good Dinosaur, 2015 Wall-E, 2008 Ratatouille, 2007 Monsters University, 2013 Monsters Inc, 2001 Cars 2, 2011 Cars, 2006 The Incredibles, 2004 Soul, 2021 Computer Graphics Computer Graphics mjb – February 28, 2021 mjb – February 28, 2021 56 1 7 RenderMan Software Rendering Pipeline 8 RIB File Bounding Box Analysis Split Tangled, 2010 Dice into Microfacets Moana, 2016 Call the Shaders Do Front-to-Back Compositing Assemble the Pixels Frozen II, 2019 Frozen, 2013 Final Image Computer Graphics Computer Graphics mjb – February 28, 2021 mjb – February 28, 2021 78 RenderMan Composites Starting at the Eye 9 RenderMan Renders at Higher-than-Screen-Resolution 10 First, let’s think about it back-to-front: color12 2 color 2(1 2 ) black , color01 1 color 1(1 1 ) color 12 , * color00 color(1 0 ) color 01 . Substituting gives us the front-to-back equation: * color00 color(1) 011 color (1)(1) 0 122 color (1)(1)(1) 0 1 2 black . Computer Graphics Computer Graphics mjb – February 28, 2021 mjb – February 28, 2021 910 All Six RenderMan Shader Types 11 Fundamental Differences Between 12 RenderMan Shaders and GLSL Shaders Topic RenderMan GLSL 1. Displacement ≈ GLSL Vertex Shader 2. Distortion / transformation Goals 1. Image quality, 2. Speed 1. Speed, 2. Image quality Vertex, Fragment, Geometry, 3. Surface ≈ GLSL Fragment Shader Shader Types Surface, Displacement (+4 others) Tessellation, Compute Surface Preprocessing Microfacets None [ ± Tessellation shaders] 4. Lighting Recompute Normals CalculateNormal None Getting Rid of Pixels Oi = 0.; discard; 5. Atmospheric / volumetric Surface/Fragment shader sets R, G, B, αr, αg, αb R, G, B, A [,Z] Shader Variables Uniform, Varying Attribute, Uniform, Out, In 6. Imaging Coordinate Systems Shader (=Model), World Model (=OC), Eye (≈WC) Noise Built-in Somewhat built-in or use a Texture Compile Shaders Must do yourself Driver does it for you Compiler messages Cryptic Cryptic RenderMan Built-in Microfaceting ≈ Manual or GLSL Tessellation Computer Graphics Computer Graphics mjb – February 28, 2021 mjb – February 28, 2021 11 12 2 13 14 Cartesian (X) Stripes Cartesian (X) Stripes stripes.sl surface stripes.rib stripes( float Prob = 0.4, // probability of seeing orange ##RenderMan RIB Ks = 0.5, version 3.03 Kd = 0.5, Declare "Prob" "uniform float" Tells RenderMan to start Ka = .1, using a surface shader roughness = 0.1; Display "stripes.tiff" "file" "rgb" file called stripes.slo color specularColor = color( 1, 1, 1 ) Format 512 512 -1 ) { ShadingRate 1 color stripeColor; LightSource "ambientlight" 1 "intensity" [0.25] float x = xcomp( P ); LightSource "distantlight" 2 "intensity“ [0.75] "from“ [0 0 -10] "to" [0 0 0] //x = x + 0.30 * sin( 1. * ycomp(P) ); // adding a wobble float xfrac = mod( x, 1. ); Projection "perspective" "fov“ [70] WorldBegin if( xfrac < Prob ) stripeColor = color( 1., .5, 0. ); // beaver orange? Translate 0 0 8 else Surface "stripes" "Prob" 0.8 stripeColor = Cs; Color [1 1 1] Opacity [1 1 1] Says that we want to set varying vector Nf = faceforward( normalize( N ), I ); Sphere 3 -3 3 360 the Prob argument to vector V = normalize( -I ); Translate 2. 0. 0. that shader to 0.8 WorldEnd Oi = 1.; Ci = Oi * ( stripeColor * ( Ka * ambient( ) + Kd * diffuse(Nf) ) + specularColor * Ks * specular( Nf, V, roughness ) ); } Computer Graphics Computer Graphics mjb – February 28, 2021 mjb – February 28, 2021 13 14 15 16 Cartesian (X) Stripes Rings rings.rib ##RenderMan RIB version 3.03 Declare "Prob" "uniform float" Display "rings.tiff" "file“ "rgb" Format 500 500 -1 ShadingRate 1 LightSource "ambientlight" 1 “intensity“ [0.25] LightSource "distantlight" 2 "intensity“ [0.75] "from“ [5 0 -10] "to“ [0 0 0] Projection "perspective" "fov“ [70] WorldBegin Translate 0 0 8 Surface "rings" "Prob“ 0.6 Color [1 1 1] Opacity [1 1 1] Sphere 3 -3 3 360 Translate 2. 0. 0. WorldEnd Computer Graphics Computer Graphics mjb – February 28, 2021 mjb – February 28, 2021 15 16 17 18 Rings rings.sl Rings (= Polar Stripes) surface rings( float Prob = 0.4, Ks = 0.5, Kd = 0.5, Ka = .1, roughness = 0.1; color specularcolor = color( 1, 1, 1 ) ) { varying vector Nf = faceforward( normalize( N ), I ); vector V = normalize( -I ); float x = xcomp( P ); float y = ycomp( P ); float r = sqrt( x*x + y*y ); float rfrac = mod( r, 1. ); if( rfrac < Prob ) Ci = color( 1., .5, 0. ); else Ci = Cs; Oi = 1.; Ci = Oi * ( Ci * ( Ka * ambient( ) + Kd * diffuse(Nf) ) + specularcolor * Ks * specular( Nf, V, roughness ) ); Computer} Graphics Computer Graphics mjb – February 28, 2021 mjb – February 28, 2021 17 18 3 19 dots.sl 20 Dots Dots surface dots.rib dots( float Diam = 0.10, // dot diameter ##RenderMan RIB Ks = 0.5, version 3.03 Kd = 0.5, Ka = .1, Declare "Diam" "uniform float" roughness = 0.1; color specularColor = color( 1, 1, 1 ) ) Display "dots.tiff" "file" "rgb" { Format 512 512 -1 float up = 2. * u; ShadingRate 1 float vp = v; float numinu = floor( up / Diam ); float numinv = floor( vp / Diam ); LightSource "ambientlight" 1 "intensity“ [0.25] color dotColor = Cs; LightSource "distantlight" 2 "intensity" [0.75] "from“ [5 8 -10] "to“ [0 0 0] if( mod( numinu+numinv, 2 ) == 0 ) { float uc = numinu*Diam + Diam/2.; Projection "perspective" "fov“ [70] float vc = numinv*Diam + Diam/2.; WorldBegin up = up - uc; vp = vp - vc; Translate 0 0 6 point upvp = point( up, vp, 0. ); Surface "dots“ "Diam“ 0.10 point cntr = point( 0., 0., 0. ); if( distance( upvp, cntr ) < Diam/2. ) Color [1 1 1] { Opacity [1 1 1] dotColor = color( 1., .5, 0. ); // beaver orange? TransformBegin } } Rotate 90 1. 0. 0. Sphere 3 -3 3 360 varying vector Nf = faceforward( normalize( N ), I ); vector V = normalize( -I ); TransformEnd WorldEnd Oi = 1.; Ci = Oi * ( dotColor * ( Ka * ambient( ) + Kd * diffuse(Nf) ) + specularColor * Ks * specular( Nf, V, roughness ) ); Computer Graphics Computer} Graphics mjb – February 28, 2021 mjb – February 28, 2021 19 20 21 Guess Who Else Makes Good Use of a Simple Shape? 22 Dots Computer Graphics Computer Graphics mjb – February 28, 2021 mjb – February 28, 2021 21 22 4.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    4 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us