1 / 22

Chrono::Render

Chrono::Render. Aaron Bartholomew. Problem Requirements. Render huge data sets efficiently and beautifully Have flexibility to render anything Make the rendering process streamlined and simple. Raytracing. Conceptually simple Easy to get complex visual effects without much effort.

emmy
Download Presentation

Chrono::Render

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chrono::Render Aaron Bartholomew

  2. Problem Requirements • Render huge data sets efficiently and beautifully • Have flexibility to render anything • Make the rendering process streamlined and simple

  3. Raytracing • Conceptually simple • Easy to get complex visual effects without much effort

  4. Raytracing Detriments • Breaks down when scene complexity grows large • Only efficient if you can load the whole scene into memory • Poor memory locality • Any ray can access any object in the scene at any time

  5. What Is RenderMan? • REYES algorithm – Render Everything You Ever Saw • Pixar’sPRMan implementation is considered the industry gold standard of rendering • “Used on every Visual Effects Academy Award Winner of the past 15 years” – pixar.com

  6. Why RenderMan? • Engineered to be as fast, efficient, and configurable as possible • Extremely low memory overhead • Hybrid rendering capabilities • Raytracing on demand • Highly scriptable and controllable

  7. Things RenderMan is Really Good At: Immense Scene Complexity

  8. Things RenderMan is Really Good At: Displacement

  9. Things RenderMan is Really Good At: MotionBlur and Depth Of Field

  10. RenderMan::under the hood • REYES • Dice Primitives to Microgeometry Grids • Shade Microgeometry • Bucket, load only relevant Microgeometry into memory

  11. RenderMan::Shaders • Procedural material definition of how the microgeometry is rendered • Surface, Displacement, Atmosphere, Volume, … • Can do anything • Modular • RenderMan Shading Language (C-like syntax)

  12. RenderMan::RenderPasses • Compute some data that an effect is dependent on • “Pass” over the scene to process the necessary data • Composite the data in another pass to get the final image • Example: Depth Map => Shadow

  13. Render Pass Example: Point-Based Ambient Occlusion

  14. Chrono::Render • RenderMan requires a lot of work to configure and optimize correctly • Need to specify long chains of RenderMan Interface Bytestream calls • Make it easy and more general to configure a quality render, while still enabling flexibility • What is it: C++ processing binaries, simple Python scripting interface, and succinct XML specification

  15. Chrono::Render User Scripts XML Chrono::Render RenderMan Bytestream DATA

  16. Chrono::Render <Settings/> • Salient data for the render process <settings> <!--general render and data settings--> <string name="write_filename" value="cube"/> <string name="write_path" value="./"/> <string name="data_filename" value="pos.dat"/> <string name="data_path" value="/home/aaron/Documents/Programming/Repos/chronoman/test/input/data/rot_euler_y/"/> <string name="data_format" value="id,pos_x,pos_y,pos_z,euler_x,euler_y,euler_z,ignore,ignore,ignore,ignore"/> <string name="delim" value=","/> <string name="searchpath" value="./SHADERS/:/home/aaron/Documents/Programming/Repos/chronoman/share/shaders/:/usr/share/aqsis/shaders/:/usr/share/aqsis/shaders/surface/”/> <vector name="framerange" value="0 0"/> </settings>

  17. Chrono::Render <renderpass/> • Scene definition and outputs <renderpass> <string name="name" value="default_pass"/> <string name="scene" value="./ARCHIVES/default_scene.rib"/> <string name="lighting" value="./ARCHIVES/default_lighting.rib"/> <string name="camera" value="./ARCHIVES/default_camera.rib"/> <vector name="resolution" value="320 320"/> <string name="renderscript" value="AO.py"/> <!---RENDEROBJECTS---> </renderpass>

  18. Chrono::Render <renderobject/> • Data and its appearance <renderobject> <string name="name" value="default"/> <bool name="motionblur" value="0"/> <vector name="range" value="1 1"/> <vector name="color" value="1 1 1"/> <geometry name="sphere"> <float name="radius" value="1"/> </geometry> <shader type="surface" name="bake_areas"> <string name="string filename" value="file"/> <string name="string displaychannels” value="_area"/> </shader> </renderobject>

  19. Chrono::Render Scripting • Python Scripting • Complete control of RIB emission at runtime • Custom-grained Scripting • Write a script for any of the cameras, renderobjects, renderpasses, or lights • Wraps around fast C++ implementation • Really complex effects, very easy and concise

  20. Chrono::Render on RAILS • Bootstrap your render • Generate/Transform scripts, shaders, and xml for commonly desired effects • Example: cman generate test.xml pass ao • Updates XML • Writes AO.py script to project tree • Convert file formats into RenderMan-specific types • Example: cman rib cube.obj • Converts cube.obj & cube.mtl to cube.rib & cube.sl • Adds files to render searchpaths

  21. Live Demo • “Suppose we’ll do it live” – Bill O’Reilly, Fox News

  22. Chrono::Render::Questions::Suggestions

More Related