{"id":47,"date":"2008-09-09T11:19:31","date_gmt":"2008-09-09T17:19:31","guid":{"rendered":"http:\/\/www.realtimerendering.com\/blog\/?p=47"},"modified":"2008-09-09T12:02:47","modified_gmt":"2008-09-09T18:02:47","slug":"gpu-reyes-implementation","status":"publish","type":"post","link":"https:\/\/www.realtimerendering.com\/blog\/gpu-reyes-implementation\/","title":{"rendered":"GPU REYES Implementation"},"content":{"rendered":"<p>Pixar&#8217;s Renderman rendering package is based on the REYES rendering pipeline (an acronym for the humble phrase &#8220;Render Everything You Ever Saw&#8221;). Most film studios use Pixar&#8217;s Renderman, and many others use renderers operating on similar principles. A close reading of <a href=\"http:\/\/graphics.pixar.com\/Reyes\/paper.pdf\">the original REYES paper<\/a> shows a pipeline which was designed to be extremely efficient (it had to be, to run on 1980&#8217;s hardware!) and produce very high quality images. I have long thought that this pipeline is a good fit for graphics hardware (given some minor changes or an increase in generality), and is perhaps a better fit to today&#8217;s dense scenes than the traditional triangle pipeline. A paper to be published in <a href=\"http:\/\/www.siggraph.org\/asia2008\/index.php\">SIGGRAPH Asia<\/a> this year <a href=\"http:\/\/graphics.idav.ucdavis.edu\/publications\/print_pub?pub_id=952\">describes a GPU implementation of the subdivision stages of the REYES pipeline<\/a>, which is a key step towards a full GPU REYES implementation. They use <a href=\"http:\/\/www.nvidia.com\/object\/cuda_home.html\">CUDA<\/a> for the subdivision stages, and then pass the resulting micropolygons to a traditional rendering pass. Although combining CUDA and traditional rendering in this manner introduces performance problems, newer APIs such as <a href=\"http:\/\/www.realtimerendering.com\/blog\/direct-3d-11-details-part-iii-compute-shaders-unordered-memory\/\">DX11 compute shaders<\/a> have been designed to perform well under such conditions. Of course, this algorithm would be a great fit for <a href=\"http:\/\/softwarecommunity.intel.com\/UserFiles\/en-us\/File\/larrabee_manycore.pdf\">Larrabee<\/a>.<\/p>\n<p>Anyone interested in the implementation details of the REYES algorithm should also read &#8220;How PhotoRealistic RenderMan Works&#8221;, which is available as a chapter in the book <a href=\"http:\/\/www.amazon.com\/Advanced-RenderMan-Creating-Pictures-Kaufmann\/dp\/1558606181\">Advanced Renderman<\/a> and in <a href=\"http:\/\/www.renderman.org\/RMR\/Books\/infbeyond.pdf\">the SIGGRAPH 2000 Renderman course notes<\/a>.<\/p>\n<p>I found this paper on <a href=\"http:\/\/kesen.huang.googlepages.com\/\">Ke-Sen Huang<\/a>&#8216;s <a href=\"http:\/\/kesen.huang.googlepages.com\/siga2008Papers.htm\">SIGGRAPH Asia preprint page<\/a>. Ke-Sen performs an invaluable service to the community by providing links to preprints of papers from all the major graphics-related conferences. This preprint page is all the more impressive when you realize that SIGGRAPH Asia has not even published a list of accepted papers yet!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pixar&#8217;s Renderman rendering package is based on the REYES rendering pipeline (an acronym for the humble phrase &#8220;Render Everything You Ever Saw&#8221;). Most film studios use Pixar&#8217;s Renderman, and many others use renderers operating on similar principles. A close reading of the original REYES paper shows a pipeline which was designed to be extremely efficient [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[85,17],"class_list":["post-47","post","type-post","status-publish","format-standard","hentry","category-resources","tag-reyes","tag-siggraph-asia"],"_links":{"self":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/47","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/comments?post=47"}],"version-history":[{"count":0,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/47\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/media?parent=47"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/categories?post=47"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/tags?post=47"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}