{"id":699,"date":"2012-05-07T12:24:16","date_gmt":"2012-05-07T19:24:16","guid":{"rendered":"https:\/\/williamgs.com\/wp_backup\/blog\/?p=699"},"modified":"2019-06-12T04:11:55","modified_gmt":"2019-06-12T11:11:55","slug":"write-to-buffer-tool","status":"publish","type":"post","link":"https:\/\/williamgs.com\/wp_backup\/posts\/write-to-buffer-tool\/","title":{"rendered":"Write to Buffer Tool"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-704\" alt=\"W2B window 002\" src=\"https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/018_all.png\" width=\"535\" height=\"437\" srcset=\"https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/018_all.png 535w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/018_all-150x123.png 150w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/018_all-300x245.png 300w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/018_all-200x163.png 200w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/018_all-367x300.png 367w\" sizes=\"auto, (max-width: 535px) 100vw, 535px\" \/><\/p>\n<p>Nifty tool for creating custom render pass buffers and linking shader outputs from pre-existing networks.<\/p>\n<p><!--more-->1. So you have your shaders, and want to create a custom &#8220;diffuse_result&#8221; framebuffer for instance (because it is better than Maya&#8217;s &#8220;diffuse&#8221; pass). The &#8220;create &gt; (first button)&#8221; allows you to create a new &#8220;custom_color&#8221; renderPass, and the &#8220;create &gt; 32&#8221; lets you easily set all passes to be 32 bit-per-channel floating point. So now you hypershade may look like something here:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-706\" alt=\"W2B HyperShade 001\" src=\"https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/003-e1367954251708.png\" width=\"639\" height=\"499\" srcset=\"https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/003-e1367954251708.png 639w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/003-e1367954251708-600x469.png 600w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/003-e1367954251708-150x117.png 150w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/003-e1367954251708-300x234.png 300w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/003-e1367954251708-200x156.png 200w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/003-e1367954251708-384x300.png 384w\" sizes=\"auto, (max-width: 639px) 100vw, 639px\" \/><\/p>\n<p>2A.\u00a0 Select all the shaders you want, now use the button &#8220;create &gt; [&#8211;(+) \u00a0\u00a0 ]&#8221;\u00a0 to append a write to buffer output for each shader. A dialogue will pop up which allows you to connect shader outputs to the write to buffer nodes. (If you are creating an ID pass, you do no need to connect anything).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-700\" alt=\"W2B window AOV\" src=\"https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/005_diffuse.png\" width=\"272\" height=\"351\" srcset=\"https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/005_diffuse.png 272w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/005_diffuse-116x150.png 116w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/005_diffuse-232x300.png 232w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/005_diffuse-155x200.png 155w\" sizes=\"auto, (max-width: 272px) 100vw, 272px\" \/><\/p>\n<p>2B. Alternatively, &#8220;create &gt; [&#8211;(+)&#8211;]&#8221; may be used to insert the write to buffer nodes within the networks as &#8220;passthrough&#8221; outputs. This is technically more efficient, but often impractical and doesn&#8217;t work with special shader outputs such as &#8220;diffuse_result&#8221;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-702\" alt=\"W2B HyperShade 002\" src=\"https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/016_in_diffuse-e1367954435777.png\" width=\"639\" height=\"499\" srcset=\"https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/016_in_diffuse-e1367954435777.png 639w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/016_in_diffuse-e1367954435777-600x469.png 600w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/016_in_diffuse-e1367954435777-150x117.png 150w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/016_in_diffuse-e1367954435777-300x234.png 300w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/016_in_diffuse-e1367954435777-200x156.png 200w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/016_in_diffuse-e1367954435777-384x300.png 384w\" sizes=\"auto, (max-width: 639px) 100vw, 639px\" \/><\/p>\n<p>3. To connect the shader outputs to the custom color (our diffuse_result) render pass, use the &#8220;refresh lists&#8221; button to filter the selected writeToColorBuffer nodes. Select a renderpass on the right column and connect all the shading networks at once.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-701\" alt=\"W2B window connect 001\" src=\"https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/009_diffuse.png\" width=\"535\" height=\"437\" srcset=\"https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/009_diffuse.png 535w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/009_diffuse-150x123.png 150w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/009_diffuse-300x245.png 300w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/009_diffuse-200x163.png 200w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/009_diffuse-367x300.png 367w\" sizes=\"auto, (max-width: 535px) 100vw, 535px\" \/><\/p>\n<p>4. Lots of passes can be set up in very little time.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-703\" alt=\"W2B HyperShade 003\" src=\"https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/017_all-e1367954358551.png\" width=\"639\" height=\"499\" srcset=\"https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/017_all-e1367954358551.png 639w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/017_all-e1367954358551-600x469.png 600w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/017_all-e1367954358551-150x117.png 150w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/017_all-e1367954358551-300x234.png 300w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/017_all-e1367954358551-200x156.png 200w, https:\/\/williamgs.com\/wp_backup\/wp-content\/uploads\/017_all-e1367954358551-384x300.png 384w\" sizes=\"auto, (max-width: 639px) 100vw, 639px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nifty tool for creating custom render pass buffers and linking shader outputs from pre-existing networks.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,5,4],"tags":[27,68],"class_list":["post-699","post","type-post","status-publish","format-standard","hentry","category-mel","category-python","category-tools","tag-maya","tag-mental-ray"],"_links":{"self":[{"href":"https:\/\/williamgs.com\/wp_backup\/wp-json\/wp\/v2\/posts\/699","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/williamgs.com\/wp_backup\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/williamgs.com\/wp_backup\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/williamgs.com\/wp_backup\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/williamgs.com\/wp_backup\/wp-json\/wp\/v2\/comments?post=699"}],"version-history":[{"count":4,"href":"https:\/\/williamgs.com\/wp_backup\/wp-json\/wp\/v2\/posts\/699\/revisions"}],"predecessor-version":[{"id":1435,"href":"https:\/\/williamgs.com\/wp_backup\/wp-json\/wp\/v2\/posts\/699\/revisions\/1435"}],"wp:attachment":[{"href":"https:\/\/williamgs.com\/wp_backup\/wp-json\/wp\/v2\/media?parent=699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/williamgs.com\/wp_backup\/wp-json\/wp\/v2\/categories?post=699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/williamgs.com\/wp_backup\/wp-json\/wp\/v2\/tags?post=699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}