UINTY Shader 用到的系統提供的方法

文章結構

因為對unity內置的函數不是很熟悉,導致寫Shader速度比較慢,影響效率,所以希望通過這篇將要使用的函數方法歸總,方便查閱。

Unity常用的結構體


'#'include "UnityCG.cginc"

P108 頁 Unity入門精要

appdata_base 頂點位置,頂點法線,第一套紋理坐標
appdata_tan 頂點位置,頂點切線,頂點法線,第一組紋理坐標
appdata_full 頂點位置,頂點切線,頂點法線,四組紋理坐標
appdata_img 頂點位置,第一組紋理坐標
不僅如此也提供了許多有用的方法
float3 WorldSpaceViewDir(float4 v)
float3 ObjSpaceViewDir(float4 v)
float3 WorldSpaceLightDir(float4 v)
float3 ObjSpaceLightDir(float4 v)

float3 UnityObjectToWorldNormal(float3 norm)
float3 UnityObjectToWorldDir(float3 dir)
float3 UnityWorldToObjectDir(float3 dir)


'#' include "Lighting.cginc" //帶有一些常量,例如攝像機的位置,可以用上面的函數直接計算
fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;
_WorldSpaceLightPos0.xyz
_WorldSpaceCameraPos.xyz
_LightColor0.rgb


語義

POSITION,SV_POSITION, SV_Target float4
NORMAL float3
TANGENT float4 ,(x,y,z,w)w有用
TEXCOORD0, TEXCOORD1 float4
COLOR fixed4


紋理

用法
Properties{
_MainTex{"Main Tex", 2D} = "white"{}
}

pass{
sampler _MainTex;
fixed4 _MainTex_ST; // xy代表縮放值, zw代表平移值
uv = _MainTex_ST.xy * texcoord.xy +_MainTex_ST.zw
//o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
}

貼圖性質

凹凸映射
因為貼圖可以不僅可以存儲顏色信息,換種想法也可以儲存其他信息,例如凹凸貼圖,將法線儲存在紋理上,增加凹凸感;
1.模型空間的法線紋理
2.法線空間的法線紋理(x軸為切線,y軸為副法線,z軸為法線)

2 比 1好

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容