原文地址:http://www.x-graf.com/2012/07/more-about-exr/網絡
不少人對 OpenEXR 這種圖像格式的瞭解僅限於:它是 32bit 的,它能夠支持多通道,VFX 公司都在使用 EXR。這些都沒錯,但若是你的渲染器生成的是 tile 方式的多通道 EXR,則會下降 Nuke 的合成的效率。ide
不少人都不知道在輸出 EXR 文件的時候有兩種方式:tile 和 scanline,而 Nuke 讀取圖像是以 scanline 方式從上至下讀取,若是讀取 tile EXR,速度會很是慢(單通道文件沒有感受,多通道文件感受明顯),轉換成 scanline 之後,速度能夠提高 5-10 倍。工具
渲染器大都以 tile 方式輸出 EXR(Arnold 和 Vray 缺省爲 tile;Softimage 的 mental ray 和 3delight 在界面內沒法選擇,只能用 tile;Maya 2013 開始將缺省的 EXR 和 TIFF 輸出方式改爲 scanline),渲染一般是分紅圖塊來處理的,tile 方式容許渲染器將當前處理的圖塊存盤,這樣能夠節省 framebuffer 資源,而 scanline 方式則要等整個圖像處理完畢後才能存盤,若是渲染圖片尺寸大的話,就會有明顯的效率差異。測試
正由於大部分渲染器輸出的是 tile EXR,因此不少 VFX 公司都有專門的工具來轉換生成的 EXR 文件。我也更傾向於渲染的時候不要直接輸出多通道(multi-channel)EXR,而是每一個通道單獨輸出,而後在 Nuke 裏將這些通道序列結合成多通道的 EXR(可使用 gizmo)。spa
OpenEXR 支持無損和有損的圖像壓縮:32bit 文件會佔用大量的磁盤空間,壓縮能大大減小文件尺寸,減輕網絡負荷。Zip 壓縮的 scanline EXR 是 Nuke 推薦的。3d
合理選擇輸出半浮點仍是全浮點的 EXR,不少通道(高光、反射、陰影等)使用半浮點便可,精度要求高的通道(depth、motion vector、incidence 等)可使用全浮點。orm
一堆單通道 EXR 文件和單個多通道的 EXR 文件,很難說是誰的合成效率高,這和我的習慣有關。圖片
把全部通道放到一個文件中,會致使文件尺寸變大,增長網絡負擔。我經常使用的合成通道有:diffuse, indirect diffuse, specular, indirect specular (reflection), shadow, depth, normal, fresnel, point position, RGB matte, occlusion, (reflect occlusion), (refraction), (RGB light)。有些材質會使用更多的合成通道,例如 SSS。若是可能,我還會渲染 beauty 通道,以供快速預合(這樣就不須要等待全部 pass 合成一遍才能看到大體結果)。這裏只是一些參考,並不必定適合全部的狀況。渲染合成以前先測試一幀,看看有沒有明顯的速度問題,有的話就要找找問題的根源了。ip