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

ビューポート 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 シーン ライトに簡単に接続することができます。

例:

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 レベルの数をコントロールすることができます。

テクスチャ説明でこの注釈を使用します。有効な値は次のとおりです。

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

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

テクスチャ メモリを削減するには、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)

カラー パラメータ: アトリビュート エディタ(Attribute Editor)のカラー チューザ ウィジェットを使用します。
Ambient

float3/4 (dx11Shader)

vec3/4 (glslShader)

カラー パラメータ: アトリビュート エディタ(Attribute Editor)のカラー チューザ ウィジェットを使用します。
Specular

float3/4 (dx11Shader)

vec3/4 (glslShader)

カラー パラメータ: アトリビュート エディタ(Attribute Editor)のカラー チューザ ウィジェットを使用します。
Diffuse

float3/4 (dx11Shader)

vec3/4 (glslShader)

カラー パラメータ: アトリビュート エディタ(Attribute Editor)のカラー チューザ ウィジェットを使用します。
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)

カラー パラメータ: アトリビュート エディタ(Attribute Editor)のカラー チューザ ウィジェットを使用します。

値はライトの強度でプリマルチプライされません。

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) カラー パラメータ: アトリビュート エディタ(Attribute Editor)のカラー チューザ ウィジェットを使用します。
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 に続きがあります。