Unity Shader入門精要 閱讀筆記六

2021-08-14 01:46:58 字數 1085 閱讀 9846

這裡將會對unity中的內建檔案、語義、除錯進行閱讀。

unity內建檔案

在編寫shader的時候,unity為我們隱藏了很多shader中的細節。有些是unity預設新增的,例如unitycg.cginc庫,有一些是需要我們自己手動去新增的。之前說過cg其實是c for graph的縮寫,那麼在應用其他的庫檔案的方法上面,其實語法和c語言是很像的:

cgprogram

//...

#include "unitycg.cginc"

//...

endcg

其實在這裡面我們可以位元組去實現一些內容,然後來應用。當然這不是重點。

unity預設提供的庫的路徑,win下面是在安裝目錄的/data/cgincludes/資料夾下

unityshader語義

之前在寫shader的時候,如果不是我們自定義的結構體,那麼就需要在變數後面新增冒號,然後加上類似position的東西。冒號後面的內容就是語義,用來在shader中描述變數具體是用來做什麼的。這裡需要注意的是在directx10後面的版本中,一些語義使用系統數值語義,相比之前的語義新增了sv_的字首,例如sv_position。

unity除錯

常使用unity的人都知道,shader不能像**那樣去單步除錯,不能去檢視執行中的資料值。除錯shader是乙個很困難的事。

書中提出了幾種方法:

1、假色彩影象。這種方法比較困難,其實就是將過程中的結果,通過影象顯示出來。影象最後需要轉換到0-1的閾值範圍內。通過拾色器在渲染後的影象檢查是否渲染成功。

2、visual studio的graphics debugger。這個就厲害了,能夠實現shader的單步除錯。

3、unity自帶的幀偵錯程式:frame debugger。通過window-》frame debugger來開啟。這個方法能夠支援渲染的每一步的效果檢視,並提供ui視覺化介面。

其實目前偵錯程式用的最多的還是unity自帶的,同時由於很多時候除錯很複雜的效果的時候需要很多引數和輸入,在除錯時可以將某個引數單獨輸出在螢幕上現實,或者在framedebuger中除錯檢視。

Unity Shader入門精要

學習資料 unity shader入門精要 時長 乙個月 計畫 1 2天完成一章,預計乙個月內完成 幾何階段 gpu實現,輸出螢幕空間的二位點座標,深度,著色資訊,傳送給光柵化階段 光柵化階段 gpu實現,決定每個渲染圖元哪些畫素應該被繪製在螢幕上,將幾何階段傳來的頂點資料進行插值 頂點v法線的獲取...

筆記 《Unity Shader入門精要》

應用階段 輸出渲染圖元 rendering primitives 包括 準備場景資料 相機 場景模型 光源 粗粒度剔除 culling 把不可見的物體剔除 渲染狀態 材質 紋理,使用的shader等。光柵化階段 每個渲染圖元的哪些畫素應該被繪製在螢幕上,包括 三角形設定 三角形遍歷 片元著色器 逐片...

《UnityShader入門精要》Unity陰影

lightmode為shadowcaster的pass是用來渲染陰影對映紋理。該shader如果沒有定義lightmode為shadowcaster的pass,則會去fallback指定的shader繼續尋找。如果沒有找到,該物體無法向其他物體投射陰影,但能接收來自其他物體投射的陰影 螢幕空間的對映...