shaderlab 學習筆記

2021-06-16 07:44:21 字數 1235 閱讀 7552

首先申明,本人也是初學,有很多不懂的地方,圖形學的基礎也不是很好,還希望大家共同指點學習。

在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...