Cg语言

✍ dations ◷ 2025-06-10 09:27:12 #Cg语言

Cg语言(C for Graphics)是为GPU编程设计的高级着色器语言,由NVIDIA公司开发。Cg极力保留C语言的大部分语义,并让开发者从硬件细节中解脱出来,Cg同时也有一个高级语言的其他好处,如代码的易重用性,可读性得到提高,编译器代码优化。

Cg语言主要参照ANSI C建模,但也从C++和Java以及早期的绘制语言如RenderMan and the Stanford shading language中吸取了一些思想。这些使得很容易写程序然后由编译器进行优化,提高了可读性。而且Cg的设计考虑了GPU的体系结构,如可编程多处理器单元(顶点处理器,像素处理器,外加不可编程单元)。这些部分和应用都是通过数据流连接起来。Cg语言允许分别为顶点和像素写程序。Cg API引入了profiles的概念以处理顶点和像素编程所缺乏的通用性。一个Cg profile就定义了一套整个Cg语言的子集以适应不同的硬件平台和API。Cg程序可以根据运行时的需要或者事先编译成GPU汇编代码。这样可以很容易地将一个Cg像素程序和手写的顶点程序结合起来,或者甚至采用不可编程的OpenGL或者DirectX顶点流水线,反之亦然。

由于Nvidia和微软合作紧密,Cg语言和HLSL的共通之处很多。在早期的官方文档里,这两者被解释成贴了两个牌的同一门语言。

Cg有6种数据型别(data types),跟C语言相当类似,有一些是为GPU特别定义的,型别如下:

 // input vertex struct VertIn {     float4 pos   : POSITION;     float4 color : COLOR0; };  // output vertex struct VertOut {     float4 pos   : POSITION;     float4 color : COLOR0; };  // vertex shader main entry VertOut main(VertIn IN, uniform float4x4 modelViewProj) {     VertOut OUT;     OUT.pos     = mul(modelViewProj, IN.pos); // calculate output coords     OUT.color   = IN.color; // copy input color to output     OUT.color.z = 1.0f; // blue component of color = 1.0f     return OUT; }

参照

  • 程序设计语言
  • 计算机图形学
  • Vertex and pixel shaders
  • High level shader language
  • OpenGL shading language
  • Shader Model
  • OpenGL
  • DirectX

外部链接

  • NVIDIA(页面存档备份,存于互联网档案馆)
    • Cg home page(页面存档备份,存于互联网档案馆)
  • OpenGL home page(页面存档备份,存于互联网档案馆)
  • DirectX home page(页面存档备份,存于互联网档案馆)
  • ShaderTech - GPU Programming
  • NeHe Cg vertex shader tutorial
  • Far Cry(页面存档备份,存于互联网档案馆)
  • A glimpse at Cg Shader Toolkit
  • Virtools(页面存档备份,存于互联网档案馆)

相关

  • 巧茶巧茶(学名:Catha edulis)为卫矛科巧茶属的植物,又名阿比西尼亚茶(Abyssinian tea)、埃塞俄比亚茶(Ethiopian tea)、索马里茶(Somali tea)、阿拉伯茶(Arabian tea)、也门茶、布希曼茶(Bush
  • 蔡玉真蔡玉真1965年-,台湾资深媒体人,曾为广播节目主持人,现在是多个电视谈话节目的主持人及来宾。2018年宣布以无党籍人士登记参选新北市新庄区昌平里里长,结果落选,仅获得989票。
  • 奥德萨阴谋论ODESSA为一个传说中的二战后残存纳粹组织,但有少量间接证据证明似乎存在过。依据西蒙·维森塔尔的陈述,一些党卫队的军官在战争即将结束的时候逃亡到了阿根廷,并在布宜诺斯艾利
  • Another side of #AAABEST《Another side of #AAABEST》(《#AAA极B面精选》)是AAA的第3枚精选专辑。于2012年3月21日发行。唱片公司为avex trax。
  • 唐纳德·托马利亚唐纳德·安德鲁·托马利亚(Donald Andrew Tomalia,1938年9月5日-),美国化学家,树状物的发现者。托马利亚于1961年获巴克内尔大学学士学位,1962年获密歇根大学硕士学位。1968年,他于
  • 丹尼尔·博德却文奇丹尼尔·博德却文奇 (Daniel Berdichevsky) 来自美国,是国际项目“世界学者杯学术比赛”的创始人和指导者。此项目历年来给超过30个国家的学生带来学术充实和文化交流。在美国,
  • 李相符李相符(1907年-1963年),安徽桐城人,中国林学家、林业教育家、政治人物,曾任中央人民政府林垦部副部长、中央人民政府林业部副部长、中华人民共和国林业部副部长,北京林学院院长、党
  • 何塞·马利亚·吉尔-罗伯斯何塞·马利亚·吉尔-罗伯斯(西班牙语:José María Gil-Robles y Quiñones de León,1898年11月27日-1980年9月13日),吉尔-罗伯斯是一位西班牙第二共和国时期的政治家、西班牙自治联盟(英语:CEDA)(CEDA)领导人和西班牙内战前的右翼代表人物。何塞·马利亚·吉尔-罗伯斯于1898年11月27日出生于萨拉曼卡。他是西班牙保守派法律学者、卡洛斯主义理论家恩里克·吉尔·罗伯斯的儿子,他的祖先是来自莱昂的贵族。卡洛斯主义是西班牙的传统主义政治运动,其目标是拥戴唐
  • System Repair EngineerSystem Repair Engineer,简称SREng,有时亦可简称作SR,为KZTechs.COM网站站长也是MVP的Smallfrogs开发的一款Windows操作系统计算机安全辅助和系统维护辅助软件。SREng的用户主要分布于中国大陆。该软件可以让用户较为方便地修改Windows系统内的一些配置,亦可针对系统进行全面扫描并生成日志。该软件的一个常见用法,是普通用户把扫描系统后获取的日志发表在BBS等场合,这样熟悉技术的用户便可对其进行分析并提供修复建议。SREng日志中包括下列各项:
  • 渠县赵氏宗祠渠县赵氏宗祠位于四川省达州市渠县,文物遗址年代判定为清代。2007年6月1日公布为四川省第七批文物保护单位。