(转载)一个渲染爱好者对 GPU 渲染器的技术理解

来自一位 freelancer(又称找不到工作蹲家里一个人搞艺术)的看法。题图:Octane + C4D

为了帮助你更好地理解本文,请先阅读下面三篇文章
1.机器猫老师的谈谈Arnold之 PBR&Unbiased
​2.饱受知乎精英喜爱的渲染专家知乎专栏作家戴老师的为什么我看坏arnold渲染器的发展知乎专栏地址)​
3.同样是戴老师的​谈谈GPU渲染,我们的未来知乎专栏地址


​机器猫老师的文章是为了让对 PBR、Unbiased 等基本概念不熟悉的朋友们先热身一下,戴老师的文章是此篇拙文主要试图和朋友们探讨的,并且试图厘清一些基本概念。
戴老师在第一篇文章里提到:『从业者使用Arnold的基本是一片差评』
朋友们体会一下。​“从业者使用Arnold的基本是一片差评”,“一片差评”,“差评”
【差】【评】
因为我找不到正经工作窝家里搞艺术,所以应该是算不上从业者的。恰巧今年五一期间我的偶像 Simon Holmedal 来了一下中国,我和他在深圳聊了一个下午,他在此期间对我赞不绝口地提到 Arnold 成为了 Man vs Machine 的主要渲染工具的诸多因素,我也不知道他、以及诸多在国际大公司内工作的热爱使用 Arnold 前辈们能否算上从业人士,或者从不从业是以什么标准来判断(参与负责《爵迹》的材质和渲染?)

戴老师一开始说 Arnold 绝对不会做 GPU 渲染,因为开发团队技术菜,但很快饱受祖国人民喜爱的Blender中国专家@kidux 老师转发评论道:












于是戴老师又在第二篇文章开头不点名地委婉修正道:
“我确实也听说了arnold是在开发GPU渲染这个方向,所以有些话写的不严谨——Chaos group 官方认证艺术家戴老师”

正菜开始。
戴老师在第二篇文章里如是说 “并没有说Redshift渲染速度比octane 或者vray rt更快。但是在显存利用率上,Redshift确实是完爆另外两款渲染器。就像不知道他们怎么实现的流体渲染一样。虽然不知道他们是怎么做到的,但是一张gtx980ti的显卡,就可以当别的渲染器少说4路泰坦来使用了。——资深知乎专栏作家、渲染专家戴老师”

从这篇文章的行文,以及非官方途径了解到,戴老师认为







980Ti 的显存是 6GB,上一代 Titan 显存版本不同,最高单卡 12GB。戴老师为什么说他有过一张 980Ti 能抵挡多张 4 路泰坦显卡的使用经验呢?
GPU渲染属于GPU的通用计算(GPGPU)领域的细分应用。在使用GPU进行通用计算处理的时候,因为编程接口和容易实现的关系,通常会将待处理数据直接存储在显卡的显存里,但这样一来的后果就是可处理数据受限于显卡显存可用空间。换句话说,在GPU渲染中,“传统上”,你能渲染的场景贴图、模型等资源必须全都能塞进显存里,才能渲染出来。因为GPU渲染多卡是并行计算相同场景的,因此每张显卡的显存都会存储同一个场景资源,戴老师认为多卡显存可以累积,显然是错的。假如你有一张2G显存的卡和一张6G显存的卡同时插在主板上,如果你要同时使用两张显卡进行渲染,“传统上”,你的场景必须所有资源总和不到2G才能被渲染出来,大显存显卡的4G显存资源就被活生生浪费了。
为什么说是“传统上”呢?因为GPGPU是一个通用计算的问题,要使得GPU渲染在更广阔的领域里施展开,必须要解决GPU计算受限于显存大小的问题,由此诞生了 Out-of-core 技术。参考维基百科
简单地说,在 GPU 渲染领域里,Out-of-core 就是让你可以使用电脑内存甚至硬盘来存储场景数据,不再受限于显存大小的技术。
Redshift 官网首页更是直接将此作为卖点进行宣传,戴老师要么从没看过 Redshift 官网或者帮助,要么就是完全不知道 Out-of-core 。

