unityshader自己学习笔记--CG语言--CGprofile

CGprofile

什么是CGprofile

一个 Cg profile定义了一个“被特定图形硬件或API所支持的Cg语言子集”,任意一种shader language都是基于可编程图形硬件的(寄存器、指令集等),这也就意味着:不同的图形硬件对应着不同的功能子集。这些可选的语言功能包括某些控制结构和标准函数库。profile还定义了数据类型的精度,并且指定数据类型是否全部或仅部分支持。profile按住功能可以划分为顶点profile和片段profile,而顶点profile和片段profile又基于opengl和directx的不同版本或扩展,划分为各种版本。从某种意义上而言,opengl和dirextx的发展历程成就了cg语言。

数组在Cg语言中是第一数据类型,那是因为Cg不支持指针。

函数参数是使用值传递。

有些硬件不支持for循环,有些支持loop

Profile在英文中的意思是“侧面、轮廓”, 文献[1]第三页写到:A Cg profile defines a subset of the full Cg language that is supported on a particular hardware platform or API(CgUsersManual 21页)。





即一个Cg profile定义了一个“被特定图形硬件或API所支持的Cg语言子集”,从前面的分析我们可以知道,任意一种shader language都是基于可编程图形硬件的(寄存器、指令集等),这也就意味着:不同的图形硬件对应着不同的功能子集。Profile按照功能可以划分为顶点Profile和片断Profile,而顶点profile和片段profile又基于OpenGL和DirectX的不同版本或扩展,划分为各种版本。从某种意义上而言,OpenGL和DirectX的发展历程成就了Cg语言。

C语言和CG不同的地方

  1. CG有bool
  2. CG没有指针,所以用数组
  3. 使用in,out输入输出

C语言有CG没有

  1. CG有时候不支持for和while
  2. CG不支持goto,switch,case,标签也不支持
  3. CG不支持指针
  4. 支持数组,但是大小和维数有限制
  5. CG的所有整形都是有符号的

C语言没有CG有的特性

  1. 有类似COLOR0,POSITION这种的语义
  2. 内建swizzle操作符,让使用更顺滑
  3. CG的主要数据类型是float,fixed和half
  4. 可以基于向量元素操作
  5. ?:,||,&&都可以和bool向量一起使用
  6. 函数的形参有默认值
  7. 可以注释
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值