Cg语言

✍ dations ◷ 2025-08-24 17:26:48 #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(页面存档备份,存于互联网档案馆)

相关

  • 坎比亚区坎比亚区(英文:Kambia District)是塞拉利昂14区之一,首府坎比亚 (英文:Kambia).
  • 红毛港 (高雄市)红毛港是过去位于高雄市小港区的一个渔村,与盐水港、大林蒲及中洲相接壤。曾经是日本统治时期高雄州乌鱼渔获的主要产地。红毛港又可细分成“埔头仔”、“姓杨仔”、“姓吴仔
  • 上海人民美术出版社上海人民美术出版社是一家于1952年8月成立的中国出版社.其前身为1952年8月从华东人民出版社划出的华东人民美术出版社,主要出版连环画、年画、宣传画等美术作品,吕蒙、程十发
  • 马努特·波尔马努特·波尔(英语:Manute Bol,1962年10月16日-2010年6月19日)为南苏丹裔丁卡族,美国NBA联盟的前职业篮球运动员,他在1985年的NBA选秀中第2轮第31顺位被华盛顿子弹选中。他是NBA史
  • 马里奥·加西亚·梅诺卡尔奥雷利奥·马里奥·加百列·弗朗西斯科·加西亚·梅诺卡尔·伊·杜拉(西班牙语:Aurelio Mario Gabriel Francisco García Menocal y Deop,1866年12月17日-1941年9月7日),古巴共和
  • 斯哈赫加尔斯哈赫加尔(Shahgarh),是印度中央邦Sagar县的一个城镇。总人口14585(2001年)。该地2001年总人口14585人,其中男性7625人,女性6960人;0—6岁人口2648人,其中男1368人,女1280人;识字率61.
  • 南词叙录《南词叙录》,一般认为是明徐渭所著。成书于明嘉靖三十八年(1559年)。是最早一部研究南戏的著作。附有宋元南戏剧目65种,明初南戏剧目48种
  • 美味下半场《美味下半场》(英文:Fire Up)是新传媒私人有限公司时装电视剧,制作单位为哇哇映画,由黄碧仁及王沺裁领衔主演,监制为刘健财及谢光华。此剧讲述一名重犯者出狱后重新回返工作,但是
  • 保罗·米拉诺利保罗·米拉诺利(意大利语:Paolo Milanoli,1969年12月7日-),意大利男子击剑运动员。他曾获得2000年夏季奥运会男子重剑团体金牌。他也获得2001年世界击剑锦标赛男子重剑个人冠军。
  • 穷奇 (高车)穷奇(?-?),名字的意义就是穷奇或狮鹫,是高车副伏罗部首领阿伏至罗的从弟。487年,柔然可汗豆仑进攻北魏,阿伏至罗和穷奇率西部高车十余万人,叛离柔然西迁,在车师前部西北,建立高车王国,自称候娄匐勒,以穷奇为候倍(储君)。之后,多次击败柔然,使豆仑东徙;又向北魏进贡,一起夹击柔然。之后,中亚的嚈哒,在500年左右,进攻高车,穷奇被嚈哒杀死,儿子弥俄突、伊匐、越居被俘,高车衰落。阿伏至罗暴虐,诬称儿子与自己的妃嫔有染,将他杀死。不久,阿伏至罗被臣下所杀。跋利延被大家立为国主。之后,嚈哒杀死跋利延,立穷奇的儿