LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

Cg (プログラミング言語)

CgはNVIDIAが開発していた、リアルタイム3次元コンピュータグラフィックスにおけるプログラマブルシェーダーのためのシェーディング言語である。2012年を最後にバージョンアップは終了している。GPUプログラミングのために特化・最適化されており、CG描画に向いている。この言語名の由来は「グラフィックスのためのC言語」(C for Graphics) であり、C言語をベースとした文法を持つ。また、C++言語の類似機能も一部取り入れている。グラフィックスカード(GPU)の技術的な発展にともない、プログラマーが陰影計算処理(シェーディング)をプログラミング可能なハードウェアが開発されるようになった。しかし最初期のGPUプログラミングはアセンブラをベースとしたもので、開発が難しく生産性や可搬性も低かった。そのため、GPU向けの高級言語が必要とされるようになり、Cgが開発された。なお、類似のGPU用高級言語として、OpenGLネイティブのGLSLおよびDirectX(Direct3D)ネイティブのHLSLが存在するが、Cgはどちらかというと(マイクロソフトとNVIDIAが共同開発した)HLSLにより近い文法となっている。GLSLはOpenGL専用であり、またHLSLはDirect3D専用であるが、Cg言語およびCgランタイムライブラリは両方のAPIに対応しているという特徴を持っている。つまり、OpenGLおよびDirect3Dの両方を、Cgシェーダープログラムを実行する基盤として利用することができる。NVIDIAのGPGPU開発・実行環境であるCUDA用に拡張されたC/C++では、Cgによく似たデータ型や組み込み関数が実装されているなど、Cgは後発の言語にも影響を及ぼしている。Cgは6つの基本データ型を持っている。Cgにはその他にも、float3やfloat4x4のように、ベクトルや行列そのものを扱う型がある。これらは3次元のコンピュータグラフィックス計算において多用される型である。また、配列や構造体も用意されている。CgはC言語で用いられる算術演算子や論理演算子をサポートしている。算術演算子はベクトル型や行列型にも適用できるものがあり、(C++言語の演算子オーバーロードのように)プログラムの可読性を高め、直感的に理解しやすいグラフィックスプログラムを書くことができるようになっている。CgはC言語と同様の制御構造を持ち、関数を定義するのと似たようなこともできる。C言語と同様に、CgにはGPUプログラミングのための標準ライブラリがある。absやsinなど、C言語の標準ライブラリと共通の数学関数がある一方で、テクスチャマッピングのためのtext1Dやtext2Dなど、GPUプログラミングに特化した関数も用意されている。Cgによるプログラムは基本的に頂点やピクセルのシェーディングを行うためのものであり、そのほかのレンダリングプロセスや入出力を扱うためのC/C++ホストプログラムを必要とする。CgはOpenGLやDirectXのAPI基盤上で動作させることができるが、Cgシェーダープログラムを各APIと連携・バインドさせるためのライブラリがNVIDIAから提供されている。Cgで使用可能なシェーダープログラムのプロファイル、すなわちOpenGLやDirectXにおけるシェーダーモデルのバージョンは、2012年2月リリースのCg Toolkit 3.1時点では、リファレンスマニュアルによると下記のようになっている。なお、OpenGLはバージョン4.3で、DirectXはバージョン11でCompute Shaderを導入しているが、Cgはバージョン3.1時点ではまだそれらに対応していない。Cg言語は複数のシェーダープログラムを組み合わせた一連の処理パイプライン(Pass)およびそれらの入出力をまとめてひとつの「Technique」として管理することのできるEffectフレームワーク「CgFX」も同時に備えている。これはDirect3D 9やDirect3D 11の拡張ライブラリ(D3DX9、D3DX11)およびDirect3D 10のコアライブラリでサポートされているEffectフレームワークとよく似ており、個別にパイプラインステージごとのシェーダープログラムおよびその入出力を管理するよりもずっとシェーダープログラムのパイプラインを構築しやすくなる。Effectには複数のTechniqueを含むことができ、Techniqueには複数のPassを含むことができる。Cgを使ったシェーダーオーサリングツールとして、FX Composerと呼ばれるソフトウェアがNVIDIAによって開発・提供されていたが、DirectX 10に対応するv2.5を最後に開発が終了している。Cgは2012年4月リリースのバージョン3.1.0013を最後に更新がなされておらず、開発が終了している。なお開発者へのCgランタイム自体の提供自体は継続されるものの、将来の新しいハードウェア機能をサポートしないため、新規開発での採用は推奨されていない。後継のクロスプラットフォームなシェーダーエフェクトフレームワークとして、NVIDIAによってnvFXが開発されているnvFXはHLSLやGLSLをバックエンドとするが、OpenGL ESもサポートし、モバイルなどの組み込み機器もターゲットとなる。

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。