ビューポート 2.0 では、ブレンディングを RGB チャネルとアルファ チャネルで別々に指定します。この動作は、RGB とアルファが 1 組のブレンディング パラメータを共有する既定の高品質レンダラの動作とは異なります。
プラグインを記述するとき、MHWRender::MBlendStateDesc ブレンド状態クラスを使用してブレンディングを指定します。
ソース、デスティネーション ブレンド、アルファ ブレンドを設定し、追加するブレンド操作を設定します。ブレンド係数は 1, 1, 1, 1 に設定する必要があります。
次の例は、Maya API Devkit で提供されている hwPhongShader ノードのプラグインのものです。
MHWRender::MBlendStateDesc blendStateDesc; for(int i = 0; i < (blendStateDesc.independentBlendEnable ? MHWRender::MBlendState::kMaxTargets : 1); ++i) { blendStateDesc.targetBlends[i].blendEnable = true; blendStateDesc.targetBlends[i].sourceBlend = MHWRender::MBlendState::kSourceAlpha; blendStateDesc.targetBlends[i].destinationBlend = MHWRender::MBlendState::kInvSourceAlpha; blendStateDesc.targetBlends[i].blendOperation = MHWRender::MBlendState::kAdd; blendStateDesc.targetBlends[i].alphaSourceBlend = MHWRender::MBlendState::kOne; blendStateDesc.targetBlends[i].alphaDestinationBlend = MHWRender::MBlendState::kInvSourceAlpha; blendStateDesc.targetBlends[i].alphaBlendOperation = MHWRender::MBlendState::kAdd; } blendStateDesc.blendFactor[0] = 1.0f; blendStateDesc.blendFactor[1] = 1.0f; blendStateDesc.blendFactor[2] = 1.0f; blendStateDesc.blendFactor[3] = 1.0f;
ビルトイン cgfx プラグインの例を使用して同じ状態をセット アップするには、次のパス状態を指定します。
BlendFunc = int2( SrcAlpha, OneMinusSrcAlpha); BlendFuncSeparate = int4( SrcAlpha, OneMinusSrcAlpha, One, OneMinusSrcAlpha); BlendEquationSeparate = int2( Add, Add ); BlendColor = float4(1.0f,1.0f,1.0f,1.0f);
ここで:
。
透明描画に使用する既定のブレンドは、例に示すとおり { source alpha, 1-source alpha } です。