渲染（，rendering）又稱 zhcn 彩現；zhtw 渲染；zhhk 彩現；、繪製、算繪，在電腦繪圖中，是指以軟體由模型生成影像的過程。模型是用語言或者資料結構進行嚴格定義的三維物體或虛擬場景的描述，它包括幾何、視點、紋理、照明和陰影等資訊。影像是數字影像或者點陣圖影像。彩現用於描述：計算影片編輯軟體中的效果，以生成最終影片的輸出過程。 渲染是三維計算機圖形學中的最重要的研究課題之一，並且在實踐領域它與其它技術密切相關。在圖形流水線中，渲染是最後一項重要步驟，透過它得到模型與動畫最終顯示效果。自從二十世紀七十年代以來，隨著計算機圖形的不斷複雜化，渲染也成為一項越來越重要的技術。 渲染的應用領域包含：計算機與影片遊戲、模擬、電影或者電視特效以及視覺化設計，每一種應用都是特性與技術的綜合考慮。作為產品來看，現在已經有各種不同的渲染工具產品，有些整合到更大的建模或者動畫包中，有些是獨立產品，有些是開放原始碼的產品。從內部來看，渲染工具都是根據各種學科理論，經過仔細設計的程式，其中有：光學、視覺感知、數學以及軟體開發。 三維計算機圖形的預渲染（prerendering，offline rendering）或者即時渲染（realtime rendering，online rendering）的速度都非常慢。預渲染的計算強度很高，需要大量的伺服器運算完成，通常被用於電影製作；即時渲染經常用於三維影片遊戲，通常透過圖形處理器（GPU）完成這個過程。 使用 影像初步建立（通常使用網格骨架構建，建模）之後，就要進行渲染了。渲染將會在上面新增點陣圖紋理或者程式紋理、照明、凸凹紋理對映以及相對於其它物體的位置。得到的結果就是消費者或者觀察者所能看到的完整影像。 在製作電影動畫時，通常需要渲染多幅或多幀影像，並在動畫製作程式中將它們串聯起來。大多數三維影像編輯程式都能完成這項任務，如 Blender、Maya 或 Cinema 4D 等。 特性 渲染的影像具有許多顯著的特性，因此渲染研究的領域主要集中在尋找高效模擬這些特性的方法。有些特性只與特定的演算法有關，而有些則與多個演算法相關。 明暗處理 表面顏色與亮度隨光照的變化 紋理對映 在表面生成細節的方法 凸凹紋理對映 在表面模擬小凸凹的方法 距離模糊 光照穿過不清澈的大氣時的模糊 陰影 阻擋光照的效果 柔和陰影 模擬光的衍射下的陰影 反射 鏡子或者非常光滑的反射 透明 固體明顯允許光線穿過 半透明 光線透過固體高度散射 折射 與透明相關的光線彎曲 間接照明 表面由其它表面反射的光照亮，而非光源直接照亮 焦散（caustics） 間接照明的一種形式，光滑物體反射的光線或者透過透明物體生成的聚焦光線在其它物體上形成照亮區域 景深 當物體在焦距物體前後太遠時出現模糊 運動模糊 由於物體高速運動或者照相機運動而導致的物體模糊 真實感渲染 看起來較像現實世界的三維渲染 非真實感渲染 用藝術風格渲染場景，使它看起來象油畫或者素描 技術 研究人員已經開發出了許多渲染演算法，這些演算法使得渲染軟體能夠使用多種不同的技術來生成最終的影像。 對場景中的每一束光線進行跟蹤是不太現實的，這需要消耗大量的時間。如果沒有對取樣進行適當的約束，那麼即使只跟蹤一部分光線以生成影像，也會需要大量的時間。 所以，大致可以分為四類的更加高效的光線傳輸模型技術就應運而生。第一類是柵格化，包括掃描線渲染，這種方法考慮場景中的物體並將它們投影一幅影像，但是缺乏一些高階的視覺效果；第二類是光線投射，將場景從不同視角觀察，只根據幾何與反射強度的基本光學原理計算觀察到的影像，也可能使用蒙特卡羅方法減少人為噪聲；第三類是輻射著色，使用有限元分析方法模擬光線在表面的散射；第四類是光線跟蹤，類似於光線投射，但是使用了更加先進的光學模擬方法，並且通常使用蒙特卡羅方法以實現更加真實的結果，但是這樣做的代價通常是速度的大幅度降低。 為了在可接受的成本範圍內實現優質的結果，大多數高階軟體會組合使用多種技術。 掃描線渲染與柵格化 影像的高階表示需要包含與畫素不同的元素，這些元素被稱為基元。在示意圖中，線段和曲線是基元；在圖形使用者介面中，視窗和按鈕是基元；在三維渲染中，三角形和空間多邊形是基元。 在畫素到畫素的渲染速度過慢以至於無法實現的任務中，基元到基元的實現方法就可能派上用場。在這種方法中，迴圈遍歷每個基元以確定它將影響影像中的哪個畫素，然後相應地修改那個畫素。這種方法稱為柵格化，這是當今所有圖形卡都使用的渲染方法。 柵格化通常要比畫素到畫素的渲染速度快。首先，影像中的大塊區域可能根本沒有基元，柵格化可以忽略這些區域，而畫素到畫素的渲染方法卻必須遍歷這些區域；其次，柵格化可以提高快取一致性，並且可以利用影像中同一個基元佔據的畫素通常是連續的這樣一個事實來減少冗餘操作。正因如此，柵格化通常是需要互動式渲染的場合選擇的一種方法，但是畫素到畫素的實現方法通常可以生成更高質量的影像，同時由於沒有柵格化那麼多的前提條件，所以更加通用。 柵格化主要有兩種形式。第一種是對整個表面或基元進行渲染，同時將表面頂點全部進行渲染。第二種是透過簡單的顏色混合相鄰頂點來渲染位於頂點之間的表面上的畫素。這種方法不需要使用複雜的紋理來實現影像的連續性，因此已經取代了舊的柵格化方法。此外，由於簡單的紋理可以節省記憶體空間，所以即使圖形卡的濃淡效果處理功能已經很繁重，仍然可以得到較好的效能。舊的方法如果不使用複雜的紋理，就會在影像逐個表面覆蓋紋理的時候形成塊狀效應，並且，由於畫素之間沒有顏色漸變，所以表面看起來也並不光滑。在某些情況下，設計人員會在某些表面上使用柵格化的方法，而在另一些表面上，他們會根據這些表面相對於其它相交表面的角度使用其他的方法。這樣做既可以提高處理速度，又可以保證整體效果。 光線投射 光線投射主要應用於即時模擬場景，如三維電腦遊戲和動畫。在這些場合，細節的重要性較低，或是可以透過人為製造細節來提高計算效率。這種情況通常出現在需要生成多幀影像的動畫中。如果不使用其它的技巧，這種方法得到的物體表面通常看起來比較扁平，類似經過光滑處理的物體的糙面。 建立的幾何模型從外部觀察點開始，逐點、逐線進行分析，類似從觀察點投射出光線。當光線與物體交叉時，可以用幾種不同的方法來計算交叉點的顏色。其中最簡單的方法是用交叉點處物體的顏色表示該點的實際顏色；也可以用紋理對映的方法來確定；另一種更加複雜的方法是僅僅根據照明因數變更顏色值，而無需考慮與模擬光源的關係。為了減少人為誤差，可以對多條相鄰方向的光線進行平均。 此外也可以對光的特性進行大致的模擬：簡單計算從物體到觀察點的光線。其他一些計算涉及到從光源到物體的入射角，以及根據光源的強度計算畫素的亮度值。還有一些模擬使用輻射著色演算法繪製的照明結果，或者使用這兩種資訊的組合。 輻射著色 輻射著色是模擬反射光線如何反射到其它表面以及如何照亮周圍環境的方法。這種方法可以生成較為真實的濃淡效果，並且更加易於捕捉室內場景的環境光。一個經典的例子就是牆角處陰影的樣子。 這種模擬的光學基礎是特定物體表面某一點的漫反射的光線散佈在在很大的方向範圍內並且會照亮周圍的環境。 各種模擬技術的複雜性可能會有所不同。許多渲染方法所用的輻射著色模型都非常原始，它們只是簡單地根據環境因數變化照亮整個場景。但是當高階的輻射著色與高質量的光線跟蹤演算法組合在一起使用的時候，它們能夠生成相當真實的影像，尤其是對於室內場景更是這樣。 在高階的輻射著色模擬中，遞迴的有限元分析演算法不斷地將光線在模型表面之間來回反射，直到達到一定的遞迴條件為止。這樣一個表面的色彩就會影響其它相鄰表面的色彩，反之亦然。整個模型（有時也包括空白空間）的照明結果儲存起來，在光線投射或者光線跟蹤模型中作為輸入使用。 由於這項技術的遞迴特性，所以對於複雜物體的模擬速度非常緩慢。一些先進的輻射著色計算方法可能只計算房間中從牆面、地板與房頂反射的環境光，而並不計算複雜物體反光對於輻射著色的影響，或者在輻射著色計算中使用使用同樣尺寸及紋理的簡單物體取代複雜物體。 如果場景中需要重排的輻射著色物體很少，那麼可以在多幀畫面中重複使用同樣的輻射著色資料，這樣就使得輻射著色一方面可以改進光線投射中的扁平效果，另外一方面每幀的渲染時間也不會受到很大的影響。 正因為如此，輻射著色已經成為領先的即時渲染方法，並且已經用於最近大量著名的長篇三維動畫電影從頭到尾的製作過程。 光線跟蹤 光線跟蹤是掃描線渲染和光線投射技術的延伸，它能夠有效處理複雜物體，並且可以用數學方法描述物體。與掃描線渲染和光線投射不同的是，光線跟蹤幾乎完全採用了蒙特卡羅方法，蒙特卡羅方法是一種基於從模型中隨機抽取一組取樣進行平均的技術。 在這種方法中，取樣是假想的從場景物體發出與觀察點相交的光線。在重點考慮陰影、折射與反射等需要複雜精確渲染的場合這種方法就可以派上用場。 在最終要求產品質量渲染效果的光線跟蹤中，通常每個畫素都要多條光線，並且不僅僅跟蹤到第一次相交，而是需要按照 入射角等於反射角 這樣的光學定律以及更加高階的處理折射與粗糙表面反射的定律處理多次連續反射。 一旦光線遇到光源或者更可能出現的是光線反射次數已經達到設定的限制，那麼最終點的表面照明就透過上面的方法確定下來，並且經過多次反射發生的變化也可以用來估計在觀察點看到的亮度。每個取樣點、每個畫素都要重複這個過程。 在有些場合中每個交點可能生成多條光線。 作為一種非常有效的方法，光線跟蹤的即時處理速度太慢，直到最近也沒有在任何要求質量的短片電影中獲得應用，儘管它已經開始在一些特殊效果要求的場合開始使用，如在需要高質量甚至是 Photorealistic 的指令碼片斷的廣告中開始使用。 但是，降低不需要高質量細節部分的或者與光線跟蹤特性無關部分的計算量的努力已經使得光線跟蹤的應用更加廣泛。目前已經出現了一些至少已經處於原型階段硬體加速的光線跟蹤裝置，在一些遊戲演示中也有即時軟體或者硬體光線跟蹤的應用。 最佳化 藝術家構建場景的時候所用的最佳化方法 由於所需計算量非常大，一項逐步進行的工作的細節渲染通常對應於當時工作的進度。因此，在建模的開始階段可以使用線框模型或者光線投射進行處理，即使是最終的目標結果是要使用輻射著色的光線跟蹤也可以這麼做。另外也經常只對一部分進行高質量的渲染，而對於當前工作無關緊要的部分剔除出去。 即時渲染中常用的最佳化方法 對於即時渲染，適當的做法是簡化一個或者多個共同的近似，需要將關鍵場景的引數調整到正確的值，並且要最佳化這些引數以獲得最佳效果。 另外還有些一些不太出名的渲染方法，如球諧函式。這些技術由於速度較慢、缺少實用性或者僅僅因為它們還不太完善所以不太出名，或許其中的某些技術能夠提供一些新的解決方案。 取樣與濾波 不管系統採用哪種渲染方法，都必須解決取樣問題。本質上來講，渲染過程試圖用有限數目的畫素將影像空間的連續函式表現成顏色。根據取樣定理的結論，掃描頻率必須是點速（dot rate）的兩倍，點速與影像解析度成正比。用簡單的話來說就是影像不能顯示小於一個畫素的細節。 如果使用一個未經驗證的渲染演算法，那麼影像函式中的高頻成分將會導致最終影像中出現難看的混疊現象。混疊現象通常表現為鋸齒圖或者是可見畫素柵格處的鋸齒邊。為了去除混疊現象，所有的渲染演算法如果想要生成好看的影像的話都必須對影像函式進行濾波以去除高頻成分，這個過程叫作抗混疊。 電影渲染 電影渲染通常在一個緊密相連的計算機組成的網路渲染叢集（render farm）。 當今用於電影製作三維影像描述發展水平代表是 Pixar 設計的 RenderMan 場景描述語言。它與 VRML 這樣較簡單的三維檔案格式或者是經過修改專門用於三維硬體加速的 OpenGL 以及 DirectX 等應用程式程式設計介面有所不同。 電影渲染軟體包括： Renderman Mental Ray（已停止開發） Brazil RS LightWave（包括建模模組） Cycles （內建於 Blender 有 Cinema 4D 的外掛） VRay 理論基礎 真實感渲染的實現都是某種程度的物理模擬 一些計算都是真實物理過程的模擬或抽象。 基於物理 這個術語表示是使用在渲染領域之外也被廣泛接受的物理模型或者近似，在渲染領域逐漸建立起了相關的特殊技術。 這些物理基本概念都相當直白，但是卻難於以少數的計算，得到精確且完整的結果；一個非常優秀的演算法或者實現方法對於更加通用的渲染目的來說卻可能難以理解。為了滿足健壯、精確及實用的要求，實現方法都必須是多項不同技術的複雜組合。 渲染研究工作主要集中在科學模型的改進及其高效應用。 渲染方程 渲染方程是渲染中的一個核心理論概念，它是渲染不可感知方面的最抽象的正式表示，所有更加完善的演算法都可以看作這個方程特殊形式的解。 L_o x vec w L_e x vec w int_Omega f_r x vec w vec w L_i x vec w vec w cdot vec n dvec w 含義是：在一個特定的位置與方向，出射光 Lo 是發射光 Le 與反射光之和。反射光是所有方向入射光之和 Li 乘以表面反射率及入射角。透過交叉點，這個方程將入射光與出射光聯絡在一起，它代表了場景中完整的光線傳輸即光線的所有運動。 雙向反射分佈函式 雙向反射分佈函式（BRDF）描述了一個光線與物體表面相互作用的簡單模型： f_r x vec w vec w frac dL_r x vec wL_i x vec wvec w cdot vec n dvec w 光線相互作用通常用更加簡單的模型進行近似：漫反射與鏡面反射。這兩種都可以是雙向反射函式。 幾何光學 實際上渲染是完全關於光物理粒子性方面研究的技術，即幾何光學。將光在本質上看作跳動的光子這種簡化是合適的：在大多數場合下，光的波動性是可以忽略的，並且也非常難於模擬。著名的光波動現象有衍射，如 CD 以及 DVD 上的顏色，以及如 LCD 上看到的極化現象。如果這兩種型別的效果，通常對反射模型進行針對錶現效果的調整。 視覺 儘管很少受到關注，但是對於人類視覺的理解對於渲染來說非常重要，這是因為影像顯示與人類視覺都有一定的約束範圍。渲染工具幾乎可以模擬無限範圍的亮度與顏色，但是電影、顯示器等當今的顯示裝置都不能處理這麼大的範圍，通常都需要壓縮甚至捨棄一部分資訊。人類視覺也有類似的限制，因此不需要為了真實感而使用很大範圍的影像。視覺研究可以幫助解決將影像用顯示器顯示的問題，以及建議渲染中使用哪些捷徑，一些細微的資訊是無法感知的。這個相關的主題是色調對映。 在渲染中使用的數學基礎有：線性代數、微積分、數值分析、數字訊號處理以及蒙特卡羅方法。 重要思想出現的年代表 1970 掃描線演算法 Bouknight W J 1970 A procedure for generation of threedimensional halftone computer graphics presentations Communications of the ACM 1971 Gouraud shading Gouraud H 1971 Computer display of curved surfaces IEEE Transactions on Computers 20 6 623629 1974 紋理對映 Catmull E 1974 A subdivision algorithm for computer display of curved surfaces PhD thesis University of Utah 1974 深度緩衝 Catmull E 1974 A subdivision algorithm for computer display of curved surfaces PhD thesis 1975 Phong shading Phong BT 1975 Illumination for computer generated pictures Communications of the ACM 18 6 311316 1976 環境對映（Blinn JF Newell ME（1976） Texture and reflection in computer generated images Communications of the ACM 19 542546） 1977 陰影體 Crow FC 1977 Shadow algorithms for computer graphics Computer Graphics（Proceedings of SIGGRAPH 1977）11 2 242248 1978 陰影緩衝 Williams L 1978 Casting curved shadows on curved surfaces Computer Graphics（Proceedings of SIGGRAPH 1978）12 3 270274 1978 凸凹紋理對映 Blinn JF 1978 Simulation of wrinkled surfaces Computer Graphics（Proceedings of SIGGRAPH 1978）12 3 286292 1980 BSP trees Fuchs H Kedem ZM Naylor BF 1980 On visible surface generation by a priori tree structures Computer Graphics（Proceedings of SIGGRAPH 1980）14 3 124133 1980 光線跟蹤 Whitted T 1980 An improved illumination model for shaded display Communications of the ACM 23 6 343349 1981 Cook shader Cook RL Torrance KE 1981 A reflectance model for computer graphics Computer Graphics（Proceedings of SIGGRAPH 1981）15 3 307316 1983 Mipmaps Williams L 1983 Pyramidal parametrics Computer Graphics（Proceedings of SIGGRAPH 1983）17 3 111 1984 八叉樹光線跟蹤 Glassner AS 1984 Space subdivision for fast ray tracing IEEE Computer Graphics Applications 4 10 1522 1984 Alpha compositing Porter T Duff T 1984 Compositing digital images Computer Graphics（Proceedings of SIGGRAPH 1984）18 3 253259 1984 分散式光線跟蹤 Cook RL Porter T Carpenter L 1984 Distributed ray tracing Computer Graphics（Proceedings of SIGGRAPH 1984）18 3 137145 1984 輻射著色 Goral C Torrance KE Greenberg DP Battaile B 1984 Modelling the interaction of light between diffuse surfaces Computer Graphics（Proceedings of SIGGRAPH 1984）18 3 213222 1985 半立方輻射著色 Cohen MF Greenberg DP 1985 The hemicube a radiosity solution for complex environments Computer Graphics（Proceedings of SIGGRAPH 1985）19 3 3140 1986 光源跟蹤 Arvo J 1986 Backward ray tracing SIGGRAPH 1986 Developments in Ray Tracing course notes 1986 渲染方程 Kajiya JT 1986 The rendering equation Computer Graphics（Proceedings of SIGGRAPH 1986）20 4 143150 1987 Reyes algorithm Cook RL Carpenter L Catmull E 1987 The reyes image rendering architecture Computer Graphics（Proceedings of SIGGRAPH 1987）21 4 95102 1991 分級輻射著色 Hanrahan P Salzman D Aupperle L 1991 A rapid hierarchical radiosity algorithm Computer Graphics（Proceedings of SIGGRAPH 1991）25 4 197206 1993 色調對映 Tumblin J Rushmeier HE 1993 Tone reproduction for realistic computer generated images IEEE Computer Graphics Applications 13 6 4248 1993 Subsurface scattering Hanrahan P Krueger W 1993 Reflection from layered surfaces due to subsurface scattering Computer Graphics（Proceedings of SIGGRAPH 1993）27 165174 1995 光子對映 Jensen HJ Christensen NJ 1995 Photon maps in bidirectional monte carlo ray tracing of complex objects Computers Graphics 19 2 215224 參見 painters algorithm 掃描線渲染演算法如 Reyes 深度緩衝 全域性照明 輻射著色 光線跟蹤 立體渲染 預渲染 Graphics pipeline 虛擬模型 參考 圖書資料 Foley Van Dam Feiner Hughes 1990 Computer Graphics Principles And Practice Addison Wesley ISBN 0201121107 Glassner 1995 Principles Of Digital Image Synthesis Morgan Kaufmann ISBN 1558602763 Pharr Humphreys 2004 Physically Based Rendering Morgan Kaufmann ISBN 012553180X Dutre Bala Bekaert 2002 Advanced Global Illumination AK Peters ISBN 1568811772 Jensen 2001 Realistic Image Synthesis Using Photon Mapping AK Peters ISBN 1568811470 Shirley Morley 2003 Realistic Ray Tracing 2nd ed AK Peters ISBN 1568811985 Glassner 1989 An Introduction To Ray Tracing Academic Press ISBN 0122861604 Cohen Wallace 1993 Radiosity and Realistic Image Synthesis AP Professional ISBN 0121782700 AkenineMoller Haines 2002 Realtime Rendering 2nd ed AK Peters ISBN 1568811829 Gooch Gooch 2001 NonPhotorealistic Rendering AKPeters ISBN 1568811330 Strothotte Schlechtweg 2002 NonPhotorealistic Computer Graphics Morgan Kaufmann ISBN 1558607870 Blinn 1996 Jim Blinns Corner A Trip Down The Graphics Pipeline Morgan Kaufmann ISBN 1558603875 Description of the Radiance system 外部連結 SIGGRAPH ACM 圖形學研究組 最大的學術與專業協會及會議 與即時渲染圖書相關的資源連結列表 圖形學論文引用資料庫 最近的 siggraph 及其它論文連結列表 Category 計算機圖形學 Category 三維計算機圖形學