ビューポート 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 座標ストリームを伝達するために使用することができます。 |
このセクションのパート 2 に続きがあります。