シェーディング ノードの SuperSampling
 
 
 

前に説明したように、現在のサンプル位置に関する特定のレンダリング情報は、レンダリング処理中に提供される定義済みアトリビュートで要求できます。レンダリング固有のアトリビュートとその名前については、「付録 C: レンダリング アトリビュート」を参照してください。しかし、仮定上の位置を記述してシェーディング ネットワーク評価を行い、この仮定上の位置をサンプリングする方が適していることがあります。この技法の応用が、バンプ マッピングやフィルタリング(アンチエイリアシング)です。

シェーディング ノードでは、MFnAttribute::setRenderSource を API でコールし、「レンダー ソース」としてアトリビュートをマークできます。シェーディング ノードで 1 つのアトリビュートの値が設定されると、データ ブロックからデータを要求するためのその後のコールでは、シェーディング ネットワークの再評価が強制されます。

開発キットには、shiftNode.cpp というサンプル プラグインが含まれています。このサンプル プラグインでは、テクスチャ プラグイン内から uvCoord と refPointCamera が修正されます。uvCoord と refPointCamera は「renderSource」アトリビュートとしてマークされています。現在のサンプル位置の uvCoord と refPointCamera が要求され、その後 4 回シフトされます。このアトリビュートを修正するたびに inColor アトリビュートが要求され、アトリビュートがレンダー ソースであるため、inColor が要求されるとシェーディング評価が強制されます。このため inColor にコネクトされた 2D テクスチャまたは 3D テクスチャは、シェードされるすべてのポイントでさらに 4 回評価されます。inColor 値は平均化され、結果はぼやけます。