カスタム ICENode の処理

 
 
 

ICENode は、一般には関数として機能します。たとえば、入力データを読み取り、新しい値を計算し、入力データをフィルタし、最後に評価対象の出力ポートを設定するというような処理が行われます。 ICENodes は複数のフェーズ、つまり BeginEvaluateEvaluate、および EndEvaluate で処理されます。Evaluateフェーズは、ICENode アルゴリズムが一括で実装され、入力ポートデータがアクセスされる関数です。

Softimage は、現在のグラフ設定に応じて、カスタム ICENode に送信して評価するパケットのサイズと数を決定します。この処理は、Evaluate コールバックによってパケットが並列処理されるマルチスレッド コンテキストで行われます。たとえば、カスタム ICENode が接続されたサブグラフ部分が、4 個の CPU が搭載されたコンピュータで 3,800 個の頂点がある出力メッシュ ジオメトリのコンテキストにおいて評価さるというケースを考えてみます。 パケット サイズは Softimage によって決定されます(たとえば、500 個の頂点など)。このサイズは、評価時に以下のように使用されます。

最初の CPU が処理を終えると、次に使用可能なバッチを取得します。 たとえば、以下のようになります。

これらの各パケット(またはサブセット)は、個別にグラフを通過します。 ICENode は多数の CPU を同時に評価する可能性がありますが、同じサブセットが同じ ICENode に 2 度処理されることはありません。