Unity入門(mén)精要(筆記)

Draw Call:理解為一個(gè)命令,由CPU發(fā)起,GPU接收,命令指向一個(gè)需要被渲染的圖元列表,計(jì)算數(shù)據(jù)后輸出為像素

頂點(diǎn)著色器:每個(gè)定點(diǎn)都會(huì)調(diào)用一次,完成坐標(biāo)的變換(將定點(diǎn)坐標(biāo)從模型空間轉(zhuǎn)換到其次裁剪空間)和逐定點(diǎn)的光照。

三角形設(shè)置:由得到的信息計(jì)算每個(gè)圖元覆蓋的像素,計(jì)算像素的顏色

三角形遍歷:檢查每個(gè)像素是否被一個(gè)三角網(wǎng)格覆蓋。被覆蓋則生成一個(gè)片元(片元并不是真正意義上的像素)

片元著色器(像素著色器):進(jìn)行逐片元的操作,輸入的是對(duì)頂點(diǎn)著色器輸出的信息插值得到的結(jié)果(為了在片元著色器中進(jìn)行紋理采樣,通常在定點(diǎn)著色器階段輸出每個(gè)頂點(diǎn)對(duì)應(yīng)的紋理坐標(biāo))

逐片元操作:決定片元的可見(jiàn)性,混合顏色信息

HLSL(DirectX):High Level Shading Language

Cg(Nvidia):C for Graphic

GLSL(OpenGL):OpenGL Shading Language

DrawCall數(shù)量影響:DrawCall之前CPU向GPU提交數(shù)據(jù),DrawCall多時(shí),過(guò)多的CPU提交數(shù)據(jù)造成CPU過(guò)載

Unity Shader:用ShaderLab編寫(xiě),ShaderLab是Unity提供的編寫(xiě)UnityShader的一種說(shuō)明性語(yǔ)言

通過(guò)Shader名稱(chēng)的字符串中添加'/'修改對(duì)應(yīng)Shader出現(xiàn)在菜單中的位置

Properties:用于包含需要顯示在Inspector面板中的屬性的語(yǔ)義塊

\\ Example
Properties{
  Name("display name", PropertyType) = DefaultValue
}

SubShader

  • 一個(gè)Shader中至少包含一個(gè)SubShader
  • Unity會(huì)選擇第一個(gè)可以在當(dāng)前平臺(tái)使用的SubShader,都不行的話(huà)使用Fallback指定的UnityShader
  • SubShader中會(huì)定義一系列的Pass,RenderSetup,Tags

常見(jiàn)渲染狀態(tài)

  • Cull:設(shè)置剔除模式,背面(Back),證明(Front),關(guān)閉(Off)
  • ZTest:設(shè)置深度測(cè)試使用函數(shù)
  • ZWrite:開(kāi)啟和關(guān)閉深度寫(xiě)入
  • Blend:開(kāi)啟并設(shè)置混合模式

Pass語(yǔ)義塊

  • 通過(guò)Name "MyPassName"命名,從而實(shí)現(xiàn)復(fù)用
  • 復(fù)用使用UsePass "MyShader/MYPASSNAME",PassName部分要使用全大寫(xiě)

Fallback:如果所有的SubShader都用不了的話(huà)就使用Fallback提供備選的Shader

表面著色器(Surface Shader)

  • 需要代碼量少,但是渲染代價(jià)比較大
  • 處理很多光照細(xì)節(jié)

頂點(diǎn)/片元著色器(Vertex/Fragment Shader)

  • 代碼復(fù)雜但是靈活度高
  • 代碼寫(xiě)在Pass語(yǔ)義塊內(nèi),自己定義每個(gè)Pass的Shader代碼

Unity Shader并非是真正的Shader

  • Unity里,Unity Shader指的只是一個(gè)ShaderLab文件
  • Unity Shader可以同時(shí)編寫(xiě)頂點(diǎn)著色器和片元著色器
  • 本質(zhì)上說(shuō)Unity中只存在定點(diǎn)/片元著色器

Unity中的笛卡爾坐標(biāo)系

  • 對(duì)于模型空間和世界空間,使用的是左手系
  • 觀察空間使用的是右手系

點(diǎn)(Point):維度空間里面的一個(gè)位置,主要為二維空間或者三維空間

矢量(vector):包含了模和方向的有向線段,小寫(xiě)粗體表示,通常用于相對(duì)于某個(gè)點(diǎn)的偏移