戴老师在谈GPU渲染的那篇文章里,全文花了三分之二篇幅提及了五次子虚乌有的 “显存利用率”的概念 ,看得出来戴老师完全不知道 Out-of-core 技术的存在,甚至于此之后发表言论提称多卡显存可叠加。
可以看得出,戴老师做研究主要靠想象力。
顺带一提,Octane 在 2.x 时代就已经支持了材质的 Out-of-core,核心开发团队正在努力解决 polygon 的 Out-of-core,这确实不是一个容易实现的技术,其他GPU渲染器开发商也都在试图加入 Out-of-core 。果子这么甜,谁不想尝一尝呢?
戴老师还说道:
因为渲染界,用的核心公式就那么些,而且都是公开的,大家都可以拿来直接用。所以,渲染器本身的质量并没有多么明显的高下之分。我就只从材质角度举一个简单但非常有说服力的例子,大家就都明白了。 ——想象力丰富的社会主义渲染专家戴老师

以及在非公开途径提及







































戴老师认为渲染器公式一样,材质有通用的,算法也一样,因此效果是一样的。
主要是源自想象力丰富的结果。
我们都知道,材质是描述物体表面效果的一组参数,实际渲染中,不同的渲染器需要将参数经由自身使用的公式转换计算后,才能渲染出图像来。
在 PBR 渲染中,BRDF(Bidirectional reflectance distribution function)决定了材质表面的效果,而 BRDF 其实是 BSSRDF(Bidirectional scattering-surface reflectance distribution function)的简化版,后者用于计算3S等不局限于物体表面的特殊 shading 效果。这段表述其实不够严谨,详情请参考维基百科BSDR词条BRDF词条。不管是 BRDF 还是 BSSRDF,都具有很多种实现公式,不同渲染器采用的公式和实现手段(以及随之而来的效果)也不一样,最常见的例子是 GGX、Beckmann 和 Blinn 在高光拖尾分布上的区别:









这是三个 BRDF 模型分别计算铬球材质表面高光时的视觉效果。最左侧的 GGX 模型,高光拖尾更长且热点不聚焦在一点,显得不死板,​这就是为什么长久以来,渲染领域的高手例如 Grant Warwick 认为 VRay 在物体高光的表现(拖尾衰减)更自然的原因:采用了 GGX Model。
不同渲染函数决定了不同的视觉效果,戴老师认为不同渲染器公式都一样,效果也都一样,渲染出来大家看到不同是因为水平不够,显然这结论也是靠想象力下出来的。
Grant Warwick 现在每周都和 Ten Dmitriy 在 twitch 上直播,两周前 Grant 就提及 VRay 的 GGX falloff 面对 Octane 的优势,Dmitriy 更演示了如何在其他非 GGX 模型渲染器中模拟 GGX 高光衰减的方法,戴老师不服的话可以下周他们两位再直播的时候上 Twitch 踢馆跟 Grant Warwick打一架。

戴老师在第一篇文章的末尾里提到, Solid Angle 是一个非常不思进取的开发团队,自动桌卖掉 MentalRay 又买来 Arnold,则显然是非常错误的决定。
我觉得,Autodesk 高层的主要问题,是他们不会看知乎。

提一点和本文无关的感想:因为政治和教育的关系,中国 CG 圈子长久以来靠谱的知识都非常稀缺,很多人缺乏搜索和查阅英文文档的能力。我觉得翻译并且传播优质的外文资料是一件好事,但可惜的是我们看到国内很多正在这么干的人,都将中文化后的文字纯粹用于自我营销,更有甚者直接重新翻录一次国外的教学,在各种设计网站上当成原创教学发布,招揽粉丝,非常不体面。这种事,虽然帮助知识得以扩张,但也养出来一批水平稀烂的小白粉丝诸多的大神。
希望大家都能活得体面一点,学一点英语。
拙文一篇,望各路同行斧正。


没有评论:

发表评论