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的共通之處很多 。 在早期的官方文檔裏 ， 這兩者被解釋成貼了兩個牌的同一門語言 。