http://renderwonk.com/publications/s2010-shading-course/snow/sigg2010_physhadcourse_ILM_slides.compressed.pdf
http://renderwonk.com/publications/s2010-shading-course/snow/sigg2010_physhadcourse_ILM.pdf
siggraph10上面physically based lighting course里的文章。
由Industrial Light and Magic帶來,原來的標題是《鋼鐵俠》和《終結者》中的image based lighting和physical shading,但是實際上這個paper覆蓋了IML多年的積累,包括《珍珠港》,《綠巨人》等電影。
同時里面的很多做法,對realtime graphics也非常的有指導意義。
**film reality**
一點需要澄清的是,cg開發者的終極目標是film reality,不是真實的人眼可見的那種reality,這個限制來源于存儲介質是LDR,所以在這個限制下,很多東西要考慮到這些因素。
**90年代**

在90年代的時候,是捕捉一個LDR的環境貼圖(當時是LDR的,后來是HDR),來作image based lighting,當時使用cook torrence來做specular公式。
一些hack:比較典型的是一些ambient的光照,這個沒法非常準確的進行capture,并生成shadow信息,會使用大量的spotlight來模擬:
(簡直就是irradiance volume)

《珍珠港》
michael bay(《勇闖奪命島》《珍珠港》《變形金剛》的導演)挑戰IML說要一個比以往電影中cg渲染的飛機要更真實的效果,IML一頓搗鼓,結果大家都看到了,不說還以為是真實拍的飛機呢,如同戰爭比10所大學更能推進技術進步,需求真的是技術進步最好的助燃劑。
到了90年代晚期,raytracing(光線追蹤)技術已經比較成熟,但是IML還是沒有使用,源于在如此復雜的場景中使用不太現實,而且他們習慣使用的軟件(renderman)中還沒有這個功能(嗯,不錯的實戰經驗),所以繼續他們的image based lighting。
在珍珠港中,添加了
- reflection occlusion,從image中讀取的光照信息,加一個occlusion,防止在犄角旮旯的地方,應該比較暗,還很明亮的反射環境
- 
- ambient environment
- 
來以手頭擁有的資源,以很低的消耗(開發消耗和生成實際圖像的運算消耗)達到了接近raytracing的GI質量。
最終到達了這樣的質量:(coooool)

《綠巨人》(<hulk>)
到了綠巨人這里有了一個進展,就是環境貼圖改成hdr的了,并且分辨率也進一步加大。
《鋼鐵俠》

到了《鋼鐵俠》這里主要是處理的材質上的事情,在環境貼圖等image based lighting上面的工作已經比較成熟了(穩定的使用高分辨率的HDR環境貼圖),但是在鋼鐵俠中的對材質高要求帶來了新的挑戰,很快項目組發現材質上的BRDF不夠好。
這里必須要提的幾個是:可見做一個很棒的最后結果,中間有多少積累工作需要做,他們很多的工作甚至不會再最終產品中露頭
- 在《變形金剛》中,ILM已經成功的做了不少的適用于車上的材質,這為鋼鐵俠中的工作鋪墊了不少
- ILM使用BRDF探測器(記錄材質如何對光進行反射,bungie在halo上也做過這樣的事情),
- 但是發現chrome合金部分過于復雜,以至于沒法收集足夠的信息。
- 收集的信息很棒,但是美術想做點改動就非常的難(估計一大票莫名參數直接眩暈了)
- 最后探測BRDF工作沒有使用,但是卻幫助項目組更好的理解了材質的BRDF
基于這些分析,最后ILM使用各向異性的specular function來做超酷金屬效果:

各向異性的brdf的研究也比較多了,ILM用的是在一些矢量方向上使用不同的specular exponent。
使用brickmap來做ray traced reflection surface caching。
ILM在鋼鐵俠開發期間也遇到了不少問題,其中一個就是很多參數(影響的factor),這些有些過于復雜,美術一頓調之后存在個人之間很不同,同時也會出現不真實的情況,簡化等問題在后面的《終結者》的開發中有了很多進步。
這里ILM說的一個挺不錯:ambient和diffuse其實是一個東西,reflectance和specular其實是一個東西。
《終結者》
到了《終結者:救贖》,ILM希望能夠解決在之前項目開發中的一些頭痛問題(比如太多參數調節的窘境),并迎接新的挑戰(終結者中的一些場景的變化更加劇烈等)。
ILM采用更加基于物理的材質光照系統(physically based lighting)來:
- 達到一個更加簡單,更加直觀,更物理正確的光照渲染系統
- 這里包括:
- 能量守恒的材質
- normalized specular
- more physically plausible specular falloff
- more heavily image based
- importance sampled raytracing
能量守恒
這個是物理光照中基本都會有的一項,就是保證反射的光強度不會超過入射光。
同時ILM把ambient和diffuse合并,specular和reflectance合并,這樣只要平衡diffuse和specular就好了(不像原來要平衡4項)。
normalized specular
一個光在粗糙表面上反射,那么反射面會更大,同時亮度降低,其實這也是能量守恒的一種。
原來ILM沒有這一項,是通過人手動來調的,現在做到specular公式中,那么結果不用調就比較自然了。


normalized Importance sample raytracing
importance sample就是通過去采樣主要的部分來盡可能有效的去采樣場景。
這個讓我想起ue3的塞瑪利亞人里面的反射就只反射霓虹燈,而建筑物什么的一概不管的這種,這應該也算是一種importance sample。
實際應用的時候,importance sample包括:
- 主要采樣image中比較亮的點
- 在粗糙表面的時候,會對反射的方向做一些改變,指向最有效的部分
最后結果和標準raytracing差不多,但是效率卻好很多。
變革的煩惱與收獲
ILM在做了這些技術改變之后,和很多公司一樣,有幾點痛楚:
- 對生產的影響,ILM在開發的同時也在制作電影,于是就沿用原先的系統來做原先系統可以處理的很好的部分,比如里面的摩托車機器人,然后在系統開發好之后,在做有挑戰的部分,比如骷髏機器人
- 開始技術的改變也導致了工具的效率問題(如果到游戲上還得加上bug和crash),開始做好的工具效率頗低(相比于原來)
- 習慣于原先hack的美術們,對這個新系統的使用也頗有不習慣,ILM內部甚至引發了一場“圣戰”,簡而言之,費了好多力氣才把新的系統(energy conservation, normalized specular等)推行下去
- 不過到了后面的項目(《鋼鐵俠2》)的時候,痛楚期過去,全線轉入新的物理材質光照系統,品質和開發效率都更加的高
最后來個圖,鋼鐵俠是這樣拍的,感覺演員拍的時候應該不會很high吧:

- 前言
- PracticalOcclusionCullingInKillZone3
- KillZone3的版本發布工具
- BattleField 3和NeedForSpeedTheRun中的渲染技術
- Shiny PC Graphics in Battle Filed 3
- Cascaded Light Propagation Volumes for Real-Time Indirect Illumination
- [crytek]Spherical Skinning withDual-Quaternions and QTangents
- [gdc12]神秘海域的水技術
- 《鋼鐵俠》等電影中的image based lighting和physical shading
- CompanyOfHeroes2渲染技術
- [sig13]Lighting technology of &quot;The Last Of Us&quot;