開場與介紹

(主持人喊話) - 我們熱烈歡迎電腦圖學界的兩位傑出人物回到 SIGGRAPH。這是一場難得且特別的重點演講,由2019年 ACM 圖靈獎得主 Ed Catmull 和 Pat Hanrahan 主講圖靈講座。(觀眾鼓掌) 相當令人興奮。- 所以 Dr. Pat Hanrahan 是三屆奧斯卡金像獎得主,也是 Stanford University 電腦科學與電機工程系的 Canon 教授,任職於電腦圖學實驗室。在探討著色語言與可程式化圖形系統的興起時,Pat 將回顧著色語言的歷史,並討論計算的廣泛影響以及電腦圖學的未來。迫不及待了。而 Dr. Ed Catmull 是 Pixar Animation Studios 的共同創辦人,並擔任 Pixar 總裁長達33年。在這33年中,有13年他也同時擔任 Walt Disney Animation Studios 的總裁。他是五屆奧斯卡金像獎得主,並且是 ACM SIGGRAPH 超過40年的忠實會員。這不是很酷嗎?(觀眾鼓掌) 在電腦圖學狂野、意想不到的指數級旅程中,Ed 肯定了他早期對電腦圖學潛力的信念,並帶領我們踏上這趟旅程,直至我們今日所處的位置。因此,我非常興奮能邀請 ACM 圖靈獎得主 Ed Catmull 和 Pat Hanrahan 登上舞台,頒發兩個 ACM SIGGRAPH 獎項,然後帶我們進行一場關於他們對電腦圖學基礎且令人印象深刻貢獻的迷人旅程。所以請大家一起歡迎這兩位先驅者 Ed 和 Pat。(歡快的音樂響起)(觀眾鼓掌)

