unity shaderlab学前准备(6)
##Unity shader学前准备之CG语言(6)
本节主要内容:
- Cg语言中函数的写法,以及函数是否可以重载
- 订单\片段着色程序入口函数(类似C/C++中的main()函数)
- Cg标准函数库
unity shaderlab学前准备(5)
##Unity shader学前准备之CG语言(5)
第三章从 GPU 运行原理和数据流程的角度阐述了顶点着色程序和片段着色程序的输入输出,即,应用程序(宿主程序)将图元信息(顶点位置、法向量、 纹理坐标等)传递给顶点着色程序;顶点着色程序基于图元信息进行坐标空间转 换,运算得到的数据传递到片段着色程序中;片段着色程序还可以接受从应用程 序中传递的纹理信息,将这些信息综合起来计算每个片段的颜色值,最后将这些 颜色值输送到帧缓冲区(或颜色缓冲区)中。
这些是顶点着色程序和片段着色程序的基本功能和数据输入输出,实际上现 在的着色程序已经可以接受多种数据类型,并灵活的进行各种算法的处理,如, 可以接受光源信息(光源位置、强度等)、材质信息(反射系数、折射系数等)、 运动控制信息(纹理投影矩阵、顶点运动矩阵等),可以在顶点程序中计算光线 的折射方向,并传递到片段程序中进行光照计算。
unity shaderlab学前准备(4)
##Unity shader学前准备之CG语言(4) Cg中的操作符与C语言中的类似(操作符的功能和写法与C相同,但用法不 尽相同),按照操作符的功能可以划分为:关系操作符、逻辑操作符、条件操作符。Cg中有一类较为独特的操作符,称为Swizzle操作符, 这个操作符用于取出 向量类型变量中的分量。
unity shaderlab学前准备(3)
#Unity shader学前准备之CG语言(3)
##CG数据类型
本节会介绍Cg语言中预定义的内置(built in)的,或称为基本(primitive)的数据类型
###1.基本数据类型
Cg支持7种基本的数据类型:
unity shaderlab学前准备(2)
#Unity shader学前准备之CG语言(2)
##shader Language
shader language,称为着色语言,Wikipedia 上对 shader language 的解释为“The job of a surface shading procedure is to choose a color for each pixel on a surface, incorporating any variations in color of the surface itself and the effects of lights that shine on the surface(Marc Olano)”,即, shader language基于物体本身属性和光照条件,计算每个像素的颜色值。