500 million and counting: hair rendering on...

1
500 Million and Counting: Hair Rendering on Ratatouille Pixar Technical Memo #07-09 David Ryu * Pixar Animation Studios Figure 1: A scene with hundreds of millions of hairs. The optimiza- tions described in this sketch reduced peak memory consumption and rendertime both by more than 90% over the hair system used on The Incredibles and Cars.c Disney / Pixar. All rights reserved. Featuring plush rats, well-groomed humans, and a colony of ro- dents numbering a thousand strong, Ratatouille had shots where the original scene descriptions contained many hundreds of mil- lions of hairs. To make these shots renderable, we developed many new technologies to optimize our RenderMan-based hair render- ing pipeline, including caching to speed up runtime sculpting, a technique for optimizing bounding boxes for RiProcedurals, and a smooth level-of-detail system incorporating depth-of-field and mo- tion blur. These techniques resulted in an order of magnitude re- duction in hair rendering time and memory compared to the already optimized pipeline used previously in Pixar films. 1 Hair Rendering Pixar’s hair rendering system, called gofur (developed for Mon- sters, Inc.), is a set of RiProcedural plugins designed to sculpt and efficiently feed RiCurve geometry to PhotoRealistic RenderMan (prman). It uses bounded procedurals to delay geometry specifica- tion until absolutely needed by the renderer. This provides a huge memory reduction over simply specifying the geometry in the in- put rib file. However, scaling gofur up to the needs of Ratatouille required many new technologies. 2 Optimizations Stochastic Simplification A key technique was Stochastic Simpli- fication[Cook et al. ], a level of detail scheme involving smoothly reducing hair density and increasing width based on factors includ- ing size on screen, motion blur, and depth of field. The size mea- sure involved comparing the “detail” parameter from prman with the size in world-space of the element being rendered. For motion blur, we came up with a measure that encapsulated both amount of blur and the distance from screen by projecting the world-space mo- tion vector onto the plane perpendicular to the vector from the eye to the moving point. We used a corresponding measure for depth of field, calculating the size of the circle of confusion projected onto the plane containing the blurred point. Stochastic Simplification provided drastic memory and time reductions, and enabled us to use a single model representation for both foreground and background rats. In this sketch, we will present implementation, deployment, and approval details not present in the paper. * e-mail: [email protected] Figure 2: Motion-blur and depth-of-field measures. Red means more simplification. c Disney / Pixar. All rights reserved. Figure 3: Perfect bounding optimizes RiProcedural bounding boxes (shown in green). c Disney / Pixar. All rights reserved. Operator Caching gofur’s hair generation has render-time proce- dural components (called operators) for actions like scaling, clump- ing, and curling. Many of these operators were fixed after comple- tion of the groom. By caching offset vectors for the fixed operators to a file, we could bypass those expensive computations and greatly reduce hair render times. Perfect Bounding Using RiProcedurals requires specification of a bounding box; accurate bounds greatly reduce the memory required to render the scene. Calculating even decent bounds can be dif- ficult because of procedural sculpting (consider a scale based on low-frequency noise), animation, and simulation. Perfect bounding addresses this with a 2-pass approach. First, a proxy procedural is emitted with a conservative bound, which calculates the hair geom- etry but doesn’t actually give it to the renderer. Instead, it emits a procedural with the exact bound it calculated, which will render the hair. This time/space tradeoff was worthwhile because operator caching made calculating hair geometry very fast, and resulted in large memory wins at a minimal cost in time, and also freed the TDs from having to endlessly tweak bounding box sizes. Miscellanea We also found smaller tricks that made an impact: converting vertex variables (VVs) on the hair to their most com- pact representation before emitting geometry; culling shading re- lated VV data in shadowmaps; sharing mesh structures for charac- ters with identical topologies; taking shutter settings into account when computing motion blurred bounding boxes; backface culling; curve basis reduction. References COOK, R., HALSTEAD, J., PLANCK, M., AND RYU, D. Stochas- tic simplification of aggregate detail. In Proceedings of SIG- GRAPH 2007 (to appear).

Upload: tranquynh

Post on 08-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 500 Million and Counting: Hair Rendering on Ratatouillegraphics.pixar.com/library/500MillionHairs/paper.pdf · 500 Million and Counting: Hair Rendering on Ratatouille Pixar Technical

