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