| タイプ(プリミティブ) | タイプ(HW 高速化 スプライト) | タイプ(ビルボード) | タイプ(速度ベクトル) | タイプ(密度) | タイプ(線の軌跡) | ライティングとブレンド | Render Tree の使い方
カテゴリ: リアルタイム > OpenGL
シェーダ ファミリ: リアルタイム
出力: リアルタイム
OpenGL パーティクル シェーダを使用すると、OpenGL ディスプレイ モードに設定されている 3D ビューでパーティクルのリアルタイム シェーディングが可能になります。このリアルタイム パーティクル シェーダは、1 つのノード内で複数のシェーダ
タイプを実装します。各シェーダ タイプは、さまざまなリアルタイム エフェクトをパーティクル クラウドに適用します。
注:OpenGL パーティクル シェーダは、Softimage で独自のリアルタイム パーティクル シェーダを記述することで表示属性をオーバーライドするためのお手本になります。OpenGL Particle シェーダのソース コードは<Install_Path>¥XSISDK¥examples¥realtimeshader¥Particles¥OGLから入手することができます。
タイプ(プリミティブ)
|
各パーティクル ポイントを、球、雪片、立方体などの特定のプリミティブ タイプとして描画します。
|
プリミティブ
|
パーティクルを描画するのに使用するプリミティブのタイプを指定します。[ポイント]、[立方体]、[球(ソリッド)]、[球(ワイヤフレーム)]、[雪片]、[破片]、[四角形]、または[矢印]を選択できます。
|
|
ポイント プリミティブのサイズ(幅)をピクセル単位で設定できます。デフォルトは 1.0 です。 が[ポイント]に設定されているときに設定できます。
|
|
プリミティブ アンチエイリアスを有効にします。 が[ポイント]に設定されているときに設定できます。
|
|
各パーティクルの速度ベクトルの長さに応じてプリミティブをストレッチします。 が[立方体]、[球(ソリッド)]、[球(ワイヤフレーム)]、[雪片]、[破片]、[四角形]、または[矢印]に設定されているときに指定できます。
|
|
GPU インスタンスは、特に大きなパーティクル クラウドなどでレンダリングの速度を倍にすることができる GPU を使用してパーティクルを変換する方法です。CPU でプリミティブの頂点を変換する(基本的に各パーティクルを配置してからインスタンスをレンダリングする)代わりに、GPU
はインスタンスをレンダリングしてから、頂点の属性として位置を渡します。パーティクルの位置は、頂点シェーダで取得され、変換されます。
無効の場合、プリミティブは CPU でインスタンスを変換する従来の方法でレンダリングされます。 が[立方体]、[球(ソリッド)]、[球(ワイヤフレーム)]、[雪片]、[破片]、[四角形]、または[矢印]に設定されているときに指定できます。
|
|
フラグメント シェーダのコードを入力するテキスト エディタを開きます。ここでは、パイプラインの固定機能部分を、ユーザ独自のカスタム フラグメント シェーダ コードで上書きできます。 が[立方体]、[球(ソリッド)]、[球(ワイヤフレーム)]、[雪片]、[破片]、[四角形]、または[矢印]に設定されているときに指定できます。
|
|
テキスト エディタ ウィジットでは、テキストのカスタマイズ(フォント、カラー、サイズ)、構文スタイリング、折りたたみ(関数やサブルーチンなどのブロックを非表示にする機能)、自動入力、およびキーワードのハイライトがサポートされています。 このテキストエディタウィジットをユーザ独自のプラグインに実装する場合は、「Text Editor Widget」『SDK ガイド』を参照してください。
|
スプライト設定
|
スプライトとしてテクスチャを使用する場合は、イメージ全体をタイル(シングル)として使用するか、テクスチャを 2x2、3x3、4x4、または 8x8 のタイルに分割することができます。テクスチャの座標は、このオプションで指定されたタイル部分のみが使用されるように更新されます。 これは、複数イメージのテクスチャ(以下のイメージなど)を使用して、スプライトにテクスチャ アニメーションを作成する場合に特に便利です。
|
タイプ(HW 高速化 スプライト)
|
各ポイント位置に OpenGL ハードウェアの高速化ポイント スプライトを描画します。
|
プリミティブ
|
ポイント プリミティブのサイズ(幅)をピクセル単位で設定できます。デフォルトは 1.0 です。
|
スプライト設定
ポイントサイズ最小
|
減衰された最小ポイント サイズを設定します。デフォルトは 0.0 です。ゼロ未満の値は無効です。 最大ポイント サイズよりも大きい最小ポイント サイズを設定した場合、ポイント サイズは未定義の状態になります。
|
|
減衰された最大ポイント サイズを設定します。ゼロ未満の値は無効です。
|
|
アルファ減衰のしきい値を設定します。この設定を行うと、指定されたしきい値よりポイント幅が低い場合にポイント アルファがフェードします。ゼロ未満の値は無効です。
|
|
減衰は、ポイントの表示サイズが距離の関数として減少するエフェクトです。各ポイントには、ポイントサイズが計算されたときに考慮されるコンスタント、リニア、およびクワドラティック減衰係数があります。
|
|
ポイントのサイズが、コンスタントの距離による減衰に応じて変化するようにします。
|
|
ポイントのサイズが、リニアの距離による減衰に応じて変化するようにします。
|
|
ポイントのサイズが、クワドラティックの距離による減衰に応じて変化するようにします。
|
タイプ(ビルボード)
|
OpenGL ポイント ストライプ エクステンションを使用して、各ポイント プリミティブのビルボード スプライトを描画します。このシェーダは、ハードウェア高速化スプライト シェーダと似ています。ただし、ビルボード スプライトは CPU で拡張された後、GPU
に送信されます。つまり、スプライトのサイズは、表示角度にかかわらず同じになります。
|
スプライト設定
|
スプライトとしてテクスチャを使用する場合は、イメージ全体をタイル(シングル)として使用するか、テクスチャを 2x2、3x3、4x4、または 8x8 のタイルに分割することができます。テクスチャの座標は、このオプションで指定されたタイル部分のみが使用されるように更新されます。 これは、複数イメージのテクスチャ(以下のイメージなど)を使用して、スプライトにテクスチャ アニメーションを作成する場合に特に便利です。
|
タイプ(速度ベクトル)
|
各ポイント プリミティブの後ろのライン(パーティクルの速度に応じた長さ)を描画します。
|
スプライト設定
|
スプライトとしてテクスチャを使用する場合は、イメージ全体をタイル(シングル)として使用するか、テクスチャを 2x2、3x3、4x4、または 8x8 のタイルに分割することができます。テクスチャの座標は、このオプションで指定されたタイル部分のみが使用されるように更新されます。 これは、複数イメージのテクスチャ(以下のイメージなど)を使用して、スプライトにテクスチャ アニメーションを作成する場合に特に便利です。
|
タイプ(密度)
|
各ポイントを描画し、カラーとしてエンコードされたクラウドの密度を表示します。各ポイントで、密度シェーダは隣接するパーティクルの距離をチェックし、およびに応じてまたはカラー設定を使用してポイントをシェーディングします。このシェードは、パーティクル クラウドの密度を視覚化するときに便利です。
|
プリミティブ
|
ポイント プリミティブのサイズ(幅)をピクセル単位で設定できます。デフォルトは 1.0 です。
|
|
プリミティブ アンチエイリアスを有効にします。
|
密度フィールド
|
カラーからカラー(およびその逆)にパーティクル カラーをブレンドするレートを設定します。
|
|
(隣接するパーティクルへのハードコーディングされた距離に基づいて)相互への近接が高密度と見なされるパーティクルの数を設定します。
|
|
相互への近接に関して低密度と見なされるパーティクルをシェーディングするカラーを設定します。
|
|
相互への近接に関して高密度と見なされるパーティクルをシェーディングするカラーを設定します。
|
タイプ(線の軌跡)
プリミティブ
|
GPU インスタンスは、特に大きなパーティクル クラウドなどでレンダリングの速度を倍にすることができる GPU を使用してパーティクルを変換する方法です。CPU でプリミティブの頂点を変換する(基本的に各パーティクルを配置してからインスタンスをレンダリングする)代わりに、GPU
はインスタンスをレンダリングしてから、頂点の属性として位置を渡します。パーティクルの位置は、頂点シェーダで取得され、変換されます。
|
|
フラグメント シェーダのコードを入力するテキスト エディタを開きます。ここでは、パイプラインの固定機能部分を、ユーザ独自のカスタム フラグメント シェーダ コードで上書きできます。
|
|
テキスト エディタ ウィジットでは、テキストのカスタマイズ(フォント、カラー、サイズ)、構文スタイリング、折りたたみ(関数やサブルーチンなどのブロックを非表示にする機能)、自動入力、およびキーワードのハイライトがサポートされています。 このテキストエディタウィジットをユーザ独自のプラグインに実装する場合は、「Text Editor Widget」『SDK ガイド』を参照してください。
|
ライティングとブレンド
|
ライティングのオン/オフを切り替えます。GL ライティングは、各頂点の 1 次および 2 次カラーを生成します。有効な光源からのエフェクトは、サーフェイス マテリアル プロパティと組み合わせて使用され、特定の頂点のライト カラーを特定します。
|
ブレンド
RGBA モードでは、ピクセルは関数(glBlendFunc)を使用して描画されます。この関数は、入力される(ソース)RGBA 値をフレーム バッファ(デスティネーション値)に既にある RGBA 値とブレンドします。詳細については、「ブレンド機能の動作」を参照してください。
|
ブレンドを有効または無効にします。有効の場合、ブレンド関数はブレンドのオペレーションを定義します。
|
|
ブレンド ソース係数(sfactor)は、ソース カラー コンポーネントのスケーリングに使用される方法を指定します。
ドロップダウン メニューからサポートされている方法を 1 つ選択します。各方法は、4 つのスケール係数(それぞれ赤、緑、青、アルファ)を定義します。すべてのスケール係数の範囲は[0,1]になります。
|
|
ブレンド デスティネーション係数(dfactor)は、デスティネーション カラー コンポーネントのスケーリングに使用される方法を指定します。
ドロップダウン メニューからサポートされている方法を 1 つ選択します。各方法は、4 つのスケール係数(それぞれ赤、緑、青、アルファ)を定義します。すべてのスケール係数の範囲は[0,1]になります。
|
アルファ テスト
アルファ テスト(glAlphaFunc)は、入力フラグメントのアルファ値と定数参照値を比較した結果によって、フラグメントを破棄します。アルファ テストは、参照値と比較方法を指定します。比較はアルファ テストが有効な場合にのみ実行されます。
アルファ関数およびアルファ リファレンスは、ピクセルが描画される条件を指定します。入力アルファ値は、で指定された関数によってと比較されます。値が比較され、続くステンシルおよび深度バッファ テストにも渡された場合、入力フラグメントが描画されます。値が比較に失敗した場合、そのピクセル位置のフレーム バッファでは変更は行われません。
アルファ テストは、すべてのピクセル記述オペレーション(ポイント、ライン、ポリゴン、ビットマップのスキャン変換、およびピクセル描画およびコピー オペレーションのこれらの結果を含む)で行われます。スクリーンのクリア オペレーションには影響しません。
注:アルファ テストは、RGBA モードでのみ実行されます。
|
アルファ テストを有効または無効にします。
|
AlphaFunc
|
アルファ比較関数(func)を指定します。 ドロップダウン メニューからサポートされている比較方法を 1 つ選択します。関数は次のように定義されます。
|
|
入力アルファ値が比較された参照値(ref)を指定します。この値は範囲[0,1](0 は可能性が最も低いアルファ値、1 は可能性が最も高いアルファ値)にクランプされます。
|
Render Tree の使い方
ここでは、OGL パーティクル シェーダを使用した一般的な Render Tree の設定について説明します。