Unity Shader編寫基礎及注意事項(二)

2021-10-01 02:59:46 字數 1340 閱讀 9340

座標系規則: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.著色器型別型別,分別是固定管線著色器 將會淘汰 頂點片元著色器 表面著色器。頂點片元著色器 干預模型形態的著色器,例如帶有波浪的水面,修改的就是波浪表面上每乙個頂點的值。表面著色器 干預畫素的著色器,比如烏龜上面新增乙個光照的紋理,使其有一種在水中游泳的感覺...