ビューポート 2.0 の dx11Shader または glslShader プラグインで使用するためにユーザ独自のカスタム シェーダを作成している場合、次のセマンティックと注釈がサポートされます。
dx11ShaderNode および GLSLShaderNode クラスは、パラメータおよび均一(GLSL)の次の注釈を探して、関連する情報を作成時に MUniformParameter クラスに転送します。
注: OpenGL Shading Language (GLSL)は注釈をサポートしていませんが、OGSFX ではサポートしており、均一、テクニック、およびパスの定義に使用できます。
名前 | タイプ | 説明 |
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 シーン ライトに簡単に接続することができます。 例:
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)だけがロード、計算されます。 これをテクスチャごとに強制して、メモリの使用量を明示的に削減することもできます。 実装例を次に示します。
この値は、テクニック注釈に設定された値よりも優先されます(texture_mipmaplevels)。詳細については、「サポートされるテクニック注釈」を参照してください。 この注釈のサンプルについては、Maya インストールの presets¥HLSL11¥examples フォルダの AutodeskUberShader.fx を参照してください。 |
MUniformParameter クラスが現在サポートしているすべてのセマンティックに加えて、dx11ShaderNode および GLSLShaderNode は、シェーダ パラメータにシーン ライトのプロパティをバインドする追加ライト固有のセマンティックを追加します。ライトが Maya で駆動されると、描画コンテキストからのライト情報を使用して、サポートされるすべてのパラメータの値が書き込まれます。サポートされないパラメータは、シェーダで検出された値のままになります。つまり、ポイント ライトに接続すると、位置パラメータは駆動されますが、方向パラメータは駆動されません。