TOP
0
0
【簡體曬書節】 單本79折,5本7折,優惠只到5/31,點擊此處看更多!
Shader開發實戰(簡體書)
滿額折

Shader開發實戰(簡體書)

商品資訊

人民幣定價:98 元
定價
:NT$ 588 元
優惠價
87512
領券後再享88折起
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:15 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

主要內容:

·了解什麼是著色器以及它們的工作原理

·迅速深入編寫頂點著色器和片元著色器技術

·使用顏色混合,並了解混合方程式的工作原理

·了解渲染實時計算機圖形時使用的坐標空間

·使用簡單的數學運算為角色設置動畫、模擬燈光以及創建多種視覺效果

·查找並修復著色器中的性能問題

·了解三種流行的遊戲引擎(Unity、UE4和Godot)使用著色器的方式

作者簡介

Kyle Halladay是一名職業遊戲程序員,居住在美國芝加哥市。在為遊戲和建築可視化編寫著色器和構建圖形技術方面,Kyle擁有七年以上的工作經驗。

名人/編輯推薦

現在是時候揭開著色器的神秘面紗了。《Shader開發實戰》一書循序漸進地引導遊戲和圖形開發人員學習著色器開發知識,兼顧動手實戰,教會讀者創建自己的著色器,從而將數據化為令人驚嘆的視覺效果。通過閱讀本書,讀者將學會如何創建著色器,使之實現移動、著色、光照和驚艷的視覺效果,而這一切都無須打開任何一本數學課本。
《Shader開發實戰》一書講解了著色器的工作原理,展示了如何應用理論知識創建美輪美奐的視覺效果。讀者將學習如何配置和優化這些效果,以確保應用了所有新的視覺效果的項目也能高性能地運行,還將學習上佳理論,上佳實踐,而不會深陷數學泥潭。
作者Kyle Halladay通過深入淺出的示例和動手實踐闡明了著色器開發的基礎。他教會讀者如何在使用著色器時發現性能問題,然後解決這些問題。Kyle解釋(並對比)了如何將本書中學到的知識應用於當今流行的三個遊戲引擎中。

歡迎來到實用著色器開發。《Shader開發實戰》旨在深入淺出地介紹編寫視頻遊戲著色器的理論和實踐。編寫著色器是一個非常寬泛的話題,當我剛起步時,感到非常迷茫。希望《Shader開發實戰》能夠幫助你避免同樣的感覺,並讓你快速而自信地踏入著色器和遊戲圖形的廣闊世界。
《Shader開發實戰》的指導思想是:“木匠不需要知道如何製作扳手”。同樣,你不必知道如何構建渲染引擎就可以使用著色器創建美觀的視覺效果,尤其是在剛入門時。《Shader開發實戰》旨在幫助你進行實驗、發揮創造力、創造有趣的事物,並希望在此過程中有所收獲。為此,《Shader開發實戰》不會嘗試教你如何成為圖形程序員,也不會嘗試提供系統的數學知識(盡管將逐步介紹一些數學知識)。相反,《Shader開發實戰》將從一開始就討論現代遊戲中如何在屏幕上放置東西,然後直接進入編寫著色器,以使我們在屏幕上放置的東西看起來像我們想要的那樣。將會有大量示例代碼,大量圖片,並且到《Shader開發實戰》結束時,將從著色器編寫的基本知識轉向編寫與市場上一些流行的遊戲中使用相同光照的著色器。
如果在《Shader開發實戰》的後,你決定想更深入地研究圖形編程,甚至編寫自己的渲染引擎,或者更複雜的著色器技術,那麼《Shader開發實戰》將為你提供扎實的基礎知識,為你處理更複雜的主題做準備。
0.1 《Shader開發實戰》讀者物件
《Shader開發實戰》適用於想要學習如何使用著色器代碼為遊戲或實時應用程序創建視覺效果的任何人。假設你已經知道如何編寫一些簡單的C 代碼,但這就是你閱讀《Shader開發實戰》之前需要掌握的全部背景知識。將解釋我們所需的所有數學運算(你會驚訝地發現其中的數學運算很少),並從3D網格開始,分解將使用的每種圖形技術。如果你對C 有點生疏,那也沒問題!由於《Shader開發實戰》的重點是著色器開發,因此根本不會編寫太多的C 代碼,並且我們即使要寫也將保持盡量簡單短小,不給讀者增加額外的負擔。
0.2 如何使用《Shader開發實戰》
第1~12章的重點是著色器技術的教學和介紹新的圖形概念。如果你完全是初學者,建議你從第1章開始,並按順序閱讀所有內容。每章都基於之前的內容,因此,如果你跳過太多內容,就有可能終迷失方向。
如果你已經掌握了一些著色器開發知識,那麼直接跳到你以前從未學過的章節可能會更有趣。
第13~15章涉及調試和優化著色器代碼。如果你是因為項目以10fps的速度運行而選擇閱讀《Shader開發實戰》,並且需要對其進行修復,那麼可能更值得直接跳到那裡去解決當前碰到的問題。否則,你可能會因為前幾章的輕鬆和緩慢的節奏而感到沮喪。
第16~18章討論了如何在當今使用的3種流行的引擎中實現《Shader開發實戰》中所教的概念:Unity、Unreal Engine 4和Godot。建議你將這些保留到後,以準備將《Shader開發實戰》中講授的概念應用於你的項目中。
後,《Shader開發實戰》結尾處的附錄中有一些重要的代碼片段,這對於《Shader開發實戰》中的某些示例是必需的。這些代碼片段不是著色器代碼,因此不會對其進行詳細說明。
如果你在沒有互聯網連接的情況下閱讀《Shader開發實戰》,則需要參考附錄中的代碼,以便跟隨後續章節中的示例內容進行學習。章節的內容將告訴你何時需要那些代碼。
0.3 示例代碼約定
《Shader開發實戰》使用了大量示例代碼。為了使討論代碼更容易,這些示例均使用編號進行了注釋,如下所示:

