TOP
經典不再等待!讀懂羅馬人的強大,開啟你的智力冒險
Unity ShaderLab 新手寶典(簡體書)
滿額折

Unity ShaderLab 新手寶典(簡體書)

商品資訊

人民幣定價:89 元
定價
:NT$ 534 元
優惠價
87465
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點 :13 點
商品簡介
作者簡介
目次

商品簡介

本書是一部系統講解Unity ShaderLab語言與編程方法的入門教程(包含紙質圖書、Unity美術資源、Shader源代碼)。 本書共分14章,第1、2章,主要為了給讀者普及3D數學相關的基礎知識以及GPU渲染流水線的基本概念,為本書後面的內容提供基礎知識的儲備。第3~11章,主要講解了Shader的語法結構、兩種不同的編寫方式(Vertex Fragment Shader和Surface Shader)、光照模型、後期處理、自定義材質設置面板。這一部分內容是本書的主要部分,讀者朋友們一定要認真閱讀。第12章,主要講解Unity Shader可視化編輯插件——Amplify Shader Editor,方便讀者在編寫Shader之前梳理邏輯或者前期驗證效果的時候使用。第13、14章,通過對不同經典案例的分析和講解,使讀者進一步加深對Unity Shader的理解,並且能夠更加高效地編寫出可以應用於真實項目的Shader效果。 本書主要以3D美術人員的視角進行效果描述和邏輯講解的,因此非常適合毫無程序編寫經驗的3D美術人員作為Unity Shader的入門之選。並且本書同樣也適用於各大培訓機構、高等院校作為Unity Shader課程教材使用。 當然,從事Unity程序開發的朋友也可以閱讀本書,從3D 美術人員的視角開始切入,或許可以幫助你更好的理解Unity Shader,畢竟Shader也是一種視覺效果的設計。

作者簡介

唐福幸 資深3D美術師,從事3D行業已有六年,先後在多家公司擔任3D美術主管、3D技術美術師,擅長一切從零開始:開創團隊、制定流程、人員培訓、效果把控。樂於鉆研技術,並與人溝通分享。能夠熟練使用Maya、ZBrush、Substance Painter、Substance Designer、Unity、Unreal等30餘款3D專業軟件,目前在有車以後公司擔任“高級技術美術師”。

前言


本書的寫作背景

相信很多人在玩遊戲的過程中,在體驗遊戲劇情的同時,也會被遊戲中精美的畫面所吸引。因此我猜想,肯定會有很多人跟我一樣,有一種想要制作一款畫質精美的遊戲的衝動。然而想要實現精美畫質的視覺效果,往往需要編寫多種多樣的Shader。但對於一些毫無編程經驗的人來說,想要入門Unity Shader比較困難。這是因為,一方面國內關於Unity Shader的書少之又少,而目前市面僅有的幾本也是針對Unity 5版本編寫的,並不完全適用於Unity 2019版; 另一方面網上關於Unity Shader的教程,很多都是一上來直接講代碼,很少有真正從基礎開始講解的。於是筆者萌生了一個念頭: 寫一本面向零基礎Unity Shader愛好者的入門指南。

本書的獨特之處

本書采用由易到難、層層深入的講解方法,帶領毫無Shader編程基礎的讀者逐漸掌握這門技術。對於一些理論性的知識和使用方法,本書不會灌入式地硬性講解,而是會從內在邏輯開始講起,從而使讀者徹底理解。


為了方便讀者理解Shader效果實現的內在邏輯,本書插入了大量流程圖、匯總表格等。對於一些專有名詞或者語法關鍵詞,本書在編寫的過程中使用了“中文+英文”的方式,方便讀者理解以及後期查找或者閱讀其他資料。

筆者一直認為,Shader的學習達到一定程度之後,其實就是在學習數學算法。Shader的程序代碼本身並不重要,重要的是裡邊的邏輯和算法。很多人總是會好奇“這段代碼為什麼能夠實現這樣的效果”,相信這是學習Shader的人最想弄清楚的。而涉及邏輯類的數學思想有時候很難用文字表達出來,所以本人在案例講解部分會借助可視化Shader編輯器“Amplify Shader Editor”來幫助讀者理解其中的內在邏輯。

需要提前掌握的知識

作為一本計算機圖形專業書籍,建議讀者在閱讀本書之前掌握如下知識:

(1) Unity的基本操作,比如導入資源、創建物件、添加組件等。

(2) 平面數學。

(3) 空間幾何基礎。

(4) 三角函數。

(5) 基礎編程知識,比如理解變量、函數、運算操作等。

本書的源文件

為了方便讀者編寫測試,本書會附贈課程所涉及的所有Shader文件以及項目資源,讀者將Package文件導入Unity項目之後,在Assets/ Unity ShaderLab Tutorial路徑下即可看到所有的資源。

特別鳴謝