500 Million and Counting: Hair Rendering on RatatouillePixar Technical Memo #07-09

David Ryu∗

Pixar Animation Studios

Figure 1: A scene with hundreds of millions of hairs. The optimiza-tions described in this sketch reduced peak memory consumptionand rendertime both by more than 90% over the hair system usedon The Incredibles andCars. c©Disney / Pixar. All rights reserved.

Featuring plush rats, well-groomed humans, and a colony of ro-dents numbering a thousand strong,Ratatouille had shots wherethe original scene descriptions contained many hundreds of mil-lions of hairs. To make these shots renderable, we developed manynew technologies to optimize our RenderMan-based hair render-ing pipeline, including caching to speed up runtime sculpting, atechnique for optimizing bounding boxes for RiProcedurals, and asmooth level-of-detail system incorporating depth-of-field and mo-tion blur. These techniques resulted in an order of magnitude re-duction in hair rendering time and memory compared to the alreadyoptimized pipeline used previously in Pixar films.

1 Hair Rendering

Pixar’s hair rendering system, called gofur (developed forMon-sters, Inc.), is a set of RiProcedural plugins designed to sculpt andefficiently feed RiCurve geometry to PhotoRealistic RenderMan(prman). It uses bounded procedurals to delay geometry specifica-tion until absolutely needed by the renderer. This provides a hugememory reduction over simply specifying the geometry in the in-put rib file. However, scaling gofur up to the needs of Ratatouillerequired many new technologies.

2 Optimizations

Stochastic SimplificationA key technique was Stochastic Simpli-fication[Cook et al. ], a level of detail scheme involving smoothlyreducing hair density and increasing width based on factors includ-ing size on screen, motion blur, and depth of field. The size mea-sure involved comparing the “detail” parameter from prman withthe size in world-space of the element being rendered. For motionblur, we came up with a measure that encapsulated both amount ofblur and the distance from screen by projecting the world-space mo-tion vector onto the plane perpendicular to the vector from the eyeto the moving point. We used a corresponding measure for depth offield, calculating the size of the circle of confusion projected ontothe plane containing the blurred point. Stochastic Simplificationprovided drastic memory and time reductions, and enabled us to usea single model representation for both foreground and backgroundrats. In this sketch, we will present implementation, deployment,and approval details not present in the paper.

∗e-mail: [email protected]

Figure 2: Motion-blur and depth-of-field measures. Red meansmore simplification.c©Disney / Pixar. All rights reserved.

Figure 3: Perfect bounding optimizes RiProcedural bounding boxes(shown in green).c©Disney / Pixar. All rights reserved.

Operator Caching gofur’s hair generation has render-time proce-dural components (called operators) for actions like scaling, clump-ing, and curling. Many of these operators were fixed after comple-tion of the groom. By caching offset vectors for the fixed operatorsto a file, we could bypass those expensive computations and greatlyreduce hair render times.

Perfect BoundingUsing RiProcedurals requires specification of abounding box; accurate bounds greatly reduce the memory requiredto render the scene. Calculating even decent bounds can be dif-ficult because of procedural sculpting (consider a scale based onlow-frequency noise), animation, and simulation. Perfect boundingaddresses this with a 2-pass approach. First, a proxy procedural isemitted with a conservative bound, which calculates the hair geom-etry but doesn’t actually give it to the renderer. Instead, it emitsa procedural with the exact bound it calculated, which will renderthe hair. This time/space tradeoff was worthwhile because operatorcaching made calculating hair geometry very fast, and resulted inlarge memory wins at a minimal cost in time, and also freed theTDs from having to endlessly tweak bounding box sizes.

Miscellanea We also found smaller tricks that made an impact:converting vertex variables (VVs) on the hair to their most com-pact representation before emitting geometry; culling shading re-lated VV data in shadowmaps; sharing mesh structures for charac-ters with identical topologies; taking shutter settings into accountwhen computing motion blurred bounding boxes; backface culling;curve basis reduction.References

COOK, R., HALSTEAD, J., PLANCK , M., AND RYU , D. Stochas-tic simplification of aggregate detail. InProceedings of SIG-GRAPH 2007 (to appear).