Disney Animation 的新 Renderer “Hyperion”

在fxGuide上介紹了Disney Animation Studio新的Renderer “Hyperion”,使用在新的動畫電影(BH6)Big Hero 6上,在去年的Eurographics Symposium上Disney Animation Studio發表一篇Paper “Sorted Deferred Shading for Production Path Tracing”,這個Paper裡描述了創新的是”Hyperion”是要找到一種Path Tracing大量幾何元件的一種方法,但跟一般的方法比起來,它有兩個不同的部分,這個renderer對潛在out-core ray做排序,有效把類似的ray bounce群集起來,第二的部分也是最重要是renderer不在ray hit的時候做Shading,直到完成ray排序(sorted)與群集(group)才做,這個讓Renderer可以在有記憶體限制硬體或晶片內,不用任何Cache,做大量的模型的global illumination, irradiance, radiosity或physically based lighting的Render。

Hyperion_sorting

該系統避免了大量的Point Cloud與Deep Shadow Map的資料與維護,對許多的其他沒有Cache的Renderer,減少ray的bounce與shading較少量point數量是非常重要的,Hyperion可以用很複雜的ray bounce來shading大量的幾何元件,剛好適合用在BH6的複雜場景,也是第一部使用這個新的Renderer的Disney的電影。

Big Hero 6是Disney第54部動畫電影,靈感來自於同名Marvel Comics超級英雄團隊的超級英雄喜劇電影,場景設定在稱為San Fransokyo的虛擬大都市,城市的誇張化的資料是來自舊金山的鄉村租稅資產地圖資料辦公室。城市所改造後呈現出的效果,像是山坡都比真實的舊金山來的高與陡峭,這個城市是藝術與技術的挑戰,因為它是Disney有史以來電影的複雜度3倍之多。

San Fransokyo城市有83000個程序化建立的建築物,再加上數量類似的街道道具與樹木,其中有216,000盞路燈以6個基本的設計樣式參照建立,電影的Pipeline與Hyperion支援在Shot裡使用instance,同樣用在micro-bot的效果中,其中一個對製作等級的raytracing renderer最複雜的挑戰是複製夜間城市裡大量的燈光與發光標示,”有幾十萬的燈光在城市裡”Driskill說,”這是一個挑戰,我們必須努力的將算圖結果達到沒有雜點(Noise),看起來更好,但我們使用後,我認為影像已經說明一切”。

BIG HERO 6

在燈光方面,renderer系統不僅有基於物理光源(physically based lighting)為目標的area lights,也支援illuminating volumes與任意造型的發光幾何元件,這是一個通用的工具,用在其中一個角色Fred噴火上,Driskill說道 : “火照亮了環境,照亮了火熄了之後的煙霧,這非常漂亮,所有的東西都可以是emitter”。

該團隊花了兩年打造Hyperion,同時也製作BH6,”我們必須提醒自己,我們使用測試版在做電影”,Driskill說, “這真的只是一個聰明的想法,為了做一個在複雜環境呈現更好的Multi-bounce illumination,這是許多global illumination renderer都在奮鬥的,更多更多的幾何元件,我們的電影越來越複雜,我們覺得這個想法值得去追求”

Driskill說即使到今天軟體到了1.0的版本,但是已經不只在BH6證明了其影像品質與價值,也會在短片Feast在電影播放之前11月時全球首播,Driskill覺得San Fransokyo的龐大與複雜度的意象,”沒有其他方法可以做到”

bigHero6_01

但是對於RenderMan,據Hendrickson解釋Disney有吸引力的技術是使用global illumination,在業界不算新,但是每一個內容創作群組(Pixar, ILM)都擁有自己的流程(pipeline),”這將有助於我們盡可能的加快創新的進步的速度”,”每個群組做自己的計算機圖學實驗,然後與其他群組共享成果”。

其中的一個創新性的探索是由Burley所主導,該群組打算把Hyperion繼續開發成為獨立的Renderer,好處會蔓延到其他部分,”我們持續這方面的開發,但有趣的是,我們發現真的很酷的東西,別的群組會抓住並加進去程式庫中”,Hendrickson說”有一個很好的例子就是,shader描述出現在PRMAN v19,Disney Animation PxrDisney BxDfs (BRDFs)伴隨RenderMan銷售,其與Hyperion所使用的完全相同”。

