《圖形著色器》是2013年清華大學出版社出版的圖書,作者是美貝利,美坎寧安。本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。
基本介紹
- 作者:美貝利 / 美坎寧安
- 譯者:劉鵬
- ISBN:9787302315995
- 頁數:339
- 定價:79.00元
- 出版社:清華大學出版社
- 出版時間:2013-3
- 裝幀:平裝
- 副標題:—理論與實踐
內容介紹,作品目錄,
內容介紹
本書詳細闡述了與著色器程式設計相關的高效解決方案及相應的數據結構和算法,主要包括固定功能管線、OpenGL著色
器的發展、著色器基本概念、使用glman、GLSL著色器語言、光照、頂點著色器、片元著色器和表面外觀、片元著色器中的表
面紋理、噪聲、基於著色器的圖像處理、幾何著色器的概念和示例、細分著色器、GLSLAPI、基於著色器的科學可視化計算以
及著色器套用等內容。此外,本書還提供了相應的算法、代碼以及偽代碼,以幫助讀者進一步理解相關方案的實現過程。
作品目錄
第1章 固定功能管線 1
傳統的視見方案 1
頂點操作 1
管線的片元處理 3
圖形管線中的狀態 4
傳統視見機制的實現方案 5
頂點處理操作 5
渲染處理操作 6
固定管線中的齊次坐標 9
頂點數組 10
本章小結 13
本章練習 14
第2章 OpenGL著色器的發展 16
著色器發展史 17
OpenGL著色器發展史 19
OpenGL 2.0/GLSL 1.10 19
OpenGL 3.x/GLSL 3.30 19
OpenGL 4.0/GLSL 4.00 20
OpenGL 4.x/GLSL 4.x0 21
內部原因 21
OpenGL ES 22
處理不同版本 22
本書方案 22
變數名命名規則 23
本章練習 23
第3章 著色器基本概念 24
圖形管線中的著色器 24
頂點著色器 26
片元著色器 29
細分著色器 31
幾何著色器 34
圖形著色器——理論與實踐(第 2 版) ·X·
GLSL著色器語言 35
應用程式與著色器之間的數據傳遞 38
在應用程式中定義attribute變數 38
在應用程式中定義uniform變數 40
GLSL新版本之間的轉換方式 42
本章練習 44
第4章 glman的使用 45
使用glman 46
載入GLIB檔案 47
編輯GLIB檔案和著色器檔案 47
生成GLIB場景 47
視窗和視見操作 47
轉換操作 48
定義幾何對象 48
定義紋理 50
定義著色器名 50
其他命令 51
定義uniform變數 51
GLIB檔案示例 53
紋理和噪聲 54
使用紋理 55
使用噪聲紋理 55
glman界面視窗功能 56
生成並顯示場景的硬拷貝 56
全局場景轉換 57
眼睛轉換 57
對象拾取和轉換 57
紋理轉換 58
顯示幀速率 58
其他功能項 59
本章練習 59
第5章 GLSL著色器語言 61
著色器語言的成因 61
圖形卡功能項 62
通用GLSL語言 63
共享命名空間 64
函式擴展和操作符功能項 64
目 錄 ·XI·
新增函式 64
新增變數類型 65
新增函式參數類型 65
具體實現 65
忽略的語言功能項 66
新增矩陣和向量類型 66
名稱集 67
向量構造函式 67
矩陣和向量擴展函式 68
矩陣和向量的擴展操作 70
新增函式 71
混合操作 75
新增函式參數類型 75
const變數 76
兼容模式 76
定義兼容模式 76
OpenGL 2.1內建數據類型 77
綜述 81
本章練習 81
第6章 光照 82
ADS光照模型 82
ADS光照模型函式 83
光源類型 85
固定光源 85
有向光源 86
聚光燈 86
構建基於著色器的光照機制 88
固定著色 88
平滑著色 89
Phong著色方案 89
各向異性著色 90
本章練習 91
第7章 頂點著色器 92
圖形管線中的頂點著色器 93
頂點著色器的輸入數據 93
源自頂點著色器的輸出數據 94
幾何體 94
頂點著色器之後的固定功能處理 96
圖形著色器——理論與實踐(第 2 版) ·XII·
頂點著色器和細分著色器之間的關係 96
頂點著色器和幾何著色器之間的關係 96
利用頂點著色器替換固定功能圖形操作 97
標準的頂點處理過程 97
基於頂點著色器的固定功能管線擴展 97
頂點修正 98
頂點著色器中的問題 100
生成法線 100
綜述 101
本章練習 102
第8章 片元著色器和表面外觀 103
片元著色器的基本功能 104
片元著色器的輸入數據 104
片元著色器的in變數 105
坐標系 106
片元著色器處理機制 107
源自片元著色器的輸出數據 107
利用片元處理器替換固定功能處理 107
著色機制 107
傳統的紋理貼圖 108
偽色 108
片元著色器後續步驟 110
其他著色器效果 110
像素丟棄 111
Phong著色 111
基於解析法線的著色機制 112
各向異性著色 113
基於數據驅動的色彩方案 114
使用其他數據生成圖像 115
本章練習 116
第9章 片元著色器中的表面紋理 117
紋理坐標 117
傳統的紋理貼圖 117
GLSL紋理貼圖 118
紋理上下文 120
固定功能管線中的紋理環境 121
紋理採樣參數 121
目 錄 ·XIII·
採樣器 122
過程紋理 122
凹凸貼圖 127
立方體貼圖 132
渲染至紋理 135
渲染至紋理(glman多路渲染) 138
本章練習 140
第10章 噪聲 141
噪聲的基本概念 141
3種噪聲類型:數值、梯度以及數值+梯度 142
三次插值和五次插值 142
噪聲方程 143
其他噪聲 145
分形布朗運動(FBM,1/f,倍頻程) 146
二維噪聲和三維噪聲 146
基於glman的噪聲 148
基於內建GLSL函式使用噪聲紋理 149
湍流 149
不同環境中的噪聲示例 151
大理石著色器 153
雲彩著色器 153
木材著色器 155
與噪聲相關的高級話題 156
noisegraph應用程式 156
本章練習 157
第11章 基於著色器的圖像處理 159
基本概念 160
單幅圖像處理 160
亮度 160
CMYK轉換 161
色調轉換 163
圖像過濾機制 165
圖像模糊操作 166
色度鍵圖像 167
立體視圖 169
3D電視 171
邊檢測技術 173
圖形著色器——理論與實踐(第 2 版) ·XIV·
浮雕效果 174
卡通著色器 176
藝術視覺效果 177
圖像的翻轉、旋轉和扭曲 178
圖像混合處理 182
基於固定基圖像的圖像混合操作 183
反像 183
亮度 184
對比度 184
圖像的自身混合操作 185
飽和度 185
銳利度 186
不同圖像間的混合操作 187
其他合成方案 188
圖像漸變 190
內容提示 194
本章練習 195
第12章 幾何著色器的概念和示例 198
幾何著色器的功能 198
新型鄰接圖元 200
基於輸入和輸出變數的布局結構 201
新增OpenGL API函式 201
新增GLSL變數以及變數類型 203
頂點著色器或細分著色器與幾何著色器之間的通信 203
幾何著色器中的法線 204
套用示例 205
Bezier曲線 205
收縮三角形 207
球體細分 208
3D對象輪廓邊 211
本章練習 213
第13章 細分著色器 214
細分著色器定義 214
細分著色器與幾何著色器 215
細分著色器概念 216
設定細分級別時的問題 219
套用示例 219
目 錄 ·XV·
等值線 219
Bezier曲面 222
球體細分 228
基於螢幕覆蓋率的整球細分 233
PN三角形 236
綜述 241
本章練習 241
第14章 GLSL API 243
OpenGL程式處理中的著色器 243
處理OpenGL擴展 244
GLSL著色器程式的創建方式 245
創建並編譯著色器對象 245
CheckGLErrors()函式 247
創建、綁定、連結並激活著色器程式 248
生成著色器程式並綁定著色器對象 248
著色器程式的連結操作 249
激活著色器程式 250
向著色器傳遞數據 250
在應用程式中定義uniform變數 251
兼容模式下的uniform變數 253
在應用程式中定義attribute變數 254
兼容模式下的attribute變數 255
著色器程式的C++控制類 256
本章練習 257
第15章 基於著色器的科學可視化計算 258
基於圖像的可視化技術 258
負像 258
圖像邊檢測 259
卡通渲染 259
雙曲線幾何學 260
3D標量數據可視化計算 263
點雲 264
剖切面 267
體探測 270
直接體渲染 271
其他轉換函式 276
通過幾何對象傳遞數據值 279
圖形著色器——理論與實踐(第 2 版) ·XVI·
地形凹凸貼圖 280
流顯示 283
2D線積分卷積 283
3D線積分卷積 285
獲取流線對象 286
幾何可視化 289
輪廓邊技術 289
刺狀區 290
本章練習 292
第16章 著色器套用 295
光線干涉現象 295
衍射光柵 295
油膜 299
透鏡效果 301
浴室玻璃 304
大氣效果 306
彩虹 307
輝光效果 310
其他視效函式 312
glman Timer函式 313
迪斯科球 313
霧效果 315
3D幾何體變形 316
算法藝術 319
Connett圓 319
運動狀態下的可見信息 321
爆炸效果著色器 322
本章練習 324
參考文獻 326
附錄A 基於GLSL程式的C++類 329
附錄B Matrix4 C++類 331
附錄C Vec C++類 334
附錄D 頂點數組類 336
傳統的視見方案 1
頂點操作 1
管線的片元處理 3
圖形管線中的狀態 4
傳統視見機制的實現方案 5
頂點處理操作 5
渲染處理操作 6
固定管線中的齊次坐標 9
頂點數組 10
本章小結 13
本章練習 14
第2章 OpenGL著色器的發展 16
著色器發展史 17
OpenGL著色器發展史 19
OpenGL 2.0/GLSL 1.10 19
OpenGL 3.x/GLSL 3.30 19
OpenGL 4.0/GLSL 4.00 20
OpenGL 4.x/GLSL 4.x0 21
內部原因 21
OpenGL ES 22
處理不同版本 22
本書方案 22
變數名命名規則 23
本章練習 23
第3章 著色器基本概念 24
圖形管線中的著色器 24
頂點著色器 26
片元著色器 29
細分著色器 31
幾何著色器 34
圖形著色器——理論與實踐(第 2 版) ·X·
GLSL著色器語言 35
應用程式與著色器之間的數據傳遞 38
在應用程式中定義attribute變數 38
在應用程式中定義uniform變數 40
GLSL新版本之間的轉換方式 42
本章練習 44
第4章 glman的使用 45
使用glman 46
載入GLIB檔案 47
編輯GLIB檔案和著色器檔案 47
生成GLIB場景 47
視窗和視見操作 47
轉換操作 48
定義幾何對象 48
定義紋理 50
定義著色器名 50
其他命令 51
定義uniform變數 51
GLIB檔案示例 53
紋理和噪聲 54
使用紋理 55
使用噪聲紋理 55
glman界面視窗功能 56
生成並顯示場景的硬拷貝 56
全局場景轉換 57
眼睛轉換 57
對象拾取和轉換 57
紋理轉換 58
顯示幀速率 58
其他功能項 59
本章練習 59
第5章 GLSL著色器語言 61
著色器語言的成因 61
圖形卡功能項 62
通用GLSL語言 63
共享命名空間 64
函式擴展和操作符功能項 64
目 錄 ·XI·
新增函式 64
新增變數類型 65
新增函式參數類型 65
具體實現 65
忽略的語言功能項 66
新增矩陣和向量類型 66
名稱集 67
向量構造函式 67
矩陣和向量擴展函式 68
矩陣和向量的擴展操作 70
新增函式 71
混合操作 75
新增函式參數類型 75
const變數 76
兼容模式 76
定義兼容模式 76
OpenGL 2.1內建數據類型 77
綜述 81
本章練習 81
第6章 光照 82
ADS光照模型 82
ADS光照模型函式 83
光源類型 85
固定光源 85
有向光源 86
聚光燈 86
構建基於著色器的光照機制 88
固定著色 88
平滑著色 89
Phong著色方案 89
各向異性著色 90
本章練習 91
第7章 頂點著色器 92
圖形管線中的頂點著色器 93
頂點著色器的輸入數據 93
源自頂點著色器的輸出數據 94
幾何體 94
頂點著色器之後的固定功能處理 96
圖形著色器——理論與實踐(第 2 版) ·XII·
頂點著色器和細分著色器之間的關係 96
頂點著色器和幾何著色器之間的關係 96
利用頂點著色器替換固定功能圖形操作 97
標準的頂點處理過程 97
基於頂點著色器的固定功能管線擴展 97
頂點修正 98
頂點著色器中的問題 100
生成法線 100
綜述 101
本章練習 102
第8章 片元著色器和表面外觀 103
片元著色器的基本功能 104
片元著色器的輸入數據 104
片元著色器的in變數 105
坐標系 106
片元著色器處理機制 107
源自片元著色器的輸出數據 107
利用片元處理器替換固定功能處理 107
著色機制 107
傳統的紋理貼圖 108
偽色 108
片元著色器後續步驟 110
其他著色器效果 110
像素丟棄 111
Phong著色 111
基於解析法線的著色機制 112
各向異性著色 113
基於數據驅動的色彩方案 114
使用其他數據生成圖像 115
本章練習 116
第9章 片元著色器中的表面紋理 117
紋理坐標 117
傳統的紋理貼圖 117
GLSL紋理貼圖 118
紋理上下文 120
固定功能管線中的紋理環境 121
紋理採樣參數 121
目 錄 ·XIII·
採樣器 122
過程紋理 122
凹凸貼圖 127
立方體貼圖 132
渲染至紋理 135
渲染至紋理(glman多路渲染) 138
本章練習 140
第10章 噪聲 141
噪聲的基本概念 141
3種噪聲類型:數值、梯度以及數值+梯度 142
三次插值和五次插值 142
噪聲方程 143
其他噪聲 145
分形布朗運動(FBM,1/f,倍頻程) 146
二維噪聲和三維噪聲 146
基於glman的噪聲 148
基於內建GLSL函式使用噪聲紋理 149
湍流 149
不同環境中的噪聲示例 151
大理石著色器 153
雲彩著色器 153
木材著色器 155
與噪聲相關的高級話題 156
noisegraph應用程式 156
本章練習 157
第11章 基於著色器的圖像處理 159
基本概念 160
單幅圖像處理 160
亮度 160
CMYK轉換 161
色調轉換 163
圖像過濾機制 165
圖像模糊操作 166
色度鍵圖像 167
立體視圖 169
3D電視 171
邊檢測技術 173
圖形著色器——理論與實踐(第 2 版) ·XIV·
浮雕效果 174
卡通著色器 176
藝術視覺效果 177
圖像的翻轉、旋轉和扭曲 178
圖像混合處理 182
基於固定基圖像的圖像混合操作 183
反像 183
亮度 184
對比度 184
圖像的自身混合操作 185
飽和度 185
銳利度 186
不同圖像間的混合操作 187
其他合成方案 188
圖像漸變 190
內容提示 194
本章練習 195
第12章 幾何著色器的概念和示例 198
幾何著色器的功能 198
新型鄰接圖元 200
基於輸入和輸出變數的布局結構 201
新增OpenGL API函式 201
新增GLSL變數以及變數類型 203
頂點著色器或細分著色器與幾何著色器之間的通信 203
幾何著色器中的法線 204
套用示例 205
Bezier曲線 205
收縮三角形 207
球體細分 208
3D對象輪廓邊 211
本章練習 213
第13章 細分著色器 214
細分著色器定義 214
細分著色器與幾何著色器 215
細分著色器概念 216
設定細分級別時的問題 219
套用示例 219
目 錄 ·XV·
等值線 219
Bezier曲面 222
球體細分 228
基於螢幕覆蓋率的整球細分 233
PN三角形 236
綜述 241
本章練習 241
第14章 GLSL API 243
OpenGL程式處理中的著色器 243
處理OpenGL擴展 244
GLSL著色器程式的創建方式 245
創建並編譯著色器對象 245
CheckGLErrors()函式 247
創建、綁定、連結並激活著色器程式 248
生成著色器程式並綁定著色器對象 248
著色器程式的連結操作 249
激活著色器程式 250
向著色器傳遞數據 250
在應用程式中定義uniform變數 251
兼容模式下的uniform變數 253
在應用程式中定義attribute變數 254
兼容模式下的attribute變數 255
著色器程式的C++控制類 256
本章練習 257
第15章 基於著色器的科學可視化計算 258
基於圖像的可視化技術 258
負像 258
圖像邊檢測 259
卡通渲染 259
雙曲線幾何學 260
3D標量數據可視化計算 263
點雲 264
剖切面 267
體探測 270
直接體渲染 271
其他轉換函式 276
通過幾何對象傳遞數據值 279
圖形著色器——理論與實踐(第 2 版) ·XVI·
地形凹凸貼圖 280
流顯示 283
2D線積分卷積 283
3D線積分卷積 285
獲取流線對象 286
幾何可視化 289
輪廓邊技術 289
刺狀區 290
本章練習 292
第16章 著色器套用 295
光線干涉現象 295
衍射光柵 295
油膜 299
透鏡效果 301
浴室玻璃 304
大氣效果 306
彩虹 307
輝光效果 310
其他視效函式 312
glman Timer函式 313
迪斯科球 313
霧效果 315
3D幾何體變形 316
算法藝術 319
Connett圓 319
運動狀態下的可見信息 321
爆炸效果著色器 322
本章練習 324
參考文獻 326
附錄A 基於GLSL程式的C++類 329
附錄B Matrix4 C++類 331
附錄C Vec C++類 334
附錄D 頂點數組類 336