ACM SIGGRAPH 獎項頒發

  • 我們將從頒發今年的兩個獎項開始。第一個是 Computer Graphics Achievement Award,頒給 Michiel van de Panne,以表彰他在電腦動畫領域的基礎性工作,特別是基於物理的角色模擬與控制。Michiel 1993年關於感知器控制網路(sensor-actuated networks)的里程碑論文,透過使用物理模擬生成並驗證候選動作,重新構想了圖學中的神經網路與強化學習。他2007年的重要論文 Symbicon 展示了強健的雙足步態可以從簡單的約束中產生,並被許多人進一步發展與擴展。自2016年以來,他的工作協助開創了使用深度強化學習來創建基於技能的、基於物理的代理(agents)。此外,他透過共同創辦如今已邁入第20屆的 Symposium on Computer Animation,對這個領域做出了貢獻。恭喜 Michiel。(觀眾鼓掌)(歡快的音樂響起)- 我現在想將今年的 ACM SIGGRAPH Practitioner Award 頒發給 Pol Jeremias 和 Inigo Quilez,以表彰他們開發的 Shadertoy 以及對電腦圖學的其他貢獻。Shadertoy 是一個工具,可以在瀏覽器視窗中使用 GLSL 和少量但強大的擴展函式庫快速開發著色器程式。每個月有來自全球幾乎每個國家的數百萬人使用 Shadertoy。圖學從業者、研究人員和教師都在使用它。它甚至已被 SIGGRAPH 社群以外的產業採用為工具。這種廣泛用戶群體的一個原因是,Shadertoy 不僅僅是一個程式設計環境。它還讓用戶能夠看到並建構在他人的工作基礎上,在上下文中學習新技術;對著色器發表評論讓社群能夠分享想法和見解;瀏覽數萬個著色器有助於激發新想法。Shadertoy 不僅僅是一個著色器編輯工具。它是充滿活力且緊密相連的從業者、研究人員、教育工作者以及任何對學習電腦圖學感興趣的人組成的社群的基礎。恭喜 Pol 和 Inigo。(歡快的音樂響起)(觀眾鼓掌) 好的。我想我先開始。我的投影片。感謝 Elizabeth 的介紹。很高興能親自來到這裡。Ed 和我幾年前獲得這個獎項時,正是 California 封鎖之前。實際上,這是我自那以來進行的第二次公開演講,但我們一直想等到親自來到這裡,與我們所有的朋友和同事一起進行這個獲獎演講。首先,我要說獲得這個獎項讓我感到非常謙卑。電腦圖學領域唯一一位獲得圖靈獎的其他人是 Ivan Sutherland。Ed 是 Ivan 的學生,我在 Pixar 為 Ed 工作,這是兩代研究人員。在我之前還有一整代的電腦圖學研究人員。他們為我們的領域奠定了基礎。他們也幫助了我早期的職業生涯並啟發了我。我希望他們也能獲得認可。今天,我想花點時間談談我做了什麼,一些歷史背景,以及我在工作時如何思考各種事情。所以,我因在電影領域的電腦生成影像方面的工作而受到表彰,Ed 和我都因此受到表彰。這是 Lucasfilm Alvy Ray Smith 製作的一張著名圖片,叫做 "The Road to Point Reyes",你們有多少人記得這張圖片?這是一張老照片。這張圖片的想法是創造一個 "The Road to Point Reyes" 的虛擬視圖。所以 Point Reyes 是一個海濱國家公園,在 Northern California,靠近 Lucasfilm。它的目的是說服 George Lucas,電腦圖學能夠創造一個逼真的虛擬世界圖像。CGI 能夠以令人信服的細節和複雜性創造我們在現實世界中實際看到的這種多樣性。所以,自從獲得這個獎項以來,我意識到,實際上廣大的電腦科學社群對電腦圖學或製作電影所需的一切知之甚少。他們認為那是魔法。它確實是魔法,但我不得不向人們解釋電腦圖學是什麼以及製作電影所需的一切。我們需要開發模型和演算法來創造我們周圍一切事物的圖片,整個 SIGGRAPH 社群為此共同努力了很多年,我們讓你們弄清楚如何製作人物圖片,如何渲染人物、地點、事物、茶壺、兔子、山脈、湖泊、溪流和雲彩。彩虹、光暈和榮光、布料。我則致力於頭髮和皮膚。整個社群,不僅僅是 Ed 和我,整個社群開發了數百個酷炫的想法,才使得製作電影成為可能。而這張圖片只是早期圖片能做到什麼的一個例子。現在,當我們在 Lucasfilm 時,那裡的目標是,既然 George Lucas 主要為他的電影製作特效,就是要能夠創造可以無縫融合到真人實景中的電腦圖學。所以這是他們在 Lucasfilm 做的一個早期測試,"Young Sherlock Holmes",你在教堂裡看到彩色玻璃人物。很顯然,由於這段歷史,早期的電腦圖學非常注重製作逼真的圖片,那也是我們主要做的事情,也是我們的第一個目標。我稍後會回來談論這個。但當我在那裡時,我們有一個系統叫做 Reyes。Lauren 實際上命名了這個渲染系統 Reyes,它代表 Renders Everything You Ever Saw (渲染你看過的一切)。所以這是一個有趣的小縮寫詞,我們的目標是,我們要為視覺世界的多樣性建模,如果你走出戶外,你能看到的所有各種事物,我們應該能夠為其建模。顯然,我們需要一個全新層次的幾何和視覺複雜性。我們需要高品質且沒有偽影,這樣我們才能將其與真人實景合成。事實證明,我們一直希望它能在硬體中高效工作。順帶一提,如果你還沒讀過 Rob 和 Lauren 以及 Ed 和 Ed 關於 Reyes 影像渲染架構的這篇精彩論文,你應該讀一讀。Ed 可能會更多地談論這個。當我到達 Pixar 時,他們已經完成了這一切工作,這一切令人驚嘆的創新工作。然後,去年 Ed 和我實際上寫了一篇論文叫做 The Design of RenderMan,其中詳細介紹了我們在那裡所做的事情。我提到了硬體。我的意思是,這是我製作的一張投影片。大約在1986年我到那裡時,我們實際上舉行了一次閉門會議,並制定了 Reyes 機器目標。我們將建造一個硬體設備。這些實際上是一些細節。這裡令人驚嘆的一點是,我們想渲染一個包含八千萬個微多邊形的場景,而當時如果你購買一個硬體設備,它可能只能渲染大約四萬個多邊形。所以這簡直是瘋了。如果你看看我們需要的總計算量,它遠遠超出了我們現有的機器所能做到的。所以,除非我們建造硬體來加快這個過程,否則這根本不可能做到。如果你想想,這是在1980年代,實際上我看到的最後一部電影,他們發布了其他在工作室工作的人更好的統計數據,如果你有請讓我知道,我會把它包含在我的論文裡,但這是 "Monsters University" 的一個例子。如果你看看,計算這部電影花了1億個 CPU 小時。他們基本上,如果你做計算,他們每幀使用1 petaFLOP 的計算能力。所以這大約是我們目標的一百萬倍。我們目標的一百萬倍。如果你想想,比如從1983年到2013年,那是30年。在30年裡,每個人都記得 Moore's Law 或者 Moore's Law 關於性能的部分。我稍後會再談到這個,但它大約每五年增加一個數量級,即電腦性能、電腦能力大約每五年增加一個數量級。所以如果你做計算,30年給你 10 的六次方,或是一百萬。所以你可以看到,這一切都是由計算能力的增長所實現的。現在,我做了什麼?所以大部分工作在我到那裡之前就已經完成了。我的工作是開發著色語言和 RenderMan 規範。實際上,讓我給你們展示一點關於我自己的事情。這是我1983年的樣子。我是一個非常快樂的研究生,因為這是我發現電腦圖學大約一年後,我花了一年的時間自學如何用 C 和 Unix 程式設計。我當時不會程式設計。我決定因為我想學習電腦圖學並實現東西,所以我會學習如何程式設計。然後我基本上致力於實現當時 SIGGRAPH 的每一篇論文。我只是系統地一篇一篇地攻克它們。然後我當時正坐在我工作的實驗室裡,那裡有一台圖形終端機,STC 圖形終端機,我相信沒人記得,但我整天都坐在那裡寫軟體來實現各種演算法。所以我那時是一個非常快樂的圖學學生。這實際上是我第一個專案。這是在那張照片拍攝之前一點點。這是我寫的第一份技術報告,實際上我想也是我寫的第一篇論文,叫做 Procedures for Parallel Array Processing on a Pipelined Display Terminal。實際上,我當時的導師 Lenn Yore 對神經網路非常感興趣。他是一位電腦視覺研究人員,並且研究硬體。那是他的主要研究課題。所以這好像不是一件新的事情。這些關於建造硬體和硬體語言的想法,自從我開始進入圖學領域以來就一直伴隨著我。現在,當我來到 Pixar 時,有兩篇很棒的論文,我想給予它們應有的肯定。一篇是 Rob Cook 在1984年寫的。這是在當時的 Render Advance System 或 Reyes 系統的一部分,叫做 Shade Trees,另一篇是 Ken Perlin 的 Image Synthesizer。他們真正提出了這個想法,就是如果你有一個渲染系統,你應該為它建構某種語言或某種擴展它的方式。所以他們確實值得這個想法的肯定。我希望他們能因此獲得更多的認可,但無論如何,這就是,跳到重點,這就是我當時提出的語言或東西。顯然,我不期望每個人都能讀懂這個。雖然如果你像我一樣喜歡寫程式,也許你會。但無論如何,這張腐蝕的茶壺照片沒人喜歡,只有我例外。我以前一直把它作為我的測試範例,但無論如何,茶壺上的凸起是由這個 noise 函式生成的,這是 Ken Perlin 的 noise 函式。你只需要疊加六層 noise,就可以創造出這種隨機的凸起紋理。然後你用它來擾動曲面,我不會詳細介紹所有這些程式碼,但最後,一旦曲面被擾動,你計算曲面法線並重新著色這個物體。所以這是一個典型的 RenderMan 著色器。所以,我的貢獻實際上只是將 Robert 的工作,並從中建立一個完整的語言。然後也弄清楚如何在軟體中高效地實現它。無論如何,這就是這個東西的早期階段。這是在八零年代我們做這個的時候。說實話,我做它的主要原因是懶惰。我的用戶非常苛刻,Bill Reeves 和 Evan Osby 以及 John Lasseter 等人。他們對渲染系統有一百萬個想法想實現。我有一長串他們希望我做的事情。當時我正在維護 Reyes,設計這門語言並告訴他們自己去做,比我自己去做他們希望我做的所有事情容易得多。所以這很大程度上是權宜之計。好的,大約在這個時期,我們開始看到圖形處理單元和圖形工作站的出現,這大約是在這個時期。我的一位親密同事,後來成為我的博士生 Mi Cordetli,曾與 Jim Clark 在 SGI 工作。實際上,我最喜歡他的一篇論文是關於 reality engine 的,我相信那是1992年。他基本上整理出了當時工作站的歷史。所以1984年,你只能畫線框圖。1988年,你基本上可以畫有陰影的多邊形。我列出了一些早期工作站的例子。然後到了1992年,你開始實現完整的紋理映射。所以這是非常具體的,線框圖,有陰影的多邊形等等,你可以看到,到達這裡需要八年時間。Moore's Law 在推進,但這項技術並不是一夜之間發明的。我現在想提一下,當我1995年來到 Stanford 時,那是 GPU 熱潮的開始,而 NVIDIA 在1999年。所以這是從那時開始的,他們創造了 GPU (graphics processing unit) 這個詞。如果我理解正確的話,他們第一次使用 GPU 這個詞來指稱一個單一晶片實現了完整的圖形管線。在此之前,晶片可能只做光柵化。它們可能只畫三角形,可能畫線條,但它們不做變換和光照。好的,這是第一次在一個單一晶片上實現整個圖形管線。這就是為什麼他們稱它為 GPU,圖形處理單元。為了稍微衡量一下它的規模,我稍後會回到這個話題,這個晶片使用了1700萬個電晶體。好的,現在的 GPU 上電晶體數量是當時的幾千倍,但要在一個晶片上實現整個圖形管線是一項了不起的工程壯舉。我的意思是,在此之前,如果你有一個圖形管線,比如一台 SGI 機器,它是由多個晶片板組成的,對吧?所以這相當於把整個東西都放在一個晶片上。這是一個真正的突破。現在 Kurt,他的另一個,我認為是他最重要的工作之一,是開發了 OpenGL 圖形管線或者 OpenGL 架構,我這裡只是示意性地畫出來。我不會非常詳細地解釋這個。我相信這裡的每個人都知道它。這是原始東西的簡化視圖,但有趣的是,Kurt 開發了 OpenGL。實際上,Kurt 和我一起工作。Pixar 和 SGI 在這個時期決定共同開發一個3D圖形介面。Kurt 代表 Silicon Graphics,我代表 Pixar,我們非常認真,每週開會,試圖做到這一點。最終我們分開了,而且分開得非常友好。我的意思是,我們完全尊重對方正在做的事情,事實證明,他解釋了,我記得他有一天向我解釋說,為工作站或互動式電腦開發圖形函式庫,與為渲染系統開發函式庫是非常不同的。如果你讀 RenderMan 設計論文,實際上會詳細介紹這些差異。實際上,我認為 OpenGL 在某種意義上比 RenderMan 影響力大得多,因為它實際上運行在我們每台電腦上,或者是 OpenGL 的某個後代運行在我們每台電腦上。所以,他提出這個規範,關於它的真正有趣且重要之處在於它是一個架構。我只想提及這個詞,因為它是一個非常重要的詞。所以他在他的規範中描述了一個抽象的圖形管線。像這樣的架構規範旨在獨立於任何特定的實現。我引用 Fred Brooks,我們都認識並喜愛他,他也因他在電腦圖學方面的工作而獲得圖靈獎,但更主要是因他在 IBM 360 電腦架構方面的工作。但無論如何,編寫一個架構規範的想法是你可以用許多不同的方式實現它。好的,它提供了一個如何建造它的藍圖。我不會花時間詳細介紹。但當我讀到這東西時,我立刻知道它是一個架構,而且它實際上與 CPU 指令集架構的設計方式非常相似。所以在某種意義上,它為未來多年的圖形晶片奠定了基礎。當然,它上面還有改進,比如 DX9 和 DX10 等等,這些都超越了他當時所做的。好的,這就是那兩件事。離開 Pixar 後,我繼續研究這個。實際上,我記得1995年寫了一份補助金申請,這就是我的申請。我說我希望研究的是超越我們目前能做到的事情。接下來要做什麼顯然是如此清楚,因為我們可以說,即時圖學的好處是它大約落後於純軟體渲染器在 CPU 上能做到的事情幾年,比如10年或20年。所以我們已經在彈性光照和著色以及紋理方面做了所有這些工作,比如著色語言和更高層次的幾何體素。我不會詳細談論這些。然後我實際上說,再下一代,這是在1995年,可能是光線追蹤和全域光照。這也不是很難預測的事情,我認為這實際上正在發生,對吧?你現在可以看到能夠進行光線追蹤的晶片,但這些預測並非難以做出,因為我們可以想像 Moore's Law 一直在發展,並將我們已經弄清楚如何做的事情放到硬體中。所以,我希望我有更多的時間。我正在寫一篇論文,我有一個草稿,其中我將更詳細地介紹我正在談論的內容。但在此之後有一段時間,人們基本上試圖開發即時、可程式化的著色。當然,由 Henry Fuchs 等人領導的 UNC 團隊開發了 pixel planes 和 pixel floor 架構。最早的即時著色語言之一是由 Mark Olano 和 Anselmo Lastra 開發的。SGI 的 Mark Peercy 開發了一個系統。我們在2001年開發了一種叫做即時著色語言(real-time shading language)的著色語言。然後在2003年,Bill Mark 和 Kurt Akeley,我曾與這兩位以及 NVIDIA 的其他人在那段時間一起工作,他們開發了 CG,然後 HLSL/GLSL 也在那段時間被創造出來。我在此沒有給予這些工作應有的肯定,因為我沒有時間。其中有無數的創新。我想強調的一個普遍主題是,將我們在軟體中開發的技術,即使是為了硬體而設計的,實際建造硬體來實現它們絕非易事。我希望我能花整整一個小時告訴你們各種事情。但我確實想提及一個由此產生的一個非常重要的想法。曾經有一個想法,我們現在仍然經常使用這個想法,就是多遍演算法(multipass algorithm),對吧?你使用渲染系統,讓你的場景運行一遍。然後你再運行一遍,並以某種方式累積影像,對吧?然後你再運行一遍,你可以顯著增強影像。你添加細節,你添加著色。這是一個通過圖形系統運行保齡球瓶六次不同遍來製作保齡球瓶的例子。這就是 Mark Peercy、Mark Olano 和其他人 Lez J 在他們關於互動式多遍的文章中提出的想法。實際上,我這裡寫了一個小方程式。你可以把它想像成,影格緩衝區就像一個暫存器或累加器。然後你只對它執行一些操作,你取出影格緩衝區中現有的東西,並加入一些新來的東西,color 代表來自你正在渲染的三角形的顏色,T 代表紋理。你 just keeps doing this over and over, over again. 然後看起來你正在執行一個程式,對吧?你只是執行這些指令,並讓影格緩衝區計算你想要的東西。所以這是一個非常有吸引力的想法,他們能夠用它完全實現一個著色語言。但同時,所有的圖形供應商都開始提出著色器程式(shader programs)的想法。這有點不同,不是只運行一個非常簡單的指令,比如向影格緩衝區添加東西,或者混合東西到影格緩衝區,他們會有一個完整的程式在運行。這可能是一個小程序,128個指令,但它會獲取來自光柵化階段的輸入,運行這個程式,然後將這些作為輸出存儲。這是一個非常重要的想法。一種思考方式是,如果你做多遍處理,就像你在做簡單的向量操作,比如 A 加 B 或者 A 與 B 的向量運算。而如果你做串流著色器程式(stream shader program),你對你的輸入進行一個非常複雜的操作。這樣做的好處是你進行了大量的算術運算,相比你消耗的頻寬。如果你了解純粹的架構,頻寬、記憶體頻寬始終是一個限制因素。所以這是一個非常重要的創新,並且對於開發可程式化圖形系統至關重要,這就是著色器程式的想法。我們稱之為算術強度(arithmetic intensity),這個概念是指你需要進行大量的計算。這個謎題的最後一個小部分,我知道我只是給你們一個非常短暫的概覽,但我研究了所有這些瘋狂的事情,是 GPGPU。這裡的關鍵點實際上是一個相當簡單的事情。它回溯到我的研究生時代,我知道因為我作為研究生所做的事情,我知道人們已經建造平行電腦很多年了,存在這個相當簡單的資料平行程式設計模型,而且我知道它。我曾經程式設計過使用資料平行程式設計的機器。你們中有些人可能還記得 Connection Machine 等機器。這不是一個新的想法。這可以追溯到計算的開端。關於這個平行程式設計模型的好處是, since they had already worked it all out,在某種意義上,他們有一些小的基本操作。好的,所以他們有一個叫做 map 的基本操作,它對一組事物應用一個函數。如果你想像在三角形生成的所有片段上運行一個著色器程式,你可以對一組片段應用一個函數。這就相當於這個 map 操作。然後有一個叫做 filter 的操作,如果你有一堆東西,你可以移除一堆東西。這是一個基本操作。然後你有這個 gather 操作,你取出一些,你有記憶體,你給它一個地址,你 gather 進來,在資料平行程式設計中,你給它一整組地址,你 gather 所有的東西進來,但是還有另外兩個 GPU 不太擅長的基本操作,叫做 scatter,你just sort of 將東西寫到隨機位置,你 scattering 所有記憶體,以及 reduce,它表示你對一個向量求和。但是想像一下,我們可以稍微調整一下 GPU,讓它可以做這些事情,這是相當簡單的。如果我們做了這些事情,那麼我們就相當於這個通用資料平行電腦了。所以這也是一個相當簡單的飛躍。這就產生了我的學生 Ian Buck 在2004年創建的 Brook 系統。這個想法非常簡單。你 just said "讓我們讓 GPU 像一個資料平行虛擬機器一樣工作,這樣你就無需成為一個圖形程式設計師來使用它了。" 所以到了這個時候,人們已經開始嘗試在 GPU 上運行不同的演算法,但你必須是一個圖形程式設計師。如果你想運行一個程式,你必須渲染一個三角形,你必須學習如何使用 OpenGL 或 DX 等等。所以現在你可以就像一個微生物學家一樣,你可以開始寫程式,就像你想像中,如果你不懂圖形,你會做的那樣。然後 Ian 實際上去了 NVIDIA,並成為 CUDA 的首席架構師。他們有幾個,我甚至可能不知道 CUDA。他們當然做了很多偉大的事情,但它基本上成為了相當通用的平行程式設計。所以這就像是最後一步。好的,我們差不多已經到達了。我想說的是,我們一直極度需要計算週期。好的,我們需要建造平行電腦,經過數年,我們 just gradually 使它們變得通用。好的,有兩件事我想談談,我認為這是重要的兩點小教訓。一個是領域特定語言(domain specific languages)。我幾年前整理了一些投影片,你可以把 OpenGL 想成一個函式庫。再次,每當我看到像這樣的投影片,我就非常高興,因為我想像自己編寫 OpenGL 程式並在這個螢幕上繪圖。但無論如何,這是一個簡單的 OpenGL 程式,它設置一個相機並繪製一堆三角形,然後交換緩衝區,你說是的,好的。所以它只是一個函式庫,但你可以把 OpenGL 想成一門語言。我的意思是,它實際上有一種語法。比如如果你說 GL begin,那麼你必須在裡面放顏色、法線和頂點,對吧?所以我實際上寫出了一個小小的 OpenGL 語法。所以即使它只是一個函式庫,它就像嵌入在 C 裡面的一個小語言一樣。如果你不按照順序執行操作,你不遵守這個語法,它就會給你一個錯誤。事實上,它可能會給你相當嚴重的錯誤,比如藍屏。所以它是一門語言,對吧?所以它就像我們所謂的嵌入在 C 中的領域特定語言。無論如何,這有什麼好處?首先,我教授圖形學,你可以在一兩週內教人們 OpenGL 或類似的系統,它相當容易使用。它處於高層次。你不需要知道任何關於 NVIDIA 硬體的知識就可以使用它。它非常可移植。我的意思是 OpenGL 運行在許多不同的東西上,包括 CPU 實現,對吧?但它也運行在每個人的 GPU 上,而且它非常快,對吧?它的渲染速度令人難以置信,你知道嗎?我的意思是,它的性能真的很高。所以基本上,通過使用 OpenGL 作為圖形程式設計的語言,我們極大地促進了這個領域的創新。我們讓當時的 ATI 和 NVIDIA 以及許多其他公司探索截然不同的硬體實現,而無需改變程式設計模型。這是我們擁有的優勢,而建造 CPU 的人從未擁有,因為他們總是使用 C 和組譯語言程式設計。不改變架構是不可能的,否則會惹惱所有程式設計師,因為工具將不再起作用。所以,無論如何,這是一件非常重要的事情。而且現在,使用領域特定語言來引入新的架構思想,我認為是受到鼓勵的,你可以看到像 Haylight 和其他遵循這種方法的系統。第二個非常重要的想法是領域特定架構(domain specific architectures)。這是一個非常重要的概念。事實上,我現在大部分時間都在研究硬體,硬體設計。我正在自己建造晶片。我認為現在是建造晶片的一個非常有趣的時期,但我為什麼會對它感興趣呢?你們都聽說過 Moore's Law 的終結。對我這樣一個一輩子都依賴 Moore's Law 的圖形領域人士來說,它的終結就像一個生存威脅。我的意思是,如果 Moore's Law 消失了,這是否意味著,我想我差不多要退休了,實際上。可能是時候退休了。所以,但無論如何,基本上正在發生的事情是,電晶體最終會變得越來越小,它們無法小於矽原子。你知道我的意思嗎?我們已經非常接近了。好的,你達到納米級,你已經接近矽原子的半徑或幾個矽原子的半徑了。所以這是一個大問題。當然,你們都聽說過這個。我的意思是,這是一個巨大的問題。我們 just passed the 500億美元立法來試圖解決這個問題。但無論如何,你可能認為這是世界末日。但在 Hennessy 和 Patterson 的圖靈獎講座中,那是在我們之前兩年,他們實際上認為這將是電腦架構的黃金時代。他們的基本論點很簡單,我們過去只有一種電腦,比如 ARM 電腦或 x86 電腦。現在我們要建造所有這些像專門的電腦。而且,這將會像,我本來想說生物學,但你想像一下寒武紀大爆發,我們從只有少數生物體發展到一個充滿各種有趣計算設備的星球。所以,這實際上是一個相當有趣的時期。只是為了向你展示它有多瘋狂,你們可能都知道這個,這是 Apple 的 M1 Max,這只是它的佈局圖。看看上面有多少計算設備。他們沒有告訴你上面所有的東西。上面有編解碼器。有壓縮晶片,有安全晶片。有八個正常的、高性能的核心。有兩個低性能的核心用於 I/O。然後上面有這個30個核心、雙核心的 GPU。我真的很喜歡這張圖片,因為注意到 GPU 明顯比 CPU 大。如果你從計算能力的角度來看,它要大得多。我提到第一個 GPU 有1700萬個電晶體。這個晶片有570億個電晶體。令人難以置信,令人難以置信。所以基本上正在發生的事情是,人們正在為不同的任務構建許多不同種類的電腦,我將這些稱為領域特定架構。構思這將會走向何方,這相當有趣。我認為很多事情都是由 GPU 引發的,因為 GPU 表明你可以構建不同類型的電腦。好的,我基本上沒時間了。我還有一秒鐘。無論如何,這是我的總結。讓我就,我想我提出的絕大多數觀點希望都已經清楚了。我只想以這樣一句話結束:圖形學真正改變了電腦系統的建構方式。世界上性能最高的電腦現在是 GPU。這是因為我們可以在電腦圖學中利用無限量的計算。我們才剛剛開始,當你想到 Michiel 在動畫和強化學習方面的工作,這將消耗更多的計算週期。不僅如此,我們使用領域特定語言和架構的方式,也是其他人構建他們系統的方式,比如機器學習系統。因此,這實際上可能是計算領域最令人興奮的時期之一。我希望未來更多人會對圖形系統感興趣。非常感謝。(觀眾鼓掌)(歡快的音樂響起)

