ビューポート 2.0 の dx11Shader および glslShader プラグインによってサポートされるセマンティックと注釈(続き)

ビューポート 2.0 の dx11Shader および glslShader プラグインでサポートされるセマンティックと注釈」の続きです。

ハードウェア フォグ固有のセマンティック

注: 現在、glslShader プラグインではサポートされていません。

名前 タイプ 説明
HardwareFogEnabled bool ハードウェア フォグが有効かどうかを指定します。
HardwareFogMode int フォグのタイプが一次か、指数関数か、指数関数の二乗かを指定します。
HardwareFogStart float 一次フォグで使用される近距離を指定します。
HardwareFogEnd float 一次フォグで使用される遠距離を指定します。
HardwareFogDensity float 指数関数フォグの密度を指定します。
HardwareFogColor float4 (dx11Shader)

vec4 (glslShader)

RGBA 値でフォグ カラーを指定します。

選択セマンティック

名前 タイプ 説明

HWS_PrimitiveBase

int

オブジェクトのカラー、または最初のコンポーネント、または最初のジオメトリ インスタンスを生成するために使用される整数です。(GPU インスタンス化は、ビューポート 2.0 オプション ウィンドウで有効にする必要があります)。

MUniformParameter::kSemanticHWSPrimitiveBase に対応しています。

HWS_PrimitiveCountPerInstance

int 各ジオメトリ インスタンスごとに増分する必要のある HWS_PrimitiveBase の量を指定します。

MUniformParameter::kSemanticHWSPrimitiveCountPerInstance に対応しています。

HWS_ObjectLevel

bool 選択をオブジェクト レベルで行うかどうかを指定します。

MUniformParameter::kSemanticHWSObjectLevel に対応しています。

HWS_FaceLevel

bool 選択をフェース レベルで行うかどうかを指定します。

MUniformParameter::kSemanticHWSFaceLevel に対応しています。

HWS_EdgeLevel

bool 選択をエッジ レベルで行うかどうかを指定します。

MUniformParameter::kSemanticHWSEdgeLevel に対応しています。

HWS_VertexLevel

bool 選択を頂点レベルで行うかどうかを指定します。

MUniformParameter::kSemanticHWSVertexLevel に対応しています。

HWS_FrontCCW

bool 反時計回りの三角が前向きかどうかを指定します。太点または太線を生成するときに便利です。

MUniformParameter::kSemanticHWSFrontCCW に対応しています。

HWS_InstancedDraw

bool ジオメトリ インスタンスが描画されているかどうかを指定します。

MUniformParameter::kSemanticHWSInstancedDraw に対応しています。

サポートされるテクニック注釈

名前 タイプ 説明
index_buffer_type string

インデックス バッファ ジェネレータと mutator プラグインでカスタムのプリミティブ タイプを指定できます。通常は、追加データが含まれているインデックス バッファをシェーダに提供するために、テッセレーションに使用されます。

dx11Shader および glslShader プロジェクトには、隣接エッジ法線(PN-AEN)インデックス バッファを使用して点法線三角形を生成することができる mutator が含まれています。詳細については、「Maya 開発者ヘルプ」の「シェーダのジオメトリック データをカスタマイズする」を参照してください。

dx11Shader または glslShader の場合、これらの値を使用します。

値無し: 既定のインデックス バッファ(既定値)

「PNAEN9」または「GLSL_PNAEN9」: 三角形および隣接エッジ

「PNAEN18」または「GLSL_PNAEN18」: 三角形、隣接エッジ、ドミナント エッジ、およびドミナント頂点

インデックス mutator の登録されている名前と一致していれば、他の任意の値も許容されます。

MHWRender::MPxPrimitiveGenerator に対応しています。

texture_mipmaplevels

int

dx11Shader では、テクニックまたはテクスチャ説明レベルのどちらかで、ロードまたは生成しなくてはならない Mip-map レベルの数をコントロールすることができます。

このテクニックを使用してテクスチャをロードするときに生成する必要がある mip マップ レベルを指定するには、テクニックの定義を使用してこの注釈を使用します。有効な値は次のとおりです。

  • <val> = 0: 影響を受けるテクスチャのすべての mip map レベルが生成されます。テクスチャに既存の mip map がある場合、それらがロードされます。たとえば、DDS テクスチャの事前計算された mip map をロードすることができます。

  • <val> = 1-10 : 指定されたレベルまでの mipmap だけを生成します。

テクスチャ メモリを削減するには、dx11Shader プラグインの既定値を 1 に設定すると、最初の mip map レベル(<val>=1)だけがロード、計算されます。

注: glslShader および ShaderFX プラグインは、既定値が 0 に設定されています。

これをテクスチャごとに強制して、メモリの使用量を明示的に削減することもできます。

実装例を次に示します。

technique11 T0

< 

    bool overridesDrawState = false;

    int isTransparent = 0;

    int texture_mipmaplevels = <val>;

>

後者が優先される場合は、パラメータ注釈 mipmaplevels と組み合わせることができます。詳細については、「テクスチャ固有のパラメータ注釈」を参照してください。

isTransparent

(dx11Shader)

int Maya で適切なパスとカリングを使用できるエフェクトの不透明度を指定します。サポートされる値は以下のとおりです。

0: テクニックは常に不透明です。

1: テクニックは常に透明です。

2: テクニックの不透明度は「Opacity」セマンティックを使用する float パラメータに関連付けられ、不透明度の値が 1.0 未満の場合は透明になります。

透明度(Transparency)

(glslShader)

string

このテクニックが半透明モードでレンダリングするかどうかを指定します。

