fbpx
维基百科

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的共通之处很多。[1]在早期的官方文档里,这两者被解释成贴了两个牌的同一门语言。[2]

細節 编辑

資料型別 编辑

Cg有6種数据型別(data types),跟C語言相當類似,有一些是為GPU特別定義的,型別如下:

  • float - 32位元浮點數
  • half - 16位元浮點數
  • int - 32位元整數
  • fixed - 12位元定點數
  • bool - 布尔值
  • sampler* - 代表紋理物件(texture object)

範例 编辑

  • A sample Cg vertex shader
 // 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;  } 

參照 编辑

外部連結 编辑

  1. ^ . 2012-08-24 [2020-04-25]. (原始内容存档于2012-08-24). 
  2. ^ . developer.download.nvidia.cn. [2020-04-25]. (原始内容存档于2022-04-15). 

cg語言, cg语言, graphics, 是为gpu编程设计的高級著色器語言, 由nvidia公司开发, cg极力保留c语言的大部分语义, 并让开发者从硬件细节中解脱出来, cg同时也有一个高级语言的其他好处, 如代码的易重用性, 可读性得到提高, 编译器代码优化, cg语言主要参照ansi, c建模, 但也从c, 和java以及早期的绘制语言如renderman, stanford, shading, language中吸取了一些思想, 这些使得很容易写程序然后由编译器进行优化, 提高了可读性, 而且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的共通之处很多 1 在早期的官方文档里 这两者被解释成贴了两个牌的同一门语言 2 目录 1 細節 1 1 資料型別 2 範例 3 參照 4 外部連結細節 编辑資料型別 编辑 Cg有6種数据型別 data types 跟C語言相當類似 有一些是為GPU特別定義的 型別如下 float 32位元浮點數 half 16位元浮點數 int 32位元整數 fixed 12位元定點數 bool 布尔值 sampler 代表紋理物件 texture object 範例 编辑A sample Cg vertex shader 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 页面存档备份 存于互联网档案馆 Fusion Industries Cg and HLSL FAQ 2012 08 24 2020 04 25 原始内容存档于2012 08 24 The Cg Tutorial Chapter 1 Introduction developer download nvidia cn 2020 04 25 原始内容存档于2022 04 15 取自 https zh wikipedia org w index php title Cg語言 amp oldid 77065432, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。