最近在学习Unity3d Shader编程,Unity3d Shader使用的是Cg语言,网上找了一下Cg的教程,发现《Cg教程-可编程实时图形权威指南》不错,在学习此书的过程中记录一下笔记。博主菜鸟一枚,个人能力有限,有什么说的不对的地方,还请提出。
1.什么是Cg语言
- Cg是NVIDIA和微软共同开发的为可编程图形硬件设计的语言。它与OPENGL API和微软 DirectX的HLSL都兼容。CG程序是在计算机的图形处理器(GPU)上执行的。
- Cg是一个可以被OpenGL和Direct3D广泛支持的图形处理器编程语言。 Cg语言和OpenGL、DirectX并不是同一层次的语言,而是OpenGL和DirectX的上层,即,Cg程序是运行在OpenGL和 DirectX标准顶点和像素着色的基础上的。
2.顶点,片段,图形流水线
图形硬件渲染流水线:
- 顶点变换
在每个顶点上执行一系列的数学操作:把顶点位置变换到屏幕位置以便光栅器使用,为贴图产生纹理坐标,以及照亮顶点以决定它的颜色。 - 图元装配和光栅化
根据伴随顶点序列的几何图元分类信息把顶点装配成几何图元。
图元通过剪裁(到可视平截体)、挑选(丢弃一些多边形)。
光栅化(光栅化会把每个几何图元所覆盖的像素分解成像素大小的片段),结果是像素位置的集合和片段的集合&#