【译】渲染大神 Inigo Quilez 访谈:如何将数学、艺术与编程完美融合

avatar
@北京字节跳动网络技术有限公司

译者按:该访谈是渲染杂志社在 Inigo 参加 2019 年 SIGGRAPH ASIA 之前进行的,Inigo Quilez 是 shadertoy.com 的创始人之一,曾就职于皮克斯和 Oculus (2014 年被 facebook 收购)。他是一位用使用代码、数学、艺术进行 shader 编程,创建精美图像的大佬,同时也是一位滑雪高手。在长达 25 年的时间里,他坚持每天学习数学知识,在日积月累中逐渐成为渲染技术的顶尖高手。

作为我最崇拜的技术人之一,我想深入的了解 Inigo 的经历,因此精读了这篇访谈,并翻译出来,本文采用直译和意译两种方式结合,采访过程中难免有很多口语化的表达,采用意译的方式更容易理解,译文中文笔拙劣指出还请不吝赐教。


Inigo Quilez 介绍

维基百科上是这样定义 shadertoy 的:“shadertoy.com 是一个为计算机图形学专业人士、学者和乐于分享的人构建的在线社区和平台,通过 GLSL code 学习并实验渲染技术和程序艺术”。

现在,提及代码会自动触发对一般艺术家的负面反应,区别在于 shadertoy 是编码的门户网站,即使是最高级的初学者也欢迎在 shadertoy。实际上 shadertoy 即是社交网站,也是创意/技术网站。

shadertoy 是 Beautify (Inigo Quilez 和 Pol Jeremias) 于 2013 年创建的。截止 2019 年中,该网站已经有超过 31000 个公共代码贡献者。下面是一个炫酷的例子:

我们很幸运有机会能和 shadertoy 的创建者之一 Inigo Quilez 进行交流。这是他个人网站的简要背景资料:

My name is Inigo Quilez, I was born and grew up in San Sebastián (a.k.a. Donostia), a beautiful city in the Basque Country, in Europe (Spain). I enjoy mathematics, computer graphics and skiing (you can beat me at computer graphics, but not at skiing), among other things. I have a resume, a Shadertoy account, a Youtube channel, a Facebook page, a Twitter stream, a Patreon page where you can help me so I can create more content for this page, and a Redbubble portfolio where you can buy some prints.

访谈对话内容

Renderosity Magazine:  我注意到你的网站个人介绍中提到你是在圣赛巴帝斯安长大的,这是我在西班牙喜欢的城市之一。作为一名 coder/shader 和数学爱好者,在那里长大对你的生活有何影响?

Inigo Quilez:  是的,我在圣赛巴蒂斯安长大,一个被群山和大海环绕的美丽城市。在每年十一月到次年五月我每周末都会去滑雪,持续了 20 年之久,所以在冬天我仅会在周五家庭作业和晚餐之间的那段时间使用电脑。我年轻时夏天会在海边钓鱼,所以夏天使用电脑的时间也很有限。和当时其他其他孩子相比,我是一个在电脑方面晚成的人,但我从 15 岁开始就设法挤出一些时间来学习编程。

所以在这之后我痴迷于创建分型和 3D 等距山峰,当然是受到我对它们和大自然热爱的影响。所以基本上我的生活和职业道路在我 17 或者 18 岁的时候就确定了,尽管我当时并没有清楚的意识到。


Question:  在 shadertoy 之前你曾在 demoscene 非常活跃,你是如何参与进来的?shadertoy 是如何从你在 demoscene 的工作中进化出来的?

Inigo Quilez: shadertoy 第一个版本是在 2009 年 Firefox 浏览器第一次发布了它的 WebGL 实现后做出来的,同年我搬到了美国洛杉矶,我与 demoscene 的现场活动和聚会失去了联系。我最后一个 demo 是在 2009 年飞往美国之前发布的。一段时间之后,在 2012 年 12 月我和我的好朋友 Pol Jeremias 联手从零重建 shadertoy。Pol 十分符合要求并且渴望共同拥有 shadertoy, 并且也有自己的想法和贡献。我们一起学习了 PHP,CSS,JS 和其他 Web 技术,然后我们在 2013 年一月发布了 shadertoy。

