Scopes

MGL distinguish two types of scopes:

  • Serial
  • Parallel

Serial scope

Statements with host variables or input-output operations are performed in serial scope. This type of expressions are handled in a single thread:

int i = inInt[0];
vector v = inVector[0];
outVector[0] = v;

Parallel scope

While performing operations on a point set, interpreter enters into a parallel scope. Statements that involve a point field are executed simultaneously, one thread per point instance:

vert p = inMesh[0]; // Serial scope
p.position.x += 1; // Parallel scope
if(p.position.x < 0) // Parallel scope
{
    p.position.y += 1;
}
outMesh[0] = p; // Serial scope

Because per-particle operations are executed simultaneously, it is forbidden to make an assignments from parallel scope to host variables.

Previous: Default variables and point fields | Language reference | Next: Built-in functions