【Shader基礎篇】之基本概念

1:移動端IOS,Android等2D手遊:都是使用漫反射貼圖或者法線貼圖,模型是白模,角色模型上是漫反射。貼圖人物上的盔甲,並不是白模附帶的,而是畫上去的。而凹凸不平效果是法線貼圖。使用的顏色空間是Gramma。


2:主機端:大型單機遊戲,是真實模擬現實中的渲染效果。其中unity使用的標準着色器支持10種貼圖類型。使用的顏色空間是Linear空間。unity默認選擇Gamma,但如果使用PBR標準着色器,就必須將顏色空間改爲Linear


3:PBR:基於物理規則的渲染方式。GI:模擬光的互動和反彈等複雜行爲的算法。


4:Unity5中重點推出了一套基於物理着色(Physically Based Shading,PBS)的多功能Shader,叫做標準着色器(Standard Shader)。


5:Shader學習步驟:內置shader使用,3D數學基礎,渲染管線的渲染步驟(DirectX),自己開發shader。


6:CG/HLSL提供的語義作用是讓shader知道從哪裏讀取數據,並把數據輸向哪裏。


7: 點光源不與任何對象共享任何組件,當把點光源放到場景中的時候,其他對象將變暗。


8:材質相當於框架,shader相當於框架中的內容。


9:我們在subshader中書寫材質的參數,裏面有Tags,Pass塊,我們主要是實現pass塊。subahsder和properties屬於同一級。正真用於渲染物體內容的代碼是在subshader中實現的,subshader針對不同顯卡編寫不同shader,然後unity在運行的時候,會選擇最適合顯卡運行的那個subshader。


10:Cg 同時被OpenGL 與Direct3D 兩種編程API 所支持。

11:Cg 語言通常採用動態編譯的方式。在宿主程序運行時利用Cg 運行庫( Cg46Runtime library)動態編譯Cg 代碼,使用動態編譯的方式,可以將Cg 程序當作一個腳本,隨時修改隨時運行,節省大量的時間。Cg 語言同樣支持靜態編譯方式,即,Cg 源碼編譯成彙編代碼後,這部分目標代碼被鏈接到宿主程序最後的可執行程序中。使用靜態編譯的好處是隻要發佈可執行文件即可,源碼不會被公開。Cg 編譯器首先將Cg 程序翻譯成可被圖形API(OpenGL 和Direct3D)所接受的形式,然後應用程序使用適當的OpenGL 和Direct3D 命令將翻譯後的Cg 程序傳遞給圖形處理器,OpenGL 和Direct3D 驅動程序最後把它翻譯成圖形處理器所需要的硬件可執行格式。NVIDIA 提供的Cg 編譯器爲cgc.exe。

12:被特定的圖形硬件環境或AIP 所支持的Cg 語言子集,被稱爲Cg Profiles。需要注意的是: profile 分爲頂點程序的profile 和片段程序的profile,這是因爲頂點着色器和片段着色器原本就不是工作在同一個硬件。

13:unity中的shader是shaderlab。unity shader中cginc文件是包含文件,是unity爲我們提供的一些有用的變量和幫助函數。

14:在unity的shaderlab所提供的結構中,我們既可以使用GLSL來寫shader,也能用Cg/HLSL來寫。

15:subshader中的每個快pass包含了渲染一個幾何體的具體代碼,程序猿也主要操作這一塊。塊的Name主要用來引用此pass,一次書寫,重複使用。且命名要大寫。

16:Surface Shader最終會被編譯爲一個複雜的vertex+fragment Shader。

17:標準shader使用的是PBR渲染,基於現實物理效果的渲染表現形式,模型在3dmax等三維製作軟件中,要按照PBR貼圖的製作規範和模式來製作,決定了該模型是否可以使用標準shader渲染。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章