單位矢量:模為1的矢量,也稱(chēng)為歸一化的矢量,將矢量轉(zhuǎn)化成單位矢量的過(guò)程叫做歸一化,單位矢量使用小寫(xiě)粗體字符上添加'^'表示

矢量的點(diǎn)積

  • 也稱(chēng)為內(nèi)積
  • dot(a,b)表示兩個(gè)矢量的點(diǎn)積,計(jì)算為矢量對(duì)應(yīng)的分量分別相乘。
  • 點(diǎn)積的其中一個(gè)幾何意義就是投影,一個(gè)矢量a點(diǎn)積一個(gè)矢量b,除以a模則是ba上的投影,除以b的模則是ab方向上的投影
  • 正負(fù)表示與單位矢量a方向相同或者相反
  • 一個(gè)矢量與自身進(jìn)行點(diǎn)積,結(jié)果是矢量模的平方
  • 兩個(gè)單位矢量的點(diǎn)積是對(duì)應(yīng)的余弦值

矢量的叉積

  • 也成為矢量的外積
  • 計(jì)算的結(jié)果仍然是一個(gè)矢量
  • axb = (aybz - azby, azbx - axbz, axby - aybx),計(jì)算的角標(biāo)是按照xyz連續(xù)相鄰
  • 不滿(mǎn)足交換率
  • 點(diǎn)積的向量的長(zhǎng)度為a的模和b的模乘以sin夾夾角值
  • 左手系和右手系不會(huì)對(duì)計(jì)算結(jié)果產(chǎn)生影響,影響的知識(shí)三維空間中視覺(jué)表現(xiàn)

矩陣(Matrix)

  • 由mxn個(gè)標(biāo)量組成的長(zhǎng)方形數(shù)組
  • 矩陣乘法滿(mǎn)足結(jié)合率不滿(mǎn)足交換率

方塊矩陣

  • 簡(jiǎn)稱(chēng)方陣,行數(shù)和列數(shù)相等的矩陣
  • 有對(duì)角元素,對(duì)角元素為行數(shù)和列數(shù)相等的元素

對(duì)角矩陣

  • 對(duì)角矩陣是除了對(duì)角元素外都為0的對(duì)角矩陣

單位矩陣

  • 將原矩陣的第i行變成了第i列,即為轉(zhuǎn)置矩陣

逆矩陣

  • 矩陣可逆的前提是方塊矩陣
  • 如果矩陣有逆矩陣則說(shuō)矩陣可逆
  • 矩陣的行列式不為0,則矩陣可逆
  • 轉(zhuǎn)置矩陣的逆矩陣是逆矩陣的轉(zhuǎn)置

正交矩陣

  • 如果一個(gè)方陣和其轉(zhuǎn)置矩陣的相乘為單位矩陣則為正交矩陣

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • <轉(zhuǎn)>我也忘了轉(zhuǎn)自哪里,抱歉,感謝原作者 什么是Shader Shader(著色器)是一段能夠針對(duì)3D對(duì)象進(jìn)行操作...
    星易乾川閱讀 5,857評(píng)論 1 16
  • Unity Shader學(xué)習(xí)-1.渲染流水線 先了解一下什么是流水線:(下面是百度百科的定義) 流水線:流水線又稱(chēng)...
    ZeroTryTryTry閱讀 5,594評(píng)論 2 17
  • 轉(zhuǎn)載注明出處:點(diǎn)擊打開(kāi)鏈接 Shader(著色器)是一段能夠針對(duì)3D對(duì)象進(jìn)行操作、并被GPU所執(zhí)行的程序。Shad...
    游戲開(kāi)發(fā)小Y閱讀 3,685評(píng)論 0 4
  • 你好,三角形 圖形渲染管線(Pipeline) 3D坐標(biāo)轉(zhuǎn)為2D坐標(biāo)的處理過(guò)程是由OpenGL的圖形渲染管線(Pi...
    IceMJ閱讀 7,640評(píng)論 2 13
  • 目錄結(jié)構(gòu): 第一步,明確要干嘛 第二步,怎么去畫(huà)(純理論) 第三步,怎么去畫(huà)(實(shí)戰(zhàn)) 第四步,練練手 第一步,明確...
    半紙淵閱讀 8,301評(píng)論 18 57

友情鏈接更多精彩內(nèi)容