8 月 8 日至 11 日,電腦圖形學國際頂級會議 SIGGRAPH 在加拿大溫哥華舉辦。2019 年圖靈獎和多次奧斯卡獎「雙料得主」派屈克·漢拉恩(Pat Hanrahan)和艾德文·卡特姆(Ed Catmull)在大會上亮相,作了一場題為「Shading Languages and the Emergence of Programmable Graphics Systems」(著色語言與可程式化設計圖形系統的出現)的報告。
派屈克·漢拉恩,皮克斯動畫工作室創始人之一,現任史丹佛大學電腦圖形學實驗室教授。他在皮克斯動畫工作室主導了 RenderMan 介面規範和 RenderMan 著色語言的設計,並參與了《玩具總動員》等皮克斯經典作品的製作。憑藉在算繪方面的傑出工作,他曾 3 次獲得奧斯卡金像獎。
艾德文·卡特姆,著名電腦科學家,皮克斯動畫工作室聯合創始人及前總裁,曾參與創辦紐約理工學院(NYIT)電腦圖形實驗室,該實驗室被稱為現代視覺特效的起源地。他將自身對於動畫的熱愛與電腦圖形學融合,依靠自身技術先後 9 次獲得奧斯卡金獎。
2019 年,為表彰他們對 3D 電腦圖形學的貢獻,以及對電影製作和電腦產出影像(CGI) 等應用的革命性影響,漢拉恩和卡特姆 這兩位電腦圖形學的奠基者被共同授予圖靈獎。
在本次演講中,漢拉恩透過他在皮克斯和史丹佛的圖形學研究經歷,展示了自上世紀 80 年代以來算繪系統、著色語言、GPU 等的發展歷程。他認為,圖形學的發展帶來了電腦體系結構的黃金時代,使得我們可以構建不同類型的電腦來最佳化不同的任務。
而艾德文·卡特姆講述了自己入門電腦圖形學、為了圖形學發展而奔走求職,再到創立 Lucas 影業電腦圖形學部門的傳奇經歷,而這個部門正是皮克斯的前身。卡特姆回憶道,在那段時間裡,自己與身邊的創作者們在各自的領域突破限制,將各種不可能變為現實,那是一個激動人心的時代。
派屈克·漢拉恩
獲得圖靈獎實在是榮幸之至。第一位在電腦圖形學領域獲得圖靈獎的人是電腦圖形學之父伊凡·蘇澤蘭(Ivan Sutherland)(1988年)。艾德文是伊凡的學生,而我在皮克斯動畫工作室工作,所以這是兩代研究者共同的榮譽。在我之前的一整代電腦圖形學學者為這個領域奠定了基礎,在早期的職業生涯中給了我很多啟發。
我因為在電影行業的電腦產出影像作品受到讚譽,我就首先從這方面講起。下面這張著名的虛擬影像是由 George Lucas 的電影公司 Industrial Light and Magic(光影魔幻工業)製作的,名為「The Road to Point Reyes」。Point Reyes是北加州的一個海濱,製作這張圖像旨在讓盧卡斯相信電腦圖形學可以為想像中的世界繪製逼真的畫面,可以創造出我們在世界上看到的多樣性,並展示出令人信服的細節和複雜性。
被授予圖靈獎後,我意識到,更大的電腦科學界實際上並不太瞭解電腦圖形學或製作電影所需的知識。 他們認為這很神奇,的確很神奇,我不得不向人們解釋電腦圖形學是什麼,以及製作電影需要什麼樣的圖形學知識。我們需要開發模型和演算法來為我們周圍的一切創建圖片,整個 SIGGRAPH 圈都在為此共同努力。多年來,我們弄清楚了如何製作人的照片,如何算繪人、地點、事物、茶壺、兔子、山、腿、溪流、雲、彩虹、光暈、光環、布料。我還研究頭髮和皮膚。不僅僅是艾德文和我,整個圖形學圈子提出了幾百上千個超酷的想法,使得製作電影成為可能。
這張照片只是早期用圖形學能製作出虛擬影像的一個例子。我們在盧卡斯電影公司時,盧卡斯主要為他的電影做特效,目標是創建可以無縫融合到實景中的電腦圖形。
下圖是早期的一個應用:1985 年光魔發行的電影「Young Sherlock Holmes」(《少年福爾摩斯》)。你可以看到教堂裡的彩色玻璃人物。
電腦圖形學的早期目標是製作逼真的圖像,這也是我們的第一個目標。
算繪系統
我們當時有一個叫做 Reyes 的算繪系統。Reyes 是 「render everything you ever saw」 (算繪你所見過的一切)的有趣縮寫。我們的目標是模擬視覺世界的多樣性,眼睛能看到什麼事物,我們就要做到能對此進行建模。我們想要實現完全不同層次的幾何和視覺複雜性;想要沒有偽影的、能與實景結合的高品質圖像;我們想讓這個算繪系統一直能在硬體中高效工作。
大家應該讀過 Robert Cook、Loren Carpenter 以及 艾德文·卡特姆合著的這篇關於 Reyes 的圖像算繪架構的偉大論文。當我到達目的地時,他們已經完成了所有這些令人驚歎的創新工作。
我在 1986 年到皮克斯的時候,我們有一個硬體方面的目標。我們要算繪一個具有8000萬個微多邊形的場景,而在當時,如果你購買一個硬體,它可能只能夠算繪40000個多邊形。我們需要的計算總量遠遠超出了我們用現有機器所能做的事情。所以,除非我們構建硬體來加速過程,否則我們不可能做到這一點。
以 Monsters University (《怪獸大學》)這部電影為例,它需要 1 億小時的 CPU 時來計算,這大約比我們的目標高出 100 萬倍。1983 年到 2013 年,30 年來,在摩爾定律下,運算能力每 5 年增加大約 10 倍。所有的一切都是透過運算能力的提高來完成的。
我的工作是在算繪品質中處理著色語言。下圖是 1983 年的我,當時我是一個非常快樂的研究生,那是我發現電腦圖形學大約 1 年後,我花了 1 年時間自學如何用 C 語言和 unix 程式設計,我以前不知道如何程式設計。我決定學習程式設計是因為我想學習電腦圖形學並創作一些東西。我努力實現每篇論文,我工作的實驗室裡有一個 STC 圖形終端,我整日坐在那裡編寫軟體來實現各種演算法。
這是我寫的第一篇論文,題目是「Procedures for Parallel Array Processing on a Pipelined Display Terminal」。事實上,當時我的導師 Lenn Yore 對神經網路非常癡迷,他主要研究電腦視覺和硬體。這些為硬體構建硬體和語言的想法,自從我開始從事圖形學以來就一直存在於我的生活中。
在我加入皮克斯之後,我讀到了兩篇很棒的論文,其中一篇是 1984 年 Robert Cook 發表的「Shade Trees」,是當時 Render Advance System 項目的一部分,另一篇是 1985 年 Ken Perlin 發表的「An Image Synthesizer」。他們的想法是,如果你有一個算繪系統,你應該為它構建某種語言或某種擴展它的某種方式。
這是我當時寫的語言。除了我,沒有人喜歡這張被腐蝕了的茶壺的照片,我以前一直用它作為我的測試示例。
茶壺上的凹凸不平是由 Ken Perlin 提出的雜訊函數產生的,你只需將六個分形雜色(fractal noise)相加,就可以創建這種隨機的凹凸紋理,然後再用它來對表明進行擾動。最後,計算表面法線(surface normals),對事物進行著色。這就是一個典型的 RenderMan 著色器。
所以實際上,我的貢獻只是在 Robert 所做的事情基礎上,構建了一門完整的語言,並弄清楚了如何在軟體中有效地實現它。
這是早期階段我們在 80 年代做這件事的時候。老實說,我做這個研究的主要原因是懶惰。我的使用者都非常苛刻,他們對算繪系統的用途有 100 萬個想法,他們想讓我做的事情太多了,我當時主要在做 Reyes,設計這種語言並告訴他們自己去做他們想讓我做的所有事情,所以這在很大程度上是一種權宜之計。
大約在同一時期,圖形處理單元(graphics processing units,GPU)和圖形工作站 (graphics workstations)出現。庫特·埃克利(kurt Akeley)在 1982 年碩士畢業後到視覺科技公司(Silicon Graphics,SGI)與 吉姆·克拉克(Jim Clark)一起工作。我最喜歡他的一篇論文是「RealityEngine Graphics」。在1984年,工作站所能做的就是畫線框;在 1988 年,可以繪製陰影多邊形;到了 1992 年,你可以得到完整的紋理映射(texture mapping)。這中間花了8年。摩爾定律在同時發生作用,但這項技術並非一夜之間發明的。
OpenGL 架構
當我 1995 年到史丹佛工作後,興起了一股 GPU 熱潮。在某種程度上,NVIDIA在 1999 年命名了 GPU(Graphics Processing Unit)這個術語。他們第一次使用 GPU 這個名稱,在單個晶片實現了完整的圖形管道。而在此之前,晶片可以做柵格化 (rasterization)、可以畫三角形、畫線,但無法在光照方面做轉換。
這個GPU是用 1700 萬個電晶體製成的,如今 GPU 中的電晶體數量實際上是其數千倍,但在當時,得到整個圖形是一個相當大的工程奇跡。以前的圖形管道比如一個 SGI 機器是由多塊晶片構成的,而這個 GPU 在單個晶片上實現了全部,這是一個真正的突破。
我認為庫特最重要的工作之一,是開發了 OpenGL 架構,這裡只是示意性地繪製了一個簡化的視圖。那個時候,皮克斯和 SGI 決定共同開發一個 3D 介面,庫特代表 SGI,我代表皮克斯,我們每週都要一起開會。
最後,我們分道揚鑣了,我們完全尊重彼此的所作所為。我記得他有一天向我解釋過,為一個工作站或者互動電腦開發一個圖形庫,跟為一個算繪系統開發圖形庫非常不同。事實上我認為 OpenGL 和比 RenderMan 更有影響力,因為前者實際上可以在我們的每一台電腦上運行。
關於 OpenGL 真正有趣和重要的是,它是一個架構,這樣的架構規範意味著它獨立於任何特定的實現。我們都知道 IBM 360 系統之父 佛瑞德·布魯克斯(Fred brooks),他獲得了 1999 年圖靈獎,但不是因為他在電腦圖形學方面的工作,而是因為電腦架構方面的工作。架構規範只是提供了一個構建方式的藍圖,有了它你就可以透過多種不同方式去實現它。
這個架構實際上與 CPU 指令架構的設計非常相似。因此,在某種意義上,它為圖形晶片奠定了基礎。多年過去,已經又出現了不少進步,比如 DX 9 和 DX 10 等,已經超出了庫特一開始所做的。
我離開皮克斯之後還繼續在做語言和架構這兩件事。我在 1995 年寫過一個基金申請。我寫道,我想做超出我們現在可以做的事情,下一步該做什麼非常明顯,那就是光線追蹤、全域照明。並不難做出這樣的預測,因為我們可以想像摩爾定律的向前發展,並將我們已經想出的方法應用到硬體中。
即時可程式化著色語言
在那之後,人們試圖提出即時可程式化著色語言。北卡羅萊納大學教堂山分校的亨利·福克斯(Henry Fuchs)和其他人領導的團隊開發了 Pixel Planes 和 Pixel Flow 架構。最早的即時著色語言之一是由馬克‧奧拉諾(Mark Olano)和 安塞爾莫·拉斯特拉(Anselmo Lastra)在1998 年開發的,還有馬克·皮爾希(Mark Peercy)在2001 年開發的一個系統。我們在 2001 年開發了一種稱為「Real-time Shading Language」的著色語言。之後到 2003 年,Bill mark 和 Kurt Akeley 以及其他在NVIDIA工作的人做了 CG。後來,HLSL/GLSL也都在那個時候被創造出來。
我想強調的是,採用我們在軟體中開發的技術並構建實現相應的硬體並非易事。這產生了一個非常重要、而且到如今我們仍然在使用的方法,即 Multipass Algorithms。你可以使用算繪系統運行一次,再運行一次,在這個過程中積累圖像,然後再次運行,你可以清晰地增強圖像,加入細節,加入陰影。這是一個透過圖形影像系統運行六次不同通道來製作保齡球瓶的示例。這是馬克·皮爾希和馬克‧奧拉諾、艾瑞、恩格在「Interactive Muti-Pass Programmable Shading」這篇論文中提出的方法,你可以將其看作是一個影格緩衝(framebuffer),就像暫存器或累加器一樣。
你只需在它上面執行一些操作,然後加入一些內容,如 C 代表來自你正在算繪的三角形的顏色。T 代表紋理。一遍又一遍地重複這個過程,這看起來是在運行一個程式,你只是在執行這些指令,製作框架緩衝區,並計算出你想要的。這是一個非常有吸引力的想法,能夠用它完全實現一種著色語言。
而與此同時,所有圖形供應商都開始提出一種著色器程式(Shader Programs)的方法。這與Multipass Algorithms 不同,它並非像執行一個非常簡單的指令那樣,向框架緩衝區加入一些東西,而是有一個完整的可執行程式,可能是一個有 128 條指令的小程式,但它會接受來自柵格化階段的輸入,在它上面執行這個程式,然後儲存、輸出。
結果證明,這是一個非常重要的見解。可以這樣理解它,如果你使用 Multipass,就像是你在做簡單的向量運算;而如果你使用著色器程式,那你就是在對輸入進行非常複雜的操作。後者的好處是,與你花費的頻寬量相比,你需要做更多的算數運算。要知道,記憶體頻寬始終是一個限制因素。事實證明,這是一項非常重要的創新,並且它對於開發程式至關重要,更多的圖形系統採用了這種著色器程式的方法,我們稱之為 「arithmetic intensity」 (算術強度),即你必須做大量的運算。
這個難題的最後一小塊拼圖,是 GPUPU。GPUPU 並不是一個新想法,關於這方面的研究可以追溯到運算時代的起始點,是在我的研究生時期。人們多年來一直在建造平行電腦,並實現了這樣一種簡單的資料並行程式設計模型,我曾對使用該並行程式的機器進行了程式設計。關於這種並行程式的問題已經全部得到了解決。
在這種並行程式中,初始部分是一個 map (映射),它把一個函數應用到一個集合上,就像你對三角形產生的所有片段運行著色器程式設計,你可以將一個函數應用於片段集合。此外,還有一個 filter(篩檢程式),如果你有一堆東西,你可以刪除其中的一些。接著是 gather(收集),為記憶體分配一整套位址,然後將其全部收集起來。
但是還有另外兩個 GPU 不擅長的東西,即 scatter 和 reduce,是指寫入一些東西到隨機位置上,分散了所有的記憶體並縮減,這類似于對一個向量進行加和。這兩個事情是相當簡單的,我們可以稍微調整一下 GPU 就能做到這些事情,並進而實現一個通用的平行電腦。
這就帶來了 Brooke 系統的問世,它由我的學生伊恩‧巴克(Ian Buck)在 2004 年推出,後來他去了NVIDIA,擔任 CUDA 的首席架構師。這的確只是一個很簡單的想法:把 GPU 變成資料並行虛擬機器,即使你不是一個圖形學程式設計師也可以使用它。此前,人們嘗試在GPUs 上執行不同的演算法,必須得是一個圖形學程式設計師才行,要想執行一個執行程式,你得算繪三角形,得學習如何使用 OpenGL 或或者 DX 之類的。
這或許就是最後一步,我們總是非常需要週期。我們需要構建平行電腦,並經過幾年的時間,逐漸把它們成為通用的電腦。
另外兩個我認為很重要的方面,一是特定領域的語言(domain-specific languages)。我們可以將 OpenGL 看做是一個庫,就像下圖中所顯示的一個簡單的OpenGL 程式。
但我們也可以將 OpenGL 看做是一種具有某種語法的語言。這裡我寫了一份關於 OpenGL 的語法。即使它只是一個庫,它也很像嵌入在 C 語言中的一門小語言。如果你不遵守這個語法,它就會顯示錯誤訊息,甚至出現藍色宕機畫面。
所以 OpenGL 實際上是一種嵌入式的、特定領域的語言。
這意味著什麼呢?我教授圖形學,我可以在一周或兩周內就能教會人們使用 OpenGL 系統。所以它非常容易使用,你無需瞭解任何有關NVIDIA硬體的知識,而且超級便攜,能在每個人的 GPU 上運行,且速度非常快,算繪速度也快得令人難以置信。
使用 OpenGL 作為程式設計圖形的語言所帶來的改變,是我們鼓勵在該領域進行令人驚歎的創新。它得以讓當時的 ATI、NVIDIA以及其他公司在不改變程式設計模型的情況下探索完全不同的硬體實現。這是構建CPUs 的人從未有過的優勢,因為他們總是用 C 語言和組合語言進行程式設計,不可能在不惹惱所有程式設計師的情況下更改架構,因為一旦更改工具將不再有效。所以,這是一件非常偉大的事情,我認為現在這種使用特定領域語言來引入新架構的理念是值得鼓勵的,有很多遵循這種路徑的系統,比如 Haylight。
圖形學帶來電腦架構的黃金時代
另一個非常相似且重要的想法是特定領域的架構(domain-specific architectures)。
我現在主要從事的是硬體設計,我正在自己製造晶片,我認為現在是構建晶片的一個很好的時期。我為什麼會對此感興趣呢?我們都聽過摩爾定律的終結,對於依賴摩爾定律的圖形學領域的研究者來說,它的結束就像是一種生存威脅。如果摩爾定律消失了,那就意味著我快退休了,可能也是時候退休了。
你可能認為摩爾定律的終結帶來的是世界末日,但在 2017 年 Hennessy 和 Patterson 的圖靈獎演講中,他們實際上認為這將是電腦體系結構的黃金時代。他們的基本論點很簡單,即我們過去只有一種電腦,比如 ARM 電腦或 x 86 電腦,而現在我們建造的是各種專門的電腦。這就像生物學,想像一下寒武紀大爆發,我們從只存在少數生物體發展到了一個布滿生命的星球。我們現在擁有各種有趣的運算設備。
我們都知道蘋果的 M1 Max 晶片,它上面有轉碼器、壓縮晶片、安全晶片,有8個普通核心,還有高性能核心,2個做 I/O 的低性能核心,還有 2 個核心 GPU。要注意,GPU 比 CPU 更大,從運算能力的角度來看更是要大得多。第一個 GPU 有 1700 萬個電晶體,而該晶片上有 570 億個電晶體。
所以現在人們正在使用和構建許多不同類型的電腦來最佳化不同的任務,這就是我所稱的「domain-specific architecture」。
最後,我想說的是,圖形學確實改變了電腦系統的構建方式。目前世界上性能最高的電腦是 GPUs,因為我們可以利用無限量的運算和電腦圖形。動畫和強化學習方面的工作只是一個開始,未來還會消耗更多的週期。
這不僅是我們使用特定領域語言和架構的方式,也是其他人構建他們的系統的方式,比如機器學習系統。
所以,當下可能是計算領域最激動人心的時刻,我希望未來有更多的人加入圖形學社群。
艾德文·卡特姆
構想圖形學的未來
很高興能夠參與這個活動。SIGGRAPH 是我 40 多年來的家,我在這裡有很多回憶和朋友。在我的職業生涯中,這個領域一開始發展比較緩慢,但隨著這個領域反過來改變了其他行業,我們便經歷了一場不斷加速的徹底變革。我想談談這些變化對我個人帶來的強烈衝擊。
年輕時,我想成為一名動畫師,但坦白地說,我的能力不夠強。所以我轉學了物理。就讀猶他大學的時候,臨近畢業時,我選修了一門由艾倫‧凱(Alan Kay)教授的電腦科學課程。他的課程打開了我走進新世界的大門。所以我又進入猶他大學的研究所學習電腦科學。我上的第一節課是伊凡·蘇澤蘭教的。可以說我的運氣很好,艾倫‧凱和伊凡·蘇澤蘭這兩位老師對我有極深遠的影響,後來他們都獲得了圖靈獎。
我在很早的時候就掌握了幾個基本法則。第一個法則來自 艾倫。艾倫‧凱告訴我們一個不太直觀的想法:人應該隨著指數增長去理解其增長的意義,去看到現實以外的東西,進而去設計未來。
在1969年,我目睹了一件對我來說毫無意義的事。當時是在一場 ACM 會議上,艾倫在演講中說,電腦會越來越快,越來越小,有一天筆記型電腦將變為現實。要知道當時的電腦還很龐大,需要放在好多個機架上。
艾倫放出一張幻燈片,幻燈片上展示了電腦未來可能的樣子。那張圖上的電腦看起來非常像多年後出現的一台 HT 筆記型電腦。那台「未來電腦模型」是折疊式的,螢幕上展示著一張 ACG圖片。
在他的演講後,聽眾們一個接一個地問問題,其中一個提問的人是當時的 ACM 主席。他批評艾倫,說艾倫不應該做出這麼荒謬的預測,而且把 ACG 圖片放到模型的螢幕上也很扯。我不明白當時他為何那麼氣憤,但是我因此知道了,即使是有經驗的人也很難去思考指數增長的含義,而且這個現象到如今仍然如此。
從那以後我便告訴自己,一定不能對這樣的變化視而不見。「思考變化」成了我的一條基本法則,並且貫穿了我之後的職業生涯。
在研究所裡,伊凡又教給了我另一套法則。當時他在麻省理工學院已經在圖形學方面打下了基礎,又在哈佛大學建立了第一個虛擬實境和擴增實境系統,然後和戴夫·埃文斯(Dave Evans)在猶他大學建立了電腦圖形學程式。他描繪了電腦圖形學的願景,然後建立了一個循序漸進的程式,準備以這個願景為目標去解決問題。
最初,電腦圖像還在多邊形方面受到了非常大的限制。我們一次只能處理一行掃描線。而Ivan 和團隊發明的程式的第一步就是開發確定圖像中可見多邊形的演算法。創建可見多邊形演算法的人中有一個叫做約翰·沃諾克(John Warnock),他後來創辦了Adobe。另一名學生開發了一種演算法,可以用於創建即時算繪多邊形的硬體。
在動畫電影中尋找生機
下一步目標是讓物體看起來平滑,但其輪廓仍然是多邊形的,這時我意識到,我可以將我對動畫的熱愛與電腦圖形這個新領域結合起來。
我做過一個課堂項目,是給我的左手製作一個多邊形模型。我很喜歡這個專案,也想要為電腦圖形學的進步增添一份我自己的力量。所以伊凡建議我想想方法,看看如何能彎曲多邊形的輪廓。經過大量思考後,我認為這種方法很明顯有根本上的缺陷。我需要的是算繪修補,我需要的是直接算繪曲線,但這要求的記憶體比當時電腦的可用記憶體多得多。我唯一能做的就是把整個圖像和 Z 緩衝區放在記憶體中。由於操作在那個時代不支援分頁,所以我寫了一個頁面來將圖像塊移進和移出記憶體。我甚至弄壞了其中一個磁片檔,因為它在磁片上到處嘎嘎作響。這些磁片在當時都是很大的。
但是我被艾倫的思想所啟發,那就是我們在模擬未來時應該懷有「我所想的會變成現實」的信心。哪怕這種發展很緩慢。我現在有一個數學定義良好的表面可以使用,所以我可以算繪 B 樣條修補達到紋理映射。這些圖像是向前邁出的一大步,而其他隨後的研究則繼續在這一發展的鏈條上添磚加瓦。我們開發的演算法受到我們現有機器的啟發和限制。這似乎是舊時代的說法,比如記憶體有多少,機器有多慢之類的,但它並不能真正限制一門學科的發展。在藝術領域也是如此。我們知道自己能做的工作是受到限制的,而我們要挑戰的是超越極限。當挑戰成功後,原有的限制邊界便向外擴展,我們面臨的挑戰也變成了突破下一個限制。
在猶他大學時,還有一個令我自豪的項目。大學贊助了關於曲面數學的研討會,而我花了很多時間思考曲線。我知道使用預先準備好的修補網路會有問題。網格的拓撲結構不適用於像人手這樣的自然物體,因此我透過逆向工程,將 B 樣條的數學轉化為一組幾何運算來解決這個問題。這些操作可以作為遞迴細分網格的規則應用於非預見網格。我用基本的高中幾何證明了這點,並且覺得這是個很好的想法。我將這個想法展示給一位教授,曲線修補正是他的專長。他幾乎沒看我 18 頁的手寫證明就直接說:Ed,這是什麼鬼東西?我被傷到了,便把這個想法擱置一旁。過了一陣子,我把這個想法拿給吉姆‧克拉克看。他實現了這個想法,我們為此寫了一篇論文。多年以後,東尼‧道洛斯(Tony DeRose) 把這個想法推進到了下一個階段。我們又將其開源,隨著時間的推移,這個想法最終成為了如今電影產業中主要使用的表面修補。
早在上大學的時候,我就相信這個想法是有可能得到應用的。這是一個我可以為之長期努力的目標。我一直支持這個願景,並試圖在迪士尼和大學之間建立一個交流專案,因此我去到了伯班克。我到了迪士尼,見到那些製作了我童年記憶裡動畫的電影製作人,能真是太棒了。
可惜迪士尼對交流專案沒有興趣,他們只是想招募相關人才來幫助設計佛羅里達的新專案,可是我沒有興趣。迪士尼已經是遊戲產業中唯一有可能對電腦圖像學感興趣的工作室,而我發現他們其實對此毫無興趣。所以我想,追求自己夢想最好的地方應該是在大學裡。
但是當時有一個問題,那就是電腦圖形學被認為與電腦科學無關,只被認為是一個有趣的邊緣學科。很少有大學課程對電腦圖形感興趣,而唯二的兩間對此感興趣的大學,康乃爾大學和俄亥俄州立大學,電腦圖形學的課程甚至都不在他們的電腦科學系裡。
當我在面試大學的崗位時,我試圖向面試官解釋圖形學未來的巨大潛力。但沒一個人聽進去,我也因此沒能在大學裡找到工作。1974年底,我接到 NYIT 院長的電話。他不懂技術,但他想製作動畫電影,而且他相信電腦圖形學前程遠大。這對我來說是好消息。但壞消息是,他認為電腦科學家將取代藝術家。NYIT願意購買兩個全彩色的可磨損緩衝器,一個價格是13萬美元。我們準備好開始工作了。艾爾維·雷·史密斯(Alvy Ray Smith)是繼我之後第二個加入團隊的人,之前他在施樂帕羅奧多研究中心工作,但是那裡對於顏色的觀點很奇怪,他為此感到沮喪,於是離開了原工作地。
開始工作後,我在幾個 3D 算繪系統中編寫了一個 2D 動畫系統。我們還從世界各地召集了志同道合的人。我是管理方面的新手,所以想複製我在猶他大學的經歷,透過讓大家分享和支持同一個願景,同一種文化而將大家集合起來,這將是一個漫長的一步一步來的過程。我認為對於我們的研究進展不應該保密,所以我認為最好的辦法是加入 SIGGRAPH,招募比我聰明的人,把我們研究的一切都發表出來。事實證明,這是我做過的最好的決定之一。
在 NYIT 工作 5 年後,我們意識到團隊的最大弱點是缺少電影創作者。就算創造出了好用的工具,可是沒有能使用這種工具的人,我們就不可能成功。於是我們開始拜訪各種電影工作室,向他們展示我們的工作,但對方都沒什麼興趣。而一部電影的出現改變了一切,這部電影就是《星際大戰》。
星際大戰的導演 Lucas 不懂技術,但是他看到了光影魔幻工業做出的特效,並深深相信電腦技術將成為電影製作中重要的一部分。電影行業中終於有一個有頭有臉的人物願意投資我們了。
1979年,我離開 NYIT,在光影魔幻工業開始搭建電腦部門。盧卡斯吸引了很多對這個行業感興趣的人,他野心勃勃,想要改變電影製作的三大板塊:視覺特效、視訊短片和數位音效。於是我們便在這三大板塊裡進行深耕。他的公司位於舊金山北部,這意味著我們可以坐車一小時到矽谷,或者乘飛機一小時到好萊塢。舊金山是一個很好的地點,因為我們可以快速到達矽谷和好萊塢,而其本身又相對偏遠。
幸運的是,喬治支持我們要把成果發有到更大的圈子裡去的決定。當時我們的一個競爭對手買了一台價值 1000萬美元的 Cray-1 超級電腦,於是我們討論了「製作一部未來水準高品質的電影需要什麼」並進行了一番計算。最後得出的結果是,我們需要100台 Cray-1 的計算能力,但只能付得起 1/10 的價格。按照計算速度指數曲線來看,我們還需要14到15年。所以我們最好把時間和資源花在我們現在看到的許多問題上。
如果我們要設定一些瘋狂的目標,就需要先明確問題是什麼以及我們需要採取什麼行動。巧合的是,當我們在15年後完成《玩具總動員》的故事時,我們已經非常接近曾經對於運算能力的估計。在未來變化的影響下工作的過程是非常需要重視的,要處理電影解析度的圖像,就需要我們設計並構建一個系統來在電腦中保存整個填充解析度圖像。而這就需要更多在工作站裡可用的並行處理,於是圖像電腦應運而生。
在算繪方面,勞倫‧卡本特(Lauren Carpenter)開發了一種可以處理高複雜性的新算繪方式。正如 Pat 所說,我們在燈光和陰影方面取得重大進展後,Rob 加入了我們。我們三個人在我辦公室的白板前碰面,討論我們的未來的大目標應該是什麼。
當時SOTA的算繪多邊形數量大約是四萬個,我們透過 Pat 的計算得出我們的目標是八千萬個。我不知道為什麼我們沒有四捨五入到1億,這個結果是計算中突然蹦出來的。這是滿足光影魔幻工業公司高標準的條件,也是我們的目標。我們對於複雜性、運動模糊和景深的追求高到瘋狂。我們想要樹立並追求一個高到離譜的目標,所以逼迫自己以一種完全不同的方式來思考這個問題。這導致了一系列新想法的誕生,也改變了從 Lawrence 架構開始的算繪複雜性。與我們一起工作的硬體設計師 Rodney Stock 建議我們考慮點採樣方式,其做法類似於印刷中使用的抖色(dithering)方式。Rob 做了這個實驗並嘗試了各種不同的方法來進行樣本的蒙特卡洛分布,最終他想出了一個很好的方法來實現樣本分布。而Tom porter 提出了一個很關鍵的想法,他將樣本隨時間分散,這解決了運動模糊的問題。
然後 Rob 重新編寫了一個物件導向的清晰架構,使得軟體能夠隨著新技術的開發而進化。我們知道,除非計算能力至少提高100倍,否則這是不現實的,但我們也知道,或遲或早,我們的想法終將變成現實。我構思了一個短片來展示了我們在盧卡斯影業所做的工作,而這個短片就是 Andre & Wally B。John Lasseter 加入了我們並創造了動畫角色,並賦予了角色只有一個真正的好動畫師才能給予的生命。那是一個激動人心的時代,在那時,極具創造力的人們在各自的領域紛紛掙脫桎梏,突破界限。
不過,光影魔幻工業公司的情況出現了變化,到了 1984 年底,喬治‧盧卡斯發現有必要把電腦部門賣出去。最終史蒂夫‧賈伯斯(Steve Jobs)買下了這個部門。儘管喬治告訴他我們一心想做動畫,但皮克斯公司還是誕生了。
於是我們開始從事製造和銷售特殊用途電腦的業務,這是我從來沒有預料到的,包括史蒂夫在內的所有人都沒有任何製造、銷售高階硬體的經驗,所以我們犯了很多錯誤。我們雇了製造人員,為客戶編寫軟體,迪士尼就是我們的其中一個客戶,他們希望我們為手繪儲存格上色。
令我驚訝的是,當我們開始製造時,我學到了很多東西。我以前認為製造是相當平庸的一件事,但我錯了。儘管我們失敗了,但這些失敗是企業進行多次調整的結果,而不是真的做錯了什麼。我們無法與不斷加速的摩爾定律競爭,這種垂死掙扎的潛在動力帶來了很多變化,是時候退出硬體業務、專注於軟體業務了。因為我們希望保持迪士尼對我們的信任,但我們為他們編寫的軟體只能在我們的硬體中運行,所以我們將硬體業務賣給了另一家公司,讓別人製作圖像。
我們與迪士尼簽訂了另一份合約把軟體轉移給 SGI。猶他大學畢業生 Jim Clark 使用幾何引擎(Geometry Engine) 和 GPUs 的前身創建了 SGI。
此時,做工作站的公司之間還沒有很激烈的競爭。圖片算繪品質很好,但都很難用。吉姆找到我,建議我們應該共同為行業設計一個算繪介面。最後共有 19 家公司參與了這一過程。我感到很自豪的一個決定是我們邀請 派屈克·漢拉恩 做我們的設計架構師。Pat 贏得了所有人的信任,他是一個聆聽者,同時也是一個偉大的設計師。Pat 的設計非常簡潔,他在 Robert 的概念基礎上構建了複雜的著色語言。他所做的這些工作都是為了讓人們更容易獲得算繪,這就是 RenderMan 介面的故事。
電影/遊戲+GPU
在 SIGGRAPH 圈子裡,每年大家都會發表新的研究進展。很多年以來,聖杯都屬於逼真圖像的製作,但圖形學研究已經擴展到建模、模擬和複雜性。如何建模和算繪水流、布料或頭髮的波動?如何模擬自然現象?非常重要的一點是,如何控制模擬以滿足故事的需求?這些問題都十分吸引人。
然後,特效行業開始與電腦圖形學融合。以光影魔幻工業公司為起點的特效行業對行事方法沒有任何教條觀念,他們並不專注於所掌握的東西,而只是關心他們能在螢幕上得到什麼。只要有好的想法,他們就會使用。1991 年是最為關鍵的一年,那年發行了電影《終結者 2》,主角正是由 CG 製作的;那年也發行了3D版《美女與野獸》,同時皮克斯與迪士尼達成合作,開始製作《玩具總動員》。
前進的步伐隨著電腦速度的增長而加快。1993 年,《侏羅紀公園》上映,這向電影業發出了一切即將改變的訊號,隨後是 1995 年的《玩具總動員》。91 到 95 年,行業經歷了技術接受度發生重大變化的轉折階段。
同期,遊戲行業開始興起。當時的 3D 遊戲還很粗糙,但已經能給人留下深刻印象。John Carmack 推動了在 PC 上實現 3D 遊戲。
NVIDIA在 1993 年成立後開始製造晶片。他們在 6 個月內設計和製造了一款晶片,並開始它以每 6 個月發布一款新晶片為目標的NVIDIA文化,這種發布週期是前所未有的。AMD 是增強 GPU 性能快速迴圈的一個競爭對手。同時,SIGGRAPH 在演算法、光照類比方面也有大量研究,這些都是遊戲行業想要的。NVIDIA從所有現存事物中汲取靈感,試圖滿足不斷發展的圖形學行業對於速度和真實感的無限渴望。SIGGRAPH 以及其他學術和娛樂行業的規模都不再有能力製造專門的晶片,但遊戲行業可以。
GPUs 被用到工作站中,為圖形學研究人員提供了更快的演算法開發機器,發表了更多 SIGGRAPH 論文。遊戲、GPU 公司和 SIGGRAPH 圈之間形成了一個極佳的迴圈,這個迴圈帶來了計算性能的提高,並在幾年內一直保持著摩爾定律。這是一個無人可以操縱的虛擬迴圈。
在 2009 年到 2012 年左右,GPUs 開始顯示出在遊戲以外的領域的用處。那些模擬所需的矩陣乘法多年來一直很有用,所以人們開始在科學應用中使用這些乘法。
神經網路的構思出現在 50 多年前,當其逐步走向實用,便給我們帶來了深度學習,並對許多行業產生了重大影響。正如神經網路與深度學習的奇妙關係,GPU、遊戲與學術界之間的迴圈也產生了完全出乎人意料的驚喜。電腦圖形學一開始被邊緣化,然後經歷了前所未有的瘋狂雲霄飛車,從邊緣學科轉而成為許多行業和電腦科學的重要支柱,而這種變化將繼續下去。很難預測最終我們會走到何處,但我們還需要繼續努力。
- 本文授權轉載自大數據文摘
加入電腦王Facebook粉絲團