在這裡我要特別感謝我的未婚妻,正是在她的鼓勵下,我才有了編寫本書的動力。記得在正式開始撰寫本書之前,當我一直在為後續的出版事宜發愁時,她告訴我: “先邁出第一步,後面自然會有路。”因此我把出版問題全部拋擲腦後,專心寫完了這本書。同時,本書從編寫到出版的整個過程也讓我深刻認識到: 萬事開頭難,但只要克服恐懼,勇敢地邁出第一步並持之以恒,一切皆會水到渠成。後來,每當我遇到事情猶豫不前的時候,我總會想起這句話: “先邁出第一步,後面自然會有路。”


本書大部分配圖是使用Edraw制作而成的,這款軟件使得我在配圖制作方面節省了大量的時間,因此本人對這款圖例制作軟件表示鄭重的感謝。

本書能夠順利出版,還要感謝清華大學出版社, 在該出版社相關編輯的幫助下,本書得以順利面世。

最後,本書若有疏漏和不足之處,懇請讀者批評指正。

於廣州

2020年7月



目次

目錄




第1章3D數學基礎


1.1坐標與坐標系


1.1.1坐標及坐標系的概念


1.1.23D中的坐標系


1.1.3左右手坐標系


1.2向量


1.2.1向量的幾種表示方法


1.2.2向量的計算方法


1.2.3相反向量


1.2.4向量的模


1.2.5標準化向量


1.3向量運算


1.3.1向量的加法運算


1.3.2向量的減法運算


1.3.3向量的縮放


1.3.4向量的點積運算


1.3.5向量的叉積運算


1.3.6向量的運算法則


1.4矩陣


1.4.1矩陣的表示方法


1.4.2方陣和單位矩陣


1.4.3轉置矩陣


1.5矩陣運算


1.5.1標量與矩陣相乘


1.5.2矩陣之間的乘法


1.5.3矩陣與向量相乘


1.5.4矩陣的運算法則


1.6使用矩陣進行變換


1.6.1矩陣變換向量的原理


1.6.2旋轉矩陣


1.6.3縮放矩陣


1.6.4平移矩陣


1.7矩陣的深入講解


1.7.1矩陣的行列式


1.7.2餘子式和代數餘子式


1.7.3通過代數餘子式計算行列式


1.7.4逆矩陣


1.7.5正交矩陣


1.7.6逆矩陣的運算法則






第2章渲染流水線與Shader概念


2.1渲染流水線概念


2.23D圖形渲染完整流水線


2.3空間變換


2.3.1模型空間與世界空間


2.3.2攝像機空間


2.3.3裁切空間


2.3.4屏幕空間


2.3.5多個坐標空間存在的意義


2.4現代GPU渲染流水線


2.5Shader概念


2.5.1什麼是Shader


2.5.2Shader和材質的關係與區別


第3章ShaderLab語法基礎


3.1Shader的組織結構


3.2Shader的名稱


3.3Properties


3.3.1數值類屬性


3.3.2顏色和向量類屬性


3.3.3紋理貼圖類屬性


3.3.4所有類型屬性匯總


3.4SubShader


3.4.1SubShader的標簽


3.4.2Pass的渲染狀態


3.5Fallback


第4章頂點片段著色器基礎


4.1Shader編碼工具


4.2創建和使用Shader


4.3Shader的編寫方式


4.4CG語法基礎


4.4.1編譯指令


4.4.2著色器函數


4.4.3語義


4.4.4在CG中調用屬性變量


4.4.5結構體


第5章Unity的包含文件


5.1包含文件的使用語法


5.2UnityCG.cginc


5.2.1頂點著色器輸入結構體


5.2.2頂點變換函數


5.2.3向量變換函數


5.2.4燈光輔助函數


5.2.5視角向量函數


5.2.6其他輔助函數和宏


5.3UnityShaderVariables.cginc


5.3.1空間變換矩陣


5.3.2時間變量


5.4其他包含文件


5.5使用包含文件簡化Shader


第6章Shader中的光照模型


6.1Lambert光照模型


6.1.1Lambert光照模型理論


6.1.2在Shader中獲取燈光變量


6.1.3基於Lambert光照模型的Shader


6.2CG標準庫函數


6.3HalfLambert光照模型


6.4Phong光照模型


6.4.1Phong光照模型理論


6.4.2在Shader中獲取環境光變量


6.4.3基於Phong光照模型的Shader


6.5逐像素光照


6.6BlinnPhong光照模型


6.6.1BlinnPhong光照模型理論


6.6.2BlinnPhong光照模型的Shader


6.7燈光陰影


6.7.1渲染路徑


6.7.2Pass標簽


6.7.3內置的multi_compile


6.7.4實現陰影效果


第7章透明效果


7.1不透明物體的渲染順序


7.2透明物體的渲染順序


7.3混合透明效果


7.3.1混合指令


7.3.2混合系數


7.3.3混合操作


7.3.4混合透明的使用方法


7.3.5混合透明效果


7.3.6半透明物體的雙面渲染


7.4透明測試效果


7.4.1透明測試的使用方法


7.4.2透明測試效果


7.4.3透明測試抗鋸齒


7.5模板測試


7.5.1模板測試的計算流程


7.5.2模板測試的使用語法


7.5.3比較方法


7.5.4模板操作


7.5.5延遲渲染路徑中的模板測試


7.5.6模板測試透明效果