当我认识到 shadertoy 需要成为像 demoscene 一样的社交网站时整个工作就开始了,这不仅是 demosceners 和黑客炫耀他们技能的集结点,而且还可以共享他们生产的实际代码。Demosceners 非常开放,在不同 demo 派对的私人研讨会分享他们的知识,这些知识大部分都像派对本身一样留在地下。我认为 shadertoy 围绕让代码共享的核心功能会吸引人们蜂拥而至。尽管有其他的尝试,例如我的朋友 Ricardo Cabello 的 GLSL sandbox,但与它不同的是,社区是 shadertoy 的关键,这一点跟 demoscene 是一致的。

我们决定将用户名附加在每个 shader 上,这不仅能帮助获得用户通过评论获得其他人关于创意的反馈,更重要的是能帮助用户构建他们的作为 coder 和 artists 的影响力,这当然会与盗版者和大多数黑客的性格产生共鸣。

因此,总而言之,shadertoy 是我帮助 demoscene 一部分发展的方式,因此对我来说很方便。当然,没有什么可以替代参加 demo 派对,但是我们设法吸引了人们、学生、学者,他们通常对 demoscene 没有足够的兴趣。对于 shadertoy “绝对面向黑客” 和 “开发且欢迎” 的平衡我感到非常满意。


Question:  数学计算对于一些人来说是艰难的,但它似乎是你的第二天性。你是如何对数学和代码产生兴趣的?你是否进行自学和训练?

Inigo Quilez:  先回答第二个问题,自学和训练这两者我都会进行。我是经过培训的电气工程师,不是一名计算机科学家或者数学家。我正式学习的所有数学实际上都是应用微积分(包括诸如傅里叶分析和微分方程)。我所知道的数论,动力学系统(混沌理论),组合数学或代数有关的一切都是自学的。当我突然在 Youtube/Wikipedia 中发现一些有趣的话题,或者当我需要为其中一幅画做一些特定的数学运算时,我就会开始学习,这会让知识变得更容易学习。

但是在另一面,这也意味着我广泛的知识是构建在我的直觉之上的,不一定总是与实际工作方式相匹配。所以我知道的数学知识可能比大家想象的要少,但我知道我确实建立了很强的直觉,可以帮助我使用这些知识。

接下来回答第一个问题,我认为除非你进行了足够多的训练,否则没有什么是第二天性。当然,在我童年时期,我在那些幸运人的阵营中,他们发现数学比历史更容易。再加上懒惰的原则——在这个问题上加倍努力,你会发现它是最容易的,而不是最难的,这使得我开始精通数学。简单的数学让我花更多的时间陪它玩,这样我更快的建立起直觉,让我觉得数学是简单的,这是发生在你特别喜欢的事物上的一个经典的正向反馈循环。很快,我就围绕着老师的解释工作,并找到了自己解决某些问题的方法。但是它意味着我需要经常在家里拿着一张纸和一支笔,像解数独一样解数学题,这让我十分享受。但是我对数学的理解并非是凭空产生的,它源自我很多个小时和数学玩耍。

我想这与专业钢琴家每天如何抽出数个小时的时间演奏或者练习音阶没有什么不同,我依然每天会做数学练习。我的办公桌上都是新数学方程的草稿,并且我几乎每天都会练习,尽管我大部分关于计算机图形或者数学的小发都是在淋浴时产生的,当我脱离现实生活中的职责时,我想放松一下,我就会想到这些。


Question: Shadertoy 是一个非常独特的网站,它作为一个社会场景的 shade coders 的资源存在着。请问你如何对那些对着色技术一点都不了解的人描述这个网站的?

Inigo Quilez: Shadertoy 就是那些喜欢通过编码数学公式和计算机算法来制作图形,图像和艺术品的人们的 YouTube。

如果你对着色技术一无所知,那么你可能也不知道“编码数学公式”和“计算机算法”是什么意思,所以第二种定义应该是:

Shadertoy 是游戏开发和电影行业的技术人员的 YouTube。他们通过在计算机中输入数学公式而不是使用画笔和数字雕刻工具来创建精美的图像。


Question:  你是否期望过 Shadertoy 更加受欢迎并且更加活跃?你对这个网站未来的想法是怎样的?

