首页 > 计算机图形学 > Shader > Shader顶点/片元着色器
2022
01-09

Shader顶点/片元着色器

顶点/片元着色器

在整个渲染流程,顶点与片元阶段是可编程的,也就是在此阶段我们才可以对模型的渲染过程进行修改,达到我们想要的渲染效果。

顶点、片元着色器定义在SubShader中的Pass块中,编写顶点、片元着色器更为复杂,但是灵活性更高,我们可以控制的细节更多。

示例

解释

#pragma vertex vert

定义用来处理顶点着色器的方法。vert为方法名,可修改

#pragma fragment frag

定义用来处理片元着色器的方法。frag为方法名,可修改

a2v

结构体, 用来定义顶点着色器的输入,包含了一些固定语义如下

  • POSITION 是顶点位置,通常为 float3 或 float4。
  • NORMAL 是顶点法线,通常为 float3。
  • TEXCOORD0 是第一个 UV 坐标,通常为 float2、float3 或 float4。
  • TEXCOORD1、TEXCOORD2 和 TEXCOORD3 分别是第 2、第 3 和第 4 个 UV 坐标。
  • TANGENT 是切线矢量(用于法线贴图),通常为 float4。
  • COLOR 是每顶点颜色,通常为 float4。

UnityObjectToClipPos

Unity内置函数,用来将顶点坐标从模型空间转换到裁剪空间

模型空间转为裁剪空间实际需要如下步骤

模型空间->世界空间->相机空间->裁剪空间

Unity提供的空间变换函数

UNITY_MATRIX_MVP当前模型 * 视图 * 投影矩阵。
UNITY_MATRIX_MV当前模型 * 视图矩阵。
UNITY_MATRIX_V当前视图矩阵。
UNITY_MATRIX_P当前投影矩阵。
UNITY_MATRIX_VP当前视图 * 投影矩阵。
UNITY_MATRIX_T_MV模型转置 * 视图矩阵。
UNITY_MATRIX_IT_MV模型逆转置 * 视图矩阵。
unity_ObjectToWorld当前模型矩阵。
unity_WorldToObject当前世界矩阵的逆矩阵。
最后编辑:
作者:网虫虫
网虫虫
分享是一种快乐; 分享是一种美德; 分享是一种幸福!

5 1 vote
Article Rating
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments