| プログラム | 描画 | プリセット
カテゴリ:[リアルタイム]>[OpenGL]
シェーダ ファミリ: リアルタイム
出力: リアルタイム
高度な OpenGL Shading Language(GLSL)を使用して完全なプログラムを作成します。頂点シェーダおよびフラグメント シェーダは、単一の GLSL シェーダ ノード内の「エンティティ」として定義できます。このシェーダを操作する方法については、「統合Unified GLSLプログラムの設定」(「リアルタイム シェーダ」)を参照してください。
プログラム
|
GLSL プログラムの[ビルド]オプションを設定します。
-
プログラムを無効にします。
-
プログラムを実行せずにコンパイルします。
-
プログラムをコンパイルして実行します。
|
|
デバッグ メッセージを有効にします。コンパイル結果は、ログに記録され、スクリプト エディタのログ ウィンドウから確認できます。 スクリプト エディタを表示するには、Softimage インタフェースの下部にあるスクリプト アイコンをクリックします。
|
GLSL の頂点プログラムとフラグメント プログラム
適切なテキスト エディタに頂点シェーダおよびフラグメント シェーダのコードを入力します。[プリセット]タブからは、プリセット シェーダの 1 つをロードすることもできます。
テキスト エディタでは、テキストのカスタマイズ(フォント、カラー、サイズ)、構文スタイリング、折りたたみ(関数やサブルーチンなどのブロックを非表示にする機能)、自動入力、およびキーワードの強調表示がサポートされています。このテキスト エディタ
ウィジェットを独自のプラグインに実装することもできます。詳細については、テキストエディタウィジット『SDK ガイド』を参照してください。
描画
描画オペレーションは GLSL プログラム シェーダ内で直接処理されるため、Render Tree で GLSL プログラム ノードを描画ノードに接続する必要はありません。
ブレンド
RGBA モードでは、ピクセルは関数(glBlendFunc)を使用して描画されます。この関数は、入力される(ソース)RGBA 値をフレーム バッファ(デスティネーション値)に既にある RGBA 値とブレンドします。詳細については、「ブレンド機能の動作」を参照してください。
|
ブレンドを有効または無効にします。有効の場合、ブレンド関数はブレンドのオペレーションを定義します。
|
|
ブレンド ソース係数(sfactor)は、ソース カラー コンポーネントのスケーリングに使用される方法を指定します。
ドロップダウン メニューからサポートされている方法を 1 つ選択します。各方法は、4 つのスケール係数(それぞれ赤、緑、青、アルファ)を定義します。すべてのスケール係数の範囲は[0,1]になります。
|
|
ブレンド デスティネーション係数(dfactor)は、デスティネーション カラー コンポーネントのスケーリングに使用される方法を指定します。
ドロップダウン メニューからサポートされている方法を 1 つ選択します。各方法は、4 つのスケール係数(それぞれ赤、緑、青、アルファ)を定義します。すべてのスケール係数の範囲は[0,1]になります。
|
アルファ テスト
アルファ テスト(glAlphaFunc)は、入力フラグメントのアルファ値と定数参照値を比較した結果によって、フラグメントを破棄します。アルファ テストは、参照値と比較方法を指定します。比較はアルファ テストが有効な場合にのみ実行されます。
アルファ関数およびアルファ リファレンスは、ピクセルが描画される条件を指定します。入力アルファ値は、で指定された関数によってと比較されます。値が比較され、続くステンシルおよび深度バッファ テストにも渡された場合、入力フラグメントが描画されます。値が比較に失敗した場合、そのピクセル位置のフレーム バッファでは変更は行われません。
アルファ テストは、すべてのピクセル記述オペレーション(ポイント、ライン、ポリゴン、ビット マップのスキャン変換、およびピクセル描画およびコピー オペレーションのこれらの結果を含む)で行われます。スクリーンのクリア オペレーションには影響しません。
注:アルファ テストは、RGBA モードでのみ実行されます。
|
アルファ テストを有効または無効にします。
|
|
アルファ比較方法(func)を指定します。
ドロップダウン メニューからサポートされている比較方法を 1 つ選択します。関数は次のように定義されます。
|
|
入力アルファ値が比較された参照値(ref)を指定します。この値は範囲[0,1](0 は可能性が最も低いアルファ値、1 は可能性が最も高いアルファ値)にクランプされます。
|
パーティクル クラウド
|
OpenGL ポイント ストライプの使用を有効にします。ポイント ストライプと呼ぶテクスチャによって、各ポイント位置で自由な形状で描画します。このシェーダがポイント クラウドに適用されている場合は、ポイントの代わりにストライプがレンダリングされます。
|
プリセット
パーティクル クラウド
|
ftransform()関数を使用した現在のモデルビュー マトリクスによって入力頂点を変換するシンプルな GLSL シェーダです。これは固定機能を使用したポイントの変換に相当します。
|
|
パーティクル クラウドをさまざまなサイズのカラー ポイントのセットとしてレンダリングします。カラーとサイズの両方とも ICE ツリーの初期化された属性である必要があります。「ICE ツリーでデータを取得し設定する」(「ICE の基本」)を参照してください。
|
|
時系列に応じてざまざまなサイズおよびカラーのポイントとして、パーティクル クラウドをレンダリングします。
|
|
各パーティクルの速度に応じてさまざまなカラーのポイントとして、パーティクル クラウドをレンダリングします。 このシェーダは PointVelocity ICE 属性を取り、法線レジスタに挿入します。次に、頂点シェーダはベクトルの長さを取り、l_fAbsVel(絶対速度)と呼ばれる浮動小数値を挿入します。このシェーダは次にその値を使用して、各パーティクルの赤成分を処理します。
|
三角形メッシュ
|
ポイント ライト ソースを実装する頂点およびフラグメント シェーダ。
|
|
スポット ライト ソースを実装する頂点およびフラグメント シェーダ。
|
|
球面調和関数ライティングを実装する頂点およびフラグメント シェーダ。
|
Advanced(アドバンス)
グラフィック ハードウェアには通常、標準および汎用の頂点属性を渡すための少数の固定位置があります。したがって、OpenGL Shading Language は、最大 4 つの浮動小数値(vec4)用にスペースを空けて、各非マトリクス属性の変数を定義します。使用できる属性の変数の数には、実装に依存した制限があります。この値を超えると、リンク
エラーが発生します。ただし、宣言されているが使用されていない属性の変数はこの制限にはカウントされません。浮動小数属性では、この制限に対して vec4 として同じ数がカウントされるので、属性のパッキング テクニックを使用することもできます。4 つの関連のない浮動小数属性を
1 つの vec4 にグループ化して、基本ハードウェアの機能の利便性を高めることができます。Softimage の[GLSL プログラム]シェーダでは、レジスタにマッピングされるマトリクス属性は無視されます。
ハードウェア属性マッピング
|
|
|
各リストで使用できる属性とレジスタを更新します。更新は、シェーダによって読み込まれるポリゴン メッシュまたはポイント クラウドに変更を加えた場合に特に便利です。新しい(または最近初期化された)属性が、属性リストに表示されます。レジスタが割り当てられなくなると、レジスタ
リストに再び追加されます。
|
|
属性およびレジスタ マッピング(行)をハードウェア属性マッピング テーブルに追加します。このマッピングを変更するには、まず属性エントリをクリックし、属性リストから使用可能な属性を選択します。次に、対応するレジスタ エントリをクリックし、レジスタ
リストから使用可能なレジスタを選択します。
|
|
ハードウェア属性マッピング テーブルから選択した属性とレジスタ マッピング(行)を削除します。
|
|
ハードウェア属性マッピング テーブルの属性の列には、属性エントリが含まれます。各エントリは、ポリゴン メッシュまたはポイント クラウドにある(または作成可能な)0D コンポーネントをそれぞれ表します。
|
|
ハードウェア属性マッピング テーブルのハードウェア レジスタの列には、レジスタ エントリが含まれます。各エントリは、ほとんどの OpenGL グラフィック アクセラレータで使用可能なレジスタ位置をそれぞれ表します。
|
レジスタ マッピング情報
頂点属性を渡すのに使用されたエントリ ポイントのファミリ
|
タイプ
|
コンポーネント
|
ハードウェア レジスタ
|
追加情報
|
gl_Color
|
vec4
|
r、g、b、a
|
color0
|
通常は頂点カラーで使用されます。
|
gl_SecondaryColor
|
vec4
|
r、g、b、a
|
color1
|
通常は頂点カラーで使用されます。
|
gl_Normal
|
vec3
|
x、y、z
|
法線
|
通常は法線座標で使用されます。
|
gl_Vertex
|
vec4
|
x、y、z、w
|
位置
|
通常は頂点座標で使用されます。
|
gl_PointSize
|
float
|
x
|
psize
|
通常はポイント サイズ(ピクセル)で使用されます。
|
gl_MultiTexCoord0
|
vec4
|
x、y、z、w
|
texcoord0
|
通常はテクスチャ座標で使用されます。
|
gl_MultiTexCoord1
|
vec4
|
x、y、z、w
|
texcoord1
|
通常はテクスチャ座標で使用されます。
|
gl_MultiTexCoord2
|
vec4
|
x、y、z、w
|
texcoord2
|
通常はテクスチャ座標で使用されます。
|
gl_MultiTexCoord3
|
vec4
|
x、y、z、w
|
texcoord3
|
通常はテクスチャ座標で使用されます。
|
gl_MultiTexCoord4
|
vec4
|
x、y、z、w
|
texcoord4
|
通常はテクスチャ座標で使用されます。
|
gl_MultiTexCoord5
|
vec4
|
x、y、z、w
|
texcoord5
|
通常はテクスチャ座標で使用されます。
|
gl_MultiTexCoord6
|
vec4
|
x、y、z、w
|
texcoord6
|
通常はテクスチャ座標で使用されます。
|
gl_MultiTexCoord7
|
vec4
|
x、y、z、w
|
texcoord7
|
通常はテクスチャ座標で使用されます。
|
gl_FogCoord
|
float
|
x
|
fogcoord
|
通常はフォグ座標で使用されます。
|
glVertexAttrib
|
short、 float、 int、 double、 unsigned byte、 unsigned short、 unsigned int
|
x、y、z、w
|
attr[0...15]
|
Softimage の GLSL シェーダでは、汎用頂点属性値を attr ハードウェア レジスタに渡す機能はサポートされていません。
エントリ ポイントの glVertexAttrib ファミリを使用して汎用頂点属性を番号が付いた位置に渡している場合は、attr ハードウェア レジスタを利用できるように独自のアプリケーション コード(シェーダ オブジェクト)を記述する必要があります。
|
glMultiTexCoord[6]
|
vec4
|
x、y、z、w
|
タンジェント
|
OpenGL には、タンジェント ベクトル用の定義済み頂点属性はありません。 これは、texcoord6 にエイリアスされたタンジェント レジスタに割り当てることができます。 Softimage はタンジェントを 4-float RGBA 頂点カラーにエンコードします。
|
glMultiTexCoord[7]
|
vec4
|
x、y、z、w
|
従法線
|
OpenGL には、従法線ベクトル用の定義済み頂点属性はありません。 これは、texcoord7 にエイリアスされた従法線レジスタに割り当てることができます。 Softimage は従法線を 4-float RGBA 頂点カラーにエンコードします。
|
D3DDECLUSAGE_BLENDWEIGHT
|
|
x、y、z、w
|
ウェイト
|
Softimage の[GLSL プログラム]シェーダでは、値をこれらのレジスタに渡す機能はサポートされていません。ただし、これらのレジスタは、シェーダの開発者がこのシェーダの実装を書き換えて、DirectX ベースの GPU スキニング機能を利用できるようにする事前処理で使用できます。
|
D3DDECLUSAGE_BLENDINDICES
|
|
x、y、z、w
|
インデックス
|
|
D3DDECLUSAGE_SAMPLE
|
|
x、y、z、w
|
サンプル
|
|
D3DDECLUSAGE_TESSFACTOR
|
|
x
|
tessfactor
|
|
D3DDECLUSAGE_DEPTH
|
|
x
|
深度
|
|