Physically Plausible Shading in RenderMan Studio
Taught by Christos Obretenov
- Course Number:
- Software Version:
- RMS 4
- Original Run Date:
- April 2013
- 7 hours 0 minutes
With Physically Plausible Shading, we have a system of new lights and shaders that work very tightly together using raytracing ￼and physical properties of materials. New to RenderMan Studio are physically based area lights and shadowing methods, importance-sampled environment lights supporting fully raw captured HDR's, and a whole suite of physically based shaders that support these lights, including the general-purpose shader, glass, and matte.
Before we explore all the shiny new buttons in RenderMan Studio, we start the course off with some scientific concepts and explanations of what exactly is involved in a physically plausible paradigm, and how it differs from previous shaders and lights in RenderMan. Once we're comfortable with the concepts and explanations, we move into the practical use of the new shaders and lights inside RenderMan Studio, and dive into examples of each light and shader, their important settings, and some tips and tricks on how to get the most out of this raytraced physically based rendering system. Depending on class time, other topics covered could be: transient photon maps, volume rendering, and dynamic binding.
Class 1New Features & Physically Plausible Shading Concepts - We spend the first part of Class1 introducing some of the new features in RenderMan Studio, what really sets it apart from previous versions pre-physically based paradigm. Then we dive into the scientific concepts and explanations of Physically Plausible Shading. We want to make sure we understand the science and definitions behind these new shaders and lights, before using them. We explore the advantages over the "traditional" shading and lighting we're used to from older methodologies.
Class 2In class2 we start on Image Based Lighting in RMS. We start off looking at some professionally captured unclipped HDR's shot by my colleague, and examine 8 pre-rendered images I made from an animated tv-production that used these lightmaps in a physically-plausible shading system in RMS4. We then open a Maya scene, with our Vespa scooter model, and start from scratch to walk through how we use these HDR's in RMS4 within a physically-plausible framework. We look at the plausible shaders in Hypershade, and rendering in IT and RenderView. We go through the parameters of the EnvLight, including samples, scale intensity, importance sampling, radius, etc. We also experiment with other HDR maps, and raytraced re-rendering.
Class 3In class 3 we continue on with Image Based Lighting in RMS. In this class we explore the distribution modes: filtered importance, importance, uniform, and cosine. These are options on the RMSEnvLight and we want to gain and understanding of exactly how they work: we explore the methodology behind them, and do interactive renders in RMS with the different modes. One very common technique in production is further enhancing creative control of the IBL lighting by cutting out certain light sources from our HDR, and placing them onto area lights: This enables us to creatively move those high contrast light sources, be it an outdoor HDR or studio lighting, to where we want to position them, as well as tune the sampling for each source and change its intensity. We go through this process step by step in RMS, and see the pros and cons of this hybrid approach to IBL.
Class 4In class4 we move onto RMSGlass and transparent objects. Starting off with some concepts and fundamentals in shading glass we talk about reflection/refraction rays and index of refraction. We look at some production example tests and how to get rid of artifacts we might encounter in indirect specular and refraction when rendering with glass in RMS. We then move onto our scene with a nice wineglass example, go over the parameters in RMSGlass and do some renders. Going deeper into the glass shader itself, we look at the unique way of how Renderman Studio picks up the factory shaders from a specific directory, compiles them along with the RIB automatically into your project directory. We tune our RFM .ini file to keep our final shader source code, and overview the final glass shader source code for our project. Next we look at Arbitrary Output Variables in RMS (AOVs), how to set them up, and where they get their information from within the glass shaders. With our AOV's we render direct and indirect specular and refraction passes, and take it a step further by modifying the factory glass shader source code to add our own custom AOV, see how that shader gets compiled, and view our new AOV inside RMS/Maya: this is important for production as we need the knowledge of how to modify these factory shaders should a production call for it, especially custom AO's.
Class 5In Class5 we continue with our RMSGlass shading from the previous class, and cover the important shadowing modes (Opaque, Compute Opacity, View Dependent). When doing glass shading, the natural extension is to explore caustics and photon mapping, so we carry on with those topics in our scene. We go through the specific steps in RMS to setup our CausticLight and generate photons (either "transient" in memory, or ptc file), then render our scene with these new features, and compare renders with different settings in the CausticLight. We also explore the Internal Reflection Limit functionality, look at which AOV shows our Caustic effects, and experiment with the Glass Color.
Class 6In Class6 we dive into Arealights! Touching on them in previous classes, we go deeper on what makes area lights important in our Physically Plausible Paradigm, explain the squared exponential falloff, and why size is critical. We build up our scene from scratch where we test & compare different settings of our arealights, in particular the camera samples with materials of different roughness, examining the beauty, specular, and direct diffuse AOV's. Using raytraced shadows for our tests, we discuss the alternate "areashadow deepshadow" method that can have advantages in production scenes, especially ones with a lot of hair & fur. We use a fur system from one of the RFM tutorial files in our scene and demonstrate the setup of the areashadow deepshadow, render with it, and compare to our raytraced shadows.
Class 7In class7 we continue on our track of arealights, and cover production topics that we didn't get to in the previous class. We start off with one of the main tenants of arealights: soft shadows! We explore how the size of the arealight effects shadow softness, and the resulting sample count that may need adjusting. We try this on a few different models, including the famous walking teapot, as well as a new 356 Porsche model. We continue by adding in a GI Light and see how that interacts with our arealight setup, and some of the key principles there. Then we move onto "blockers", hook them up to our arealight, and do an interactive re-render session positioning the blocker exactly where we want it. With a fresh scene we move onto another production-savvy topic: diffuse bounce cards in conjuction with the RMSArealight, we set this up from scratch and bring in our GI Light and set proper Camera/Diffuse/Transmission visibility attributes. Finally, we end off with a time saving render feature frequently used in production: Aggressive shadows.
Class 8In Class8 we start a new topic: raytraced scatter! This is a great new feature in RMS, and there are huge advantages of a single-pass raytraced approach, as opposed to managing multi-pass point cloud rendering approaches. We start off with some definitions of important parameters and concepts like our Albedo & Diffuse Mean Free Path, then jump into a fresh scene in Maya with a new character model to setup our Scatter. Using the RMSGPSurface shader, we enable the scatter functionality by manipulating some parameters. We want to see our scatter pass on its own so we modify the RMSGPSurface shader to add our Subsurace AOV, and also add a brand new parameter & functionality to our shader to enhance our rendering: this requires explanation of the ".slim" file associated with the shader source code in RenderMan Studio, and what it takes to add a new parameter and re-compile. This is great under-the-hood knowledge to add to your toolkit to use on any modification you want to make, a great tool for customized production work!
Class 9In Class9 we continue on Part 2 of our raytraced subsurface scatter: touching on last class's topic of Diffuse Visibility being necessary on the model for the raytraced scatter to engage, we explain how this setting can also be achieved through the Render Stats "Visible In.." settings, and how this is a redundancy to setting it via the Attributes-->RenderMan menu - this is important to know since they do the same thing, and if you are coming from an RPS background or have used RenderMan with other 3d packages. We show the differences in the RIB file as we change those settings, so we know what's really going on under the hood - we'll need to know this in production if we are troubleshooting any scene. Carrying on with our scatter we want to explore the visual subtleties of our subsurface scatter parameters - we defined them and briefly went over them in the previous class, but how are the Tint & Albedo Tint's different, what are the subtle difference with the Diffuse Mean Free Path, and the DMFP Color? These are questions we answer as we look at side-by-side comparisons of these great controls on our subsurface scatter renders.
Class 10In Class10 we finish off the course with a new topic: Displacements in our physically plausible RMSGPSurface & RMSMatte shaders! We start off with showing some production examples of how powerful displacement shading is in RenderMan, then use our physically plausible shader RMSGPSurface to drive displacement mapping in our test scene, going over the purpose of the various displacement parameters. With our physically plausible shading, its paramount we correctly set our displacement attributes such as trace displacements, as well as displacement bounds, and explore the RIB file to see how these setting actually get implemented. We compare "bump" to "displace", and go over the very handy "txmake" utility to convert our displacement textures for RMSGPSurface, and setting up our paths in our shell terminal to be able to run "txmake" and "it" from the command line. With a new scene we then demonstrate the importance of specifically setting the Shading Rate on your objects that are being displaced, as this setting especially has a big effect on rendering quality when doing displacement. A really handy AOV to setup is visualizing our displacement map, so we go into the appropriate shader header file that does the texture call, and add our custom AOV, re-compile, and see it in action in our RMS render. Finally, we close off with a sneak peak of some great features coming soon to the next releases of RPS & RMS!