第8章表面著色器的基礎概念


8.1為什麼不先學習表面著色器


8.2表面著色器的組織結構


8.3編譯指令中的可選參數


8.3.1透明效果相關指令


8.3.2陰影和細分相關指令


8.3.3代碼生成選項


8.3.4其他選項


8.4表面函數的語法結構


8.4.1表面函數輸入結構體


8.4.2表面函數輸出結構體


第9章編寫表面著色器


9.1最簡單的表面著色器


9.2在表面著色器中使用法線貼圖


9.3表面著色器中的其他函數


9.3.1頂點修改函數


9.3.2自定義光照函數


9.3.3最終顏色修改函數


9.4曲面細分函數


9.4.1固定數量的曲面細分


9.4.2基於邊長的曲面細分


9.4.3視錐剔除曲面細分


9.4.4基於距離的曲面細分


9.4.5Phong曲面細分


9.5透明效果


9.5.1混合透明效果


9.5.2透明測試效果


第10章Image Effect


10.1GrabPass


10.1.1語法結構


10.1.2GrabPass Shader


10.1.3測試效果


10.2C#基礎語法


10.2.1C#腳本的基本結構


10.2.2Properties


10.2.3C#中的常用函數


10.2.4基於Shader資源創建材質


10.2.5通過腳本往Material中傳遞變量


10.2.6C#中的數學函數


10.2.7其他功能


10.3PostProcessing


10.3.1後期處理的工作流程


10.3.2後期處理Shader


10.3.3後期處理腳本


10.4後期處理堆棧


10.4.1安裝Post Processing包


10.4.2設置Layer和Volume


10.4.3編寫Shader


10.4.4編寫C#腳本


第11章自定義材質面板


11.1不同類型的DrawerClass


11.1.1Toggle


11.1.2Enum


11.1.3KeywordEnum


11.1.4在編譯指令中定義關鍵詞


11.1.5PowerSlider


11.1.6IntRange


11.2屬性的特性和Drawer


11.3裝飾性PropertyDrawer


11.3.1SpaceDecorator


11.3.2HeaderDecorator


11.4完整PropertyDrawer示例


第12章Amplify Shader Editor


12.1相同功能的其他插件


12.1.1Shader Forge


12.1.2Shader Graph


12.2ASE的使用流程


12.3Shader屬性設置


12.3.1General


12.3.2Blend Mode


12.3.3Stencil Buffer


12.3.4Tessellation


12.3.5Output


12.4常用節點


12.4.1常數和屬性類節點


12.4.2紋理和坐標類節點


12.4.3數學運算類節點


12.4.4向量運算相關節點


12.4.5圖像處理相關節點


12.4.6攝像機和屏幕相關節點


12.4.7頂點數據類節點


12.4.8表面數據類節點


12.4.9時間節點


12.5使用ASE創建標準Shader


12.5.1Albedo


12.5.2Normal


12.5.3Emission


12.5.4Specular


12.5.5Ambient Occlusion


12.5.6Texture Coordinate


12.5.7屬性排序及最終效果


第13章初級案例


13.1流光效果


13.1.1實現邏輯


13.1.2使用ASE實現效果


13.1.3測試Shader效果


13.1.4編寫Shader


13.1.5使用擴展


13.2描邊效果


13.2.1實現邏輯


13.2.2編寫Shader


13.2.3效果測試


13.3遮擋半透效果


13.3.1實現邏輯


13.3.2編寫Shader


13.3.3效果測試


13.4TriPlanar Mapping效果


13.4.1實現邏輯


13.4.2使用ASE實現效果


13.4.3編寫Shader


13.4.4測試Shader效果


13.5MatCap效果


13.5.1實現邏輯


13.5.2使用ASE實現效果


13.5.3編寫Shader


13.5.4測試Shader效果


13.6物體切割效果


13.6.1實現邏輯


13.6.2使用ASE實現效果


13.6.3C#腳本


13.6.4測試效果


13.6.5編寫Shader


第14章進階案例


14.1消融效果


14.1.1實現邏輯


14.1.2資源準備


14.1.3使用ASE實現效果


14.1.4使用擴展


14.1.5編寫Shader


14.2動態液體效果


14.2.1實現邏輯


14.2.2模型準備


14.2.3使用ASE實現效果


14.2.4測試Shader


14.2.5編寫Shader


14.3Billboard效果


14.3.1實現邏輯


14.3.2使用ASE實現雪花效果


14.3.3測試Shader


14.3.4編寫Shader


14.4序列幀動畫


14.4.1實現邏輯


14.4.2使用ASE實現效果


14.4.3測試Shader


14.4.4編寫Shader


14.5卡通風格效果


14.5.1資源準備


14.5.2使用ASE實現效果


14.5.3編寫Shader


14.6夜視儀後期處理


14.6.1Shader講解


14.6.2完整Shader代碼


14.6.3C#腳本講解


14.6.4完整腳本代碼


14.6.5測試最終效果


14.6.6使用ASE編輯後期處理Shader


寫在最後


參考文獻


購物須知

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

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

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

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

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

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

暢銷榜

客服中心

收藏

會員專區