int main(){
return 0; ?
}

行?引用了返回0的代碼行。
0.4 軟件要求
由於我們將使用一個名為openFrameworks的開源框架(默認情況下使用C 14),因此,如果你擁有能夠支持C 14的編譯器,那麼你的編程生活將為輕鬆。我們不會使用任何C 14功能,但是框架需要在幕後使用它們。如果你使用的是openFrameworks支持的IDE,你的編程生活也會更加輕鬆。幸運的是,支持openFrameworks的IDE很多,當完成所有設置後,你就可以自由選擇你想要的IDE。
後,我們將使用OpenGL運行所有著色器。OpenGL是一個“渲染API”,這是用來與圖形卡(GPU)進行通信的一組函數。有很多不同的API供你選擇,但OpenGL的優勢是可在盡可能廣泛的硬件上運行,並可與openFrameworks很好地集成。你應該確保GPU至少支持OpenGL 4.1,這是《Shader開發實戰》假定你正在使用的。從OS X High Sierra開始,蘋果公司已不推薦在其臺式PC上使用OpenGL,這意味著如果你在Mac上學習《Shader開發實戰》,則《Shader開發實戰》中的示例可能無法正常運行。

目次

第1章 初識遊戲圖形 1
1.1 什麼是渲染 1
1.2 網格是什麼 2
1.3 向量入門 3
1.4 在計算機圖形學中定義顏色 7
1.5 渲染管線 8
1.6 著色器是什麼 10
1.7 小結 11
第2章 個著色器 13
2.1 在Windows上安裝 13
2.2 創建項目 14
2.3 創建個三角形 15
2.4 個頂點著色器 17
2.4.1 #version預處理器指令 18
2.4.2 GLSL的in關鍵字 18
2.4.3 GLSL的vec數據類型 18
2.4.4 寫入gl_Position 19
2.4.5 歸一化的設備坐標 19
2.5 個片元著色器 20
2.6 在項目中使用著色器 21
2.7 使用頂點屬性添加顏色 23
2.8 片元插值介紹 25
2.9 統一變量介紹 26
2.10 小結 28
第3章 使用紋理 29
3.1 創建四邊形 30
3.2 UV坐標介紹 32
3.3 在著色器中使用紋理 35
3.4 滾動UV坐標 38
3.5 使用統一變量調節亮度 41
3.6 基本的顏色數學 44
3.7 使用mix指令混合紋理 47
3.8 小結 50
第4章 半透明與深度 51
4.1 設置示例項目 52
4.2 繪製小綠人 52
4.3 alpha測試和丟棄 54
4.4 使用深度測試構建場景 55
4.5 使用alpha混合創建雲朵 57
4.6 GLSL的min()函數和max()函數 59
4.7 alpha混合的工作原理 60
4.8 使用加法混合添加太陽光 62
4.9 使用精靈表製作動畫 66
4.10 小結 68
第5章 使物體動起來 71
5.1 讓角色向前走 72
5.2 在著色器代碼中縮放雲朵 74
5.3 使用頂點著色器旋轉物體 78
5.4 變換矩陣 81
5.5 為變換矩陣添加動態 84
5.6 單位矩陣 88
5.7 小結 89
第6章 攝像機和坐標 91
6.1 使用視圖矩陣 91
6.2 變換矩陣和坐標空間 95
6.3 攝像機視錐體和投影 100
6.4 小結 103
第7章 個3D項目 105
7.1 加載網格 105
7.2 創建透視攝像機 107
7.3 小結 110
第8章 漫反射光照 111
8.1 使用法線平滑(smooth)著色與平面(flat)著色 113
8.2 世界空間法線和swizzle 115
8.3 法線矩陣 116
8.4 為什麼光照計算需要法線 117
8.5 什麼是點積 118
8.6 點積著色 119
8.7 個平行光 121
8.8 創建輪廓光照效果 124
8.9 小結 129

