第1章 著色器簡介 001
1.1 著色器、網格和計算對象 001
1.2 著色器編程 007
1.2.1 頂點和片元著色器 008
1.2.2 著色器編程語言 009
1.2.3 著色器工具Shader Graph 010
1.2.4 著色器的數學基礎 011
1.3 小結 016
第2章 Shader Graph簡介 017
2.1 創(chuàng)建Unity 3D項目 017
2.2 Unity編輯器 018
2.3 創(chuàng)建第一個著色器 019
2.4 創(chuàng)建材質 024
2.5 渲染管線 026
2.5.1 URP管線 026
2.5.2 將項目升級到URP 026
2.5.3 安裝URP包 027
2.5.4 設置URP資源 029
2.5.5 升級舊有材質 031
2.6 Shader Graph編輯器 032
2.6.1 Main Preview選項卡 033
2.6.2 Blackboard窗口 033
2.6.3 Graph Inspector 035
2.6.4 Master Stack 037
2.6.5 Vertex塊 038
2.6.6 Fragment塊 039
2.7 Shader Graph元素 053
2.7.1 Nodes 053
2.7.2 Properties 058
2.7.3 Sticky Notes 062
2.8 小結 062
第3章 常用節(jié)點 063
3.1 UV節(jié)點 065
3.2 One Minus節(jié)點 068
3.3 Add節(jié)點 068
3.4 Clamp節(jié)點 069
3.5 Multiply節(jié)點 070
3.6 Sine節(jié)點 071
3.7 Time節(jié)點 072
3.8 Remap節(jié)點 074
3.9 Lerp節(jié)點 074
3.10 Fraction節(jié)點 077
3.11 Step節(jié)點 079
3.12 SmoothStep節(jié)點 080
3.13 Power節(jié)點 081
3.14 Position節(jié)點 082
3.15 Dot Product節(jié)點 084
3.16 Posterize節(jié)點 085
3.17 Procedural Noise節(jié)點 086
3.17.1 Simple Noise節(jié)點 088
3.17.2 Gradient Noise節(jié)點 089
3.17.3 Voronoi Noise節(jié)點 089
3.18 Fresnel節(jié)點 092
3.19 小結 093
第4章 動態(tài)著色器 095
4.1 3D掃描線 098
4.1.1 使用Position節(jié)點顯示對象坐標 098
4.1.2 使用Split節(jié)點定義垂直漸變 100
4.1.3 使用Multiply節(jié)點和Fraction節(jié)點實現(xiàn)重復 101
4.1.4 動態(tài)效果:使用Time節(jié)點和Add節(jié)點 103
4.1.5 對比度調整:使用Power節(jié)點 104
4.1.6 添加自定義顏色 105
4.1.7 使用點積節(jié)點設置自定義方向 107
4.1.8 公開屬性 109
4.2 箭頭圖案 111
4.2.1 創(chuàng)建并設置Line Renderer 111
4.2.2 創(chuàng)建對角線圖案 114
4.2.3 使用Absolute節(jié)點創(chuàng)建垂直對稱 115
4.2.4 使用Fraction節(jié)點和Step節(jié)點為箭頭圖案創(chuàng)建清晰的邊緣 116
4.2.5 使箭頭在Line Renderer上滾動顯示 118
4.2.6 自定義箭頭圖案的顏色 119
4.3 消融效果 120
4.3.1 使用Gradient Noise節(jié)點創(chuàng)建噪聲紋理 120
4.3.2 添加噪聲紋理到Alpha輸入 122
4.3.3 使用Add節(jié)點實現(xiàn)逐漸消融的效果 122
4.3.4 動態(tài)PingPong消融效果 124
4.3.5 沿自定義方向的消融效果 125
4.3.6 創(chuàng)建帶顏色的溶解邊緣 126
4.4 全息投影著色器 129
4.4.1 使用Screen Position節(jié)點創(chuàng)建垂直漸變 129
4.4.2 使用Fraction節(jié)點創(chuàng)建重復圖案 131
4.4.3 使用Noise節(jié)點隨機化圖案 132
4.4.4 使用Add節(jié)點和Time節(jié)點創(chuàng)建動態(tài)圖案 134
4.4.5 為漸變全息線條添加顏色 135
4.4.6 通過Fresnel節(jié)點增強效果 136
4.4.7 使用Logic節(jié)點和Random節(jié)點創(chuàng)建閃爍效果 139
4.5 重構著色器 142
4.6 小結 144
第5章 Vertex著色器 145
5.1 程序性游魚動畫 146
5.1.1 導入并設置魚類網格 147
5.1.2 獲取小魚模型的朝向 149
5.1.3 使用正弦節(jié)點創(chuàng)建波形圖案 152
5.1.4 使波形模式動態(tài)化 153
5.1.5 沿指定軸變形網格 155
5.1.6 調整波形強度 158
5.2 體積雪效果 160
5.2.1 將3D模型導入場景 160
5.2.2 定義雪的方向遮罩 161
5.2.3 沿法線擠出幾何體 164
5.2.4 修復破損的擠出網格 168
5.2.5 添加遮罩顏色 170
5.2.6 添加發(fā)光的菲涅耳效果 172
5.3 從黑洞中生成對象 174
5.3.1 完成準備工作 175
5.3.2 使頂點向網格中心坍縮 175
5.3.3 設置坍縮的目標奇點 177
5.3.4 根據頂點與目標奇點的距離來坍縮頂點 179
5.3.5 添加坍縮發(fā)光顏色 182
5.4 小結 184
第6章 扭曲著色器 185
6.1 冰紋理折射 187
6.1.1 準備工作 187
6.1.2 修改場景顏色以創(chuàng)建扭曲效果 188
6.1.3 使用冰面紋理修改場景顏色 188
6.1.4 使用冰面紋理修改場景顏色 192
6.1.5 利用冰面紋理和顏色自定義著色器 195
6.2 黑洞扭曲效果 197
6.2.1 創(chuàng)建黑洞中心 198
6.2.2 使用粒子系統(tǒng)實現(xiàn)廣告牌效果 200
6.2.3 使用Twirl節(jié)點創(chuàng)建螺旋紋理 205
6.2.4 使用螺旋紋理修改場景顏色 207
6.2.5 為螺旋紋理創(chuàng)建遮罩 209
6.2.6 為螺旋紋理添加動態(tài)旋轉 212
6.3 小結 214
第7章 高級著色器 215
7.1 卡通風格的水著色器 215
7.1.1 準備工作 216
7.1.2 訪問深度緩沖區(qū)以使用Scene Depth節(jié)點創(chuàng)建泡沫 218
7.1.3 創(chuàng)建水波光影 224
7.1.4 使用SubGraph復用節(jié)點組 228
7.1.5 利用徑向剪切添加徑向變形 230
7.1.6 為Voronoi單元添加移動效果 232
7.1.7 添加額外的光影層 234
7.1.8 為水波光影紋理添加顏色 237
7.1.9 使水面頂點發(fā)生變形 239
7.2 虹彩泡泡著色器 245
7.2.1 準備工作 246
7.2.2 創(chuàng)建和設置反射 247
7.2.3 創(chuàng)建虹彩動態(tài)圖案 255
7.2.4 添加薄膜干涉漸變 257
7.2.5 添加邊緣透明度和顏色 261
7.3 小結 268
第8章 交互式雪地效果 269
8.1 配置場景 269
8.2 賦予角色移動能力 273
8.2.1 設置IDE 274
8.2.2 創(chuàng)建角色移動腳本 277
8.3 創(chuàng)建雪地平面3D對象 281
8.3.1 創(chuàng)建細分平面 282
8.3.2 將平面導入Unity 288
8.4 創(chuàng)建交互式雪地Shader Graph 290
8.4.1 Shader Graph設置 290
8.4.2 利用噪聲進行位移 291
8.4.3 為雪地添加顏色和遮蔽效果 293
8.5 與雪地交互 295
8.5.1 使用渲染器紋理 295
8.5.2 繪制角色的移動路徑 298
8.5.3 僅記錄角色的移動路徑 301
8.5.4 更新Main Camera的剔除遮罩 303
8.6 將渲染器紋理用作位移遮罩 304
8.7 小結 308