《實時陰影技術》詳細闡述了與實時陰影技術相關的高效解決方案及相應的數據結構和算法,主要包括基本陰影技法、陰影圖的走樣、陰影圖的採樣、硬陰影的濾波、基於圖像的軟陰影算法、基於幾何體的軟陰影算法、基於圖像的透明、體積陰影、高級陰影技巧等內容。此外,《實時陰影技術》還提供了相應的算法、代碼以及偽代碼,以幫助讀者進一步理解相關方案的實現過程。
基本介紹
- 書名:實時陰影技術
- 作者:Elmar Eisemann / Michael Schwarz / Ulf Assarsson
- 譯者:王 銳 / 蘇 敏
- ISBN:9787302344384
- 定價:79.00元
- 出版社:清華大學出版社
- 出版時間:2013-12
- 裝幀:平裝
作者簡介,圖書目錄,文摘,目錄,
作者簡介
作者:(美國)艾森曼努(Elmar Eisemann) (美國)Michael Schwarz (美國)Ulf Assarsson (美國)Michael Wimmer 譯者:王銳 蘇敏
圖書目錄
第1章簡介
1.1 定義
1.1.1術語
1.1.2渲染方程
1.1.3陰影計算的簡化形式
1.2陰影的重要性
1.3陰影計算的難點
1.4概述
1.5讀者須知
第2章基本陰影技法
2.1投影陰影
2.1.1平面投影陰影
2.1.2 陰影紋理
2.1.3討{念
2.2 陰影映射
2.2.1 基本算法
2.2.2泛光燈的陰影圖
2.2.3深度偏移(Depth Bias)
2.2.4避免過於依靠偏移值
2.2.5走樣問題(Aliasing)
2.2.6實現標準的陰影映射方法
2.2.7大規模場景的陰影映射
2.3 陰影體
2.3.1最樸素的陰影體算法
2.3.2陰影體塊的構建
2.4模板陰影體(Stencil Shadow Volume)
2.4.1假設
2.4.2概述
2.4.3 模板計數的實現—Pass
2.4.4 2—Fail
2.4.5 2—Pass和Z—Fail的替代方法
2.4.6基於輪廓線的通用模型陰影體算法
2.4.7高級的改進方案
2.5透明度
2.6總結
第3章陰影圖的走樣
3.1 陰影映射與信號重建
3.2初始採樣誤差——欠採樣
3.2.1採樣誤差的定義
3.2.2幾何解釋
3.2.3走樣的組成
3.2.4存儲因子
3.3重採樣誤差
第4章陰影圖的採樣
4.1匹配(Fitting)
4.2包裝(Warping)
4.2.1包裝算法實戰
4.2.2計算包裝的最佳化參數
4.2.3頂部燈光透視包裝的存儲因子
4.2.4頂部平行光的最佳化參數化
4.2.5平面最優的透視包裝
4.3全局分割(Global Partitioning)
4.3.1 2分割(Z—Partitioning)
4.3.2視錐體平面的分割
4.3.3包裝算法與全局分割的結合
4.3.4分割——誤差分析
4.4自適應的分割
4.4.1疊代層次的精練(Refinement)
4.4.2直接層次計算
4.4.3 比較
4.5視口採樣映射(View—Sample Mapping)
4.5.1硬體實現
4.5.2透明
4.5.3超級採樣(Supersampling)
4.6陰影圖的重建
4.6.1前向陰影映射(Forward Shadow Mapping)
4.6.2輪廓陰影映射(Silhoueae Shadow Maps)
4.6.3陰影圖存儲的替代方案
4.7臨時重投影
4.8 實例
第5章硬陰影的濾波
5.1濾波和陰影圖
5.1.1濾波的標記
5.1.2不正確的方法:模糊陰影圖
5.1.3定義參考值:Percentage—Closer Filterin9
5.1.4 PCF的實現
5.2濾波的應用程式
5.2.1平滑/模糊的陰影
5.2.2降低重採樣誤差:重建/頻帶限制濾波
5.2.3濾波與軟陰影
5.3較大濾波核的預計算
5.3.1預計算濾波的思想——線性信號處理與統計
5.3.2方差陰影圖(Variance Shadow Maps)
5.3.3分層方差陰影圖(Layered Variance Shadow Maps)
5.3.4卷積陰影圖(Convolution Shadow Maps)
5.3.5指數陰影圖(Exponential Shadow Maps)
5.3.6 比較
5.4 總結
第6章基於圖像的軟陰影算法
第7章基於幾何體的軟陰影算法
第8章基於圖像的透明
第9章體積陰影
第10章高級陰影技巧
第11章總結
參考文獻
附錄A圖形流水線概覽
附錄B圖形API概述
附錄C著色方法簡述
附錄D快速GPU濾波技術
附錄E延遲著色(Deferred Shading)與升採樣(Upsampling)
附錄F符號
1.1 定義
1.1.1術語
1.1.2渲染方程
1.1.3陰影計算的簡化形式
1.2陰影的重要性
1.3陰影計算的難點
1.4概述
1.5讀者須知
第2章基本陰影技法
2.1投影陰影
2.1.1平面投影陰影
2.1.2 陰影紋理
2.1.3討{念
2.2 陰影映射
2.2.1 基本算法
2.2.2泛光燈的陰影圖
2.2.3深度偏移(Depth Bias)
2.2.4避免過於依靠偏移值
2.2.5走樣問題(Aliasing)
2.2.6實現標準的陰影映射方法
2.2.7大規模場景的陰影映射
2.3 陰影體
2.3.1最樸素的陰影體算法
2.3.2陰影體塊的構建
2.4模板陰影體(Stencil Shadow Volume)
2.4.1假設
2.4.2概述
2.4.3 模板計數的實現—Pass
2.4.4 2—Fail
2.4.5 2—Pass和Z—Fail的替代方法
2.4.6基於輪廓線的通用模型陰影體算法
2.4.7高級的改進方案
2.5透明度
2.6總結
第3章陰影圖的走樣
3.1 陰影映射與信號重建
3.2初始採樣誤差——欠採樣
3.2.1採樣誤差的定義
3.2.2幾何解釋
3.2.3走樣的組成
3.2.4存儲因子
3.3重採樣誤差
第4章陰影圖的採樣
4.1匹配(Fitting)
4.2包裝(Warping)
4.2.1包裝算法實戰
4.2.2計算包裝的最佳化參數
4.2.3頂部燈光透視包裝的存儲因子
4.2.4頂部平行光的最佳化參數化
4.2.5平面最優的透視包裝
4.3全局分割(Global Partitioning)
4.3.1 2分割(Z—Partitioning)
4.3.2視錐體平面的分割
4.3.3包裝算法與全局分割的結合
4.3.4分割——誤差分析
4.4自適應的分割
4.4.1疊代層次的精練(Refinement)
4.4.2直接層次計算
4.4.3 比較
4.5視口採樣映射(View—Sample Mapping)
4.5.1硬體實現
4.5.2透明
4.5.3超級採樣(Supersampling)
4.6陰影圖的重建
4.6.1前向陰影映射(Forward Shadow Mapping)
4.6.2輪廓陰影映射(Silhoueae Shadow Maps)
4.6.3陰影圖存儲的替代方案
4.7臨時重投影
4.8 實例
第5章硬陰影的濾波
5.1濾波和陰影圖
5.1.1濾波的標記
5.1.2不正確的方法:模糊陰影圖
5.1.3定義參考值:Percentage—Closer Filterin9
5.1.4 PCF的實現
5.2濾波的應用程式
5.2.1平滑/模糊的陰影
5.2.2降低重採樣誤差:重建/頻帶限制濾波
5.2.3濾波與軟陰影
5.3較大濾波核的預計算
5.3.1預計算濾波的思想——線性信號處理與統計
5.3.2方差陰影圖(Variance Shadow Maps)
5.3.3分層方差陰影圖(Layered Variance Shadow Maps)
5.3.4卷積陰影圖(Convolution Shadow Maps)
5.3.5指數陰影圖(Exponential Shadow Maps)
5.3.6 比較
5.4 總結
第6章基於圖像的軟陰影算法
第7章基於幾何體的軟陰影算法
第8章基於圖像的透明
第9章體積陰影
第10章高級陰影技巧
第11章總結
參考文獻
附錄A圖形流水線概覽
附錄B圖形API概述
附錄C著色方法簡述
附錄D快速GPU濾波技術
附錄E延遲著色(Deferred Shading)與升採樣(Upsampling)
附錄F符號
文摘
著作權頁:
如果光照紋理只包含了少量的不同顏色值,那么我們可以預計算每個獨立紋理顏色的位掩碼,並且用於所有對應這個顏色的光照採樣點。當對視口採樣點的陰影進行計算時,對於每個獨立的顏色,將它的預計算位掩碼與所有光照採樣點的遮擋位掩碼進行“與”操作,然後記錄結果中有效位的數量。可以通過顏色的計數來計算這種顏色的光照遮擋量。每一種獨立的紋理顏色的貢獻值最後被累加,從而得到視口採樣點的遮擋光照總量。
10.1.3有效位的計數
對位掩碼中有效位進行計數的方法不僅可以用於帶有少量獨立顏色的紋理。它也是我們將遮擋位掩碼轉換為可見性值時的默認方法,並且因此計算出常顏色光源(沒有紋理)的陰影。出於這兩個原因,在這裡將簡要介紹如何高效地實現位的計數。
使用查找表進行位計數
我們可以通過一個256個項的查找表來計算有效位的數量。這樣,我們對位掩碼中每8bit一塊來計算位數。通常來說,較大的查找表會造成較大的記憶體占用,但是可以對位掩碼遍歷更少的次數。不過,用32bit的查找表是不可能的,因為這樣需要存儲40億個表項。
並行位計數
我們還是可以在對數的時間複雜度之內完成一個word大小的有效位的計算,因為一個word的大小與系統的word是相等的。在GPU端,我們可以分5個步驟對32bit的word大小的有效位進行計數。
我們的方法是並行地進行位的計數。第一步,位掩碼中每2個位相加,得到的結果依然保存在這2個位當中。第二步,每4位一組進行相加,結果依然保存到這4個位當中。第三步,每8位一組進行相加,結果保存到這8個位中,依此類推。
另一種更高效的方法只需要3個步驟,計算得到每個獨立的位元組,然後通過一次乘法將所有的位元組疊加到32位word的左側第一個位元組①。不過這樣需要的指令數實際上與8位查找表是相等的(12次),但是它的優點在於我們不需要使用查找表。
如果光照紋理只包含了少量的不同顏色值,那么我們可以預計算每個獨立紋理顏色的位掩碼,並且用於所有對應這個顏色的光照採樣點。當對視口採樣點的陰影進行計算時,對於每個獨立的顏色,將它的預計算位掩碼與所有光照採樣點的遮擋位掩碼進行“與”操作,然後記錄結果中有效位的數量。可以通過顏色的計數來計算這種顏色的光照遮擋量。每一種獨立的紋理顏色的貢獻值最後被累加,從而得到視口採樣點的遮擋光照總量。
10.1.3有效位的計數
對位掩碼中有效位進行計數的方法不僅可以用於帶有少量獨立顏色的紋理。它也是我們將遮擋位掩碼轉換為可見性值時的默認方法,並且因此計算出常顏色光源(沒有紋理)的陰影。出於這兩個原因,在這裡將簡要介紹如何高效地實現位的計數。
使用查找表進行位計數
我們可以通過一個256個項的查找表來計算有效位的數量。這樣,我們對位掩碼中每8bit一塊來計算位數。通常來說,較大的查找表會造成較大的記憶體占用,但是可以對位掩碼遍歷更少的次數。不過,用32bit的查找表是不可能的,因為這樣需要存儲40億個表項。
並行位計數
我們還是可以在對數的時間複雜度之內完成一個word大小的有效位的計算,因為一個word的大小與系統的word是相等的。在GPU端,我們可以分5個步驟對32bit的word大小的有效位進行計數。
我們的方法是並行地進行位的計數。第一步,位掩碼中每2個位相加,得到的結果依然保存在這2個位當中。第二步,每4位一組進行相加,結果依然保存到這4個位當中。第三步,每8位一組進行相加,結果保存到這8個位中,依此類推。
另一種更高效的方法只需要3個步驟,計算得到每個獨立的位元組,然後通過一次乘法將所有的位元組疊加到32位word的左側第一個位元組①。不過這樣需要的指令數實際上與8位查找表是相等的(12次),但是它的優點在於我們不需要使用查找表。
目錄
第1章簡介
1.1 定義
1.1.1術語
1.1.2渲染方程
1.1.3陰影計算的簡化形式
1.2陰影的重要性
1.3陰影計算的難點
1.4概述
1.5讀者須知
第2章基本陰影技法
2.1投影陰影
2.1.1平面投影陰影
2.1.2 陰影紋理
2.1.3討{念
2.2 陰影映射
2.2.1 基本算法
2.2.2泛光燈的陰影圖
2.2.3深度偏移(Depth Bias)
2.2.4避免過於依靠偏移值
2.2.5走樣問題(Aliasing)
2.2.6實現標準的陰影映射方法
2.2.7大規模場景的陰影映射
2.3 陰影體
2.3.1最樸素的陰影體算法
2.3.2陰影體塊的構建
2.4模板陰影體(Stencil Shadow Volume)
2.4.1假設
2.4.2概述
2.4.3 模板計數的實現—Pass
2.4.4 2—Fail
2.4.5 2—Pass和Z—Fail的替代方法
2.4.6基於輪廓線的通用模型陰影體算法
2.4.7高級的改進方案
2.5透明度
2.6總結
第3章陰影圖的走樣
3.1 陰影映射與信號重建
3.2初始採樣誤差——欠採樣
3.2.1採樣誤差的定義
3.2.2幾何解釋
3.2.3走樣的組成
3.2.4存儲因子
3.3重採樣誤差
第4章陰影圖的採樣
4.1匹配(Fitting)
4.2包裝(Warping)
4.2.1包裝算法實戰
4.2.2計算包裝的最佳化參數
4.2.3頂部燈光透視包裝的存儲因子
4.2.4頂部平行光的最佳化參數化
4.2.5平面最優的透視包裝
4.3全局分割(Global Partitioning)
4.3.1 2分割(Z—Partitioning)
4.3.2視錐體平面的分割
4.3.3包裝算法與全局分割的結合
4.3.4分割——誤差分析
4.4自適應的分割
4.4.1疊代層次的精練(Refinement)
4.4.2直接層次計算
4.4.3 比較
4.5視口採樣映射(View—Sample Mapping)
4.5.1硬體實現
4.5.2透明
4.5.3超級採樣(Supersampling)
4.6陰影圖的重建
4.6.1前向陰影映射(Forward Shadow Mapping)
4.6.2輪廓陰影映射(Silhoueae Shadow Maps)
4.6.3陰影圖存儲的替代方案
4.7臨時重投影
4.8 實例
第5章硬陰影的濾波
5.1濾波和陰影圖
5.1.1濾波的標記
5.1.2不正確的方法:模糊陰影圖
5.1.3定義參考值:Percentage—Closer Filterin9
5.1.4 PCF的實現
5.2濾波的應用程式
5.2.1平滑/模糊的陰影
5.2.2降低重採樣誤差:重建/頻帶限制濾波
5.2.3濾波與軟陰影
5.3較大濾波核的預計算
5.3.1預計算濾波的思想——線性信號處理與統計
5.3.2方差陰影圖(Variance Shadow Maps)
5.3.3分層方差陰影圖(Layered Variance Shadow Maps)
5.3.4卷積陰影圖(Convolution Shadow Maps)
5.3.5指數陰影圖(Exponential Shadow Maps)
5.3.6 比較
5.4 總結
第6章基於圖像的軟陰影算法
第7章基於幾何體的軟陰影算法
第8章基於圖像的透明
第9章體積陰影
第10章高級陰影技巧
第11章總結
參考文獻
附錄A圖形流水線概覽
附錄B圖形API概述
附錄C著色方法簡述
附錄D快速GPU濾波技術
附錄E延遲著色(Deferred Shading)與升採樣(Upsampling)
附錄F符號
1.1 定義
1.1.1術語
1.1.2渲染方程
1.1.3陰影計算的簡化形式
1.2陰影的重要性
1.3陰影計算的難點
1.4概述
1.5讀者須知
第2章基本陰影技法
2.1投影陰影
2.1.1平面投影陰影
2.1.2 陰影紋理
2.1.3討{念
2.2 陰影映射
2.2.1 基本算法
2.2.2泛光燈的陰影圖
2.2.3深度偏移(Depth Bias)
2.2.4避免過於依靠偏移值
2.2.5走樣問題(Aliasing)
2.2.6實現標準的陰影映射方法
2.2.7大規模場景的陰影映射
2.3 陰影體
2.3.1最樸素的陰影體算法
2.3.2陰影體塊的構建
2.4模板陰影體(Stencil Shadow Volume)
2.4.1假設
2.4.2概述
2.4.3 模板計數的實現—Pass
2.4.4 2—Fail
2.4.5 2—Pass和Z—Fail的替代方法
2.4.6基於輪廓線的通用模型陰影體算法
2.4.7高級的改進方案
2.5透明度
2.6總結
第3章陰影圖的走樣
3.1 陰影映射與信號重建
3.2初始採樣誤差——欠採樣
3.2.1採樣誤差的定義
3.2.2幾何解釋
3.2.3走樣的組成
3.2.4存儲因子
3.3重採樣誤差
第4章陰影圖的採樣
4.1匹配(Fitting)
4.2包裝(Warping)
4.2.1包裝算法實戰
4.2.2計算包裝的最佳化參數
4.2.3頂部燈光透視包裝的存儲因子
4.2.4頂部平行光的最佳化參數化
4.2.5平面最優的透視包裝
4.3全局分割(Global Partitioning)
4.3.1 2分割(Z—Partitioning)
4.3.2視錐體平面的分割
4.3.3包裝算法與全局分割的結合
4.3.4分割——誤差分析
4.4自適應的分割
4.4.1疊代層次的精練(Refinement)
4.4.2直接層次計算
4.4.3 比較
4.5視口採樣映射(View—Sample Mapping)
4.5.1硬體實現
4.5.2透明
4.5.3超級採樣(Supersampling)
4.6陰影圖的重建
4.6.1前向陰影映射(Forward Shadow Mapping)
4.6.2輪廓陰影映射(Silhoueae Shadow Maps)
4.6.3陰影圖存儲的替代方案
4.7臨時重投影
4.8 實例
第5章硬陰影的濾波
5.1濾波和陰影圖
5.1.1濾波的標記
5.1.2不正確的方法:模糊陰影圖
5.1.3定義參考值:Percentage—Closer Filterin9
5.1.4 PCF的實現
5.2濾波的應用程式
5.2.1平滑/模糊的陰影
5.2.2降低重採樣誤差:重建/頻帶限制濾波
5.2.3濾波與軟陰影
5.3較大濾波核的預計算
5.3.1預計算濾波的思想——線性信號處理與統計
5.3.2方差陰影圖(Variance Shadow Maps)
5.3.3分層方差陰影圖(Layered Variance Shadow Maps)
5.3.4卷積陰影圖(Convolution Shadow Maps)
5.3.5指數陰影圖(Exponential Shadow Maps)
5.3.6 比較
5.4 總結
第6章基於圖像的軟陰影算法
第7章基於幾何體的軟陰影算法
第8章基於圖像的透明
第9章體積陰影
第10章高級陰影技巧
第11章總結
參考文獻
附錄A圖形流水線概覽
附錄B圖形API概述
附錄C著色方法簡述
附錄D快速GPU濾波技術
附錄E延遲著色(Deferred Shading)與升採樣(Upsampling)
附錄F符號