| Cg/HLSL | |
|---|---|
複数の異なる2D HLSLシェーダーを含むシーン。彫像の歪みは純粋に物理的な方法で実現され、その横にある長方形のフレームのテクスチャは色の強度に基づいています。背景の正方形は変形および回転されています。前景の水の部分的な透明化と反射は、最終的にシーン全体に適用されたシェーダーによって追加されています。 | |
| 家族 | シェーディング言語 |
| 開発者 | nVIDIA、マイクロソフト |
| 方言 | |
| Cg、HLSL、プレイステーションシェーディング言語、ReShadeFX、スラング | |
| 影響を受けた | |
| C、RenderMan シェーディング言語 | |
| 影響を受けた | |
| GLSL | |
高水準シェーダ言語[ 1 ]または高水準シェーディング言語[ 2 ](HLSL)は、MicrosoftがDirect3D 9 API向けに開発した独自のシェーディング言語であり、シェーダアセンブリ言語を拡張する目的でDirect3D 10以降の統合シェーダモデルで必須のシェーディング言語となった。NvidiaのCg ( C for Graphicsの略)シェーディング言語と並行して開発された。初期の両言語は、マーケティングの違いのみで同一と考えられていた。[ 3 ]
CgとHLSLは同じコア構文を共有していますが、Cの一部の機能が変更され、新しいデータ型が追加され、Cg/HLSLはグラフィックス処理ユニットのプログラミングに適したものになりました。[ 4 ] [ 5 ]
Cg/HLSL言語には、DirectXまたはOpenGLを出力するNvidia Cgコンパイラ(cgc)と、バイトコード形式でDirectXシェーダを出力するMicrosoft HLSLの2つの主要なブランチがあります。[ 6 ] [ 7 ] Nvidiaのcgcは2012年に廃止され、追加の開発やサポートは利用できなくなりました。 [ 8 ]
HLSL シェーダーを使用すると、2D と 3D の両方のコンピュータ グラフィックスにおいて多くの特殊効果を実現できます。
- Cg/HLSL言語は、当初は頂点シェーダーとピクセルシェーダー(GLSLでは「フラグメント」)のみをサポートしていました。頂点シェーダーは、アプリケーションから送信された各頂点に対して実行され、主に頂点をオブジェクト空間からビュー空間に変換し、テクスチャ座標を生成し、頂点の法線ベクトル、接線ベクトル、従接ベクトルなどの照明係数を計算します。頂点のグループ(通常は三角形を形成するために3つ)が頂点シェーダーを通過すると、それらの出力位置が補間され、その領域内のピクセルが形成されます。このプロセスはラスタライズと呼ばれます。
- DirectX 10(シェーダーモデル4)とCg 2.0ではジオメトリシェーダーが導入されました。[ 9 ]このシェーダーはプリミティブ(三角形/線/点)の頂点を入力として受け取り、このデータを使って追加のプリミティブを生成/縮退(またはテッセレーション)したり、プリミティブの種類を変更したりします。これらのプリミティブはそれぞれラスタライザーに送られます。
- DirectX 11(シェーダーモデル5)では、コンピュートシェーダー(GPGPU)とテッセレーションシェーダー(ハルシェーダーとドメインシェーダー)が導入されました。後者はCg 3.1に搭載されています。
- DirectX 12 (シェーダー モデル 6.3) では、レイ トレーシングシェーダー (レイ生成、交差、任意のヒット / 最近接ヒット / ミス) が導入されました。
D3D11.3とD3D12ではシェーダーモデル5.1 [ 10 ]と6.0が導入されました。[ 11 ]
背景
[編集]グラフィックスハードウェアの技術的進歩により、3Dグラフィックスプログラミングの一部の領域は非常に複雑になっています。プロセスを簡素化するために、グラフィックスカードには、頂点シェーダーやピクセルシェーダーを使用してレンダリングパイプラインを変更する機能など、新しい機能が追加されました。
当初、頂点シェーダーとピクセルシェーダーは、グラフィックス処理ユニット(GPU)のアセンブリ言語のみを用いた非常に低レベルでプログラミングされていました。アセンブリ言語を使用することで、プログラマーはコードを完全に制御でき、柔軟性も向上しましたが、使い勝手はかなり悪かったです。GPUプログラミングには、移植性の高い高水準言語が必要でした。そこで、これらの問題を克服し、シェーダー開発を容易にするためにCgが開発されました。
アセンブリよりも Cg/HLSL を使用する利点は次のとおりです。
- 高レベルのコードは、アセンブリ コードよりも学習、プログラミング、読み取り、保守が簡単です。
- Cg/HLSL コードは、通常はハードウェアとそれが記述されているプラットフォームに依存するアセンブリ コードとは異なり、幅広いハードウェアとプラットフォームに移植可能です。
- Cg/HLSL コンパイラはコードを最適化し、アセンブリでは実行が難しくエラーが発生しやすい低レベルのタスクを自動的に実行できます。
言語
[編集]データ型
[編集]Cg/HLSLには6つの基本データ型があります。C言語と同じものもあれば、GPUプログラミング用に特別に追加されたものもあります。これらの型は以下のとおりです。
- float - 32ビット浮動小数点数
- half - 16ビット浮動小数点数
- int - 32ビット整数
- fixed - 12ビットの固定小数点数
- bool - ブール変数
- サンプラー* - テクスチャオブジェクトを表す
Cgには、float3やfloat4x4といった基本データ型に基づいたベクトル型と行列型も用意されています。これらのデータ型は、3Dグラフィックスプログラミングでは非常によく使用されます。Cgには構造体と配列型もあり、これらはC言語の対応するデータ型と同様に動作します。
オペレーター
[編集]Cg は、C の一般的な算術演算子、ベクトルおよび行列データ型の同等の算術演算子、一般的な論理演算子など、幅広い演算子をサポートしています。
関数と制御構造
[編集]Cgは、if/else、while、forといった基本的な制御構造をC言語と共有しています。また、関数の定義方法もC言語と似ています。
セマンティクス
[編集]プリプロセッサ
[編集]Cgは多くのCプリプロセッサディレクティブとそのマクロ展開システムを実装しています。実装しているのは[ 12 ]#includeです。
HLSL機能
[編集]- 名前空間
- 注釈
環境
[編集]CGプログラムは、異なる機能を持つGPUに対応する異なるシェーダープロファイル用に構築されています。 [ 13 ]これらのプロファイルは、各シェーダーにいくつの命令を配置できるか、いくつのレジスタが利用できるか、シェーダーがどのようなリソースを利用できるかなどを決定します。たとえプログラムが正しくても、プロファイル上で動作させるには複雑すぎる場合があります。[ 12 ]
プロファイルとシェーダーの種類が増えるにつれて、マイクロソフトは「シェーダーモデル」という用語を使用して、GPUの世代で見られるプロファイルのセットをグループ化するようになりました。[ 14 ] Cgはシェーダーモデル5.0までの新しいプロファイルの一部と、glslまたはhlslへの変換をサポートしています。[ 13 ]
記載されているGPUは、当該仕様を最初にサポートしたハードウェアです。メーカーは通常、ドライバを通じて下位のシェーダーモデルをすべてサポートしています。ゲームによっては特定のDirectXバージョンを必要とすると謳っている場合もありますが、必ずしもそのバージョンの仕様に完全に準拠したGPUを必要とするわけではありません。開発者は、上位のDirectX APIバージョンを使用して、下位のDirect3D仕様のハードウェアをターゲットにすることができるためです。例えば、DirectX 9は、DirectX7では提供されていなかったDirectX7レベルのハードウェアの機能を公開しており、固定機能のT&Lパイプラインをターゲットにしています。
ピクセルシェーダーの比較
[編集]| ピクセルシェーダーバージョン | 1.0 | 1.1 | 1.2
1.3 [ 15 ] |
1.4 [ 15 ] | 2.0 [ 15 ] [ 16 ] | 2.0a [ 15 ] [ 16 ] [ 17 ] | 2.0b [ 15 ] [ 16 ] [ 18 ] | 3.0 [ 15 ] [ 19 ] | 4.0 [ 20 ] 4.1 [ 21 ]
5.0 [ 22 ] |
|---|---|---|---|---|---|---|---|---|---|
| 依存テクスチャ制限 | 4 | 4 | 4 | 6 | 8 | 無制限 | 8 | 無制限 | 無制限 |
| テクスチャ命令の制限 | 4 | 4 | 4 | 6 * 2 | 32 | 無制限 | 無制限 | 無制限 | 無制限 |
| 演算命令の制限 | 8 | 8 | 8 | 8 * 2 | 64 | 無制限 | 無制限 | 無制限 | 無制限 |
| ポジションレジスタ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい | はい |
| 命令スロット | 8 | 8 + 4 | 8 + 4 | (8 + 6)* 2 | 64 + 32 | 512 | 512 | ≥ 512 | ≥ 65536 |
| 実行された命令 | 8 | 8 + 4 | 8 + 4 | (8 + 6)* 2 | 64 + 32 | 512 | 512 | 65536 | 無制限 |
| テクスチャの間接指定 | 4 | 4 | 4 | 4 | 4 | 無制限 | 4 | 無制限 | 無制限 |
| 補間レジスタ | 2 + 4 | 2 + 4 | 2 + 4 | 2 + 6 | 2 + 8 | 2 + 8 | 2 + 8 | 10 | 32 |
| 命令述語 | いいえ | いいえ | いいえ | いいえ | いいえ | はい | いいえ | はい | いいえ |
| インデックス入力レジスタ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい | はい |
| 温度レジスタ | 2 | 2 + 4 | 3 + 4 | 6 | 12から32 | 22 | 32 | 32 | 4096 |
| 定数レジスタ | 8 | 8 | 8 | 8 | 32 | 32 | 32 | 224 | 16×4096 |
| 任意のスウィズリング | いいえ | いいえ | いいえ | いいえ | いいえ | はい | いいえ | はい | はい |
| グラデーションの指示 | いいえ | いいえ | いいえ | いいえ | いいえ | はい | いいえ | はい | はい |
| ループカウントレジスタ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい | はい |
| 顔認識(両面照明) | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい | はい | はい |
| 動的フロー制御 | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい (24) | はい (64) |
| ビット演算子 | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい |
| ネイティブ整数 | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | はい |
- PS 1.0 — 未リリース3dfx Rampage、DirectX 8
- PS 1.1 — GeForce 3、DirectX 8
- PS 1.2 — 3Dlabs Wildcat VP、DirectX 8.1
- PS 1.3 — GeForce 4 Ti、DirectX 8.1
- PS 1.4 — Radeon 8500~9250、Matrox Parhelia、DirectX 8.1
- シェーダーモデル 2.0 — Radeon 9500~9800/X300~X600、DirectX 9
- シェーダーモデル 2.0a — GeForce FX/PCX最適化モデル、DirectX 9.0a
- シェーダーモデル 2.0b — Radeon X700~X850シェーダーモデル、DirectX 9.0b
- シェーダーモデル 3.0 — Radeon X1000およびGeForce 6、DirectX 9.0c
- シェーダーモデル 4.0 — Radeon HD 2000およびGeForce 8、DirectX 10
- シェーダーモデル 4.1 — Radeon HD 3000およびGeForce 200、DirectX 10.1
- シェーダーモデル 5.0 — Radeon HD 5000およびGeForce 400、DirectX 11
- シェーダーモデル 5.1 — GCN 1+、Fermi+、DirectX 12 (11_0+)、WDDM 2.0
- シェーダーモデル 6.0 — GCN 1+、Kepler+、DirectX 12 (11_0+)、WDDM 2.1
- シェーダーモデル 6.1 — GCN 1+、Kepler+、DirectX 12 (11_0+)、WDDM 2.3
- シェーダーモデル 6.2 — GCN 1+、Kepler+、DirectX 12 (11_0+)、WDDM 2.4
- シェーダーモデル 6.3 — GCN 1+、Kepler+、DirectX 12 (11_0+)、WDDM 2.5
- シェーダーモデル 6.4 — GCN 1+、Kepler+、Skylake+、DirectX 12 (11_0+)、WDDM 2.6
- シェーダーモデル 6.5 — GCN 1+、Kepler+、Skylake+、DirectX 12 (11_0+)、WDDM 2.7
- シェーダーモデル 6.6 — GCN 4+、Maxwell+、DirectX 12 (11_0+)、WDDM 3.0
- シェーダーモデル 6.7 — GCN 4+、Maxwell+、DirectX 12 (12_0+)、WDDM 3.1
- シェーダーモデル 6.8 — RDNA 1+、Maxwell 2+、DirectX 12 (12_0+)、WDDM 3.1 / 3.2、Agility SDK 付き
実行命令
の「32 + 64」は、「32 個のテクスチャ命令と 64 個の算術命令」を意味します。
頂点シェーダーの比較
[編集]| 頂点シェーダバージョン | 1.0 | 1.1 [ 23 ] | 2.0 [ 16 ] [ 23 ] [ 17 ] | 2.0a [ 16 ] [ 23 ] [ 17 ] | 3.0 [ 19 ] [ 23 ] | 4.0 [ 20 ] 4.1 [ 21 ] 5.0 [ 22 ] |
|---|---|---|---|---|---|---|
| 命令スロット数 | 128 | 128 | 256 | 256 | ≥ 512 | ≥ 65536 |
| 実行される命令の最大数 | 128 | 128 | 1024 | 65536 | 65536 | 無制限 |
| 命令述語 | いいえ | いいえ | いいえ | はい | はい | はい |
| 温度レジスタ | 12 | 12 | 12 | 16 | 32 | 4096 |
| # 定数レジスタ | ≥ 96 | ≥ 96 | ≥ 256 | 256 | ≥ 256 | 16×4096 |
| アドレスレジスタ | いいえ | はい | はい | はい | はい | はい |
| 静的フロー制御 | いいえ | いいえ | はい | はい | はい | はい |
| 動的フロー制御 | いいえ | いいえ | いいえ | はい | はい | はい |
| 動的フロー制御の深さ | 該当なし | 該当なし | 該当なし | 24 | 24 | 64 |
| 頂点テクスチャフェッチ | いいえ | いいえ | いいえ | いいえ | はい | はい |
| テクスチャサンプラーの数 | 該当なし | 該当なし | 該当なし | 該当なし | 4 | 128 |
| ジオメトリインスタンス化のサポート | いいえ | いいえ | いいえ | いいえ | はい | はい |
| ビット演算子 | いいえ | いいえ | いいえ | いいえ | いいえ | はい |
| ネイティブ整数 | いいえ | いいえ | いいえ | いいえ | いいえ | はい |
標準ライブラリ
[編集]C言語と同様に、Cg/HLSLにはGPUプログラミングの一般的なタスクに対応する関数セットが用意されています。数学関数absやsinのようにC言語に同等の機能を持つ関数もあれば、テクスチャマッピング関数tex1Dやtex2DのようにGPUプログラミングタスクに特化した関数もあります。
Cg/HLSLランタイムライブラリ
[編集]Cg/HLSLプログラムは単なる頂点シェーダーとピクセルシェーダーであり、残りのレンダリングプロセスを処理するサポートプログラムが必要です。CgはOpenGLまたはDirectXの2つのグラフィックスAPIで使用できます。それぞれに、現在のCgシェーダーの設定、パラメータの受け渡しなどのCgプログラムとの通信を行うための独自のCg関数セットがあります。(HLSLはDirectXのみを対象としています。)
Cgのソースコードをアセンブリコードにコンパイルできることに加えて、Cgランタイムは、サポートプログラムの実行中にシェーダーをコンパイルする機能も備えています。これにより、ランタイムは、プログラムが現在実行されているハードウェアで利用可能な最新の最適化を使用してシェーダーをコンパイルできます。ただし、この手法では、シェーダーのソースコードがコンパイラに対してプレーンテキストで利用可能である必要があり、プログラムのユーザーがシェーダーのソースコードにアクセスできるようになります。一部の開発者は、これをこの手法の大きな欠点と見ています。
シェーダーのソースコードを公開せずに、ハードウェア固有の最適化の一部を維持するために、「プロファイル」という概念が開発されました。シェーダーは、プロファイルに基づいて、さまざまなグラフィックハードウェアプラットフォームに合わせてコンパイルできます。サポートプログラムを実行すると、プロファイルに基づいて最適かつ最適化されたシェーダーが読み込まれます。例えば、複雑なピクセルシェーダーをサポートするグラフィックカード用のプロファイルと、最小限のピクセルシェーダーのみをサポートするグラフィックカード用のプロファイルが存在する場合があります。サポートプログラムは、これらのプロファイルごとにピクセルシェーダーを作成することで、強力なシステムでも画質を犠牲にすることなく、サポートされるハードウェアプラットフォームの数を増やすことができます。
コンパイラと方言
[編集]Cg 方言には、これまで Nvidia の Cg ツールキットという形式のコンパイラが 1 つしかありませんでした。
MicrosoftはHLSL用の2つのコンパイラをリリースしました。最初のコンパイラはクローズドソースのFXC(Effect Compiler)で、2015年までサポートされていました。しかし、2015年以降は、より新しいHLSL機能をサポートするオープンソースのLLVMベースのDXC(DirectXShaderCompiler)に置き換えられ、廃止されました。 [ 24 ]どちらのコンパイラもバイトコードを生成します。以前のFXCはDXBCを使用していましたが、現在のDXCはDXILを使用しています。また、DXCはSPIR-Vバイトコードも生成できます。[ 25 ]
Khronos Groupも、GLSLからSPIR_Vへのコンパイラであるglslangのフロントエンドとして、LLVMベースのHLSLコンパイラを開発しました。SPIR_Vのサポートにより、シェーダーはクロスプラットフォーム化され、DirectXスタックに限定されなくなりました。[ 26 ]この作業は以前はHLSL2GLSLのようなソースレベルのコンバータによって行われていましたが、結果として得られるコードは肥大化してしまうことが多かったです。[ 27 ]
派生言語
[編集]PlayStation Shader Language(PSSL)はCg/HLSLに基づいています。[ 28 ]
ReshadeFXシェーディング言語もCg/HLSLに基づいています。ReshadeFXで記述されたシェーダーはOpenGL、DX、またはVulkanにコンパイルされ、ゲームに挿入されてポストプロセスフィルターとして機能します。[ 29 ]
Khronosはその後、 glslangをslangへと進化させました。これは、HLSLとほぼソースコード互換性のあるシェーディング言語およびコンパイラです。slangは、テキストシェーディング言語(GLSL、MSL、CUDA、WGSL)、バイトコード(D3D11、D3D12、Vulkan SPIR-V)、そしてCPUにコンパイルできます。また、GLSL互換モードも備えています。[ 30 ]
Cg または HLSL を使用するアプリケーションとゲーム
[編集]- 3DVIA Virtools
- アドビフォトショップ
- マヤ[ 31 ]
- バトルフィールド2
- クリスタルスペース
- ドルフィニティレーサー
- 地球の特殊部隊- Half-Life MOD
- 敵地:クエイクウォーズ
- Doom 3 BFGエディション
- EON RealityのEON Professional™/Ultra™
- アイオンフュージョン
- 程遠い
- ガルシャスプ:モンスタースレイヤー
- GLシーン
- ガンメタル
- ヒットマン:ブラッドマネー
- イルリヒトエンジン
- リーグ・オブ・レジェンド
- ライトフェザー3Dエンジン
- ライトウェーブ11.6 [ 32 ]
- muvee リビール
- 鬼
- オープンエミュ
- パンダ3D
- PCSX2
- プレイステーション3
- レトロアーチ
- 策略
- スーパーファミコン9x
- Unityゲームエンジン[ 33 ]
- アンリアルエンジン
参照
[編集]- ダイレクト3D
- ダイレクトX
- DirectX レイトレーシング
- コンピュータプログラミング
- コンピュータグラフィックス
- 頂点シェーダーとピクセルシェーダー
- OpenGLシェーディング言語
- シェーダーモデル
- オープンGL
参考文献
[編集]- ^ 「Direct3D 9 での HLSL シェーダーの作成」 . Microsoft Docs . 2021年2月22日閲覧。
- ^ 「高レベルシェーダー言語(HLSL)」 . Microsoft Docs . 2021年2月22日閲覧。
- ^ “Fusion Industries :: Cg and HLSL FAQ ::” . 2012年8月24日.オリジナルの2012年8月24日時点のアーカイブ。
- ^ “Fusion Industries :: Cg and HLSL FAQ ::” . 2012年8月24日.オリジナルの2012年8月24日時点のアーカイブ。
- ^ 「CGチュートリアル - 第1章 はじめに」 . developer.download.nvidia.cn .
- ^ 「Direct3D 9 での HLSL シェーダーの記述 (Windows)」 . msdn.microsoft.com . 2021年5月24日.
- ^ 「Cg FAQ」 . NVIDIA DesignWorks . 2011年3月8日. 2017年5月25日閲覧。
- ^ 「Cg Toolkit | NVIDIA Developer」 2011年3月8日。
- ^ 「Cg 2.0 リリースノート」(PDF) . nvidia.com . 2008年1月.
- ^ 「シェーダーモデル5.1オブジェクト」 . Microsoft Docs . 2021年2月22日閲覧。
- ^ 「HLSL シェーダーモデル 6.0」。Microsoft Docs 。 2021年2月22日閲覧。
- ^ a b Mark J. Kilgard、『Cg in Two Pages』、2003年。
- ^ a b 「Cgプロファイルドキュメント」。Nvidia開発者。
- ^ 「シェーダーモデルとシェーダープロファイル - Win32 アプリ」 . docs.microsoft.com . 2021年6月30日.
- ^ a b c d e f 「ピクセルシェーダーの違い」。Microsoft Docs。2020年8月19日。 2021年2月22日閲覧。
- ^ a b c d e Peeper, Craig; Mitchell, Jason L. (2003年7月). 「DirectX 9 高レベルシェーダー言語入門」 . Microsoft Docs . 2021年2月22日閲覧。
- ^ a b c Shimpi, Anand Lal . 「NVIDIAがGeForce FX (NV30)を発表」 . AnandTech . 2013年6月10日時点のオリジナルよりアーカイブ。 2021年2月22日閲覧。
- ^ Wilson, Derek. 「ATI Radeon X800 Pro and XT Platinum Edition: R420 Arrives」 . AnandTech . 2012年9月28日時点のオリジナルよりアーカイブ。 2021年2月22日閲覧。
- ^ a b Shader Model 3.0、Ashu Rege、NVIDIA Developer Technology Group、2004年。
- ^ a b Direct3D 10 システム、David Blythe、Microsoft Corporation、2006 年。
- ^ a b “レジスタ - ps_4_1” . Microsoft Docs . 2019年8月23日. 2021年2月22日閲覧。
- ^ a b “レジスタ - ps_5_0” . Microsoft Docs . 2019年8月23日. 2021年2月22日閲覧。
- ^ a b c d 「頂点シェーダーの違い」。Microsoft Docs。2020年8月19日。 2021年2月22日閲覧。
- ^ 「FXC から DXC への移植」。GitHub 。
- ^ 「microsoft/DirectXShaderCompiler: このリポジトリは、LLVM/Clang をベースにした DirectX Shader Compiler のソースをホストしています」。Microsoft。2020年10月21日。
- ^ 「glslang: GLSL/ESSL用Khronosリファレンスフロントエンド、HLSL用部分的フロントエンド、およびSPIR-Vジェネレーター」。Khronosグループ。2020年10月21日。
- ^ マット・ターナー。YouTubeの動画。
- ^ Stenson, Richard; Ho, Chris. 「PS4向けPlayStationシェーディング言語」 GDCヨーロッパ2013 .
- ^ 「ReShade FXシェーディング言語」 . GitHub . 2022年2月15日.
- ^ "shader-slang/slang" . Slangシェーディング言語. 2025年12月8日.
- ^ 「Maya Cg プラグイン | NVIDIA」。
- ^ 「LightWave - 11.6 機能の概要」。
- ^ 「Unity - マニュアル: シェーダーの作成」。
さらに読む
[編集]- Randima Fernando、Mark J. Kilgard、『The Cg Tutorial : The Definitive Guide to Programmable Real-Time Graphics』、Addison-Wesley Professional、ISBN 0-321-19496-9
- Randima Fernando著、『GPU Gems: Programming Techniques, Tips, and Tricks for Real-Time Graphics』、Addison-Wesley Professional、ISBN 0-321-22832-4
- William R. Mark、R. Steven Glanville、Kurt Akeley、Mark J. Kilgard、「Cg: C言語でグラフィックスハードウェアをプログラミングするためのシステム」 、 SIGGRAPH 2003論文集、doi : 10.1145/1201775.882362
外部リンク
[編集]- cgc-opensrc - NVIDIA のオープンソースコンパイラのミラー、2002
- いくつかの重要な資料(例えば、デザインペーパー)は、Siggraph 2005 のコースノートにまとめられています。
- Nvidia がホストする資料:
- NeHe Cg 頂点シェーダーチュートリアル
- エミュレータで使用される Cg シェーダー標準のドキュメント
- Aras Pranckevičius、クロス プラットフォーム シェーダー、2014 年。
- Microsoft DocsのHLSL プログラミング ガイド
- DirectX 9 高レベルシェーディング言語入門、(ATI) AMD 開発者センター
- Riemer の HLSL 入門とチュートリアル (サンプルコードを含む) 2008 年 11 月 19 日アーカイブ、 Wayback Machine
- HLSLの紹介
- DirectX中間言語(DXIL)仕様