次に、スクリプト フラグメント xml ファイルに含めることができるコマンドのリストを示します。スクリプト フラグメントの詳細については、「ビューポートにレンダリングするフラグメントおよびフラグメント グラフを記述する」を参照してください。
指定したサイズおよび形式のキャッシュからレンダー ターゲットを取得して、ローカル変数に追加します。これは MRenderTarget の取得と似ています。
XML 構文:
<acquireTarget name="beauty" format="EFORMAT_R32G32B32A32_FLOAT" size="@finalDesc.Size" relSize="1.0,1.0" msaa="@finalDesc.NumMSAASamples" />
アトリビュート
format – ターゲットを作成するときに使用するラスタ形式の名前。ターゲットのチャネル数、およびチャネルのサイズと順序を指定します。
使用可能な値については、MHWRender::MRasterFormat を参照してください。たとえば、EFORMAT_<format> は k<format> に対応します。
format パラメータには @ 表記を使用できます。@ 表記は、@ で参照されているフラグメントのパラメータから値を取得します。たとえば、format="@final” は、現在のフラグメントで「final」パラメータを探し、「final」がテクスチャまたはターゲット パラメータであることを確認してから、新しいターゲットの形式を「final」内のテクスチャまたはターゲットと同じになるように設定します。format は必須のアトリビュートです。
size – 整数のカンマ区切りリスト(「16,16」など)として表された、作成するターゲットのサイズです。使用できるサイズはハードウェアによって異なります。size パラメータでは、format パラメータと同様に @ 表記を使用できます。@ 表記は、@ で参照されているフラグメントのパラメータから値を取得します。たとえば、size ="@final” は現在のフラグメントで「final」パラメータを探し、「final」がテクスチャまたはターゲット パラメータであることを確認してから、新しいターゲットのサイズを「final」内のテクスチャまたはターゲットと同じになるように設定します。size は必須のアトリビュートです。
指定のターゲットをデバイス上の指定のターゲット スロットに設定します。ターゲットは、setTarget で使用する前に、取得しておくか、パラメータで指定しておく必要があります。
XML 構文:
<setTarget index="0" value="beauty" />
アトリビュート
index - 設定するターゲットのインデックス。4 つのターゲット(「0」~「3」)を同時に使用できます。index は必須のアトリビュートで、0 ~ 3 の整数を指定する必要があります。
value - デバイスに設定するターゲットの名前。このターゲットはローカル キャッシュ内にあるか、参照パラメータで指定する必要があります。value パラメータには @ 表記を使用できます。@ 表記は、@ で参照されているフラグメントのパラメータから値を取得します。たとえば、value ="@final” は現在のフラグメントで「final」パーメータを探し、「final」がターゲット パラメータであることを確認してから、「final」に格納されているターゲットを、指定のインデックスのデバイスのターゲットに設定します。value は必須のアトリビュートです。空の文字列 “” は Null として処理され、ターゲットの参照が解除されます。これは、ReleaseTargets を正しく機能させるために行われます。
指定のターゲットをデバイスの深度ステンシル バッファに設定します。ターゲットは、setDepthStencil で使用する前に、取得しておくか、パラメータで指定しておく必要があります。
XML 構文:
<setDepthStencil value="myDepthStencil" />
アトリビュート:
value - デバイスの深度ステンシル バッファに設定するターゲットの名前。このターゲットはローカル キャッシュ内にあるか、参照パラメータで指定する必要があります。さらに、深度形式で作成されている必要があります。value パラメータには @ 表記を使用できます。@ 表記は、@ で参照されているフラグメントのパラメータから値を取得します。たとえば、value ="@depthIn” は現在のフラグメントで「depthIn」パラメータを探し、「depthIn」が深度ターゲット パラメータであることを確認してから、「depthIn」に格納されているターゲットをデバイスに設定します。value は必須のアトリビュートです。空の文字列 “” は Null として処理されます。
このコマンドは、ローカル キャッシュ内の 1 つまたは複数のターゲットをターゲット キャッシュにリリースし、関連付けられたパラメータをローカル キャッシュから削除します。
XML 構文:
<releaseTargets value="beauty,temp0" />
アトリビュート:
value - リリースするターゲットのカンマ区切りリスト。空の文字列 ”” を使用すると、「すべてのターゲット」を指定しているのと同じ意味になります。また、ワイルドカード演算子「*」を使用すると、残りの文字列の照合が行われます。たとえば、エフェクトが「tone0」~「tone10」のターゲットを取得している場合、value="tone*" により、これらのターゲットを一括してリリースできます。
このコマンドは、カラー バッファ、深度バッファ、ステンシル バッファの組み合わせをクリアして、指定値に設定します。
XML 構文:
<clear color="0,0,0,0" depth="1.0" stencil="0" />
アトリビュート:
color - クリア カラーを表す float 値のカンマ区切りリスト(0.63,0.32,0.77,0.0 など)。color はオプションのアトリビュートです。指定しない場合、または空の文字列 ”” を設定した場合、「カラー コンポーネントをクリアしない」という意味になります。使用できるのは float4 RGBA カラーのみです。
depth - 深度カラー値を表す単一の float 値(「1.00」など)。depth はオプションのアトリビュートです。指定しない場合、または空の文字列 ”” を設定した場合は、「z コンポーネントをクリアしない」という意味になります。
stencil - ステンシル バッファのクリア値を表す単一の整数値(「128」など)。最も一般的な形式の D24S8 で作成されたステンシル バッファの場合、使用できる値は 0 ~ 255 です。stencil はオプションのアトリビュートです。指定しない場合、または空の文字列 ”” を設定した場合は、「ステンシル コンポーネントをクリアしない」という意味になります。
このコマンドは、現在の描画カメラを指定値に設定します。
XML 構文:
<setCamera value="camera0" index="0" />
アトリビュート:
このコマンドは、現在のビューポートを指定の描画領域に設定します。四角ポリゴン描画およびクリアを含むすべての描画はアクティブなビューポートに制限されます。
XML 構文:
<setViewport value="0.0,0.0, 0.5,0.5" />
アトリビュート:
このコマンドは、現在のはさみ長方形を指定の領域に設定します。はさみ長方形が有効になるようにレンダー状態が設定されていない場合は、このコマンドは無効です。はさみ長方形が有効な場合、四角ポリゴン描画を含む描画は、はさみ長方形に制限されます。
XML 構文:
<setScissorRect value="0.0,0.0, 0.5,0.5" />
アトリビュート:
このコマンドはオーバーライド エフェクトを指定の値に設定します。四角ポリゴン描画を含むすべての描画は、リセットされない限り、オーバーライド エフェクトを使用します。
エフェクトは 1 回のみ設定して、何度でも再利用することができます。
XML 構文:
<setEffect name="DownSampleEffect" path="downSample" technique="Main" macrolist="" />
アトリビュート:
path – エフェクト ファイルのパス。オプションです。この値が空でない場合は、ファイルと一緒にエフェクトが作成されます。指定したエフェクト名が既に別のエフェクトで使用されている場合、このエフェクトはリリースされます。この値が空の場合、指定したエフェクト名を持つエフェクトが再利用されます。エフェクトが存在しない場合、このコマンドは失敗します。
ファイル拡張子を指定する必要はありません。Maya では、使用されているデバイスに基づいて適切な拡張子が検索されます(DX11 の場合は .fx、コア プロファイルの場合は .ogsfx、コア プロファイル以外の OpenGL の場合は .cgfx)。
値を空の文字列 "" に設定すると、オーバーライド エフェクトは終了します。
macrolist – マクロ名および定義のカンマ区切り文字列。オプションです。「SHADOWPARAM, 0.1, SHADOWCOLOR, 0x2310, …」のように、マクロ名の後に各定義が続きます。空の定義を指定するには、「PERSPECTIVE_ENABLED,,…」のように 2 つのカンマを使用します。エフェクト パスが空の場合、このパラメータは無視されます。
このコマンドは、現在のエフェクトのパラメータ値を指定の値に設定します。これ以降にこのエフェクトを使用する場合は、常にこの値が使用されます。
XML 構文:
<setEffectParameter effect="downSample" name="scale" value="0.0,1.0" />
アトリビュート:
name – エフェクトに設定するパラメータの名前。name は必須のアトリビュートです。
このコマンドは、デバイスの指定のテクスチャ スロットの値を、指定のサンプラの状態およびテクスチャに設定します。
XML 構文:
<SetTexture effect="Main" name="gDistanceTex" value="PointClamp" texture="@DistanceMap" />
アトリビュート:
texture – スロット/パラメータに設定するテクスチャの名前。現在キャッシュまたはファクトリ内に存在している状態のみ使用できます。 texture パラメータには @ 表記を使用できます。@ 表記は、@ で参照されているフラグメントのパラメータから実際の値を取得します。たとえば、texture ="@textureIn” は現在のフラグメントで「textureIn」パラメータを探し、「textureIn」がテクスチャ パラメータであることを確認してから、このテクスチャがアクティブになったときに使用する textureIn の値を設定します。
このコマンドは、指定の状態ブロックをデバイスに設定します。完全デバイス状態を設定できます(“RenderState”)。または、3 つのコンポーネント(ブレンド状態、ラスタライズ状態、および深度ステンシル状態)を個別に設定することもできます。
XML 構文:
<setState name="DepthStencilState" value="myDepthStencilState" />
このコマンドは、指定したレンダラのパラメータを設定します。パラメータで、補助ワールドを格納したり、特定の項目フラグが設定された全オブジェクトを使用できるようにオブジェクト フィルタを指定したりできます。たとえば、“visible” や “castsShadow” などです。
XML 構文:
<setRenderParameter renderer="opaqueRend" name="filter" value="visible" />
アトリビュート:
このコマンドは、指定したタイプの新しいパラメータを宣言して、ローカル キャッシュに追加します。必要に応じて、パラメータの値を指定値に設定します。これ以降、パラメータの設定には setParameter コマンドを使用します。
XML 構文:
<declare name="light0Shadow" type="target" value="shadowBuf0" />
アトリビュート:
このコマンドは、指定したパラメータを指定値(または別のパラメータ)に設定します。
XML 構文:
<setParameter name="@output" value="1.0,0.25" />
アトリビュート:
このコマンドは、指定したパラメータが NULL または false であるかをテストし、NULL または false の場合は、「else」または「endIf」に達するまですべてのステートメントをスキップします。ステートメントはネストできます。
XML 構文:
<if value="@depthStencil" />
アトリビュート
このコマンドは、指定したパラメータが NULL または false であるかをテストし、NULL または false の場合は、else または endIf に達するまですべてのステートメントを実行します。true または NULL でない場合は、else または endif に達するまでステートメントは実行されません。ステートメントはネストできます。
XML 構文:
<ifNot value="@depthStencil" />
アトリビュート
このコマンドは main セクションを終了し、if または ifNot コマンドの else セクションを開始します。また、if または ifNot で生成されたステートメントの包含状態を反転します。if ステートメントが true と評価された場合は、endIf または else に達するまでステートメントが実行されます。else に達した場合は、endIf に達するまで後続のステートメントは実行されません。条件ステートメントはネストできます。if / endIf ペアの間、または ifNot / endIf ペアの間に含める必要があります。
XML 構文:
<else/>
アトリビュート
このコマンドは if または ifNot コマンドを終了し、標準の無条件の処理を復元します。endIf の後のすべてのステートメントは、通常どおり実行されます。条件ステートメントはネストできます。このコマンドは if コマンドと 1 対 1 で対応し、一致する if コマンドの後に指定する必要があります。
XML 構文:
<endIf/>
アトリビュート
このコマンドはユーザが指定したコールバック オブジェクトを呼び出します。コールバック オブジェクトがローカル キャッシュ内にない場合は、作成されて、ローカル パラメータに追加されてから呼び出されます。コールバックは 2 つの引数を取ります。
XML 構文:
<call name="myCallback " arg0="doThisThing" arg1="0.125" />
アトリビュート
このコマンドは、value アトリビュートで指定されたリスト内のすべてのオブジェクトをレンダリングします。有効値には、描画する不透明オブジェクトのリストである "opaqueList"、および単一のフルスクリーン クアッドを描画する “quad” などがあります。Render ではターゲット、カメラ、状態、オーバーライド エフェクト、またはその他のレンダリング関連の値は設定されません。インタプリタで現在設定されている状態を持つジオメトリが描画されるだけです。四角ポリゴン描画とシーン描画はいずれもビューポートの領域に制限されます。
XML 構文:
<render name="@opaqueList" />
アトリビュート:
このコマンドは状態セッタ クラスを使用して、仮想デバイスのレンダー状態またはサンプラ状態を管理します。また、状態変更の設定、状態変更のコミット、および古い状態の復元も行います。
XML 構文:
<SetStateCommand commandName="SetStateParameter" name="localStateSetter_fsShadow" parameter="SetBlendEnable" value="true" index="0" />
commandName - コマンドの名前を示す文字列。必須です。
現在使用できるのは、「SetStateParameter」、「SetRenderState」、「CommitNewState」、および「RestorePreviousState」の 4 つのコマンド タイプのみです。