仅作为初学者记录unity shader中的知识点

目录

一、unityshader的内置变量(数学)

   1)unity内置的变换矩阵


一、unityshader的内置变量(数学)

   1)unity内置的变换矩阵

   有关于模型空间、观察空间的知识可以参考博客   https://blog.csdn.net/biezhihua/article/details/78926849

   1.UNITY_MATRIX_MVP//当前的模型观察投影矩阵,用力将顶点、方向矢量从模型空间变换到裁剪空间。

   2.UNITY_MATRIX_MV//当前的模型观察矩阵,用于将顶点/方向矢量从模型空间变换到观察空间。

   3.UNITY_MATRIX_V//当前的观察矩阵,用于将顶点/方向矢量从世界空间变换到观察空间。

   4.UNITY_MATRIX_P//当前的投影矩阵,用于将顶点/方向矢量从观察空间变换到裁剪空间。

   5.UINTY_MATRIX_VP//当前的观察投影矩阵,用于将顶点/方向向量从世界空间变换到裁剪空间。

   6.UNITY_MATRIX_T_MV//    UNITY_MATRIX_MV的转置矩阵。

   7.UNITY_MATRIX_IT_MV//   UNITY_MATRIX_MV的逆转置矩阵。

   8._Object2World//当前的模型矩阵,用于将顶点/方向矢量从吗,模型空间变换到世界空间。

   9._World2Object//_Object2World的逆矩阵用于将世界空间变换为模型空间。

2)Unity内置的摄像机和屏幕参数

变量名 类型 描述 
_WorldSpaceCameraPos

float3

该摄像机在世界空间的位置
_ProjectionParams

float4

x=1.0(或-1.0,如果正在使用一个反转的投影矩阵进行渲染)y=Near,z=Far,w=1,0 =1.0/Far,其中Near和Far分别是近裁剪平面和远裁剪平面和摄像机的距离,
_ScreenParams float4 x=width,y=height,z=1.0+1.0/width,w=1.0+1.0/height,其中width和height分别是该摄像机的渲染目标(render target)的像素宽度和高度。

_ZBufferParams

float4

x=1-Far/Near,y=Far/Near,z=x/Far,w=y/Far,

该变量用于线性化Z缓存中的深度值。

unity_OrthoParams float4 x=width,y=height,z没有定义,w=1.0(该摄像机是正交摄像机)或w=0.0(该摄像机是正交摄像机),其中width和height是正交投影摄像机的宽度和高度。
unity_CameraProjection float4x4 摄像机的投影矩阵
unity_CameraInvProjection float4x4 该摄像机投影矩阵的逆矩阵
unity_CameraWorldClipPlanes[6] float4

该摄像机的6个裁剪平面在世界空间下的等式,按照如下顺序:左、右、下、上

近、远裁剪平面。

3)UnityCG.cginc中一些常用的结构体

名称 描述 包含的变量
appdata_base 可用于顶点着色器的输入 顶点位置、顶点法线、第一组纹理坐标
appdata_tan 可用于顶点着色器的输入

顶点位置、顶点切线、顶点法线、第一组纹理坐标

appdata_full 可用于顶点着色器的输入 顶点位置、顶点切线、顶点法线、四组纹理坐标
appdata_img 可用于顶点着色器的输入 顶点位置、第一组纹理坐标
v2f_img 可用于顶点着色器的输入 裁剪空间中的位置、纹理坐标
函数名 描述
float3 WorldSpaceViewDir(float4 v) 输入一个模型空间的顶点位置,返回世界空间中该点到摄像机的观察方向。内部实现使用了UnityWorldSpaceViewDir函数
float3 UnityWorldSpaceViewDir(float4 v) 输入一个世界空间的顶点位置,返回世界空间中该点到摄像机的观察方向。
float3 ObjSpaceViewDir(float4 v) 输入一个模型空间的顶点位置,返回模型空间中从该点到摄像机的观察方向。
float3 WorldSpaceLightDir(float4 v) 仅可用于前向渲染中。输入一个模型空间中的顶点位置,返回世界空间中从该点到光源的光照方向。内部实现使用了UnityWorldSpaceLightDir函数。没有被归一化。
float3 UnityWorldSpaceLightDir(float4 v) 仅可用于前向渲染中。输入一个世界空间中的顶点位置,返回世界空间中从该点到光源的光照方向。没有被归一化。
float3 ObjSpaceLightDir(floa4 v) 仅可用于前向渲染中。输入一个世界空间中的顶点位置,返回世界空间中从该点到光源的光照方向。没有被归一化。
float3 UnityObjectToWorldNormal(float3 norm) 把法线方向从 模型空间转换到世界空间中
float3 UnityObjectToWorldDir(float3 dir) 把方向矢量从模型空间变换到世界空间
float3 UnityWorldToObjectDir(float3 dir) 把方向矢量从世界空间变换到模型空间中 

  

猜你喜欢

转载自blog.csdn.net/Kotomine_Kirei/article/details/130519620
今日推荐