「Opaque」: 透明度なし(既定)

「Transparent」: 透明を有効化します。

MPxShaderOverride::isTransparent() に対応しています。

SupportsAdvancedTransparency string (bool)

このテクニックが高度な透明度アルゴリズム(深度ピーリングなど)をサポートするかどうかを指定します。

True の場合、このテクニックは描画コンテキスト「transparentPeel」、「transparentPeelAndAvg」および「transparentWeightedAvg」のパスを定義する必要があります。

「False」: 高度な透明度のサポート無し(既定値)

「True」: 高度な透明度をサポート

MPxShaderOverride::supportsAdvancedTransparency() に対応しています。

OverridesDrawState string (bool)

このテクニックが Maya の透明オブジェクトをレンダリングするかどうかまたは自己管理かどうか(マルチパス)を指定します。

「False」: 状態をオーバーライドしない(既定値)

「True」: 自己管理

MPxShaderOverride::overridesDrawState() に対応しています。

OverridesNonMaterialItems

string (bool)

このテクニックを、ワイヤフレームや選択したエッジまたは頂点コンポーネントなどの、マテリアルではない項目をレンダーするために使用するかどうかを指定します。

これは、オブジェクトのジオメトリがレンダーしたマテリアルと一致せず、選択が困難なディスプレイスメントを計算するシェーディング エフェクトに特に便利です。

「False」: マテリアルではない項目をオーバーライドしない(既定)

「True」: シェーダの UI のプリミティブを表示できるように、マテリアルではない項目のレンダーに使用

詳細については、「サポートされるパス注釈」で DrawContext を参照してください。

MPxShaderOverride::overridesNonMaterialItems()に対応しています。

ExtraScale float

このテクニックは、オブジェクト空間のバウンディング ボックスに適用される最大スケール係数が必要かどうかを指定します。

このテクニックを使用すると、このバウンディング ボックスをベース ジオメトリよりも大きくする必要があることを示すことができます。これは通常、ディスプレイスメントなどの影響や、ジオメトリがビューポートのエッジに移動される場合や選択中に破棄されることを防ぐためです。

既定値は 1.0 です。

MPxShaderOverride::boundingBoxExtraScale()に対応しています。

VariableNameAsAttributeName string (bool)

Maya のアトリビュート名として(存在する場合は、UIName の代わりに)均一変数名を使用することを Maya に伝えます。

「False」: アトリビュート名として UIName を使用(既定)

「True」: アトリビュート名として変数名を使用

シェーダ ファイルに定義されている UI 名が変更された場合、保存した Maya シーンとの下位互換性を維持するために使用することができます。

handlesConsolidatedGeometry

string (bool)

False に設定すると、glslShader が適用されるジオメトリに対して統合ワールド(Consolidate World)機能が無効になります。

この注釈は、テクニックによりディスプレイスメントが描画され、そのディスプレイスメントの計算でオブジェクトのオブジェクト空間座標を使用する場合(ワールド変換行列を使用する場合など)に便利です。統合ワールド(Consolidate World)を使用すると、複数のオブジェクトの頂点が新しい共有オブジェクト空間に移動されます。そのため、プラグイン シェーダのレンダリングが正常に実行されないことがあります。この場合、統合ワールド(Consolidate World)を無効にすることができます。

サポートされるパス注釈

エフェクトでは、シャドウの深度マップを描画する場合など、テクニックのパスの一部を特殊なコンテキストでアクティブにすることを要求できます。これは、パスをアクティブにできるコンテキストを指定する、「DrawContext」という名前の文字列注釈を追加して行われます。

名前 タイプ 説明
DrawContext string

このパスをこの描画コンテキストでのみ有効にすることを指定します。

複数のパスが同じ DrawContext 値を持つことができます。

MHWRender::MPassContextのパス セマンティックと一致する任意の文字列を使用できます。たとえば、次のコンテキストがサポートされています: 「colorPass」、「shadowPass」、「depthPass」、「normalDepthPass」。

空の値(または DrawContext が設定されていない場合)は、この注釈を「colorPass」に設定するのと同じです。

マテリアルではない項目をレンダーするために使用するパスについては、「nonMaterialItemsPass」に設定します。マテリアルではない項目を選択するために使用されるパスについては、「selectionPass」に設定します。上記の「サポートされるテクニック注釈」で OverridesNonMaterialItems を参照してください。

PrimitiveFilter

string

このパスで次のコンポーネントのレンダリングを処理できることを指定します。

  • 太線としてのライン(ライン サイズ > 1)

  • 太点としてのポイント(ポイント サイズ > 1)

パスまたは選択パスのレンダリング時にエッジまたは頂点コンポーネントを処理するために使用することができます。

頂点コンポーネントは 1 つのピクセルではなく四角としてレンダリングされ、エッジ コンポーネントは、主に事前選択ハイライト中に、見やすくするために大きくレンダリングされます。

これは通常、ジオメトリ シェーダを使用して行われ、ラインとポイントを四角に変換します。

「fatLine」: このパスでラインを四角としてレンダリングできる

「fatPoint」: このパスでポイントを四角としてレンダリングできる

この特殊ケースを処理するパスが定義されていない場合、「nonMaterialItemsPass」または「selectionPass」描画コンテキストを処理する既定のパスが使用されます。

グローバル セマンティック

名前 タイプ 説明
MayaSwatchRender bool

現在のレンダリング プロセスがスウォッチの描画に使用されるタイミングを指定します。

ユーザは、スウォッチを描画するときに特定のパスを処理できます。