第9章 個光照模型 131
9.1 鏡面光照 131
9.2 個鏡面著色器 133
9.3 組合漫反射和鏡面反射光照 135
9.4 環境光照 136
9.5 Phong光照模型 138
9.6 Blinn-Phong光照 139
9.7 使用紋理控制光照 141
9.8 小結 144
第10章 法線貼圖 147
10.1 什麼是法線貼圖 148
10.2 切線空間 149
10.3 使用切線向量 150
10.4 叉積 151
10.5 法線貼圖的工作原理 152
10.6 編寫水面著色器 155
10.7 法線貼圖的更多信息 161
10.8 小結 162
第11章 立方體貼圖和天空盒 163
11.1 什麼是立方體貼圖 163
11.2 在openFrameworks中加載立方體貼圖 164
11.3 在立方體上渲染立方體貼圖 165
11.4 天空盒 168
11.5 透視除法 170
11.6 天空盒和透視除法 170
11.7 完成天空盒 171
11.8 創建立方體貼圖反射 172
11.9 立方體貼圖的更多內容 174
11.10 小結 175
第12章 深入光照 177
12.1 定向光源 177
12.2 點光源 178
12.3 聚光燈 184
12.4 多光源 190
12.5 更靈活的多光源設置方法 196
12.6 更進一步 201
12.7 小結 202
第13章 剖析著色器性能 203
13.1 如何衡量性能 203
13.2 CPU時間與GPU時間 204
13.3 解決VSync(垂直同步) 204
13.4 設置評測用的計算機 207
13.5 剖析實踐 208
13.6 Nsight Graphics介紹 210
13.7 我們是受CPU還是GPU限制 212
13.8 捷徑 215
13.9 跟蹤問題著色器 215
13.10 小結 218
第14章 優化著色器 221
14.1 將計算移至頂點著色器 221
14.2 避免動態分支 223
14.3 使用MAD 225
14.4 優先使用GLSL函數而不是自己編寫的函數 226
14.5 使用Write Mask(寫掩碼) 227
14.6 避免不必要的overdraw(過度繪製) 228
14.7 終想法 229
14.8 小結 229
第15章 精度 231
15.1 什麼是浮點精度 231
15.2 案例研究:時間軸動畫 234
15.3 使用低精度變量 238
15.4 案例研究:點光源問題 239
15.5 小結 242
第16章 在Unity中編寫著色器 243
16.1 Unity中的著色器和材質 243
16.2 ShaderLab簡介 244
16.3 純色著色器 246
16.4 移植Blinn-Phong著色器 251
16.5 Unity中的半透明著色器 257
16.6 處理多個光源 258
16.7 將數據從C#傳遞到著色器代碼 262
16.8 下一步、ShaderGraph和未來 263
16.9 小結 263
第17章 在UE4中編寫著色器 265
17.1 著色器、材質和實例 265
17.2 使物體變紅 268
17.3 UE4 Material Node Graph基礎 270
17.4 製作邊緣光材質 272
17.5 Default Lit材質輸入 274
17.6 頂點著色器還是片元著色器 275
17.7 使用不同的著色模型 278
17.8 混合模式和紋理采樣節點 279
17.9 將數據從代碼傳遞到材質 280
17.10 所有這些與著色器代碼有何關聯 280
17.11 小結 281
第18章 在Godot中編寫著色器 283
18.1 著色器和材質 283
18.2 Godot著色語言 285
18.3 片元著色器輸出變量 287
18.4 製作自定義邊緣光著色器 288
18.5 自定義頂點著色器 292
18.6 UV動畫 292
18.7 半透明著色器和混合模式 293
18.8 將數據從代碼傳遞到著色器 295
18.9 未來:可視化著色器編輯 295
18.10 小結 296
附錄A 重要代碼片段 297
A.1 計算網格的切線 297
A.2 ofxEasyCubemap類 298

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 512
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區