首先申明,本人也是初學,有很多不懂的地方,圖形學的基礎也不是很好,還希望大家共同指點學習。
在shaderlab 中基本了解了渲染流程以後,就開始嘗試一些基本的shader練習
第一開始挑選了鏡面反射的例子
shaderlab 是高階的渲染語言,在cg裡的矩陣除了下述找到的,還有一些沒有發現
unity_matrix_mvp
current model*view*projection matrix
unity_matrix_mv
current model*view matrix
unity_matrix_p
current projection matrix
unity_matrix_t_mv
transpose of model*view matrix
unity_matrix_it_mv
inverse transpose of model*view matrix
unity_matrix_texture0 to
unity_matrix_texture3
texture transformation matrices
vectors (float4) supported:
unity_lightmodel_ambient
current ambient color.
注意到有環境光的矩陣,但是沒有找到其他燈光的位置和顏色的矩陣,這樣就在算鏡面演算法的時候很難受,至今沒有解決,還希望有高人指點。難道就只能有unity給的幾個光照模型麼?那麼反射係數又在**?
之後的試點矩陣有兩種解決方案
1worldspaceviewdir( v.vertex );
2 通過攝像機的**將攝像機的矩陣傳入。 但是至今也不知道對於兩種方式的區別。
對於基本的矩陣沒有完全熟悉,但是不敢停留,繼續看了渲染流程後開始熟悉頂點渲染和片段渲染,功能就不一一概述
shaderlab 是通過
#pragma vertex vert
#pragma fragment frag
來定義兩個過程的函式得。
在頂點模式中計算的頂點座標,紋理座標,光照座標...直接通過在片段渲染函式的引數傳遞到片段渲染中。
值得注意的是在頂點渲染的函式中返回的是頂點的結構體,而在片段渲染中則返回half4值。
由於很多問題沒有解決,最後通過計算視點的方向寫了乙個很簡單的鏡面模型。
如圖還希望大家共同指點,共同學習。
shaderlab內建變數
unity objecttoworld當前模型矩陣。unity worldtoobject當前世界矩陣的逆矩陣。unity matrix mvp當前模型 檢視 投影矩陣。unity matrix mv當前模型 檢視,矩陣 float3 worldspaceviewdir float4 v 世界空間中...
Shaderlab的基本結構
shaderlab 不區分大小寫,properties中不能加分號 shader name secondtex secondtex 2d subshader tags pass blend srcalpha oneminussrcalpha properties中 maincolor maincol...
ShaderLab教程系列(一)
首先,第一步,我們先看shader有什麼作用。我們在場景裡面新建乙個cube。我們可以看到下圖 在hierarchy中選中這個新建的cube,我們可以在inspector面板中看到 我們來做乙個小動作,通過photoshop建立一張很傻冒的圖,如下 然後將該psd檔案複製到專案中,並托給當前的cub...