xiaoxi

科普一下EXR

Maya的365天:

   很多同学是看了我的教程以后开始使用EXR作为输出的格式,但是EXR格式有什么优点,并不是很清楚,这里我摘录一段来自网络的文章,帮助大家理解一下,出处我记不住了,但还是要感谢一下原作者。

    很多人对 OpenEXR 这种图像格式的了解仅限于:它是 32bit 的,它可以支持多通道,VFX 公司都在使用 EXR。这些都没错,但如果你的渲染器生成的是 tile 方式的多通道 EXR,则会降低 Nuke 的合成的效率。

Tile & Scanline

很多人都不知道在输出 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(Arnold 和 Vray 的缺省方式,Softimage 版的 mental ray 和 3delight 的唯一可选方式,Maya 2013 将缺省的 EXR 和 TIFF 输出方式改成了 scanline),渲染通常是分成图块来处理的,tile 方式允许渲染器将当前处理的图块存盘,这样可以节省 framebuffer 资源,而 scanline 方式则要等整个图像处理完毕后才能存盘,如果渲染图片尺寸大的话,就会有明显的效率差别。

压缩方式

OpenEXR 支持无损和有损的图像压缩:32bit 文件会占用大量的磁盘空间,压缩能大大减少文件尺寸,减轻网络负荷。Zip 压缩的 scanline EXR 是 Nuke 推荐的。

Half float & Float

合理选择输出半浮点还是全浮点的 EXR,很多通道(高光、反射、阴影等)使用半浮点即可,精度要求高的通道(depth、motion vector、incidence 等)可以使用全浮点。

单通道 & 多通道

一堆单通道 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 合成一遍才能看到大致结果)。这里只是一些参考,并不一定适合所有的情况。渲染合成之前先测试一帧,看看有没有明显的速度问题,有的话就要找找问题的根源了

评论

热度(14)