Hyperion是一個uni-directional(單向) path tracer,嚴格來說,會有一定的訊息回傳,但是bi-directional(雙向)的技術需要完整的燈光路徑,目前Hyperion在沒甚麼重要的改動下,將無法取得bi-direction路徑的追蹤,,這方面也與包含bi-directional的沒甚麼不同,事實上只是在ray到達光源的時候就回覆結果”一切反彈到達目的都用weight來作加權”,Driskill說:”一旦一條ray完成,最後的ray會記住它從哪裡來,所以開始反方向填充第一次反彈光源會在哪裡等等,這意味著,下一條ray目的大致上都在同樣的方向,並預測光源會在哪裡”,這不是一個bi-directional的系統,但是可能多過單純的uni-directional tracer。Hyperion可以做caustics(散焦),只回追的反彈只有幾個,”製作出的結果,我們真的很高興,其中包含一些漂亮的caustics(散焦)”Driskill補充。

Hyperion面臨的算圖任務不僅是大型城市環境的大量反射面與光源,也包含複雜的人物呈現的sub-surface scattering (SSS),”我們下一部電影是全部毛茸茸的角色”Driskill表示,正因為如此,該團隊需要解決SSS,Fur與有機材質的Rendering來盡可能比傳統簡單的raytrace表面呈現的更多。

這個團隊對於SSS的方法尚未公布,但是他們為了Big Hero 6製作出他們自己的新的SSS演算法。”我們看遍了所有的方法”,Hendrickson說,”我們決定,沒有實際的結果,但是我們又想要,所以我們就做了屬於我們的”。

該團隊在BH6中使用新的SSS方法

該團隊在BH6中使用新的SSS方法

作為重頭打造Renderer的團隊,他們必須要檢驗現代Renderer的每個方面,並決定他們是要開發更多的新選項或是加入更多已知的演算法,例如體積算圖的透射量(volumetric rendering for transmissive volumes),有時候表現的形式就是霧(Fog),有鑑於是電影,該團隊決定不以傳統的方式,並與迪士尼蘇黎世研究中心(Disney Zurich Research)研究一種混合的方式,應該是於今年SIGGPRAPH Zurich Research所發表的Paper沒甚麼不同,但是Disney還沒有公開發表。

Hyperion廣泛的使用MIS(multiple-importance sampling),雖然估計有700000行左右的新的C++程式碼主要是過去兩年寫的,依然是以Wreck-It Ralph(無敵破壞王)與Frozen(冰雪奇緣)的關鍵經驗為基礎建立,在Frozen中建立了BRDF的framework,”在第一階段area lights的importance sampling在Ralph裡建立了”,Driskill說”在這兩部電影我們學到了很多,也建立的許多的東西”。

該renderer與流程可以render出deep data(深度資料),這並不會用在所有的鏡頭裡,但是”我們不僅因為資料量維護的問題而有限制的使用”Driskill說”也就是render時所產生的龐大資料集與複雜深度資料”。

Stereo: bent rays

Disney擁有相當長與自豪的歷史,特別是近年來隨著立體製作流程,像是在採用了該新技術的Tangled(長髮公主),在某些角色鏡頭裡聰明的分開image平面深度,直到主要角色接近鏡頭時感受吸引伴隨著立體感集中,這樣也意味著在相同鏡頭的背景會變得過於極端導致眼睛不適,相反的會降低全部的立體效果,Disney率先使用了特殊的攝影機RIG,利用一個”立體相機”Render前景,另一個Render背景,因此在前景的角色會更滿版與豐富,但是背景表現更為放鬆,更少的立體感。Disney也將這些成功的攝影機RIG提供給Pixar,在Pixar的動畫電影裡採用。

在BH6中,團隊進一步開發了彎曲ray的攝影機(bent ray cameras),最初這表示在中間在算出相同光線在Shot裡做改變,這避免為了改變從左右眼的ray在Z Space的移動而做的不需要的部分深度運算。第一個為了在BH6上面實作在某一個臨界點(threshold point)時突然切換,但是開發團隊研究把從一個前景與背景羽化或平緩過渡的立體設定轉換到另一個,實際在光線彎曲的意義上面,”這是一個巨大的成功,燈光師都愛我們”,Driskill說,”現在他們只說Render兩隻眼睛,他們得到了我們所說的多種RIG,封裝在單一Render處理程序的有趣的方式,所呈現的更自由的效果”,”這幾個新的立體最佳化與增強的計畫,是團隊來盡快進行的,這也是Disney在許多領域中的專利之一”

