日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

發(fā)布時(shí)間:2023/12/14 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


寫在前面



感謝全部點(diǎn)進(jìn)來(lái)看的朋友。沒(méi)錯(cuò)。我眼下打算寫一本關(guān)于Unity Shader的書。

出書的目的有以下幾個(gè):

  • 總結(jié)我接觸Unity Shader以來(lái)的歷程,給其它人一個(gè)借鑒。我非常明確學(xué)Shader的艱難,在群里也見(jiàn)了非常多人提出的問(wèn)題。

    我認(rèn)為學(xué)習(xí)Shader還是一件有規(guī)律可循的事情,但問(wèn)題是中文資料難覓,而大家又不愿意去看英文。。。這對(duì)我有什么優(yōu)點(diǎn)呢?強(qiáng)迫我對(duì)知識(shí)進(jìn)行梳理,對(duì)細(xì)節(jié)問(wèn)題把握更清楚。

  • 第二個(gè)原因你懂的。

  • 關(guān)于本書的定位問(wèn)題:

  • 面向Unity Shader剛開(kāi)始學(xué)習(xí)的人,但要:

  • 有一定的編程經(jīng)歷。不然我說(shuō):在腳本里寫一個(gè)函數(shù)XXX。您問(wèn)我,腳本是啥?我:……。
  • 希望您還記得初中高中的基本數(shù)學(xué)。起碼能把數(shù)算清楚。我明確非常多人早就把矩陣這些略微復(fù)雜一點(diǎn)的數(shù)學(xué)還給了大學(xué)老師,所以我會(huì)單獨(dú)在一個(gè)章節(jié)里介紹。
  • 希望您有一定的耐心。為什么你老是認(rèn)為看不懂、學(xué)不會(huì)Shader,能夠反思下自己是不是太急躁了,想要今天看一下明天就會(huì)。放棄吧。這是不可能的。
  • 我寫這本書的一個(gè)目標(biāo)是,希望幫助剛開(kāi)始學(xué)習(xí)的人把基礎(chǔ)打牢,沒(méi)有基礎(chǔ)不論什么上層建筑都是不可靠的。

  • 我不是在寫一本特效大全,所以你假設(shè)想要看到各種酷炫狂霸拽的特效,抱歉,這本書里差點(diǎn)兒沒(méi)有。這跟上一點(diǎn)有非常大關(guān)系,僅靠一本書,我能夠肯定一個(gè)剛開(kāi)始學(xué)習(xí)的人沒(méi)有辦法成為一個(gè)“Shader大神”。我希望全部讀過(guò)這本書的人能夠真正明確shader是個(gè)什么東西,而不是說(shuō):“哦。shader嘛,就是在Unity里右鍵Create->Shader得到的那個(gè)東西嘛”。

    關(guān)于特效大全的問(wèn)題,假設(shè)將來(lái)我有十足的經(jīng)驗(yàn)和資格了,可能會(huì)真的寫一本,哈哈哈


    寫書是件非常不easy的事情,希望我能夠把它做好。





  • 2015.12.21更新:關(guān)于什么時(shí)候出版


    不少朋友留言或者發(fā)郵件問(wèn)我什么時(shí)候出版,我比你們更著急呀……只是編輯說(shuō)還在改動(dòng)和排版,大概出版時(shí)間會(huì)在明年一月份(希望不會(huì)延期吧)。謝謝大家?guī)臀移鹈帧N野岩恍┐蠹移鸬妹帜媒o編輯看。以及和朋友討論。最后還是暫定為《Unity Shader入門精要》。難聽(tīng)么?別打擊我……以下有朋友起了非常多萌萌噠的名字,利用下程序媛的身份,只是吧,感覺(jué)這個(gè)因人而異,說(shuō)不定有人就不喜歡程序媛寫的書呢……所以最后還是挑了這個(gè)比較嚴(yán)肅的名字,嗯。

    書的封面我也找萬(wàn)能的設(shè)計(jì)師蘭朋友設(shè)計(jì)啦~

    還沒(méi)出版所以打打水印。

    當(dāng)然了,編輯僅僅是允許用了,可是應(yīng)該還會(huì)改動(dòng)吧。不知道大家認(rèn)為封面怎么樣……我是認(rèn)為萌萌噠。哈哈。




    總體結(jié)構(gòu)



    我把這本書分為五大篇章:

    • 基礎(chǔ)篇:這是非常重要的一章,主要是為了剛開(kāi)始學(xué)習(xí)的人普及主要的理論知識(shí),以及所需的數(shù)學(xué)基礎(chǔ)。

      我明確非常多人看不懂網(wǎng)上的一些材料。我盡量講得通俗。

    • Shader0基礎(chǔ)篇:從最簡(jiǎn)單的shader開(kāi)始,解說(shuō)shader中基礎(chǔ)的光照模型、紋理、和透明效果等。

      同一時(shí)候。還會(huì)介紹一些shader的Debug技巧、shader里常見(jiàn)報(bào)錯(cuò)信息。

    • Shader中級(jí)篇:這是進(jìn)階篇章,將解說(shuō)更加復(fù)雜的光照、高級(jí)紋理、以及怎樣用shader實(shí)現(xiàn)動(dòng)畫等一系列進(jìn)階內(nèi)容;

    • Shader高級(jí)篇:則涵蓋了一些shader的高級(jí)使用方法,如使用緩沖區(qū)、實(shí)現(xiàn)屏幕特效、非真實(shí)感渲染等。同一時(shí)候,還會(huì)介紹一些優(yōu)化技巧。

    • 擴(kuò)展篇:將會(huì)涵蓋一些Unity Surface Shader背后的機(jī)制。還會(huì)針對(duì)Unity 5.0+版本號(hào)中的一些新的特性進(jìn)行簡(jiǎn)要分析。最后。希望向大家介紹一點(diǎn)學(xué)習(xí)shader的經(jīng)驗(yàn)和資源。

    眼下文件夾已經(jīng)初步定型。把文件夾記錄在這里,但我會(huì)不斷更新。



    假設(shè)您對(duì)該書的文件夾和內(nèi)容有不論什么意見(jiàn)和建議都能夠在下方留言。假設(shè)您沒(méi)有CSDN賬號(hào)。也能夠通過(guò)發(fā)郵件來(lái)告訴我:lelefeng1992 # gmail DOT com。

    我會(huì)依據(jù)您的意見(jiàn)對(duì)文件夾和內(nèi)容做出一定的更改。





    文件夾(已完整)



    * 前言
    * 這本書講些什么
    * 讀這本書之前你須要哪些知識(shí)
    * 誰(shuí)適合讀這本書
    * 誰(shuí)臨時(shí)還不適合讀這本書
    * 約定
    * 讀者反饋
    * 本書源代碼

    第1部分 基礎(chǔ)篇

    • 第1章 歡迎來(lái)到Shader的世界

      • 1.1 程序猿的三大浪漫:為什么要學(xué)習(xí)Shader
      • 1.2 這不是程序猿一個(gè)人的戰(zhàn)斗
      • 1.3 世界這么大
    • 第2章 渲染流水線

      • 2.1 綜述
        • 2.1.1 什么是流水線
        • 2.1.2 什么是渲染流水線
      • 2.2 CPU和GPU的通信
        • 2.2.1 把數(shù)據(jù)載入到顯存中
        • 2.2.2 設(shè)置渲染狀態(tài)
        • 2.2.3 調(diào)用Draw Call
      • 2.3 GPU流水線
        • 2.3.1 概述
        • 2.3.2 頂點(diǎn)著色器
        • 2.3.3 裁剪
        • 2.3.4 屏幕映射
        • 2.3.5 三角形設(shè)置
        • 2.3.6 三角形遍歷
        • 2.3.7 片元著色器
        • 2.3.8 逐片元操作
        • 2.3.9 總結(jié)
      • 2.4 一些easy困惑的地方
        • 2.4.1 什么是OpenGL/DirectX
        • 2.4.2 什么是HLSL、GLSL、CG
        • 2.4.3 什么是Draw Call
        • 2.4.4 什么是固定渲染管線(Fixed-Function Pipeline)
      • 2.5 那么。你明確什么是Shader了嗎
      • 擴(kuò)展閱讀
    • 第3章 Unity Shader基礎(chǔ)

      • 3.1 Unity Shader概述
        • 3.1.1 一對(duì)好兄弟:材質(zhì)(Material)和Unity Shader
        • 3.1.2 Unity中的材質(zhì)
        • 3.1.3 Unity中的Shader
      • 3.2 Unity Shader的基礎(chǔ):ShaderLab
        • 3.2.1 什么是ShaderLab
      • 3.3 Unity Shader的結(jié)構(gòu)
        • 3.3.1 給我們的Shader起個(gè)名字:Shader
        • 3.3.2 材質(zhì)和Unity Shader的橋梁:Properties
        • 3.3.3 重量級(jí)成員:SubShader
        • 3.3.4 留一條后路:Fallback
        • 3.3.5 ShaderLab還有其它的語(yǔ)義嗎
      • 3.4 Unity Shader的形式
        • 3.4.1 Unity的寵兒:Surface Shader
        • 3.4.2 最聰明的孩子:Vertex/Fragment Shader
        • 3.4.3 拋棄的角落:Fixed Function Shader
        • 3.4.4 那么,要選擇哪種Unity Shader形式
      • 3.5 本書使用的Unity Shader形式
      • 3.6 答疑解惑
        • 3.6.1 Unity Shader != 真正的Shader
        • 3.6.2 Unity Shader和CG/HLSL之間的關(guān)系
        • 3.6.3 我能夠使用GLSL來(lái)寫嗎
      • 擴(kuò)展閱讀
    • 第4章 學(xué)習(xí)Shader所需的數(shù)學(xué)基礎(chǔ)

      • 4.1 背景:農(nóng)場(chǎng)游戲
      • 4.2 笛卡爾坐標(biāo)系
        • 4.2.1 二維笛卡爾坐標(biāo)系
        • 4.2.2 三維笛卡爾坐標(biāo)系
        • 4.2.3 左手坐標(biāo)系和右手坐標(biāo)系
        • 4.2.4 Unity使用的坐標(biāo)系
        • 4.2.5 練習(xí)題
      • 4.3 點(diǎn)和矢量
        • 4.3.1 點(diǎn)和矢量的差別
        • 4.3.2 矢量運(yùn)算
          • 4.3.2.1 矢量和標(biāo)量乘法/除法
          • 4.3.2.2 矢量的加法和減法
          • 4.3.2.3 矢量的模
          • 4.3.2.4 單位矢量
          • 4.3.2.5 矢量的點(diǎn)積
          • 4.3.2.6 矢量的叉積
        • 4.3.3 練習(xí)題
      • 4.4 矩陣
        • 4.4.1 矩陣的定義
        • 4.4.2 和矢量聯(lián)系起來(lái)
        • 4.4.3 矩陣運(yùn)算
          • 4.4.3.1 矩陣和標(biāo)量的乘法
          • 4.4.3.2 矩陣和矩陣的乘法
        • 4.4.4 特殊的矩陣
          • 4.4.4.1 方塊矩陣
          • 4.4.4.2 單位矩陣
          • 4.4.4.3 轉(zhuǎn)置矩陣
          • 4.4.4.4 逆矩陣
          • 4.4.4.5 正交矩陣
        • 4.4.5 行矩陣還是列矩陣
        • 4.4.6 練習(xí)題
      • 4.5 矩陣的幾何意義:變換
        • 4.5.1 齊次坐標(biāo)
        • 4.5.2 分解基礎(chǔ)變換矩陣
        • 4.5.3 平移矩陣
        • 4.5.4 縮放矩陣
        • 4.5.5 旋轉(zhuǎn)矩陣
        • 4.5.6 組合變換
        • 4.5.7 練習(xí)題
      • 4.6 坐標(biāo)空間
        • 4.6.1 為什么要使用這么多不同的坐標(biāo)空間
        • 4.6.2 坐標(biāo)空間的變換
        • 4.6.3 頂點(diǎn)的坐標(biāo)空間變換過(guò)程
          • 4.6.3.1 案例
        • 4.6.4 模型空間
          • 4.6.4.1 案例
        • 4.6.5 世界空間
          • 4.6.5.1 案例
        • 4.6.6 觀察空間
          • 4.6.6.1 案例
        • 4.6.7 裁剪空間
          • 4.6.7.1 透視投影
          • 4.6.7.2 正交投影
          • 4.6.7.3 案例
        • 4.6.8 屏幕空間
          • 4.6.8.1 案例
        • 4.6.9 總結(jié)
      • 4.7 法線變換
      • 4.8 Unity Shader中的內(nèi)置變量(數(shù)學(xué)篇)
      • 4.9 答疑解惑
        • 4.9.1 使用3 x 3還是4 x 4的變換矩陣
        • 4.9.2 Cg中的矢量和矩陣類型
        • 4.9.3 Unity中的屏幕坐標(biāo):ComputeScreenPos/VPOS/WPOS
      • 練習(xí)題答案
      • 擴(kuò)展閱讀

    第2部分0基礎(chǔ)篇

    • 第5章 開(kāi)始Unity Shader學(xué)習(xí)之旅

      • 5.1 本書使用的軟件和環(huán)境
      • 5.2 一個(gè)最簡(jiǎn)單的Vertex/Fragment Shader
        • 5.2.1 Vertex/Fragment Shader的基本結(jié)構(gòu)
        • 5.2.2 模型數(shù)據(jù)從哪來(lái)
        • 5.2.3 頂點(diǎn)著色器和片元著色器之間怎樣通信
        • 5.2.4 怎樣使用屬性
      • 5.3 強(qiáng)大的援手:Unity提供的內(nèi)置文件和變量
        • 5.3.1 內(nèi)置的包括文件
        • 5.3.2 內(nèi)置的變量
      • 5.4 Unity提供的Cg/HLSL語(yǔ)義
        • 5.4.1 什么是語(yǔ)義
        • 5.4.2 Unity支持的語(yǔ)義
        • 5.4.3 怎樣定義復(fù)雜的變量類型
      • 5.5 程序猿的煩惱:Deeeeebug
        • 5.5.1 使用假彩色圖像
        • 5.5.2 利用神器:Visual Studio
      • 5.6 小心:渲染平臺(tái)的差異
        • 5.6.1 渲染紋理的坐標(biāo)差異
        • 5.6.2 Shader的語(yǔ)法差異
        • 5.6.3 Shader的語(yǔ)義差異
        • 5.6.4 其它平臺(tái)差異
      • 5.7 Shader整潔之道
        • 5.7.1 float、half還是fixed
        • 5.7.2 規(guī)范語(yǔ)法
        • 5.7.3 避免不必要的計(jì)算
        • 5.7.4 慎用分支和循環(huán)語(yǔ)句
        • 5.7.5 不要除以0
      • 擴(kuò)展閱讀
    • 第6章 Unity中的基礎(chǔ)光照

      • 6.1 我們是怎樣看到這個(gè)世界的
        • 6.1.1 光源
        • 6.1.2 吸收和散射
        • 6.1.3 著色
        • 6.1.4 BRDF光照模型
      • 6.2 標(biāo)準(zhǔn)光照模型
        • 6.2.1 環(huán)境光
        • 6.2.2 自發(fā)光
        • 6.2.3 漫反射
        • 6.2.4 高光反射
        • 6.2.5 逐像素還是逐頂點(diǎn)
        • 6.2.6 總結(jié)
      • 6.3 環(huán)境光和自發(fā)光
      • 6.4 漫反射光照模型
        • 6.4.1 實(shí)踐:逐頂點(diǎn)光照
        • 6.4.2 實(shí)踐:逐像素光照
        • 6.4.3 改善技巧:半蘭伯特模型
      • 6.5 高光反射光照模型
        • 6.5.1 實(shí)踐:逐頂點(diǎn)光照
        • 6.5.2 實(shí)踐:逐像素光照
        • 6.5.3 Blinn-Phong模型
      • 6.6 召喚神龍:使用Unity內(nèi)置的函數(shù)
        • 6.6.1 使用內(nèi)置函數(shù)改寫Unity Shader
    • 第7章 基礎(chǔ)紋理

      • 7.1 單張紋理
        • 7.1.1 實(shí)踐
        • 7.1.2 解釋
        • 7.1.3 紋理的屬性
      • 7.2 凹凸映射
        • 7.2.1 高度紋理
        • 7.2.2 法線紋理
        • 7.2.3 實(shí)踐
        • 7.2.4 解釋
        • 7.2.5 Unity中的法線紋理類型
      • 7.3 漸變紋理
        • 7.3.1 實(shí)踐
        • 7.3.2 解釋
      • 7.4 遮罩紋理
        • 7.4.1 實(shí)踐
        • 7.4.2 解釋
        • 7.4.3 其它遮罩紋理
    • 第8章 透明效果

      • 8.1 為什么渲染順序非常重要
      • 8.2 Unity Shader的渲染順序
      • 8.3 透明度測(cè)試
        • 8.3.1 實(shí)踐
        • 8.3.2 解釋
      • 8.4 透明度混合
        • 8.4.1 實(shí)踐
        • 8.4.2 解釋
      • 8.5 開(kāi)啟深度寫入的半透明效果
        • 8.5.1 實(shí)踐
        • 8.5.2 解釋
      • 8.6 ShaderLab的混合命令
        • 8.6.1 混合等式和參數(shù)
        • 8.6.2 混合操作
        • 8.6.3 常見(jiàn)的混合類型

    第3部分 中級(jí)篇

    • 第9章 更復(fù)雜的光照

      • 9.1 Unity的渲染路徑
        • 9.1.1 前向渲染路徑
          • 9.1.1.1 前向渲染路徑的原理
          • 9.1.1.2 Unity中的前向渲染
          • 9.1.1.3 內(nèi)置的光照變量和函數(shù)
        • 9.1.2 頂點(diǎn)照明渲染路徑
          • 9.1.2.1 Unity中的頂點(diǎn)照明渲染
          • 9.1.2.1 可訪問(wèn)的內(nèi)置變量和函數(shù)
        • 9.1.3 延遲渲染路徑
          • 9.1.3.1 延遲渲染的原理
          • 9.1.3.2 Unity中的延遲渲染
          • 9.1.2.3 可訪問(wèn)的內(nèi)置變量和函數(shù)
        • 9.1.4 選擇哪種渲染路徑
      • 9.2 Unity的光源類型
        • 9.2.1 光源類型有什么影響
          • 9.2.1.1 平行光
          • 9.2.1.2 點(diǎn)光源
          • 9.2.1.3 聚光燈
        • 9.2.2 在前向渲染中處理不同的光源類型
          • 9.2.2.1 實(shí)踐
          • 9.2.2.2 解釋
          • 9.2.2.3 實(shí)驗(yàn):Base Pass和Additional Pass的調(diào)用
      • 9.3 Unity的光照衰減
        • 9.3.1 用于光照衰減的紋理
        • 9.3.2 使用數(shù)學(xué)公式計(jì)算衰減
      • 9.4 Unity的陰影
        • 9.4.1 陰影是怎樣實(shí)現(xiàn)的
        • 9.4.2 不透明物體的陰影
          • 9.4.2.1 讓物體投射陰影
          • 9.4.2.2 讓物體接收陰影
        • 9.4.3 使用幀調(diào)試器查看陰影繪制過(guò)程
        • 9.4.4 統(tǒng)一管理光照衰減和陰影
        • 9.4.5 使用透明度測(cè)試的物體的陰影
    • 第10章 高級(jí)紋理

      • 10.1 立方體紋理
        • 10.1.1 天空盒子
        • 10.1.2 創(chuàng)建用于環(huán)境映射的立方體紋理
        • 10.1.3 反射
        • 10.1.4 折射
        • 10.1.5 菲涅爾反射
      • 10.2 渲染紋理
        • 10.2.1 鏡子效果
        • 10.2.2 玻璃效果
      • 10.3 程序紋理
        • 10.3.1 在Unity中實(shí)現(xiàn)簡(jiǎn)單的程序紋理
        • 10.3.2 Unity的程序材質(zhì)
    • 第11章 讓畫面動(dòng)起來(lái)

      • 11.1 Unity Shader中的內(nèi)置變量(時(shí)間篇)
      • 11.2 紋理動(dòng)畫
        • 11.2.1 序列幀動(dòng)畫
        • 11.2.2 滾動(dòng)的背景
      • 11.3 頂點(diǎn)動(dòng)畫
        • 11.3.1 流動(dòng)的河流
        • 11.3.2 廣告牌
        • 11.3.3 注意事項(xiàng)

    第4部分 Shader高級(jí)篇

    • 第12章 屏幕后處理效果

      • 12.1 建立一個(gè)主要的屏幕后處理腳本系統(tǒng)
      • 12.2 調(diào)整亮度、飽和度和對(duì)照度
      • 12.3 邊緣檢測(cè)
        • 12.3.1 什么是卷積
        • 12.3.2 常見(jiàn)的邊緣檢測(cè)算子
        • 12.3.3 實(shí)現(xiàn)
      • 12.4 高斯模糊
        • 12.4.1 高斯濾波
        • 12.4.2 實(shí)現(xiàn)
      • 12.5 Bloom效果
      • 12.6 運(yùn)動(dòng)模糊
      • 12.7 擴(kuò)展閱讀
    • 第13章 使用深度和法線紋理

      • 13.1 獲取深度和法線紋理
        • 13.1.1 背后的原理
        • 13.1.2 怎樣獲取
        • 13.1.3 查看深度和法線紋理
      • 13.2 再談運(yùn)動(dòng)模糊
      • 13.3 全局霧效
        • 13.3.1 重建世界坐標(biāo)
        • 13.3.2 霧的計(jì)算
        • 13.3.3 實(shí)現(xiàn)
      • 13.4 再談邊緣檢測(cè)
      • 13.5 擴(kuò)展閱讀
    • 第14章 非真實(shí)感渲染

      • 14.1 卡通風(fēng)格的渲染
        • 14.1.1 渲染輪廓線
        • 14.1.2 加入高光
        • 14.1.3 實(shí)現(xiàn)
      • 14.2 素描風(fēng)格的渲染
      • 14.3 擴(kuò)展閱讀
      • 14.4 參考文獻(xiàn)
    • 第15章 使用噪聲

      • 15.1 消融效果
      • 15.2 水波效果
      • 15.3 再談全局霧效
      • 15.4 擴(kuò)展閱讀
      • 15.5 參考文獻(xiàn)
    • 第16章 Unity中的渲染優(yōu)化技術(shù)

      • 16.1 移動(dòng)平臺(tái)的特點(diǎn)
      • 16.2 影響性能的因素
      • 16.3 Unity中的渲染分析工具
        • 16.3.1 認(rèn)識(shí)Unity 5的渲染統(tǒng)計(jì)窗體
        • 16.3.2 性能分析器的渲染區(qū)域
        • 16.3.3 再談幀調(diào)試器
        • 16.3.4 其它性能分析工具
      • 16.4 降低Draw Call數(shù)目
        • 16.4.1 動(dòng)態(tài)批處理
        • 16.4.2 靜態(tài)批處理
        • 16.4.3 共享材質(zhì)
        • 16.4.4 批處理的注意事項(xiàng)
      • 16.5 降低須要處理的頂點(diǎn)數(shù)目
        • 16.5.1 優(yōu)化幾何體
        • 16.5.2 模型的LOD技術(shù)
        • 16.5.3 遮擋剔除技術(shù)
      • 16.6 降低須要處理的片元數(shù)目
        • 16.6.1 控制繪制順序
        • 16.6.2 時(shí)刻警惕半透明物體
        • 16.6.3 降低實(shí)時(shí)光照
      • 16.7 節(jié)省帶寬
        • 16.7.1 降低紋理大小
        • 16.7.2 利用分辨率縮放
      • 16.8 降低計(jì)算復(fù)雜度
        • 16.8.1 Shader的LOD技術(shù)
        • 16.8.2 代碼方面的優(yōu)化
        • 16.8.3 依據(jù)硬件條件進(jìn)行縮放
      • 16.9 擴(kuò)展閱讀

    第5部分 擴(kuò)展篇

    • 第17章 Surface Shader探秘

      • 17.1 一個(gè)樣例
      • 17.2 編譯指令
        • 17.2.1 表面函數(shù)
        • 17.2.2 光照函數(shù)
        • 17.2.3 其它可選參數(shù)
      • 17.3 兩個(gè)結(jié)構(gòu)體
        • 17.3.1 數(shù)據(jù)來(lái)源:Input結(jié)構(gòu)體
        • 17.3.2 表面屬性:SurfaceOutput結(jié)構(gòu)體
      • 17.4 Unity背后做了什么
      • 17.5 實(shí)例分析
      • 17.6 Surface Shader的缺點(diǎn)
    • 第18章 基于物理的渲染

      • 18.1 PBS的理論和數(shù)學(xué)基礎(chǔ)
        • 18.1.1 光是什么
        • 18.1.2 BRDF
        • 18.1.3 漫反射項(xiàng)
        • 18.1.4 高光反射項(xiàng)
        • 18.1.5 Unity中的PBS實(shí)現(xiàn)
      • 18.2 Unity 5的Standard Shader
        • 18.2.1 它們是怎樣實(shí)現(xiàn)的
        • 18.2.2 怎樣使用Standard Shader
      • 18.3 一個(gè)更加復(fù)雜的樣例
        • 18.3.1 設(shè)置光照環(huán)境
        • 18.3.2 放置反射探針
        • 18.3.3 調(diào)整材質(zhì)
        • 18.3.4 線性空間
      • 18.4 答疑解惑
        • 18.4.1 什么是全局光照
        • 18.4.2 什么是伽馬校正
        • 18.4.3 什么是HDR
        • 18.4.4 那么,PBS適合什么樣的游戲
      • 18.5 擴(kuò)展閱讀
      • 參考文獻(xiàn)
    • 第19章 Unity 5更新了什么

      • 19.1 場(chǎng)景“更亮了”
      • 19.2 表面著色器更easy“報(bào)錯(cuò)了”
      • 19.3 當(dāng)家做主:自己控制非統(tǒng)一縮放的網(wǎng)格
      • 19.4 固定管線著色器逐漸退出舞臺(tái)
    • 第20章 還有很多其它內(nèi)容嗎

      • 20.1 假設(shè)你想深入了解渲染的話
      • 20.2 世界那么大
      • 參考文獻(xiàn)


    2015.06.28更新


    這幾天在寫數(shù)學(xué)的部分,早就料到數(shù)學(xué)是最難講的一部分,尤其是矩陣。

    我和非常多人一樣。對(duì)矩陣這個(gè)家伙簡(jiǎn)直是”深惡痛絕“。看到它就想躲過(guò)去。無(wú)奈,shader里面要時(shí)常跟它打交道。那么。就勇敢地面對(duì)它吧!

    我非常明確。為什么我們會(huì)這么”討厭“矩陣。假設(shè)說(shuō)矢量這樣的我們還能夠通過(guò)可視化的方法來(lái)直觀地理解,那么。矩陣,這個(gè)放在一個(gè)小方框里的東西。就非常難用畫的方式把它畫出來(lái)。而我們?nèi)说拇竽X又是非常懶惰的(恩,我僅僅能為我的大腦代言),沒(méi)圖你說(shuō)個(gè)XXX。我才懶得記!

    實(shí)際上,我一直對(duì)數(shù)學(xué)懷抱一種敬畏的心態(tài)。世界上有非常多的數(shù)學(xué)家同一時(shí)候也是哲學(xué)家、心理學(xué)家,感覺(jué)數(shù)學(xué)對(duì)理解這個(gè)世界都有非常重要的意義,并且那些數(shù)學(xué)家的生平都非常有意思。讓人敬佩。能夠?qū)⑵湟簧钾暙I(xiàn)給數(shù)學(xué)的人都非常偉大的,那些創(chuàng)造矩陣、空間、矢量這些的人是多么偉大。怎么就會(huì)想到用這樣一種方式來(lái)描寫敘述這樣的現(xiàn)象呢?這真的是件非常奇妙的事情。并且。你會(huì)發(fā)現(xiàn)。怎么這樣算就能夠表示出這樣的意思呢。明明看起來(lái)沒(méi)有不論什么關(guān)系啊!這樣的巧合真的是讓人感嘆數(shù)學(xué)的偉大。

    好了,不再歪歪……回到真實(shí)的世界……在寫的過(guò)程中。我會(huì)盡量用通俗、幽默、有圖示的方式來(lái)講這一章,效果怎么樣。我也非常忐忑。會(huì)不會(huì)反映說(shuō)看不懂?如今一切都不得而知……

    一個(gè)有趣的事情是,在講左右手坐標(biāo)系和左右手法則的時(shí)候。我拿自己的手做了模型:



    哈。這個(gè)黃色的手的確是我的手。然后用Photoshop處理了一下。

    看起來(lái)還挺像那么回事的?誰(shuí)敢說(shuō)我手胖我跟誰(shuí)急!

    這幾天一直在繪圖、看書、寫文字、寫公式(天哪,盡管用Markdown寫公式已經(jīng)非常方便了,但一天要寫那么多公式也真的是……)、算題,希望最后的結(jié)果是好的。加油吧。


    2015.07.10更新

    寫了兩個(gè)多星期,把數(shù)學(xué)一章的草稿基本完畢了。今天更新了第2、3、4章的文件夾,有興趣的能夠看一下。歡迎提出各種意見(jiàn)和建議。

    數(shù)學(xué)篇是我最想好好寫的一篇(當(dāng)然啦。其它章我也會(huì)好好寫。

    。。

    )。數(shù)學(xué)之所以難學(xué)。一部分是由于它的抽象性。沒(méi)辦法。假設(shè)我們想要把一些規(guī)律從生活中提取出來(lái),就必定要涉及到各種數(shù)學(xué)符號(hào),這就要用到抽象。我用了非常多圖和案例來(lái)盡量讓這個(gè)過(guò)程更加形象易懂。也使用了一些相似對(duì)話的方式,來(lái)解釋一些常見(jiàn)的疑惑。

    眼下,本書的第一篇——基礎(chǔ)篇基本成型。基礎(chǔ)篇里每一章都有個(gè)小節(jié)叫做答疑解惑,意在總結(jié)一些常見(jiàn)的疑惑點(diǎn),假設(shè)讀者除了我上面寫到的幾點(diǎn)外還有其它的困惑。能夠給我留言。我會(huì)視情況加入到這一章節(jié)。

    除此之外,在數(shù)學(xué)一章里我加入了練習(xí)題的部分。事實(shí)上我是有猶豫的。認(rèn)為可能大家都會(huì)跳過(guò)去。那不是白寫了。。。之所以要設(shè)置這個(gè)練習(xí)題的部分。一方面的確是希望讀者能夠通過(guò)這些練習(xí)真的拿筆算一下,說(shuō)真的。數(shù)學(xué)你不多算真的永遠(yuǎn)學(xué)不會(huì)。還有一方面。是想把一些easy混淆的點(diǎn)通過(guò)練習(xí)題的方式提出來(lái),讓讀者自己算一下加深理解。由于假設(shè)要把這些混淆點(diǎn)都寫進(jìn)書里,思路上會(huì)比較亂。希望能起到比較好的效果吧。。。

    以下就會(huì)真正開(kāi)始Unity Shader的部分了。

    加油!


    2015.07.29更新

    放假了大部分時(shí)間都拿來(lái)看資料、學(xué)習(xí)、寫書了。半個(gè)多月寫出了基本篇的草稿,不知道是快還是慢?我自信自己寫的非常具體了,比方第5章介紹了語(yǔ)義,第6章具體介紹了基本光照模型,第7章寫到凹凸映射的時(shí)候也花了非常大篇幅介紹實(shí)現(xiàn)的原理和細(xì)節(jié),包括高度圖,第8章的透明效果先介紹了渲染隊(duì)列,我自己認(rèn)為這個(gè)非常重要的,應(yīng)該在學(xué)習(xí)怎么實(shí)現(xiàn)透明之前就讓讀者知道渲染隊(duì)列對(duì)透明來(lái)說(shuō)是多么的重要。我認(rèn)為如今的安排對(duì)剛開(kāi)始學(xué)習(xí)的人足夠友好了,當(dāng)然寫后面內(nèi)容的時(shí)候可能還會(huì)對(duì)前面的內(nèi)容進(jìn)行改動(dòng)。比如如今想在第4章數(shù)學(xué)里加一個(gè)在Unity腳本里的矩陣運(yùn)算,但這本書是講shader的。不知道加進(jìn)去合不合適,但它的確是個(gè)easy出錯(cuò)的地方。

    每次講到新的內(nèi)容時(shí),我都盡量用圖示來(lái)解釋。每一幅圖都是在OmniGraffle里認(rèn)真做的,希望以后看到的人能get到我的意思。寫書寫太多感覺(jué)寫博客都語(yǔ)無(wú)倫次了。。

    近期QQ群、私信和留言經(jīng)常有人問(wèn)題一些問(wèn)題,我在這里統(tǒng)一回答一下。回答幾個(gè)問(wèn)題

  • 這書什么時(shí)候出版?

    大家也看到了我的更新速度。眼下寫的了第8章(第一章介紹還沒(méi)寫),初步定的是19章。也就是說(shuō)寫了三分之中的一個(gè)了,我如今大概花了一個(gè)多月,可是寫書的確花費(fèi)了非常多時(shí)間,寫完基本篇之后可能會(huì)放慢一下速度。總體來(lái)講,我估測(cè)下大概還要三四個(gè)月的時(shí)間才干寫完,因此出版的話最快年底,不然就是明年年初了。

    有一些人說(shuō)太晚了,相信我,我比不論什么人都想讓它趕緊出版,可是我不會(huì)影分身……好羨慕鳴人。

  • 能不能添加些更高難度的技術(shù)?

    一些童鞋大概看了前幾章文件夾后認(rèn)為內(nèi)容比較簡(jiǎn)單。怎么說(shuō)呢,這本書的定位是面向剛開(kāi)始學(xué)習(xí)的人,因此肯定會(huì)是由易到難的,但我自信的是,即便是簡(jiǎn)單的內(nèi)容我也寫的非常具體。非常多非常小的點(diǎn)也都寫到了。非常多地方都是其它資料里一帶而過(guò),而又非常迷惑的點(diǎn)。假設(shè)是沒(méi)有好好學(xué)過(guò)shader的。就算如今已經(jīng)能夠熟練寫一些了我認(rèn)為這本書也是實(shí)用的。

    更重要的是,我不想把它寫成一本百科全書。一來(lái)我自己的確經(jīng)驗(yàn)不夠,寫不來(lái)大全,二來(lái)我認(rèn)為一本大全的書肯定寫不精、寫不細(xì)。到頭來(lái)又說(shuō)看不懂怎么辦?三來(lái)我認(rèn)為寫shader是一個(gè)師傅領(lǐng)進(jìn)門修行靠個(gè)人的活,一旦你了解了它的工作流程和基本思路,剩下的就是經(jīng)驗(yàn)的積累,你看得寫、寫得多自然就厲害了,這不是一本基礎(chǔ)書就能夠讓你做到的。

    當(dāng)然,我的確會(huì)寫一些復(fù)雜的技術(shù),這是高級(jí)篇和擴(kuò)展篇的工作。

    假設(shè)你認(rèn)為有一些經(jīng)常使用的復(fù)雜一些的技術(shù)想要在這本書里看到,能夠告訴我。

  • 是彩色書還是黑白書?

    我自己當(dāng)然希望是彩色書,一本講畫面效果的書居然是黑白的那太遺憾了。只是編輯告訴我,彩色印刷會(huì)提高非常多成本,那銷量就會(huì)下降。我能夠理解,但如今還沒(méi)有一個(gè)定論,等寫完之后會(huì)盡量爭(zhēng)取。

    只是我也非常好奇,大家認(rèn)為這樣一本幾百頁(yè)的全彩書,你認(rèn)為多少價(jià)錢比較合適?

  • 2015.09.04更新


    斷斷續(xù)續(xù)把中級(jí)篇的草稿完畢了。越往后面寫感覺(jué)內(nèi)容的安排越費(fèi)勁,一些內(nèi)容不知道把它們歸入到哪一章更加合適,放的早了一些內(nèi)容沒(méi)講操心讀者看不明確,放的晚了又認(rèn)為內(nèi)容不足單獨(dú)成章。高級(jí)篇想必也會(huì)這樣。文件夾還在不斷調(diào)整中……

    寫第9章光照簡(jiǎn)直是除數(shù)學(xué)篇外最痛苦的一章。想要講明確非常難啊,無(wú)論怎樣,眼下的內(nèi)容我盡力了,希望能夠有好的效果。

    由于內(nèi)容多并且雜,所以這一章不知不覺(jué)就寫了四萬(wàn)字,也是眼下字?jǐn)?shù)最多的章節(jié)了。即便這樣,仍然對(duì)一些內(nèi)容“念念不忘”,比如菲尼爾光照、邊緣光照等,不知道以后會(huì)不會(huì)加入進(jìn)去。

    話說(shuō)。寫書的時(shí)候發(fā)現(xiàn)一個(gè)不錯(cuò)的免費(fèi)紋理站點(diǎn)——http://opengameart.org/,寫書的時(shí)候有一些紋理是從這里找到的,在這里也推薦給大家。

    當(dāng)然。也有自己畫的一些紋理。

    之前做游戲的時(shí)候做了一個(gè)2D水面。這次把它的實(shí)現(xiàn)也加入到了書里面。

    呼,還有兩大篇總體草稿就完畢了。有些內(nèi)容想偷點(diǎn)懶。使用點(diǎn)博客里寫過(guò)的。

    。。9月預(yù)計(jì)要趕論文,進(jìn)度會(huì)更慢。預(yù)計(jì)完畢大概要11月或者12月了,希望大家能夠耐心等待。我會(huì)加油的。



    2015.10.20更新

    恩。好久沒(méi)更新了。由于9月份一直在弄?jiǎng)e的事情所以寫書的進(jìn)程有些滯緩了。讓大家久等了!只是還好,趕在11月之前把高級(jí)篇的草稿部分寫完了,希望大家看了文件夾能夠愜意如今的內(nèi)容。

    第12章講屏幕特效,好吧,我承認(rèn)我原來(lái)沒(méi)想寫這么多的,由于我一開(kāi)始就說(shuō)過(guò)這不是一本特效大全。只是寫著寫著。就認(rèn)為,恩,高斯模糊非常重要,不能刪,恩,邊緣檢測(cè)非常重要。由于能夠和后面聯(lián)系在一起。恩。這樣運(yùn)動(dòng)模糊也不能刪了(后面也有聯(lián)系)。

    所以寫著寫著就寫了非常多,只是希望大家看了書能夠?qū)@些屏幕特效有所了解。知道它們實(shí)現(xiàn)的基本原理(事實(shí)上本質(zhì)上都差點(diǎn)兒相同),這樣在實(shí)現(xiàn)更復(fù)雜的屏幕特效時(shí)也會(huì)有頭緒了。

    第13章講深度和法線緩存。事實(shí)上好像移動(dòng)平臺(tái)上用的比較少?只是我認(rèn)為這張內(nèi)容非常適合擴(kuò)展視野,讓大家知道原來(lái)這些紋理還能夠這么用。里面一些內(nèi)容,比方運(yùn)動(dòng)模糊和全局霧效參考了GPU Gems里面的文章。事實(shí)上GPU Gems也并沒(méi)有那么復(fù)雜。第14章講了非真實(shí)感渲染。這章并非重點(diǎn),主要也是為了擴(kuò)展視野,我選了最流行的卡通風(fēng)格和非常出名的素描風(fēng)格來(lái)做個(gè)樣例。第15章講了噪聲在shader中的應(yīng)用,噪聲的應(yīng)用實(shí)在太廣了。。。第16章是很多人要求的優(yōu)化。恩,有四五個(gè)童鞋都聯(lián)系我說(shuō)希望學(xué)習(xí)一些優(yōu)化。如你們所愿:)。

    這章的內(nèi)容參考了之前我的一篇博客,只是當(dāng)然不是原封不動(dòng)啦。。

    內(nèi)容更具體了,并針對(duì)Unity 5做了一些調(diào)整和變化,希望對(duì)大家有所啟示。高級(jí)篇的一個(gè)主要目的是為了開(kāi)闊視野。了解很多其它技術(shù),因此每一章后面都有擴(kuò)展閱讀部分,給出了我能找到的全部我認(rèn)為非常好的資料。能列在這部分的資料,我都強(qiáng)烈建議讀者去讀一下,相信你一定會(huì)有非常大的收獲。

    好啦,最后放一些高級(jí)篇里實(shí)現(xiàn)的效果,歡迎大家提出意見(jiàn)和建議。

    還有最后一篇擴(kuò)展篇,計(jì)劃講一些關(guān)于Unity 5的PBR和相似于ShaderToy這樣的內(nèi)容,你怎么看?

    恩。一直有人問(wèn)我什么時(shí)候出版,具體時(shí)間我真不知道。

    寫完最后一篇大概11月初,然后我還要又一次讀一遍全部?jī)?nèi)容。做些調(diào)整和改動(dòng)。

    這大概也要花一個(gè)月吧。也就是12月了。并且可能還有實(shí)驗(yàn)室的事情要做,因此出版大概要明天年初了。希望大家能再等一下。只是。真的非常感謝一直支持我的各位,說(shuō)實(shí)話寫到如今的確有些到了倦怠期。只是由于有非常多支持和鼓舞的聲音給了非常多新的動(dòng)力,謝謝大家。還是希望大家假設(shè)對(duì)和書有關(guān)的不論什么建議都能夠聯(lián)系我。不勝感激:)


    2015.11.09更新

    嗚呼,不敢相信自己的速度,我居然在11月趕出來(lái)了……截止到今天。書里面全部的20章內(nèi)容就都完畢了。上周已經(jīng)對(duì)全部章節(jié)進(jìn)行了我這方面的改動(dòng)。然后交給編輯啦~我已經(jīng)竭盡全力了,希望會(huì)有好的結(jié)果!

    • 關(guān)于什么時(shí)候出版

      編輯說(shuō)大概還要一個(gè)多月吧。看我的內(nèi)容須要多長(zhǎng)時(shí)間排版。我會(huì)在博客里實(shí)時(shí)更新的(可能會(huì)開(kāi)還有一篇文章了吧)!

    • 關(guān)于封面和書名

      恩,事實(shí)上之前給出版社寫表格的時(shí)候填了個(gè)名字,《Unity Shader入門金典》,是不是認(rèn)為挺難聽(tīng)的……假設(shè)你有更好的名字一定要告訴我,假設(shè)最后使用了的話一定免費(fèi)贈(zèng)書

      封面的話。編輯說(shuō)我能夠提出自己的意見(jiàn)。我比較想用Shadertoy創(chuàng)始人iq的一些作品(http://www.iquilezles.org/www/articles/raymarchingdf/raymarchingdf.htm),比方以下這些(啊啊啊iq是我的偶像…):


      這些效果僅僅使用了一個(gè)pixel shader,是最好的展現(xiàn)shader能力的樣例啊有木有!

      打算后面給編輯看一下合不合適,然后再聯(lián)系偶像iq征得許可權(quán):)

    這大概是最后一次更新這篇博客了。我上一周在改書的時(shí)候盡管對(duì)文件夾小改了下,但大部分內(nèi)容就是上面這樣的。

    期望后面一切順利。再次感謝小伙伴們的支持。!。關(guān)于出版時(shí)間、書名和封面之類的我會(huì)在后面不斷跟進(jìn)的!

    轉(zhuǎn)載于:https://www.cnblogs.com/mengfanrong/p/5129835.html

    總結(jié)

    以上是生活随笔為你收集整理的【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。