Unity3D -- shader常用函數和變量
阿新 • • 發佈:2018-06-21
erp unity blog 翻轉 修飾 osi view ase right
最近在學習Unity Shader,寫Shader的時候總是忘記Unity為我們提供的函數、變量怎麽寫的,這裏整理一下,方便自己查閱,也提供給網友,學習Shader不易。
1、函數
float3 WorldSpaceViewDir(float4 v) //輸入一個模型空間中的頂點位置,返回世界空間中從該點到攝像機的觀察方向
float3 ObjSpaceViewDir(float4 v) //輸入一個模型空間中的頂點位置,返回模型空間中從該點到攝像機的觀察方向
float3 WorldSpaceLightDir(float4 v) //僅用於前向渲染中(ForwardBase),輸入一個模型空間中的頂點位置,返回世界空間中從該點到光源的光照方向,沒有被歸一化
float3 UnityWorldSpaceLightDir(float4 v) //僅可用於前向渲染中,輸入一個世界空間的頂點位置,返回世界空間從該點到光源的光照方向,沒有被歸一化
float3 ObjSpaceLightDir(float4 v) //僅用於前向渲染中(ForwardBase),輸入一個模型空間中的頂點位置,返回模型空間中從該點到光源的光照方向,沒有被歸一化
float3 UnityObjectToWorldNormal(float3 norm) //把法線從模型空間轉換到世界空間中
float3 UnityObjectToWorldDir(in float3 dir) //把方向矢量從模型空間轉換到世界空間中
float3 UnityWorldToObjectDir(float3 dir) //把方向矢量從世界空間轉換到模型空間中
float3 Shade4PointLights(...) //僅可用於前向渲染中,計算四個點光源的光照,它的參數是已經打包進矢量的光照數據。前向渲染通常會使用這個函數來計算逐頂點光照
2、語義
POSITION //模型空間中的頂點位置,通常是float4類型
NORMAL //頂點法線,通常是float3類型
TANGENT //頂點法線,通常是float4類型
TEXCOORDn //該頂點的紋理坐標,TEXCOORD0表示第一組紋理坐標,…,通常是float2或float4類型
COLOR //頂點顏色,通常是fixed4或float4類型
SV_POSITION //裁剪空間中的頂點坐標,結構體中必須包含一個用該語義修飾的變量。等同於DirectX9中的
POSITION,但是最好是使用SV_POSITION
COLOR0 //輸出第一組頂點顏色
COLOR1 //輸出第二組頂點顏色
TEXCOORD0~TEXCOORD7 //輸出紋理坐標
SV_Target //輸出值將會存儲到渲染目標(render target)中
3、變量
UNITY_MATRIX_MVP //當前的模型*觀察*投影矩陣,用於將頂點/方向矢量從模型空間轉換到裁剪空間
UNITY_MATRIX_MV //當前的模型*觀察矩陣,用於將頂點/方向矢量從模型空間轉換到觀察空間
UNITY_MATRIX_V //當前的觀察矩陣,用於將頂點/方向矢量從世界空間轉換到觀察空間
UNITY_MATRIX_P //當前的投影矩陣,用於將頂點/方向矢量從觀察空間轉換到裁剪空間
UNITY_MATRIX_VP //當前的觀察*投影矩陣,用於將頂點/方向矢量從世界空間轉換到裁剪空間
UNITY_MATRIX_T_MV //UNITY_MATRIX_MV的轉置矩陣
UNITY_MATRIX_IT_MV //UNITY_MATRIX_MV的逆轉置矩陣,用於將發現從模型空間轉換到觀察空間,也可以用於得到UNITY_MATRIX_MV的逆矩陣
unity_ObjectToWorld(_Object2World) //當前的模型矩陣,用於將頂點/方向矢量從模型空間變換到世界空間
unity_WorldToObject(_World2Object) //用於將頂點/方向矢量從世界空間轉換到模型空間
4、攝像機和屏幕參數
float3 _WorldSpaceCameraPos //該攝像機在世界空間中的位置
float4 _ProjectionParams //x=1.0(或-1.0,如果正在使用一個翻轉的投影矩陣進行渲染),y=Near,z=Far,w=1.0+1.0/Far,其中Near和Far分別是近裁剪平面和遠裁剪平面到攝像機的距離
float4 _ScreenParams //x=width,y=height,z=1.0+1.0/width,w=1.0+1.0/height,其中width和height分別是該攝像機的渲染目標(render target)的像素寬度和高度
float4 _ZBufferParams //x=1-Far/Near,y=Far/Near,z=x/Far,w=y/Far,該變量用於線性化Z緩存中的深度值
float4 unity_OrthoParams //x=width,y=height,z沒有定義,w=1.0(該攝像機是正交攝像機)或w=0.0(該攝像機是透視攝像機),其中width和height是正交投影攝像機的寬度和高度
float4x4 unity_CameraProjection //該攝像機的投影矩陣
float4x4 unity_CameraInvProjection //該攝像機的投影矩陣的逆矩陣
float4 unity_CameraWorldClipPlanes[6] //該攝像機的6個裁剪平面在世界空間下的等式,按左、右、下、上、近、遠裁剪平面
版權聲明:陽仔原創,轉載請註明出處。 https://blog.csdn.net/honey199396/article/details/54574254
Unity3D -- shader常用函數和變量