Hyperion不是像Maxwell或Weta的新Renderer Manuka是光譜(spectral)Renderer,因為在BH6裡並不需要,但是Hendrickson承認他們未來有興趣研究光譜Rendering,特別是fluorescents(螢光燈), chromatic effects(色散效果),iridescents(虹彩效果)。

Rendering, CODA and the farm

作為製作的Renderer,Hyperion設計上使用核心render farm,Disney有一個重要的render farm

Walt Disney Animation Studios擁有55000個核心,在世界超級電腦排名第75名

Walt Disney Animation Studios擁有55000個核心,在世界超級電腦排名第75名

Disney Animation的render farm其實是是一組計算雲,分布在四個物理的站點,根據Electronic Design雜誌,它在其他超級電腦比較,排名在75名,擁有超過55000顆intel的核心,其中有一些自行加速的支援,但在雜誌指出未來會有GPU與FPGA的部分。該系統有400TB的記憶體,使用1.5兆瓦的電力,這實際上依照render farm的規模還有正常的電源/空調與其功率是合理的。該系統建立在COTS 1U的伺服器群中,透過10 Gigabit的乙太網路相連接,所有的non-volatile儲存裝置都是使用固態硬碟(SSD),Disney儲存容量共有4Pbyte(petabyte=1000TB)。

Driskill解釋 Disney in-house CODA工作分配系統使系統顯示為單一的虛擬系統(virtual system),它可以處理各種瑣事,從算圖到Asset管理,該系統一天執行約1100000小時的算圖,等同於一天10萬個工作任務,系統相當自動化,所以沒有需要過夜的員工。

CODA系統在三年前建立,最初的想法可能在實際上行不通,Driskill提醒,這個系統工作以”speculative execution”為概念,你啟動一個工作來填滿列隊(queue)裡的所有時間,每個獨立群組有各自的列隊區段,但是每個人都可以使用它,如果他們需要使用,便會啟動把其他的工作趕出去,這個啟動工作之後刪除工作來騰出空間的想法,最初被認為是一個奇怪的想法,但Driskill指出,該系統這麼好,他有助於推動大量的程式碼來執行重作(如果被中斷的可以被回收繼續執行),”它使我們的列隊(queue)的利用率非常高,我們運行列隊忙碌範圍在90%以上”,他說,該團隊計算在BH6每天估計超過百萬render小時。

How it works

在解釋Hyperion的創新中,Driskill說其他的全域照明(global illumination) renderer”載入幾何元件之後就開始從Camera丟出ray,在來這些ray打到物件之後然後反彈”,作為算圖的計算邏輯解決方案,在物件與ray的交點,根據材質,Renderer發射一系列的第二次的ray,”你做了一次反彈,得到的是一大堆ray的散射結果,將一堆不同方向的,作為2,3,4或5甚至15次反彈,將會昂貴的如天文數字般。”

更複雜的是當ray分散出來,需要在記憶體裡的場景幾何資訊來給這些交點,”因為要給任意ray再任意時間處理該去什麼方向”Driskill說。

“但是聰明的想法(在Hyperion)”,Driskill補充,”是光線束(ray boundle)的想法,如果你看待render為兩個步驟”

  • 1.你要拋出ray
  • 2.你要解決當它們碰到東西的時該做什麼

如果你將所有多少相同的方向的ray集合成束,你攫取這些rays並視為每個ray,當成是自己的波(Wave)。

在ESR的論文中解釋”我們排序大量的可能out-core的ray的批次來確保一致性,工作於大量的批次,從複雜的場景抽取出連貫的ray群是不可少的,第二,我們排序ray hit用於包含out-core貼圖的延遲著色(deferred shading),對於每個批次,我們實現了完美的包含序列貼圖讀取的連續著色,省去了貼圖的暫存,很少Renderer會考慮out-core的貼圖的存取”。

在上面的概述,該過程開始於從camera發射出的primary rays,Hyperion執行ray的排序,並以展開的角度將ray以方向來群組成一個大量,排序過固定大小的ray的批次(batches),通常每個批次約30到60M條ray,根據ESR2013的論文,系統會串流(stream)不活躍的ray批次到local的固態硬碟(SSD)裡,直到系統準備好進行排序與trace下一個批次。

