ビューポート 2.0 の dx11Shader および glslShader プラグインによってサポートされるセマンティックと注釈
ビューポート 2.0 の dx11Shader または glslShader プラグインで使用するためにユーザ独自のカスタム シェーダを作成している場合、次のセマンティックと注釈がサポートされます。
サポートされるパラメータと均一な注釈
dx11ShaderNode および GLSLShaderNode クラスは、パラメータおよび均一(GLSL)の次の注釈を探して、関連する情報を作成時に MUniformParameter クラスに転送します。
注: OpenGL Shading Language (GLSL)は注釈をサポートしていませんが、OGSFX ではサポートしており、均一、テクニック、およびパスの定義に使用できます。
| 名前 | タイプ | 説明 |
| UIOrder | int | でパラメータの順序を変更できます。これは特に、コンパイラから返されるパラメータの順序が常に FX ファイルの宣言の順序に従っているわけではないため便利です。UIOrder が最小のパラメータが AE の最上位に示され、UIOrder が増えると他のパラメータが追加されます。 設定しない場合は、パラメータはシェーダ ファイルに表示されるのと同じ順序で配置されますが、UIOrder が指定されているパラメータの後になります。 |
| UVEditorOrder | int | でテクスチャの順序を変更できます。UVEditorOrder が最小のテクスチャ パラメータが、最初にメニューに表示されます。 |
| UIGroup | string | 同じ UIGroup アトリビュートを持つすべてのパラメータが、集約可能な別のパネルに並べられ、そのラベルは UIGroup 値になります。パネルは、UIOrder 値が最小のグループ パラメータの位置に挿入されます。 設定しない(または空の)場合は、パラメータは名前の付いたグループには配置されません。 |
| Object | string | 異なるシェーダ パラメータを同じ Maya オブジェクトの一部としてグループ化します。 これは一般的に、ライトのすべてのパラメータを定義するために使用されます。パラメータ レイアウト レベルで、パネルが既定で集約されることを除き、この注釈は 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 ()でパラメータの名前を変更できます。既定では、変数名が表示されます。 |
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)だけがロード、計算されます。 注: glslShader および ShaderFX プラグインは、既定値が 0 に設定されています。 これをテクスチャごとに強制して、メモリの使用量を明示的に削減することもできます。 実装例を次に示します。 Texture2D DiffuseTexture
<
string UIName = "Diffuse Map";
string ResourceType = "2D";
int mipmaplevels = <val>;
>;
この値は、テクニック注釈に設定された値よりも優先されます(texture_mipmaplevels)。詳細については、「サポートされるテクニック注釈」を参照してください。 この注釈のサンプルについては、Maya インストールの presets¥HLSL11¥examples フォルダの AutodeskUberShader.fx を参照してください。 |
サポートされるセマンティック
| セマンティック | タイプ | 説明 |
| カラー(Color) | float3/4 (dx11Shader) vec3/4 (glslShader) | カラー パラメータ: のカラー チューザ ウィジェットを使用します。 |
| Ambient | float3/4 (dx11Shader) vec3/4 (glslShader) | カラー パラメータ: のカラー チューザ ウィジェットを使用します。 |
| Specular | float3/4 (dx11Shader) vec3/4 (glslShader) | カラー パラメータ: のカラー チューザ ウィジェットを使用します。 |
| Diffuse | float3/4 (dx11Shader) vec3/4 (glslShader) | カラー パラメータ: のカラー チューザ ウィジェットを使用します。 |
| TranspDepthTexture | texture | 深度ピーリングおよびウェイト付けした平均値透明度アルゴリズムに使用されるテクスチャです。 |
| OpaqueDepthTexture | texture | 深度ピーリングおよびウェイト付けした平均値透明度アルゴリズムに使用されるテクスチャです。 |
ライト固有のセマンティック
MUniformParameter クラスが現在サポートしているすべてのセマンティックに加えて、dx11ShaderNode および GLSLShaderNode は、シェーダ パラメータにシーン ライトのプロパティをバインドする追加ライト固有のセマンティックを追加します。ライトが Maya で駆動されると、描画コンテキストからのライト情報を使用して、サポートされるすべてのパラメータの値が書き込まれます。サポートされないパラメータは、シェーダで検出された値のままになります。つまり、ポイント ライトに接続すると、位置パラメータは駆動されますが、方向パラメータは駆動されません。
| セマンティック | タイプ | Maya ライト パラメータ | 説明(Description) |
LightColor、Color、 LightDiffuseColor、Diffuse、 LightAmbientColor、Ambient、 LightSpecularColor、Specular | float3/4 (dx11Shader) vec3/4 (glslShader) | カラー(Color) | カラー パラメータ: のカラー チューザ ウィジェットを使用します。 値はライトの強度でプリマルチプライされません。 |
| LightIntensity | float | 強度 | |
| LightEnable | bool | 既定では、照らす(Illuminate) | グローバル ライト設定を含むライトの可視性に従います。true の場合、Maya ライトがアクティブになり、表示されます。 |
| LightType | int | 型 | どのライト タイプに接続されている場合でも正しく反応できる汎用ライト コードを作成できます。有効な値は、 2: スポット(Spot) 3: ポイント(Point) 4: ディレクショナル(Directional) 5: アンビエント(Ambient) 6: ボリューム(Volume) 7: エリア(Area) |
| Position | float3/4 (dx11Shader) vec3/4 (glslShader) | | ポイント ライト、スポット ライト、エリア ライト、およびボリューム ライトの位置。 エリア ライトの場合、位置はエリア ライトの中心です。 リファレンス空間を注釈で指定できます。 |
| Direction | float3/4 (dx11Shader) vec3/4 (glslShader) | | ディレクショナル ライトとスポット ライトの方向。リファレンス空間を注釈で指定できます。 |
| AreaPosition0-3 | float3/4 (dx11Shader) vec3/4 (glslShader) | | エリア ライトの 4 つのコーナーの位置です。 |
| Hotspot | float | 円錐角度/周縁部の角度 | スポット ライトの場合、ラジアンで表された半角。Hotspot は ConeAngle および(ConeAngle+PenumbraAngle)の最小値として計算されます。 |
LightFalloff Falloff | float | 円錐角度/周縁部の角度 | スポット ライトの場合、ラジアンで表された半角。Falloff は ConeAngle および(ConeAngle+PenumbraAngle)の最大値として計算されます。 |
| DecayRate | float | 減衰率(Decay Rate) | スポット ライト、ポイント ライト、エリア ライト、ボリューム ライトの場合、指数として表されます。 Maya は次の値を提供します。0.0: 減衰なし(No Decay) 1.0: 一次(Linear) 2.0: 二次(Quadratic) 3.0: 三次(Cubic) |
| ShadowFlag | bool | 各種 | true の場合、ライトは、サーフェスで受像することができるシャドウをキャストします。この値は、グローバルなシャドウ(Shadows)が有効になっていて、ライトの深度マップ シャドウの使用(Use Depth Map Shadows)がオンで、かつサーフェスのシャドウの受像(Receive Shadows)がオンの場合にのみ true になります。 |
| ShadowColor | float3/4 (dx11Shader) vec3/4 (glslShader) | シャドウ カラー(Shadow Color) | カラー パラメータ: のカラー チューザ ウィジェットを使用します。 |
| ShadowMap | Texture2D | | Maya で計算された深度マップ シャドウ テクスチャが含まれます。 |
| ShadowMapBias | float | dmapBias | |
ShadowMapMatrix ShadowMapXForm | float4x4 (dx11Shader) mat4 (glslShader) | | ライトの変換行列を表示します。 |
頂点ストリーム用の可変アトリビュート
| セマンティック | 型 | 修正される問題 |
| POSITION | float3/4 (dx11Shader) vec3/4 (glslShader) | 位置を含む頂点バッファにこのアトリビュートをバインドするよう Maya に命令します。 |
| NORMAL | float3/4 (dx11Shader) vec3/4 (glslShader) | 法線頂点バッファにこのアトリビュートをバインドするよう Maya に命令します。 |
| TANGENT | float3/4 (dx11Shader) vec3/4 (glslShader) | 接線頂点バッファにこのアトリビュートをバインドするよう Maya に命令します。 |
| BINORMAL | float3/4 (dx11Shader) vec3/4 (glslShader) | 従法線(または複接線)頂点バッファにこのアトリビュートをバインドするよう Maya に命令します。 |
| COLOR0 | float3/4 (dx11Shader) vec3/4 (glslShader) | カラー セット頂点バッファにこのアトリビュートをバインドするよう Maya に命令します。 注:glslShader の場合のみ: 現在、ストリームは 1 つだけ使用できます。 OGSFX は COLOR0 セマンティックによって定義される 1 つのカラー ストリームだけに制限されていますが、TEXCOORDx セマンティックを使用して複数のカラー ストリームを定義することはできます。 vec3 または vec4 タイプである TEXCOORDx セマンティックを使用するアトリビュートは、シェーダにカラー ストリームを伝達するために使用することができ、vec2 タイプである TEXCOORDx セマンティックを使用するアトリビュートは、UV 座標ストリームを伝達するために使用することができます。 |
| TEXCOORD0-7 | float3/4 (dx11Shader) vec 2 または vec3/4 (glslShader) | UV セット頂点バッファにこのアトリビュートをバインドするよう Maya に命令します。 現在、8 ストリームを使用できます。 注:glslShader の場合のみ: OGSFX は COLOR0 セマンティックによって定義される 1 つのカラー ストリームだけに制限されていますが、TEXCOORDx セマンティックを使用して複数のカラー ストリームを定義することはできます。 vec3 または vec4 タイプである TEXCOORDx セマンティックを使用するアトリビュートは、シェーダにカラー ストリームを伝達するために使用することができ、vec2 タイプである TEXCOORDx セマンティックを使用するアトリビュートは、UV 座標ストリームを伝達するために使用することができます。 |
ハードウェア フォグ固有のセマンティック
注: 現在、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 マップ レベルを指定するには、テクニックの定義を使用してこの注釈を使用します。有効な値は次のとおりです。 テクスチャ メモリを削減するには、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 が適用されるジオメトリに対して機能が無効になります。 この注釈は、テクニックによりディスプレイスメントが描画され、そのディスプレイスメントの計算でオブジェクトのオブジェクト空間座標を使用する場合(ワールド変換行列を使用する場合など)に便利です。を使用すると、複数のオブジェクトの頂点が新しい共有オブジェクト空間に移動されます。そのため、プラグイン シェーダのレンダリングが正常に実行されないことがあります。この場合、を無効にすることができます。 |
サポートされるパス注釈
エフェクトでは、シャドウの深度マップを描画する場合など、テクニックのパスの一部を特殊なコンテキストでアクティブにすることを要求できます。これは、パスをアクティブにできるコンテキストを指定する、「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 | 現在のレンダリング プロセスがスウォッチの描画に使用されるタイミングを指定します。 ユーザは、スウォッチを描画するときに特定のパスを処理できます。 |