Inigo Quilez: Pol 和我确实想过这个网站有潜力成为今天的样子,这也是我们创建它的原因。但我们也清楚仅仅因为某种需要并不意味着人们会接受它。但幸运的是这个网站迅速起飞,并迅速在其周围形成一个社区。如今他是我最喜欢的习惯也是我的快乐之源,每天我连上网络第一要检查并且每天会检查很多遍的事情就是看 shadertoy 出现了那些有趣的程序算法。我可以自信的说很多人也是这样做的,并且我得像那些员工在工作期间花大量时间泡在 shadertoy 上的工作室表示歉意。另一面,这要比他们在 facebook 和 twitter 上检查着色器和算法要好很多,对吧?

在未来,Pol 和我将会每个月有 2 到 3 天的时间投入在 shadertoy 上,通常会在周二的晚上。我们有一个很长很长的清单,列举了我们要改进的地方,以及我们要沿着许多不同方向与站点一起发展的方向。但是我们丝毫不着急,这仍然是我们的宠物爱好项目。


Question: shadertoy 上有一些着色器是非常鼓舞人心的,对于刚刚才开始接触的人来说你会推荐什么样的学习路线?

Inigo Quilez:  我一般不喜欢推荐一条特定的学习路径,因为我认为每个人的实际操作方式是不同的。我只能说我自己是怎么做的。我自学计算机图形学的方式是在是在我实际关心的项目(demoscene 上的 demo,绘制分型,电影拍摄,教育内容)中应用它。在每个项目中我都学到一些东西,但是我经常确保自己完成了这个项目。我不会阻止自己最求完美,无论如何我都会发布我的 demo,分型图案和绘画。当然我会制定一个高的标准,并且保持让这个标准更高,但是我清醒的认识到需要花时间去达到这个标准,这并不方案我去定制标准。

我已经坚持这样做超过 25 年了,并且我仍然学习和提升。所以有足够的耐心,每天练习和完成工作对我来说很有用。并且我的观点是有些非常重要的事情是,确保你要尽可能多的次重复造轮子如果你需要的话。我认为这是非常重要的一点,但不幸的是,看起来软件工程师已经受过训练,可以不惜一切代价防止重复造轮子的情况发生。我个人非常反对大量重用代码、库和技术。在最坏的情况下,找到自己的解决方案是一种欣赏好的/专业的解决方案到底有多好的方法。

在最好的情景,你可以找到一个新的算法让某些事情发生,有些时候它可能是你在这之前从没有完成的某些东西。在计算机图形学的领域中它可能比人们想象中发生的更加频繁,仍然是充满隐藏宝石的绿色领域。所以保持 native,重新发明轮子,并且探索做旧事情的新方法。

在非技术方面,争取更漂亮的艺术是一件好事。仅仅由于你是一位技术艺术家,一名编程人员,或者一个工程师,这并不意味着你不能睁大眼睛说出丑陋的艺术和漂亮的艺术之间的区别。我见过许多技术能力非常强的人,但是他们的工作没有得到应有的关注,仅仅是因为结果看起来不够好。学习基本的审美不需要付出什么,花点注意力在电影和摄影工作上。


Last Question:  您在 YouTube 频道的介绍性视频中提到,创建图形效果的简便方法;除了创建着色器的巨大乐趣之外,还可以在着色编码中获得什么好处?您能告诉我您在 Siggraph Asia 上的演讲吗?您打算涵盖什么内容?

Inigo Quilez:  我可以同时回答这两个问题,因为我在 Siggraph Asia 上的演讲将确切地讲述,除了乐趣之外,从着色器编码中还能获得什么其他好处。

下面我说的不太会破坏谈话,我得说在很多年内我对这个问题没有答案,自从我在 Pixar 和 Oculus 工作后,最终我可以通过数学知识专业地创造出图形效果和精美的内容,并以它为生,这证明了用数学方法做图像的的巨大实际应用价值。

在某种条件下,我将会在演讲时描述出来,这与行业状况和硬件市场有关,精通数学和代码艺创作艺术的人们有很多机会。这个机会窗口很宽广,能提供大量的乐趣和机会,我怀疑这将会经常发生。

演讲将围绕着这些机会发生时我的运作方式进行,从代码,数学,艺术角度出发,我的做法是什么,以及为什么我认为更多的人应该在工作中采用相同的做法。


编者:第 12 届 ACM SIGGRAPH ASIA 将会在 2019 年 11 月于澳大利亚布里斯班举行。Inigo 将进行演讲,他的主题演讲的题目是“为什么我要用数学创造图像-科技创新之旅”。


欢迎关注「 字节前端 ByteFE 」

简历投递联系邮箱「 tech@bytedance.com