ビューポート 2.0 の dx11Shader または glslShader プラグインで使用するためにユーザ独自のカスタム シェーダを作成している場合、次のセマンティックと注釈がサポートされます。
dx11ShaderNode および GLSLShaderNode クラスは、パラメータおよび均一(GLSL)の次の注釈を探して、関する情報を作成時に MUniformParameter クラスに転送します:
名前 | タイプ | 説明 |
UIOrder | int | アトリビュート エディタ(Attribute Editor)でパラメータの順序を変更できます。これは特に、コンパイラから返されるパラメータの順序が常に FX ファイルの宣言の順序に従っているわけではないため便利です。UIOrder が最小のパラメータが AE の最上位に示され、UIOrder が増えると他のパラメータが追加されます。 設定しない場合は、パラメータはシェーダ ファイルに表示されるのと同じ順序で配置されますが、UIOrder が指定されているパラメータの後になります。 |
UVEditorOrder | int | UV テクスチャ エディタ(UV Texture Editor)でテクスチャの順序を変更できます。UVEditorOrder が最小のテクスチャ パラメータが、最初にテクスチャ(Textures)メニューに表示されます。 |
UIGroup | string | 同じ UIGroup アトリビュートを持つすべてのパラメータが、集約可能な別のパネルに並べられ、そのラベルは UIGroup 値になります。パネルは、UIOrder 値が最小のグループ パラメータの位置に挿入されます。 設定しない(または空の)場合は、パラメータは名前の付いたグループには配置されません。 |
Object | string | 異なるシェーダ パラメータを同じ Maya オブジェクトの一部としてグループ化します。 これは一般的に、ライトのすべてのパラメータを定義するために使用されます。アトリビュート エディタ(Attribute Editor)パラメータ レイアウト レベルで、パネルが既定で集約されることを除き、この注釈は UIGroup 注釈としてまったく同じように機能します。これは、オブジェクト名に「Light」(または「Lamp」)と、「Point」、「Spot」、「Ambient」、または「Directional 」 が含まれている場合にも、ライト オブジェクトのタイプを決定するために使用されます。 個別のオブジェクトごとにドロップダウン メニューが作成され、既存の Maya シーン ライトに簡単に接続することができます。 例: uniform lightColor : DIFFUSE < Object = "Light0_Spot"; >; uniform lightPosition : POSITION < Object = "Light0_Spot; >; lightColor および lightPosition は、スポット ライトになりそうな同じライト ノードのアトリビュートにバインドされます。 |
UIName | string | UI (アトリビュート エディタ(Attribute Editor))でパラメータの名前を変更できます。既定では、変数名が表示されます。 |
SasUiVisible UIType UIWidget |
bool string string |
UI での変数の可視性を制御します。 2 つの文字列注釈の場合は、値が「None」の場合に変数が非表示になります。 カラーチューザ(Color Chooser)ウィジェットを使用するには、ColorPicker に UIType または UIWidget を設定します。 |
SasUiMin UIMin uimin |
float/int (パラメータと同じ) |
最小範囲値。 MUniformParameter::setRangeMin()に対応しています。 |
SasUiMax UIMax uimax |
float/int (パラメータと同じ) |
最大範囲値。 MUniformParameter::setRangeMax()に対応しています。 |
UISoftMin uisoftmin |
float/int (パラメータと同じ) |
範囲の最小スライダ値。UISoftMin より小さい値(ただし、指定されている場合は UIMin より大きい値)をパラメータの数値入力に入力できます。 MUniformParameter::setSoftRangeMin()に対応しています。 |
UISoftMax uisoftmax |
float/int (パラメータと同じ) |
範囲の最大スライダ値。UISoftMax より大きい値(ただし、指定されている場合は UIMax より小さい値)をパラメータの数値入力に入力できます。 MUniformParameter::setSoftRangeMax()に対応しています。 |
UIFieldNames | string | アトリビュート値で見つかった設定を使用して、int パラメータのドロップダウン メニューを作成します。 形式は MEL コマンド「attributeQuery -listEnum」と同じです。この形式は、等号記号「=」で分けられたインデックス値を指定できる、コロン「:」で区切られたフィールド名の文字列です。インデックスは 0 から始まり、アイテムのインデックス値は、明示的に指定されない場合、以前のアイテム(ある場合)が 1 ずつ増分されるインデックスになります。 たとえば、"Shaded:Wireframe=8:Bounding Box"では、値が 0、8、および 9 の 3 つのアイテムが定義されます。 |
ResourceName SasResourceAddress |
string | 既定のテクスチャ ファイル名。エフェクトを設定すると、プラグインでテクスチャが自動的にロードおよび接続されます。 パスは、絶対パスまたは相対パスを使用できます。相対パスが定義されている場合、プラグインは、最初に現在の ogsfx ファイルと同じフォルダ階層内でファイルを検索しようとします。 ファイルが見つからない場合は、プラグインは次に、MHWRender::MTextureManager::imagePaths() で定義されたパス内のファイルを検索します。 |
TextureType ResourceType |
string | 変数が texture[1D|2D|3D|Cube]ではなく、未指定のテクスチャとして記述されている場合、この注釈を使用してテクスチャ タイプを指定できます。有効な値は、「1D」、「2D」、「3D」、「Cube」です。 |
Space | string | 位置と方向のセマンティックに既定のスペースを指定できます。有効な値は、「Object」、「World」、「View」、「Camera」です。その他の値は無視され、セマンティックは未定義のままになります。 「Object」は、セマンティック MUniformParameter::kSemanticObjectPos または MUniformParameter::kSemanticObjectDir に対応しています。 「World」は、MUniformParameter::kSemanticWorldPos または MUniformParameter::kSemanticWorldDir に対応しています。 「View」または「Camera」は、MUniformParameter::kSemanticViewPos または MUniformParameter::kSemanticViewDir に対応しています。 |
名前 | タイプ | 説明 |
mipmaplevels | int | Dx11Shader では、テクニックまたはテクスチャ説明レベルのどちらかで、ロードまたは生成しなくてはならない Mip-map レベルの数をコントロールすることができます。 テクスチャ説明でこの注釈を使用します。有効な値は次のとおりです。
テクスチャ メモリを削減するには、dx11Shader プラグインの既定値を 1 に設定すると、最初の mip map レベル(<val>=1)だけがロード、計算されます。 これをテクスチャごとに強制して明示的にメモリの使用量を削減することもできます。 実装例を次に示します: Texture2D DiffuseTexture < string UIName = "Diffuse Map"; string ResourceType = "2D"; int mipmaplevels = <val>; >; この値は、テクニック注釈に設定された値よりも優先されます(texture_mipmaplevels)。詳細については、「サポートされるテクニック注釈」 を参照してください。 この注釈のサンプルについては、Maya インストールの presets¥HLSL11¥examples フォルダの AutodeskUberShader.fx を参照してください。 |
MUniformParameter クラスが現在サポートしているすべてのセマンティックに加えて、dx11ShaderNode および GLSLShaderNode は、シェーダ パラメータにシーン ライトのプロパティをバインドする追加ライト固有のセマンティックを追加します。ライトが Maya で駆動されると、描画コンテキストからのライト情報を使用して、サポートされるすべてのパラメータの値が書き込まれます。サポートされないパラメータは、シェーダで検出された値のままになります。つまり、ポイント ライトに接続すると、位置パラメータは駆動されますが、方向パラメータは駆動されません。
名前 | タイプ | 説明 |
HWS_PrimitiveBase |
int | オブジェクトのカラー、または最初のコンポーネント、または最初のジオメトリ インスタンスを生成するために使用される整数です。(GPU インスタンス化は、ビューポート 2.0 オプション ウィンドウで有効にする必要があります)。 |
HWS_PrimitiveCountPerInstance |
int | 各ジオメトリ インスタンスごとに増分する必要のある HWS_PrimitiveBase の量を指定します。
MUniformParameter::kSemanticHWSPrimitiveCountPerInstance に対応しています。 |
HWS_ObjectLevel |
bool | 選択をオブジェクト レベルで行うかどうかを指定します。 |
HWS_FaceLevel |
bool | 選択をフェース レベルで行うかどうかを指定します。
MUniformParameter::kSemanticHWSFaceLevel に対応しています。 |
HWS_EdgeLevel |
bool | 選択をエッジ レベルで行うかどうかを指定します。
MUniformParameter::kSemanticHWSEdgeLevel に対応しています。 |
HWS_VertexLevel |
bool | 選択を頂点レベルで行うかどうかを指定します。 |
HWS_FrontCCW |
bool | 反時計回りの三角が前向きかどうかを指定します。太点または太線を生成するときに便利です。
MUniformParameter::kSemanticHWSFrontCCW に対応しています。 |
HWS_InstancedDraw |
bool | ジオメトリ インスタンスが描画されているかどうかを指定します。 |
名前 | タイプ | 説明 |
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 マップ レベルを指定するには、テクニックの定義を使用してこの注釈を使用します。有効な値は次のとおりです。
テクスチャ メモリを削減するには、dx11Shader プラグインの既定値を 1 に設定すると、最初の mip map レベル(<val>=1)だけがロード、計算されます。 これをテクスチャごとに強制して明示的にメモリの使用量を削減することもできます。 実装例を次に示します: 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」: 高度な透明度をサポート |
OverridesDrawState | string (bool) | このテクニックが Maya の透明オブジェクトをレンダリングするかどうかまたは自己管理かどうか(マルチパス)を指定します。 「False」: 状態をオーバーライドしない(既定値) 「True」: 自己管理 |
OverridesNonMaterialItems |
string (bool) | このテクニックを、ワイヤフレームや選択したエッジまたは頂点コンポーネントなどの、マテリアルではない項目をレンダーするために使用するかどうかを指定します。 これは、オブジェクトのジオメトリがレンダーしたマテリアルと一致せず、選択が困難なディスプレイスメントを計算するシェーディング エフェクトに特に便利です。 「False」: マテリアルではない項目をオーバーライドしない(既定) 「True」: シェーダの UI のプリミティブを表示できるように、マテリアルではない項目のレンダーに使用 詳細については、「サポートされるパス注釈」で DrawContext を参照してください。 |
ExtraScale | float | このテクニックは、オブジェクト空間のバウンディング ボックスに適用される最大スケール係数が必要かどうかを指定します。 このテクニックを使用すると、このバウンディング ボックスをベース ジオメトリよりも大きくする必要があることを示すことができます。これは通常、ディスプレイスメントなどの影響や、ジオメトリがビューポートのエッジに移動される場合や選択中に破棄されることを防ぐためです。 既定値は 1.0 です。 |
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 つのピクセルではなく四角としてレンダリングされ、エッジ コンポーネントは、主に事前選択ハイライト中に、見やすくするために大きくレンダリングされます。 これは通常、ジオメトリ シェーダを使用して行われ、ラインとポイントを四角に変換します。 「fatLine」: このパスでラインを四角としてレンダリングできる 「fatPoint」: このパスでポイントを四角としてレンダリングできる この特殊ケースを処理するパスが定義されていない場合、「nonMaterialItemsPass」または「selectionPass」描画コンテキストを処理する既定のパスが使用されます。 |