Ed Catmull 講座:電腦圖學領域的野性、意想不到的指數級旅程

  • 親自來到這裡感覺真好。(觀眾鼓掌) SIGGRAPH 是我的家超過40年了,我在這裡有很多回憶和朋友。在我職業生涯中,這個領域經歷了徹底的轉變,起初緩慢,但隨著它轉變了其他產業而加速。我想談談這些變化的瘋狂衝刺,通過我個人且有限的視角,即我所經歷的。我最初想成為一名動畫師,但坦白說,我做得不夠好。於是我轉向物理學,這是在 University of Utah。在我即將畢業時,我修了一門由 Alan Kay 教授的電腦科學課程。他讓我大開眼界。這個新領域令人興奮。問題就在我們面前。那就是我想要待的地方。於是我最終進入 University of Utah 讀研究所,學習電腦科學。我修的第一堂課是由 Ivan Sutherland 教授的。說到好運,Alan Kay 和 Ivan Sutherland。這兩位老師對我影響深遠,後來都獲得了圖靈獎。我早期學到幾個原則,第一個來自 Alan,他闡述了 Moore's Law 的意義。雖然當時沒有人相信它能持續這麼久,但有理由認為它會持續足夠長的時間,導致重大變化。這並不直觀,但 Alan 教導說,可以追隨指數增長的意義,超越實際可行範圍,然後為即將到來的設計。我目睹了1969年的一件事,這讓我百思不得其解。我當時在參加一個 ACM 會議。一個當時還是研究生的 Alan 在一次演講中說,電腦的速度和尺寸會達到我們可以製造膝上型電腦的地步。記住,當時的電腦佔據幾個機架。他展示了一張投影片,上面有一個模型,展示了這可能長什麼樣子。它與最終在多年後出現的 HT 膝上型電腦驚人地相似。它有一個可折疊的螢幕,上面顯示著在大學製作的 CG 圖像。演講後,人們排隊在麥克風前提問。其中一個人是當時的 ACM 主席。他攻擊 Alan 做出了如此荒謬的預測,並說把 CG 圖像放在模型螢幕上是欺騙。我不知道他為何如此生氣,但我學到,即使對經驗豐富的人來說,思考指數增長的影響也是困難的,這一點至今仍是如此。我因此相信,我不想對這種變化視而不見。思考變化成為我職業生涯中一直遵循的一個基本原則。在研究所,Ivan 教了我另一套原則。他已經在 MIT 在圖形學方面取得了基礎性進展,並在 Harvard 建造了第一個 VR 和 AR 系統。然後與 Dave Evans 一起,他們在 University of Utah 建立了電腦圖學專案。他闡述了電腦圖學的願景,然後在這個願景的背景下,為了解決問題設立了一個循序漸進的計劃。最初,圖像使用多邊形,電腦圖像非常有限。你一次只能處理一條掃描線。這當然限制了只能處理多邊形表面。他們計劃中的第一步是開發演算法來確定圖像中哪些多邊形是可見的。John Warnock,後來創立了 Silicon,不對,那是另一個 Jim,John Warnock,後來創立了 Adobe,他是創造可見多邊形演算法的人之一。另一位學生開發了一種演算法,可以用來創建硬體,以即時渲染多邊形。下一步是使物體看起來平滑,但輪廓仍然是多邊形的。在 Ivan 的課上,我意識到我可以將我對動畫的熱愛與電腦圖學這個新領域結合起來。所以作為我的課程專案,我選擇動畫一個我左手的多邊形模型。我喜歡製作它,我想加入這個進步的鏈條。所以 Ivan 建議我找到一種方法來彎曲輪廓處的多邊形。經過大量的思考,顯然這種方法有根本性的缺陷。我需要直接渲染曲面(patches),我需要直接渲染曲線,這需要比當時電腦可用的記憶體多得多。我唯一能接近的方法是假裝整個圖像和 Z 緩衝區都在記憶體中。由於當時的作業系統不支援分頁,我寫了一個分頁程式來將圖像的塊移入移出記憶體。我甚至弄壞了一個硬碟,因為它 rattling around 得太厲害了。那時候的硬碟都很大,但我受到了 Alan 的想法啟發,即你可以模仿未來,並對某個時間它會變得實用充滿信心。它很慢,但我可以渲染 B 樣條曲面(B-spline patches),這導致了紋理映射,因為我現在有一個數學上明確定義的曲面可以處理。這些圖像是一個巨大的進步,後來跟隨的人不斷地添加到這個進步鏈條中。我們開發的演算法既受到我們擁有的機器的啟發,也受到其限制。說記憶體多麼小,或者機器多麼慢,聽起來像是老生常談,但这确实是一種紀律的約束。這在藝術領域也是如此。你接受在限制內工作,你的挑戰是突破這些限制。當邊界移動時,你的挑戰是轉向其他限制。在 Utah,我還做了一個引以為傲的專案。大學贊助了關於彎曲曲面數學的研討會。由於我花了很多時間思考彎曲曲面,我知道處理四邊曲面網路存在問題。網格的拓撲結構對於像手這樣自然物體來說不太適合。我通過逆向工程 B 樣條曲面的映射到一組幾何操作來解決這個問題。這些操作可以應用於非四邊網格,作為遞歸細分網格的規則。我只是用基本的高中幾何證明了這一點。我認為這是一個很棒的想法。於是我給一位專長於彎曲曲面的教授看。他幾乎沒有看我18頁手寫的證明,就把它丟回給我,說道:「Ed,這堆狗屎是什麼?」(觀眾笑聲)我被刺傷了,但這不是我論文的一部分。所以我把它擱置了。後來,我把它給 Jim Clark 看。他實現了它,我們寫了一篇論文。幾年後,Tony DeRose 更進一步。我們在 Pixar 用它來製作我們的電影。我們將其開源,隨著時間的推移,它成為如今電影產業主要使用的曲面(surface patch)。有時候,狗屎也是有價值的。(觀眾笑聲)在大學早期,我相信有可能,並在某個時候,創造出足夠高品質的圖像,以便在電影中使用。一個長期的目標或願景在我心中逐漸清晰。這是一個我可以圍繞它組織我的努力的目標。Ivan 支持這個願景,並試圖在 Disney 和大學之間建立一個交流。所以他把我送到了 Burbank。參觀 Disney 並見到一些製作我從小看大的電影的人,這真是太棒了,但 Disney 對交流沒有興趣。他們只是想招募工程人才來幫助設計 Florida 新的 Space Mountain。這是一個我不想要的轉移。Disney 是當時業界中可能對電腦圖學感興趣的唯一工作室。我了解到他們根本沒有興趣。於是我認為追求我的夢想的最佳場所是大學,但有一個問題。當時,電腦圖學不被認為與電腦科學相關。它大多只是一個有趣的邊緣話題。對電腦圖學感興趣的大學專案很少,而其中兩個,Cornell 和 Ohio State,專案甚至不在電腦科學系裡。當我去學校面試時,我試著解釋圖學的長期潛力,但沒有人認為它重要。我找不到大學的工作。然後在1974年底,我接到 NYIT 總裁的電話。他不是技術出身,但他想製作動畫電影,並相信電腦圖學將變得重要。這是個好消息。壞消息是,他認為電腦科學家將取代藝術家。NYIT 願意購買兩個全彩影格緩衝器,每個花費18萬美元。我們擁有比世界上任何人都多的圖像記憶體。我們準備開始工作了。Alvy Ray Smith,是第二個加入我的人,他曾因 Xerox Park 關於顏色的奇怪觀點而感到沮喪。但現在他可以寫一個全彩繪畫系統。我寫了一個2D動畫系統和幾個3D渲染程式或系統。我們從各地引進了認同這個願景的人。我對管理還很生疏,我想複製我在 Utah 經歷過的環境,一個願景,一種分享和支持的文化,這將是一個漫長的循序漸進的過程。這是我無論去哪裡都想帶在身邊的東西。由於達到我們的目標需要很多年,我認為把我們的進步保密是沒有幫助的。我相信最好的方法是參與 SIGGRAPH,僱用比我聰明的人,並發表我們所做的一切。這是我做過最好的決定之一。在 NYIT 工作五年後,我們開始相信我們的主要弱點是我們沒有真正的故事敘述者,沒有那種會受益於我們正在構建的工具的人,我們就無法成功。我們拜訪了一些工作室,展示了圖像,他們對此印象深刻,但他們沒有興趣。一切都因為一部電影「Star Wars」而改變了。George Lucas 並非技術出身,但他看到了 ILM 能夠實現的成就。他相信電腦將在電影製作的未來發揮作用。這是電影產業中,第一次有人具有公信力願意投資。於是在1979年,我離開 NYIT 開始 Lucasfilm 的電腦部門。它成為了對推進產業感興趣的人的磁鐵。Alvy 是第一個加入的,他很喜歡圖形團隊。George 很有野心,因為他想改變電影製作的三個方面:特效、影片剪輯和數位音效。我們深入研究了這三個方面。他將公司設在 San Francisco 北部,這意味著我們開車到 Silicon Valley 大約需要一個小時,坐飛機到 Hollywood 需要一個小時。這是一個很棒的位置。我們很容易接觸這兩個區域,但又相對偏遠,這實際上非常有幫助。我們很高興有這樣的距離。幸運的是,George 支持我們發表論文並參與更廣泛的社群。我們的一個競爭對手購買了一台價值1000萬的 Cray-1 電腦。我們做了一個粗略的計算,基於對未來製作一部高畫質電影所需計算能力的假設,我們需要100台 Cray-1 電腦的計算能力,但成本卻只有一台的十分之一。基於我們在計算速度指數曲線上的位置,這還需要14到15年。我們的時間和資源最好花在眼前和現在我們能看到的許多問題上。如果我們要去追求一些瘋狂的願景,我們需要對我們對問題的看法和我們需要採取的步驟有清晰的認識。巧合的是,當我們大約15年後完成「Toy Story」時,我們所需的計算能力非常接近我們的估計。我非常看重思考即將發生的變革所帶來的影響的過程。處理電影解析度的圖像需要我們設計並建造一個系統,可以在電腦中存儲整個電影解析度的圖像。這將需要比工作站可用的處理能力多得多。這導致了 Pixar Image Computer 的創建。在渲染方面,Lauren Carpenter 開發了一種新的渲染器,可以處理高複雜度,正如 Pat 剛才指出的。Rob 在光照和著色方面取得了顯著進展後加入了我們。我們三個在我的辦公室裡用白板試圖定義我們的主要目標應該是什麼。此時,由於最先進的水平大約是四萬個多邊形,我們進行了 Pat 展示的計算,得出了八千萬這個數字。我不知道為什麼我們不湊整到一億,但計算結果就是這樣。這就是達到 ILM 高標準所需的要求,這也是我們的目標。我們追求的是瘋狂的複雜性,以及運動模糊和景深。我們想要一個 outrageous 的目標來迫使我們以非常不同的方式思考問題。這帶來了一系列改變渲染的洞察。我們從 Lauren 關於複雜度的架構開始,與我們合作的硬體設計師 Rodney Stock 建議我們考慮點採樣,這類似於印刷中使用的抖動。Rob 接受了這個想法,並嘗試了各種 Monte Carlo 分布樣本的技術。最終,他提出了一個關於樣本分布的絕妙方法。Tom Porter 提出了一個關鍵的洞察,將樣本分散在時間上,解決了運動模糊問題。他實現了這個想法,創造了一個移動中的撞球圖像,其中一個球上寫著1984,巧合的是這一年。然後 Rob 重寫了所有東西,創建了一個乾淨的面向對象的結構,使軟體能夠隨著我們開發新技術而演進。我們知道,除非計算能力至少增加一百倍,否則這將不切實際,但我們知道這即將到來。Alvy 構思了一部短片,以展示我們在 Lucasfilm 所做的一切,「Andre & Wally B.」。John Lasseter 加入我們,為角色製作動畫,並為他們帶來只有優秀動畫師才能帶來的东西。那是一個令人興奮的時期,才華橫溢的創意人才在許多方面突破了界限。Lucasfilm 的情況開始發生變化。1984年底,George 認為有必要出售電腦部門。接下來的一年是艱難的,但最終 Steve Jobs 買下了電腦圖學部門。儘管 George 告訴他我們一心一意要做動畫,但公司 Pixar 誕生了。順帶一提,Steve 從未質疑我發表一切的決定。Steve 以高度保密聞名,但他理解我們在 SIGGRAPH 完全公開參與的原因。引進優秀人才比我們取得任何具體的進展都要重要得多。現在我們從事的是製造和銷售專用電腦的業務,這是我從未預見到的。我們當中沒有任何人,包括 Steve,在製造或銷售高端硬體方面有任何經驗,這意味著我們會犯很多錯誤。我們引進了製造人員,並為合同編寫了軟體,特別是與 Disney 的一個合同,他們希望我們為手繪的賽璐珞片上色。令我驚訝的是,當我們開始製造時,我學到了很多。我之前認為製造業相當平凡。我錯了。但我很久以前就學到我大約有一半時間是錯的。這就是其中一次。Toyota 用於讓各個層級的人參與製造的流程非常令人著迷。並非所有發生的事情都是一些重大突破的結果。通常是大量微小變化的結果。然而,作為一家企業,我們正在失敗。我們根本無法與 Moore's Law 不斷加速的步伐競爭。這種潛在的動態讓一切都在變化,甚至讓本應更了解的人措手不及。是時候退出硬體業務,專注於軟體了。在這樣做的同時,我們希望維持 Disney 的信任,但我們為他們編寫的軟體只能在我們的硬體上運行。所以我們將硬體業務賣給另一家公司,讓其他人製作圖像,抱歉,我們與 Disney 簽訂了另一份合同,將軟體移植到 Silicon Graphics,此時 SGI 已經有足夠的能力來完成這項工作。我們通過這樣做贏得了 Disney 的信任,這在後來得到了回報,但那是另一個故事了。Jim Clark,另一位 University of Utah 的畢業生,創立了 Silicon Graphics,使用了 Geometry Engine,這是 GPU 的前身。當時,工作站公司正處於激烈的競爭戰中。Pixar Image Computer,抱歉,Pixar 的渲染器在高品質方面是最好的,但它很難使用。Jim 找到我,建議我們共同為業界設計一個渲染介面。19家公司加入了這個過程。我為之感到驕傲的一個決定是,我們請 Pat Hanrahan 擔任設計的架構師。Pat 贏得了大家的信任,因為他是一個好的傾聽者,一個偉大的設計師,並且備受尊重。這個設計不僅乾淨,而且他在 Rob 的概念基礎上構建了一個複雜的著色語言,正如他所談論的。這一切都是為了讓渲染對人們更易於理解。這就是 RenderMan 介面。在更廣泛的 SIGGRAPH 社群中,每年都有新的進展發表。多年來,聖盃是逼真的圖像,但圖形研究擴展到了建模、模擬和複雜性。你如何為水的流動、布料或頭髮建模和渲染?你如何模擬自然現象?而且非常重要的是,你如何控制模擬以滿足故事的需求?這令人振奮和鼓舞人心。然後 EFX 產業開始擁抱電腦圖學。EFX 產業,從 ILM 開始,有一個很酷的地方,就是他們對事情應該如何做沒有任何先入為主的觀念。他們沒有固守他們已經掌握的東西。他們只關心並得到了他們能在螢幕上呈現的東西。如果你想出更好的東西,他們就會使用它。1991年是關鍵的一年。「Terminator II」上映,主要角色是 CG 的。「Beauty and the Beast」上映,其中有3D宴會廳場景,而 Pixar 與 Disney 簽署協議製作「Toy Story」。此時,進步的速度正在加快,電腦的速度也在加快。1993年,「Jurassic Park」上映,這向電影產業發出信號,一切即將改變。隨後是1995年的「Toy Story」。91年到95年是產業經歷不連續性、技術接受度發生重大變化的時期。當然,從我們的角度來看,這種不連續性是多年努力的結果。在同一時期,遊戲產業也開始進入視線。3D遊戲當時還很粗糙,但性能已經達到了令人印象深刻的水平。John Carmack 正在推動邊界,將3D遊戲引入個人電腦。NVIDIA 於93年成立,並開始製造晶片,Pat 展示了照片,但在某個時候,他們經歷了一個生存危機,並在六個月內設計並製造了一個晶片。這開啟了 NVIDIA 以每六個月發布一個新晶片為中心的文化,這是一個聞所未聞的發布週期。AMD 是競爭對手,這加劇了 GPU 性能提升的快速週期。同時,SIGGRAPH 擁有算法、光照和模擬的研究體系,所有這些都是遊戲產業想要的。NVIDIA 可以從已知的一切中獲取靈感,試圖滿足這個不斷增長的圖形產業對速度和寫實性的永無止境的渴望。SIGGRAPH 以及學術界和娛樂產業的其他部分規模遠不足以生成那些專用晶片。但遊戲產業可以。GPU 被放入工作站中,為圖形研究人員提供了更快的機器來開發算法,從而導致 SIGGRAPH 上的論文數量增加。這是一個遊戲、GPU 公司和 SIGGRAPH 社群之間酷炫的良性循環,導致計算性能的增長速度在幾年內超過了 Moore's Law 的速度。這是一種沒有人主導的良性循環。大約在2009年至2012年,越來越清楚的是,GPU 除了遊戲之外,對其他問題也很有用。模擬所需的那些矩陣乘法在許多領域都有用。所以人們開始在科學應用中使用它們。特別是最初在50多年前構思的神經網路,變得實用,這導致了深度學習,而深度學習現在對許多產業產生了重大影響。這是由 GPU、遊戲、學術界循環意外產生的、完全意想不到的驚喜。電腦圖學起初被邊緣化,但經歷了不可預測、狂野的雲霄飛車般的旅程,從邊緣走向成為許多產業和電腦科學的重要組成部分。這個旅程將繼續下去,而且變化的速度也將繼續保持高速。很難想像它會把我們帶到哪裡,但還有很多事情需要做。我們需要大膽的目標來幫助我們重塑思維。我只能講述我所經歷的一點點片段,但我知道我所學到的原則對我幫助很大。雖然這個敘事的一部分強調了指數級的變化以及思考這種變化帶來的影響的重要性,但對我來說更重要的是另一件事。我對與我共事的老師、導師和同事們充滿敬畏。我感謝他們的價值觀、他們的周到以及他們做出改變的熱情。非常感謝。(觀眾鼓掌)(歡快的音樂響起)

結尾

  • 你們覺得怎麼樣?這太棒了。讓我們再給他們一次掌聲。(觀眾鼓掌) 我在做筆記,我對我們聽到的所有話語都深感啟發,但我認為有一件事總結了我們為什麼在這裡以及過去所做的一切,那就是模仿未來,時機成熟時它就會變得實用。所以,以此為契機,祝大家有個美好的一天。非常感謝各位的光臨。這真是太精彩了。再見。(觀眾鼓掌)