Unity Shader 基础1---理论

来源:互联网 发布:数据库 代码 编辑:程序博客网 时间:2024/06/07 03:44

(1)图形管道

图形绘制的整个过程叫做管道。过程如下:

  • 顶点数据:由3D模型的MeshRenderer组件传递三角形网格
  • 顶点着色:通过CG编写的程序对每个顶点进行着色可编程
  • 几何图元生成:连接特定的顶点形成几何图元(三个顶点形成一个三角形图元,4个顶点形成一个四边形图元)
  • 光栅化: 对几何图元所包围的所有像素进行插值
  • 片段着色:通过CG编程的程序对片段进行着色可编程
  • 逐个片段操作:对每个片段进行设置操作
  • 帧缓存:记录计算后的片段颜色的像素序列

(2)管线分类

  • 固定渲染管线 :标准的几何&光照管线,功能是固定的,它控制着世界、视、投影变换及固定光照控 制和纹理混合。T&L管线可以被渲染状态控制,矩阵,光照和采制参数。功能比较有限。基本所有的显卡都能正常运行。
  • 可编程渲染管线:可对渲染管线中的顶点运算和像素运算分别进行编程处理,而无须象固定渲染管线那样套用一些固定函数,取代设置参数来控制管线。

(3)顶点置换

  • 对象/模型坐标系:通过模型矩阵进行变换(模型坐标到世界坐标,顶点着色器中进行
  • 世界坐标系:通过视图矩阵进行变换(世界坐标到视图坐标,顶点着色器中进行
  • 观察着坐标系:通过投影矩阵进行变换(视图坐标投影,顶点着色器中进行
  • 裁剪坐标系:透视变换
  • 普通设备坐标系:视窗变换
  • 屏幕/窗口坐标系

(4)空间类型

  • 模型空间:每一个物体以自己作为原点的欧几里得三维坐标空间。
  • 世界坐标空间:系统表示所有物体绝对坐标的空间。
  • 视空间:又称相机空间,是为了方便表达相机为世界的中心时,所有物体的相互关系的空间。
  • 视锥体空间:相机所能看到的区域的空间。
  • 裁剪空间(平面):视锥体空间所看到的最远距离的平面。

(5)Unity Shader 分类

  • Fixed function shader:属于固定渲染管线 Shader, 基本用于高级Shader在老显卡无法显示时的Fallback使用。使用的是ShaderLab语言。
  • Vertex and Fragment Shader :顶点着色器和片段着色器所使用的Shader, 最强大的Shader类型,属于可编程渲染管线. 使用的是CG/HLSL语法。
  • Surface Shader : 表面着色器所用Shader,Unity3d推崇的Shader类型,使用Unity预制的光照模型来进行光照运算。使用的也是CG/HLSL语法。

(6)Unity Shader 区别

  • Surface Shadersubshader块里不用写 pass
  • Fixed function shader 不需要写功能函数,直接调用已用函数(SetTexture等)
  • Vertex and Fragment Shader 需要编写 vertex(顶点着色处理函数)和 fragment(片段着色处理函数)
  • Surface Shader 需要编写 surf(表面着色函数)
0 0