注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)行業(yè)軟件及應(yīng)用Unity 3D ShaderLab開發(fā)實(shí)戰(zhàn)詳解

Unity 3D ShaderLab開發(fā)實(shí)戰(zhàn)詳解

Unity 3D ShaderLab開發(fā)實(shí)戰(zhàn)詳解

定 價(jià):¥69.00

作 者: 郭浩瑜 著
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 計(jì)算機(jī)與互聯(lián)網(wǎng) 專用軟件

ISBN: 9787115338907 出版時(shí)間: 2014-04-01 包裝: 平裝
開本: 16開 頁數(shù): 309 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《Unity 3D ShaderLab開發(fā)實(shí)戰(zhàn)詳解》全面講解了Unity Shader渲染的實(shí)戰(zhàn)技術(shù),全書分為五篇共33章,主要內(nèi)容為:Shader在3D游戲中的作用、Shader的實(shí)例化、Shader的實(shí)現(xiàn)語言等;Unity中Shader的形態(tài)、SubShader的重要標(biāo)簽、可編程Shader、Surface Shader;Shader中用到的各種空間的概念和Shader中的投影矩陣;基本的光照模型;第一個(gè)被執(zhí)行的Pass,包括渲染路徑和Pass的LightMode標(biāo)簽;VertexLit渲染路徑,包括頂點(diǎn)照明和Unity存放光源的方式;Forward渲染路徑;基于光照貼圖的烘焙照明;基于LightProbes的照明;平面陰影;球體陰影;體積陰影;映射陰影;內(nèi)置的陰影;Pass的通用指令開關(guān);固定管線;Surface Shader;凹凸材質(zhì);卡通材質(zhì);鏡面材質(zhì);半透明材質(zhì);體積霧;Wrap Model新解;面積光;體積光;材質(zhì)替代渲染;后期效果;地形;投影;Shader的組織和復(fù)用。和你必須知道的渲染概念及基于渲染路徑的優(yōu)化、移動(dòng)平臺(tái)上的優(yōu)化等實(shí)戰(zhàn)內(nèi)容,是不可多得的實(shí)戰(zhàn)教程。《Unity 3D ShaderLab開發(fā)實(shí)戰(zhàn)詳解》適合移動(dòng)開發(fā)者、游戲開發(fā)者、程序員閱讀,可作為大專院校相關(guān)專業(yè)的師生用書,也可當(dāng)作培訓(xùn)學(xué)校的教材。

作者簡(jiǎn)介

暫缺《Unity 3D ShaderLab開發(fā)實(shí)戰(zhàn)詳解》作者簡(jiǎn)介

圖書目錄

