主要的学习教程是nvidia出的那个《cg教程,可编程实时权威指南》以及三本《GPU编程精粹》
个人能力有限,只能尽量将自己理解的关键点记录下来,有想认真深入的朋友,建议完整的看一遍以上书籍
学习cg语言的主要目的是为了学习unity3d中shader的编写,以及以后可能做opengl,opencv的开发
官方的docment是用c++写opengl接口的程序,然后调用cg语言的.cg 文件来访问gpu硬件,我不会写c++,只好把所有工作都放到unity3d的环境中了,其中有些差异,但不大,主要是unity3d应用程序已经将顶点,法线等信息处理好了,封装了不少使用的东西在它的UNITY.cgnic文件中
一.gpu的发展历史
第一代第二代没有可编程能力,固定管线
第三代支持顶点编程(vertex)
第四代(即现今我们使用的)拥有可编程能力,使得顶点变换和像素操作从cpu转移到gpu中进行
二.gpu的渲染流程
在GPU渲染流水线的不同阶段,需要处理的对象分别是顶点(vertex)、几何图元(primitive)、片元(fragment)、像素(pixel)