座標系規則:unity中存在空間座標系,模型座標系,相機座標系以及螢幕座標系。注意:空間座標系和模型座標系均是左手座標系,+z在物體的正前方,相機座標系是右手座標系,+z指向相機後方。
座標系變換:包含平移、旋轉和縮放變換。注意:三維座標的平移不能用3x3矩陣表示,所以擴充套件到4x4的齊次座標。unity-shader中大多數用到4x4齊次矩陣變換,如下公式為座標變換原理。
點積(內積)與叉乘(外積):記住一句順口溜就好,點積計算角度,叉乘判斷方位。比如:你要判斷敵人在你什麼方位,通過點積可以計算敵人與你的夾角度數,但不知道敵人在你的左邊還是右邊,這個時候叉乘便可以計算你與敵人的方位。
unity中的shader一般包括四種:
(1)standard su***ce shader:包含標準光照模型,基於物理渲染的標準表面著色器,這個可以使用於大多數的模型渲染,除非需要新增其他特效才需要自己編寫,否則一般unity自帶的shader就夠用了。
(2)unlit shader:不包含光照模型,包含霧效的頂點/片元著色器。
(3)image effect shader:為實現各種螢幕後效提供了乙個模板。
(4)compute shader:不參與渲染流程,這可以說是cpu利用gpu並行高效計算的介面。
unity中所謂的表面著色器實質上是頂點/片元著色器的更加高階抽象的表示而已。
頂點/片元著色器的基本結構如下:
//每個shader都有乙個專屬 名字,冒號裡面的便是unity面板顯示的shader名字
shader "myshader"
//針對顯示卡a的shader
subshader
//片元著色器函式
float4 frag()
:sv_target
//這裡結束cg**的編寫
endcg}}
//針對顯示卡b的shader
subshader
//上述subshader都失敗時呼叫低階的渲染shader
fallback 「vertexlit」
}
shaderlab屬性型別
cg變數型別
color,vector
float4,half4,fixed4
range,float
float,half,fixed
2dsampler2d
3dsampler3d
cgprogram
......
#include "unitycg.cginc"
......
endcg
Unity Shader數學基礎
叉積向量也被叫做向量,是指乙個包含了模長和方向的 有向線段標量是只有模沒有方向。向量和標量的區別 向量表達的是,從這裡向東走500公尺 標量表達的則是,距離這裡500公尺 向量的模指的是這個是向量的長度。乙個模的長度可以是任意的非負數 kv kvx,kvykvz 即 5 1,2,3 51,52,5 ...
unity Shader基礎光照
一 光 1 輻射度 用來量化光。對於平行光來說,輻射度可以通過計算在垂直於l的單位面積上單位時間內穿過的能量來得到。2 散射和吸收 光線和物體相交會發生的現象。散射 只改變光線的方向,不改變光線的密度和顏色。散射後兩個方向 折射和反射。在關照模型中,高光反射部分體現反射,漫反射部分體現折射 吸收 只...
unity shader編寫需要儲備的知識(1)
首先是說一些關於著色器的一些基本知識 1.著色器型別型別,分別是固定管線著色器 將會淘汰 頂點片元著色器 表面著色器。頂點片元著色器 干預模型形態的著色器,例如帶有波浪的水面,修改的就是波浪表面上每乙個頂點的值。表面著色器 干預畫素的著色器,比如烏龜上面新增乙個光照的紋理,使其有一種在水中游泳的感覺...