目 錄
第1篇 初識(shí)廬山真面目——Unity 3D Shader
第1章 Shader(著色器)的概念和在3D游戲中的作用 2
1.1 Shader的概念 2
1.1.1 虛擬世界中的光明和色彩 2
1.1.2 游戲開發(fā)人員的終點(diǎn) 2
1.1.3 Shader(著色器)簡(jiǎn)史 2
1.2 Shader的實(shí)例化 3
1.3 Shader的實(shí)現(xiàn)語言 3
1.3.1 GPU上的編程 3
1.3.2 Unity中的著色器編程 3
第2章 Unity中Shader(著色器)的形態(tài) 4
2.1 Unity通過ShaderLab來組織Shader 4
2.1.1 關(guān)鍵字Shader 4
2.1.2 使用SubShader組織Shader的不同實(shí)現(xiàn) 4
2.1.3 SubShader的重要標(biāo)簽 4
2.1.4 SubShader中的Pass塊 5
2.1.5 Pass塊的標(biāo)簽及其名字的意義 5
2.1.6 使用FallBack保證Shader的廣泛適應(yīng)性 6
2.2 Unity的ShaderLab所支持的Shader編程語言 6
2.3 Unity中Shader的3種形態(tài) 6
2.3.1 固定管線 6
2.3.2 可編程Shader 7
2.3.3 ShaderLab的驕傲:Surface Shader 8
2.4 Shader的數(shù)據(jù)接口:屬性和uniform變量 8
2.4.1 在Properties塊中定義屬性 8
2.4.2 通過圖形界面操作屬性 9
2.4.3 通過腳本操控屬性 9
2.4.4 矩陣:不能在屬性塊定義的變量 10
2.4.5 在Cg代碼中使用屬性 10
第3章 Shader(著色器)中用到的各種空間概念 11
3.1 模型空間 11
3.1.1 為什么用模型空間 11
3.1.2 在腳本和Shader中進(jìn)出模型空間 11
3.2 世界坐標(biāo)空間 11
3.2.1 統(tǒng)一表達(dá):世界坐標(biāo)空間 11
3.2.2 在腳本和Shader中進(jìn)出世界坐標(biāo)空間 12
3.3 視空間 12
3.3.1 渲染的需要:視空間 12
3.3.2 在腳本和Shader中進(jìn)出視空間 12
3.4 空間的一塊:視錐體 12
3.5 剪切空間 13
3.5.1 投影 13
3.5.2 腳本和Shader中的投影矩陣 13
第4章 基本的光照模型 14
4.1 光源對(duì)物體照明的分類 14
4.1.1 間接照明 14
4.1.2 直接照明 14
4.2 照明的計(jì)算方式:光照模型 14
4.2.1 漫反射和Lambert 14
4.2.2 鏡面高光和Phong 15
4.2.3 半角向量和BlinnPhong 16
第2篇 讓你的應(yīng)用更炫彩——Unity中的照明
第5章 第一個(gè)被執(zhí)行的Pass 18
5.1 不同的LightMode被選擇的順序 18
5.1.1 渲染路徑和Pass的LightMode標(biāo)簽 18
5.1.2 設(shè)計(jì)可以檢測(cè)渲染路徑的材質(zhì) 18
5.1.3 設(shè)計(jì)便于檢測(cè)渲染路徑的場(chǎng)景 21
5.1.4 VertexLit渲染路徑下Pass的執(zhí)行 21
5.1.5 Forward渲染路徑下Pass的執(zhí)行 21
5.1.6 Deferred渲染路徑下Pass的執(zhí)行 21
5.1.7 不同渲染路徑下的Pass執(zhí)行規(guī)則總結(jié) 22
5.2 3個(gè)渲染路徑之外 22
5.2.1 LightMode的其他值 22
5.2.2 設(shè)計(jì)檢測(cè)用的材質(zhì) 23
5.2.3 Always類型的Pass在3種渲染路徑下的執(zhí)行 24
5.2.4 LightMode的默認(rèn)值及其在3種渲染路徑下的執(zhí)行 25
第6章 VertexLit渲染路徑 26
6.1 頂點(diǎn)照明 26
6.1.1 什么是頂點(diǎn)照明 26
6.1.2 存取光源的變量 26
6.2 頂點(diǎn)照明和Unity存放光源的第一種方式 27
6.2.1 用于調(diào)試輸出的材質(zhì) 27
6.2.2 設(shè)計(jì)用于檢測(cè)的場(chǎng)景 27
6.2.3 在Vertex Pass中的檢測(cè)結(jié)果 28
6.2.4 無效數(shù)據(jù) 28
6.3 頂點(diǎn)照明和Unity存放光源的第二種方式 29
6.3.1 用于調(diào)試輸出的材質(zhì) 29
6.3.2 設(shè)計(jì)用于檢測(cè)的場(chǎng)景 30
6.3.3 在Vertex Pass中的檢測(cè)結(jié)果 30
6.4 頂點(diǎn)照明和Unity存放光源的第三種方式 31
6.4.1 Unity為Vertex Pass準(zhǔn)備的光源 31
6.4.2 設(shè)計(jì)用于檢測(cè)的場(chǎng)景 31
6.4.3 頂點(diǎn)照明中的點(diǎn)光源 32
6.4.4 計(jì)算頂點(diǎn)照明的ShadeVertexLights函數(shù) 32
6.4.5 頂點(diǎn)照明中的Pixel光源 33
6.4.6 頂點(diǎn)照明中的平行光 33
6.4.7 頂點(diǎn)照明中的燈光信息小結(jié) 35
6.4.8 一個(gè)頂點(diǎn)照明的實(shí)現(xiàn)例子 35
第7章 Forward渲染路徑 37
7.1 ForwardBase和ForwardAdd 37
7.1.1 設(shè)計(jì)檢測(cè)用的場(chǎng)景和材質(zhì) 37
7.1.2 ForwardBase和ForwardAdd的表現(xiàn) 39
7.2 Forward渲染路徑下的重要光源 39
7.2.1 設(shè)計(jì)檢測(cè)用的材質(zhì) 39
7.2.2 不存在Pixel光源時(shí)的情況 40
7.2.3 存在Pixel平行光時(shí)的情況 40
7.2.4 存在Pixel點(diǎn)光源時(shí)的情況 40
7.2.5 有多種類型的Pixel光源時(shí)的情況 41
7.2.6 Forward渲染路徑下的Pixel光源小結(jié) 41
7.3 重要光源在ForwardAdd內(nèi)的執(zhí)行 41
7.3.1 設(shè)計(jì)用來檢測(cè)Pixel光源的材質(zhì) 41
7.3.2 設(shè)計(jì)檢測(cè)用的場(chǎng)景 44
7.3.3 檢測(cè)結(jié)果:ForwardAdd如何被執(zhí)行 44
7.4 ForwardBase和Unity存放光源的第一種方式 45
7.4.1 設(shè)計(jì)檢測(cè)用的材質(zhì) 45
7.4.2 第一種方式內(nèi)的Vertex點(diǎn)光源 46
7.4.3 第一種方式內(nèi)的平行光 46
7.4.4 第一種方式內(nèi)的重要Pixel點(diǎn)光源 46
7.4.5 只有ForwardBase時(shí)的情況總結(jié) 47
7.4.6 ForwardAdd對(duì)ForwardBase內(nèi)光源的影響 47
7.4.7 有ForwardAdd時(shí)存放光源數(shù)據(jù)第一種方式的總結(jié) 49
7.5 ForwardAdd和Unity存放光源的第一種方式 49
7.5.1 設(shè)計(jì)檢測(cè)用的材質(zhì) 49
7.5.2 設(shè)計(jì)檢測(cè)用的場(chǎng)景 50
7.5.3 ForwardAdd內(nèi)的Pixel光源 50
7.5.4 ForwardAdd內(nèi)的平行光 51
7.5.5 數(shù)組變量unity_4LightPos的使用情況分析 51
7.6 Forward渲染路徑和Unity存放光源的第三種方式 51
7.6.1 檢測(cè)ForwardBase內(nèi)情況的材質(zhì) 51
7.6.2 檢測(cè)結(jié)果:第三種方式不包含對(duì)ForwardBase有效的數(shù)據(jù) 52
7.6.3 檢測(cè)結(jié)果:第三種方式不包含對(duì)ForwardAdd有效的數(shù)據(jù) 52
7.7 Forward渲染路徑總結(jié) 53
7.7.1 Forward渲染路徑下材質(zhì)的適應(yīng)性 53
7.7.2 Unity如何為Forward渲染路徑設(shè)置光源 53
第8章 基于光照貼圖的烘焙照明 54
8.1 單光照貼圖和VertexLit渲染路徑 54
8.1.1 測(cè)試烘焙的場(chǎng)景 54
8.1.2 烘焙場(chǎng)景中使用的材質(zhì) 55
8.1.3 烘焙的前提:靜態(tài)物體 55
8.1.4 如何在烘焙中使用自發(fā)光材質(zhì) 55
8.1.5 烘焙之后靜態(tài)物體和非靜態(tài)物體的實(shí)時(shí)照明 57
8.1.6 應(yīng)用光照貼圖到VertexLit渲染路徑下的材質(zhì)中 57
8.1.7 通過自己的材質(zhì)改變實(shí)時(shí)光源對(duì)烘焙后物體的照明 59
8.2 在效果和性能間進(jìn)行權(quán)衡 60
8.2.1 影響全局的Resolution選項(xiàng) 60
8.2.2 影響單個(gè)物體的Scale In Lightmap選項(xiàng) 61
8.3 單光照貼圖和Forward渲染路徑 62
8.3.1 單光照貼圖在VertexLit和Forward下面的不同表現(xiàn) 62
8.3.2 準(zhǔn)備可應(yīng)用于烘焙的自發(fā)光材質(zhì) 62
8.3.3 在ForwardBase內(nèi)計(jì)算光照貼圖 64
8.3.4 Forward渲染路徑下烘焙之后的實(shí)時(shí)照明 65
8.4 單光照貼圖在Deferred渲染路徑下的實(shí)時(shí)陰影 67
8.5 雙光照貼圖和Deferred渲染路徑 67
8.5.1 全局GI、間接照明以及雙光照貼圖 67
8.5.2 混合雙光照貼圖和實(shí)時(shí)照明 67
8.5.3 觀察混合過程 69
8.5.4 雙光照貼圖的使用限制 70
8.6 雙光照貼圖和Forward渲染路徑 71
8.7 方向光照貼圖和Forward渲染路徑 71
8.7.1 烘焙后的凹凸問題 71
8.7.2 方向光照貼圖(Direction Lightmaps)和凹凸貼圖 72
第9章 基于LightProbes的照明 74
9.1 初識(shí)LightProbes 74
9.1.1 LightProbes照明的優(yōu)點(diǎn) 74
9.1.2 檢測(cè)LightProbes照明的場(chǎng)景 74
9.1.3 使用Light Probe Group進(jìn)行管理 76
9.1.4 烘焙場(chǎng)景光照信息到LightProbes中 76
9.1.5 對(duì)比Light Probes照明和實(shí)時(shí)照明 77
9.2 放置LightProbes的注意事項(xiàng) 77
9.2.1 必須形成一個(gè)體積 77
9.2.2 單個(gè)Light Probe必須處于采樣光源的照射范圍 77
9.3 動(dòng)態(tài)更新LightProbes 78
9.3.1 跟新數(shù)據(jù)的注意事項(xiàng) 78
9.3.2 更改不同通道的Coefficient 78
9.4 照明采樣的Archor Override 79
9.4.1 基于線性插值的采樣 79
9.4.2 改變默認(rèn)的插值位置 79
9.5 LightProbes照明和陰影 80
9.5.1 LightProbes和光照貼圖的異同 80
9.5.2 烘焙陰影時(shí)可能會(huì)犯的錯(cuò)誤 80
9.5.3 將靜態(tài)物體的陰影烘焙到Light Probe上 81
9.5.4 LightProbes照明和實(shí)時(shí)陰影的混合 82
9.6 烘焙一個(gè)色彩豐富的場(chǎng)景 82
9.7 在自己的材質(zhì)中使用LightProbes 83
9.7.1 為Forward渲染路徑的材質(zhì)計(jì)算LightProbes 84
9.7.2 使用ShadeSH9函數(shù) 84
9.7.3 在一個(gè)Surface Shader中進(jìn)行計(jì)算 85
第3篇 使應(yīng)用更逼真——Shadows(陰影)
第10章 平面陰影 88
10.1 平行光對(duì)平面的投影 88
10.1.1 對(duì)平行光投影的考慮 88
10.1.2 進(jìn)出陰影接受平面的矩陣 88
10.1.3 使用三角形相似計(jì)算陰影 89
10.2 點(diǎn)光源對(duì)平面的投影 90
10.3 陰影的淡出 91
10.3.1 有效利用計(jì)算平面陰影過程中的數(shù)據(jù) 91
10.3.2 潛在的問題 91
第11章 球體陰影 92
11.1 平行光對(duì)球體的投影 92
11.1.1 投影球體的信息 92
11.1.2 使用相似三角形計(jì)算投影 92
11.2 陰影的淡入/淡出 93
11.3 點(diǎn)光源對(duì)球體的投影 94
第12章 體積陰影 95
12.1 將頂點(diǎn)沿某一方向擠出 95
12.1.1 在Vertex函數(shù)中操作 95
12.1.2 判斷頂點(diǎn)是向光還是背光 95
12.2 從Volumes中找到陰影區(qū)域 96
12.2.1 兩次擠出 96
12.2.2 計(jì)算出陰影區(qū)域 97
12.2.3 渲染陰影 97
12.2.4 需要注意的問題 98
第13章 陰影映射 99
13.1 燈光空間和相機(jī)空間 99
13.1.1 觀察兩個(gè)空間 99
13.1.2 兩個(gè)視角的Z深度 99
13.1.3 渲染Z深度的材質(zhì) 99
13.2 投射Z深度 100
13.2.1 準(zhǔn)備燈光視角的投影矩陣 100
13.2.2 在材質(zhì)中計(jì)算投影后的Z深度 101
13.3 比較Z深度 103
13.3.1 比較Z深度的材質(zhì) 103
13.3.2 Z精度引起的問題 104
13.3.3 增加Z的精度 104
13.3.4 對(duì)Z值進(jìn)行偏移 105
第14章 內(nèi)置的陰影 107
14.1 投射陰影 107
14.1.1 使用ShadowCaster投射陰影 107
14.1.2 ShadowCaster里都做了什么 108
14.1.3 寫一個(gè)自己的ShadowCaster 108
14.1.4 改變ShadowCaster的行為 109
14.1.5 陰影和FallBack機(jī)制 110
14.2 接受陰影 111
14.3 Surface Shader和陰影 112
14.3.1 Surface Shader的陰影和Fallback 112
14.3.2 Surface Shader里的燈光參數(shù)和陰影 112
14.3.3 Surface Shader對(duì)Forward渲染路徑下陰影的支持 112
第4篇 Unity中的各種Shader
第15章 Pass的通用指令開關(guān) 116
15.1 使用LOD在運(yùn)行時(shí)決定材質(zhì) 116
15.1.1 材質(zhì)的LOD 116
15.1.2 運(yùn)行時(shí)設(shè)定單個(gè)材質(zhì)的LOD 116
15.1.3 設(shè)定全局所有材質(zhì)的LOD 117
15.1.4 Unity內(nèi)置的LOD層級(jí) 118
15.2 渲染隊(duì)列 118
15.2.1 標(biāo)簽隊(duì)列和渲染順序 118
15.2.2 渲染隊(duì)列和ZTest判斷 120
15.2.3 Unity中內(nèi)置的渲染隊(duì)列 120
15.3 透明的產(chǎn)生 120
15.3.1 Alpha檢測(cè)和8種比較條件 120
15.3.2 動(dòng)態(tài)生成AlphaTest的材質(zhì) 120
15.3.3 動(dòng)態(tài)生成Shader的內(nèi)容 121
15.3.4 結(jié)合AlphaTest和Blend操作 122
15.4 混合操作 123
15.4.1 什么是混合(Blend)操作 123
15.4.2 動(dòng)態(tài)生成測(cè)試用的材質(zhì) 123
15.4.3 生成Shader的代碼 124
15.4.4 檢測(cè)不同的混合操作 125
15.4.5 BlendOp選項(xiàng) 126
15.4.6 動(dòng)態(tài)生成帶BlendOp選項(xiàng)的材質(zhì) 126
15.4.7 生成Shader的代碼 127
15.4.8 檢測(cè)BlendOp操作 127
15.5 使用通道遮罩(ColorMask) 128
15.5.1 ColorMask的作用 128
15.5.2 檢測(cè)ColorMask 128
15.5.3 一個(gè)使用ColorMask的例子 129
15.6 ZTest(深度測(cè)試) 130
15.6.1 存取場(chǎng)景的ZTest 130
15.6.2 RenderType標(biāo)簽和生成ZTest的關(guān)聯(lián) 130
15.6.3 內(nèi)置RenderType的值 131
15.6.4 Forward渲染路徑下的ZTest 131
15.6.5 Deferred渲染路徑下的ZTest 132
15.7 對(duì)Z深度的偏移 134
15.7.1 干預(yù)正常ZTest的手段 134
15.7.2 動(dòng)態(tài)改變Offset的參數(shù) 134
15.7.3 觀察Offset在不同應(yīng)用條件下的表現(xiàn) 135
15.8 面的剔除操作 135
15.9 自動(dòng)貼圖坐標(biāo)的生成 136
15.9.1 ObjectLinear和等價(jià)的Cg代碼 136
15.9.2 EyeLinear和等價(jià)的Cg代碼 137
15.9.3 SphereMap和等價(jià)的Cg代碼 138
15.9.4 CubeReflect和等價(jià)的Cg代碼 139
15.9.5 CubeNormal和等價(jià)的Cg代碼 139
15.10 抓屏操作 140
15.10.1 如何使用GrabPass 140
15.10.2 一個(gè)模擬曲面反射的例子 141
15.11 Fog(霧效) 142
15.11.1 Fog和Unity的3種實(shí)現(xiàn) 142
15.11.2 材質(zhì)中對(duì)Fog的控制 142
15.11.3 實(shí)現(xiàn)自己的Fog 143
第16章 固定管線 146
16.1 Unity中固定管線的基本形態(tài) 146
16.1.1 基本形態(tài) 146
16.1.2 與照明相關(guān)的Material塊 147
16.1.3 處理紋理的SetTexture塊 147
16.1.4 基本形態(tài)的另一種寫法 147
16.1.5 Combine語句 147
16.2 使用頂點(diǎn)色 148
16.2.1 使用ColorMaterial 148
16.2.2 使用Bind 148
16.3 在固定管線中使用光照貼圖 149
16.4 嵌套Cg代碼 149
第17章 Surface Shader 151
17.1 Surface Shader的適應(yīng)性 151
17.1.1 一個(gè)分析策略 151
17.1.2 VertexLit渲染路徑的檢測(cè)材質(zhì) 151
17.1.3 Forward渲染路徑的檢測(cè)材質(zhì) 152
17.1.4 測(cè)試用的場(chǎng)景 153
17.1.5 檢測(cè)結(jié)果:不獨(dú)立支持VertexLit渲染路徑 153
17.1.6 檢測(cè)結(jié)果:對(duì)Forward渲染路徑的有條件支持 153
17.2 Surface Shader和Deferred渲染路徑 154
17.2.1 設(shè)計(jì)檢測(cè)的策略和材質(zhì) 154
17.2.2 檢測(cè)結(jié)果:Surface Shader對(duì)Deferred渲染路徑的支持條件 156
17.3 Forward渲染路徑下的Surface Shader 157
17.3.1 Cg代碼完全體 157
17.3.2 最簡(jiǎn)形式的等價(jià)Cg代碼 158
17.3.3 Cg代碼對(duì)光照貼圖的支持 163
17.3.4 一個(gè)檢測(cè)生成的ForwardBase場(chǎng)景 164
17.3.5 自動(dòng)生成的ForwardAdd 165
17.3.6 參數(shù)noambient和novertexlights 168
17.3.7 參數(shù)approxview和halfasview 168
17.3.8 Forward渲染路徑下的透明和混合模式參數(shù) 169
17.3.9 加強(qiáng)Forward渲染路徑下效果的參數(shù) 171
17.4 Deferred渲染路徑下的Surface Shader 174
17.4.1 自動(dòng)生成的PrePassBase和PrePassFinal 174
17.4.2 PrePassBase都做了什么 177
17.4.3 _LightBuffer里面的東西 179
17.4.4 計(jì)算_LightBuffer所使用的材質(zhì) 180
17.4.5 PrePassFinal的工作 185
17.4.6 FallBack和Surface Shader的陰影 186
17.4.7 精簡(jiǎn)用的參數(shù) 187
17.4.8 Vertex、finalcolor函數(shù)和addshadow選項(xiàng) 188
17.4.9 Deferred模式下的材質(zhì)透明 188
17.4.10 decal參數(shù) 189
第18章 凹凸材質(zhì) 190
18.1 切空間 190
18.2 凹凸貼圖 190
18.2.1 計(jì)算到切空間的矩陣 190
18.2.2 Unity中法線貼圖的壓縮格式 191
18.2.3 使用切空間矩陣的另一種方法 191
18.2.4 Unity對(duì)切空間計(jì)算的支持 192
18.2.5 解壓縮法線貼圖的函數(shù) 193
18.2.6 在切空間中計(jì)算高光 193
18.2.7 Surface Shader和切空間 194
18.3 Parallax Mapping(視差映射) 194
18.3.1 Parallax Mapping及其別名 194
18.3.2 一個(gè)使用灰度圖來偏移UV的材質(zhì) 195
18.3.3 結(jié)合法線貼圖 196
18.3.4 用視角來決定UV偏移 197
18.3.5 一個(gè)完整的實(shí)現(xiàn) 197
18.4 Relief Mapping(地勢(shì)映射) 198
18.4.1 Parallax Mapping的極限和Relief Mapping的面世 198
18.4.2 Relief Mapping的算法 199
18.4.3 一個(gè)完整的實(shí)現(xiàn) 200
第19章 卡通材質(zhì) 203
19.1 描邊 203
19.1.1 沿法線擠出輪廓 203
19.1.2 容易產(chǎn)生的問題 204
19.1.3 在視空間中擠出 205
19.1.4 頂點(diǎn)位置的另一個(gè)含義 206
19.1.5 調(diào)和法線和頂點(diǎn)方向 207
19.1.6 判斷頂點(diǎn)的指向 207
19.1.7 不僅僅是輪廓 208
19.1.8 通過Z偏移來描邊 210
19.2 卡通著色 211
19.2.1 對(duì)光照進(jìn)行離散化 211
19.2.2 使用2D貼圖重新映射光照 213
第20章 鏡面材質(zhì) 215
20.1 鏡像一個(gè)相機(jī) 215
20.1.1 鏡子里的世界和我的計(jì)劃 215
20.1.2 在腳本中對(duì)位置和角度進(jìn)行鏡像 215
20.2 使用鏡像相機(jī)來渲染、投影 216
20.2.1 鏡面材質(zhì)的工作:采樣被投影的渲染結(jié)果 216
20.2.2 腳本的工作:渲染鏡像相機(jī)和設(shè)置投影矩陣 217
20.3 鏡像相機(jī)的近剪切平面和傾斜矩陣 218
20.3.1 調(diào)節(jié)近剪切平面 218
20.3.2 使用傾斜矩陣微調(diào)視錐體 218
第21章 半透明材質(zhì) 219
21.1 什么是半透明材質(zhì) 219
21.2 用簡(jiǎn)單來表達(dá)復(fù)雜 219
第22章 體積霧 221
22.1 距離的表達(dá):相對(duì)于背景的體積霧 221
22.1.1 需要計(jì)算的東西 221
22.1.2 使用一個(gè)Pass來完成所有的計(jì)算 221
22.1.3 黑色的霧效 222
22.2 厚度的表達(dá):物體形體的體積霧 223
22.2.1 必須計(jì)算的兩個(gè)數(shù)據(jù) 223
22.2.2 在Unity中使用一個(gè)Pass來完成所有計(jì)算 223
第23章 Wrap Model新解 226
23.1 一個(gè)可調(diào)節(jié)的Wrap光照模型 226
23.2 另一種實(shí)現(xiàn)途徑 226
23.2.1 基于不同構(gòu)想的Wrap 226
23.2.2 實(shí)現(xiàn)這種構(gòu)想 227
23.2.3 進(jìn)一步的變通 227
第24章 面積光 228
24.1 線光源 228
24.1.1 點(diǎn),線,面 228
24.1.2 如何理解一個(gè)線光源 228
24.1.3 通過腳本傳遞線光源的幾何信息 228
24.1.4 計(jì)算線光源的照明 229
24.1.5 線光源的輻射方向 230
24.1.6 線光源的衰減 230
24.2 面積光源 231
24.2.1 面積光和線光源的不同 231
24.2.2 通過腳本設(shè)定面積光的幾何特性 231
24.2.3 計(jì)算面積光 232
24.2.4 和默認(rèn)照明的整合 234
第25章 體積光 235
25.1 體積光和體積陰影 235
25.1.1 什么是體積光 235
25.1.2 體積光和體積陰影的關(guān)系 235
25.2 實(shí)現(xiàn)體積光 235
25.2.1 在Shader中表現(xiàn)體積光 235
25.2.2 腳本的幫助 236
第26章 材質(zhì)替代渲染 238
26.1 相機(jī)(Camera)和渲染消息 238
26.1.1 相機(jī)的渲染消息發(fā)送順序 238
26.1.2 物體的渲染消息發(fā)送順序 239
26.1.3 相機(jī)和物體的渲染消息先后順序 240
26.1.4 存在兩個(gè)相機(jī)時(shí)的渲染消息 240
26.1.5 最后能改變Cull操作結(jié)果的地方 241
26.1.6 最后能設(shè)置材質(zhì)數(shù)據(jù)的地方 241
26.2 相機(jī)(Camera)的渲染方法 242
26.2.1 Render方法 242
26.2.2 RenderWithShader方法 243
26.3 如何使用RenderWithShader方法 245
26.3.1 標(biāo)簽值不同的5個(gè)Shader 245
26.3.2 調(diào)用RenderWithShader方法的腳本 246
26.3.3 替換用的5個(gè)材質(zhì) 247
26.3.4 檢測(cè)RenderWithShader方法的效果 248
26.3.5 使用SubShader組織替代材質(zhì) 249
26.3.6 如何設(shè)置替代材質(zhì)的屬性 249
26.3.7 將結(jié)果輸出到屏幕上 250
26.4 SetReplacementShader和ResetReplacementShader 251
第27章 后期效果 252
27.1 Graphics的兩個(gè)方法 252
27.1.1 與相機(jī)渲染方法的不同之處 252
27.1.2 Blit方法的簡(jiǎn)單示例 252
27.1.3 使用BlitMultiTap方法進(jìn)行多重采樣 254
27.2 一個(gè)簡(jiǎn)單的調(diào)色 257
27.2.1 調(diào)色用的腳本 257
27.2.2 調(diào)色用的材質(zhì) 258
27.2.3 更高效的做法 259
27.3 景深 261
27.3.1 用于模糊圖像的材質(zhì) 261
27.3.2 進(jìn)行縱橫兩次模糊操作 262
27.3.3 進(jìn)行混合操作的腳本 263
27.3.4 進(jìn)行混合操作的材質(zhì) 263
27.3.5 提供一個(gè)可調(diào)節(jié)參數(shù) 264
27.4 輪廓檢測(cè) 265
27.4.1 用腳本索要場(chǎng)景的Z深度和法線 265
27.4.2 在材質(zhì)中進(jìn)行邊緣檢測(cè) 265
27.5 扭曲 267
27.5.1 通過UV操作扭曲圖像 267
27.5.2 限定扭曲的區(qū)域 268
27.5.3 使用物體來做遮罩 268
27.6 運(yùn)動(dòng)模糊 271
27.6.1 如何記錄運(yùn)動(dòng)軌跡 271
27.6.2 實(shí)現(xiàn)運(yùn)動(dòng)模糊的材質(zhì) 271
27.6.3 用于完成整個(gè)過程的腳本 272
27.6.4 通過Alpha和幀的混合操作實(shí)現(xiàn)運(yùn)動(dòng)模糊 273
27.7 噪波 273
27.7.1 根據(jù)Z深度來混合噪波 274
27.7.2 根據(jù)明暗程度來混合噪波 274
27.8 色彩的溢出 275
27.8.1 色彩溢出的算法考量 276
27.8.2 實(shí)現(xiàn)色彩溢出的采樣計(jì)算 276
第28章 地形 278
28.1 地表的材質(zhì) 278
28.1.1 地面紋理的控制貼圖 278
28.1.2 如何自定義地表材質(zhì) 279
28.1.3 如何使用更多的紋理貼圖 280
28.2 花草的材質(zhì) 280
28.2.1 非Billboard類型花草的材質(zhì) 281
28.2.2 Terrain引擎?zhèn)魅氲臄?shù)據(jù) 282
28.2.3 Billboard類型花草的材質(zhì) 282
28.2.4 自定義Detail Mesh的材質(zhì) 283
28.3 樹木的材質(zhì) 283
28.3.1 樹木的2D Billboard材質(zhì) 283
28.3.2 3D形態(tài)樹木的材質(zhì) 284
28.3.3 應(yīng)用Unity計(jì)算的Occlusion 286
第29章 投影 288
29.1 Unity的Projector 288
29.1.1 Projector中的材質(zhì)被執(zhí)行的順序 288
29.1.2 如何寫Projector使用的材質(zhì) 288
29.1.3 控制投影淡進(jìn)淡出的矩陣 289
29.2 實(shí)現(xiàn)自己的投影 290
29.2.1 設(shè)定投影矩陣的腳本 290
29.2.2 采樣投影的材質(zhì) 291
29.2.3 直接投影到屏幕上 292
29.2.4 模擬GUITexture 293
29.3 模擬粒子的廣告牌效果 294
29.3.1 使用材質(zhì)將物體面向相機(jī) 294
29.3.2 保持旋轉(zhuǎn)角度 295
第5篇 Shader的組織和優(yōu)化
第30章 Shader的組織和復(fù)用 298
30.1 cginc文件 298
30.1.1 Unity的UnityCG.cginc文件 298
30.1.2 定義自己的cginc文件 298
30.1.3 使用自定義的cginc文件 299
30.2 通過UsePass來復(fù)用 300
30.2.1 定義自己要復(fù)用的Pass 300
30.2.2 復(fù)用這些Pass 301
30.3 定義自己的Shader關(guān)鍵字 301
30.3.1 使用關(guān)鍵字改變Shader的行為 301
30.3.2 定義自己的Shader關(guān)鍵字 301
30.4 使用multi_compile編譯Shader的多個(gè)版本 302
30.4.1 使用multi_compile實(shí)現(xiàn)多次編譯 302
30.4.2 在腳本中選擇Shader的版本 302
30.5 Unity對(duì)DX11支持所帶來的問題 303
第31章 你必須知道的渲染概念 304
31.1 逐頂點(diǎn)計(jì)算和逐像素計(jì)算 304
31.1.1 逐頂點(diǎn)計(jì)算 304
31.1.2 逐像素計(jì)算 304
31.1.3 如何在這兩個(gè)概念中取舍 304
31.2 Draw Call的指標(biāo)意義 304
31.2.1 Draw Call的概念 304
31.2.2 正確理解Draw Call對(duì)你開發(fā)應(yīng)用的意義 304
31.2.3 Batching的概念和Unity為優(yōu)化Draw Call所做的工作 305
31.2.4 優(yōu)化Draw Call 305
31.3 利用渲染隊(duì)列的技巧 305
31.3.1 渲染隊(duì)列的概念 305
31.3.2 設(shè)置Render Queue的技巧 305
第32章 基于渲染路徑的優(yōu)化 306
32.1 VertexLit渲染路徑下的優(yōu)化 306
32.1.1 VertexLit渲染路徑的特點(diǎn) 306
32.1.2 合理的光照計(jì)算 306
32.2 Forward渲染路徑下的優(yōu)化 306
32.2.1 Forward渲染路徑的特點(diǎn) 306
32.2.2 合理的光照計(jì)算 306
32.3 Deferred渲染路徑下的優(yōu)化 307
32.3.1 Deferred渲染路徑的特點(diǎn) 307
32.3.2 合理的燈光布局 307
第33章 移動(dòng)平臺(tái)上的優(yōu)化 308
33.1 移動(dòng)平臺(tái)的特點(diǎn) 308
33.2 一些指令的運(yùn)算速度概念 308
33.3 幾何復(fù)雜度的考量 308
33.4 貼圖的問題 309
33.5 數(shù)據(jù)類型的使用方式 309
33.6 變量的使用 310
33.7 慎用后期效果 310
33.8 慎用透明效果 310
附錄 相關(guān)資源 311

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)