uniform uint dimension; // fixed at 512
void main()
{
bool continueLoop = true;
do
{
ivec3 data = // compute data, range of [0...512]
// variant 1:
continueLoop = data.x < dimension && data.y < dimension && data.z < dimension;
// variant 2:
continueLoop = data.x - dimension < 0 && data.y - dimension < 0 && data.z - dimension < 0;
// variant 3:
continueLoop = data.x - dimension + 1 <= 0 && data.y - dimension + 1 <= 0 && data.z - dimension + 1 <= 0;
// variant 4:
continueLoop = all(lessThanEqual(data - ivec3(dimension), ivec(0)));
}
while(continueLoop);
}