Custom ICENode Processing

 
 
 

An ICENode typically acts as a function by reading the input data, computing new values, filtering out the input data, and ultimately setting the output port being evaluated. ICENodes are processed in several phases: BeginEvaluate, Evaluate and EndEvaluate. The Evaluate phase is the function where the bulk of the ICENode algorithm is implemented and the input port data accessed.

Depending of the current graph configuration, Softimage will determine the size and the number of packets to send to the custom ICENode for evaluation. This is done in a multi-thread context where packets are processed in parallel by the Evaluate callback. For instance, suppose the portion of a sub-graph, on which a custom ICENode is connected, is evaluated in the context of an output mesh geometry of 3800 vertices on a 4 CPU machine. The packet size will be determined by Softimage, for example, to 500 vertices and will be used during the evaluation as follows:

As soon as the first CPU finishes, it will get the next available batch. A possible scenario could be:

Each of these packets (or subsets) will go through the graph independently. A ICENode might be evaluating for many CPUs at the same time, but the same subset should not go through the same ICENode twice.