然後,系統執行場景遍歷(scene traversal),在時間裡使用單一排序過的ray批次,該團隊利用一件事,也就是他們的ray批次,固定方向的連貫執行每個節點大致上從前到後的遍歷。遍歷的結果是一連串hit point(one per ray)

再來,hit point排序在shading context裡組織所有ray hits,每一個細分的mesh與一或多個貼圖檔案包含每個layer的per-face貼圖,因此完整的shading context包含mesh ID與face ID,利用mesh ID將hit point群組起來,然後利用face ID來排序每個群組用於連貫貼圖與著色。

著色(Shading)發生在平行的處理每個不同mesh的線程(thread),如果著色的工作(task)有許多的hit points,將會劃分成子工作(sub-task),進一步的逐漸增加的平行化。如果一個物件或hit point被發現是發光的,其發出的會進入影像的暫存區,Shader也提供secondary ray回到ray的排序來繼續ray的路徑,因為當著色一個ray batch時,每個mesh face觸及最多一次,所有的shader輸入,包含貼圖只被讀取一次。

這個核心概念是”相當強大的”,Driskill說,”因為它,以免你在有大量幾何元件的場景,因為萬一在ray使用它時,你不必保持所有狀況都是得心應手的,看待所有的ray,根據它們面向的打包成束,這是其中一個聰明的想法。哇哦,這真是不同,我們決定值得一試,我們做了一些實驗,結果看起來真的有希望,然後就決定了往這方向走,接著就做了一部電影,真是有點瘋狂”。

Result

該團隊發布在相同的論文在Hyperion的方法與現有版本的RenderMan與Arnold中比較效能的結果,在超出範圍的反彈(2,3,4 間接的反彈),貼圖以壓縮格式儲存在貼圖伺服器上,他們在12核心的Xeon 5675,擁有48GB記憶體的系統上,使用12個線程(thread)測試算圖。

Hyperion或其他標準的方法,三個Renderer在沒有貼圖時,ray traversal的時間只有很小的差異(分別是Arnold 9.8分鐘, PRMan 10.7分鐘, Disney Animation method 8.7分鐘),當然,任何場景的關鍵就是貼圖,當貼圖被加回來,Renderer沒有排序就會表現得沒那麼好,呈現出”每增加一個貼圖層的超線性增長”,沒有我們的方法,每增加一個貼圖層,適度的線性成本約增加52秒。在4個貼圖層下,算圖時間為1094分鐘(Arnold), 214分鐘(PRMan), 11.2(Disney Animation method) 分鐘,在我們的方法沒有排序的狀況下,我們的算圖時間退步到819分鐘,慢了70倍,在Paper發表的結果指出,Disney是一個使用Ptex的公司,在貼圖上不一定需要使用Ptex,”我們的方法可以在一般規格的貼圖儲存方法下配置的一樣好,特別是atlased模型可以取用已排序過Sub-image和UV Border的群組。

比較Hyperion與商用製作的Renderer,尤其在貼圖的部分,困難在不同的系統使用了不同的方法。為了使測試有意義,”Ray的數量與Sampling的策略盡可能的相同,還有一些先進的功能像是Adaptive sampling,Radiosity caching等等,都關閉來區隔開原始的intersection與著色效率”。PRMan使用內建的ptexture Shadeop,Arnold使用相同的libPtex library所實作可比較的shader node。

在PRMan與Arnold都配置為”暫存1000張貼圖檔案與每個線程100MB,寬裕的暫存空間給每個貼圖層使用2710張貼圖檔案”

後記,在該Renderer早先的有一些BH6新聞稱為Streaming Renderer,但是這種稱呼已經減少,它指的是數據資料或幾何模型以Streaming的方式整合至Renderer的流程中,處理sub-set的幾何元件,”streaming幾何元件輸入與輸出”,但是它不足以正確的敘述Renderer的發展方向,但是仍存在早期的發表中,這個詞用於名為Anme初期專案中,但是在Disney內部已經不使用了。

Hyperion也使用在Disney新的短片Feast上

相關連結
FxGuide – “Disney’s new Production Renderer ‘Hyperion’ – Yes, Disney!”

本文章部分翻譯至“Disney’s new Production Renderer ‘Hyperion’ – Yes, Disney!”
所有圖像均為Disney版權與原始網站所有。
任何第三方引用請標原文出處

indigo

電腦動畫工作者,在業界打混十餘年,喜好SGI骨董電腦,分享新技術,動畫流程開發。

Comments are closed.