首先是說一些關於著色器的一些基本知識
1.著色器型別型別,分別是固定管線著色器(將會淘汰)、頂點片元著色器、表面著色器。
頂點片元著色器:干預模型形態的著色器,例如帶有波浪的水面,修改的就是波浪表面上每乙個頂點的值。
表面著色器:干預畫素的著色器,比如烏龜上面新增乙個光照的紋理,使其有一種在水中游泳的感覺。
2.著色器與顯示卡的關係
顯示卡也就是gpu是圖形運算處理中心兩者的關係為
圖形->新增到gpu(經過渲染管道進行渲染)->顯示到螢幕上。
我們編寫的shader程式就是頂點著色器與片元著色器。
3.相關知識雜談
在不同的gpu中os、windows等,在不同型別的顯示卡中有不同的圖形標準,如果不講這些統一起來的話,有些東西只能在固定的gpu中執行,所以菜餚轉趨動,通過驅動才可以統一標準—>directorx(圖形標準),使不同的軟體等在不同的顯示卡中也可以正常顯示。
hlsl語言支援通過director3d編寫的著色器,只能在director3d中使用
glsl語言支援opengl上編shader程式。
cg語言是nvdiai和微軟合作提供的語言,支援director3d和opengl編寫程式。我們編寫shader程式一般都是用cg語言,但是vs上是不會提示cg語言的變數型別等資訊的。
4.shader程式設計的基本結構
shader 「name」
//如果子著色器顯示卡不支援,就會降級即fallback操作
}1.properties定義
name(「display name」,type) = 值
name是變數名稱、display name:顯示到屬性檢查器中的名稱
type是變數的型別
值是預設值
注意: name的規定就是使用下劃線開始
例如
properties
_glossiness
("smoothness"
,range(0
,1))
=0.5
_metallic
("metallic"
,range(0
,1))
=0.0
}
2.subshader的屬性組成
其中每乙個子著色器都可以有多個通道
上圖的標籤使用方法及型別
3.pass通道
subshader包裝了乙個渲染方案,這些方案的執行途徑是pass subshader可以由很多個pass,每乙個pass 都能令幾何體渲染一次
pass的基本語法是
pass
在其他著色器的pass塊中如果想要引用此通道,可以通過名字來引用減少重複操作,需要注意的是name命令必須是大寫,也就是說但凡是通道的名字必須要大寫(unity引擎的規定)
通道型別分別有regularpass、usepass、grabpasss三種
普通通道的渲染設定
上圖是普通通道型別的作用
usepass的用處
插入所有來自其他著色器的給定名字的通道;
usepass「shader/name」,name為 著色器通道
使用方法:「specular/base」//插入specular中為bass 的通道;
grabpass{};一種特殊通道型別,他會捕獲物體所在位置的螢幕的內通婚,並且寫入乙個紋理中,這個紋理能夠唄用於後續通道中完成高階影象特效 ,後續通道可以使用
——grabtexture進行訪問;
使用grabpass捕獲 螢幕內容到指定紋理中,後續通道可以通過紋理名稱訪問
5.shader中常用型別
其中的options是描述紋理屬性的
6.unity座標系轉換
7.cg語言的常用語義修飾
8.cg語言基本型別表示式
定點數:用整數表示小數,比如有乙個32位的作業系統,那麼數字35.2的35,就存在前16位,2存後16位,所以,所謂的定點數就是用整數來表示小數。
在cg中顏色就是用fixed來表示的,比浮點數更加高效。
sampler來表示紋理物件,如果要向shader中關聯一副,紋理或者texture,就使用sampler/1d/2d/3dcube/rect,1d/2d等都是紋理,cube可以代表天空盒
9.標準內建函式
Unity Shader編寫基礎及注意事項(二)
座標系規則 unity中存在空間座標系,模型座標系,相機座標系以及螢幕座標系。注意 空間座標系和模型座標系均是左手座標系,z在物體的正前方,相機座標系是右手座標系,z指向相機後方。座標系變換 包含平移 旋轉和縮放變換。注意 三維座標的平移不能用3x3矩陣表示,所以擴充套件到4x4的齊次座標。unit...
python編寫api原則 編寫api需要一些建議
聽起來好像您已經在python方法中定義了所有api功能,因此您可以使用pythonweb服務框架來直接或通過簡單的包裝器服務類公開它們。我建議你看看關於web services at python.org的wiki頁面。在 如果您想使用json作為web服務的傳輸協議,我建議您使用json rpc...
編寫Python程式訪問需要cookie的網頁
有些網頁需要你登入之後才可以訪問,你需要提供賬戶和密碼,其實用python寫程式來訪問還是蠻簡單的,就是對cookie的儲存而已 比如我在 www.bokee.com 部落格網上註冊了帳號test51,密碼11111 如果想訪問登入後才可以訪問的網頁,那麼程式似乎可以這樣寫 這樣做之後cookie就...