     vec4 otherCell = validUv(gridUv) ? texture2D(cellGridTexture, gridUv) : createInvalidCell();
 
     if (!cellIsValid(otherCell)) {
-        // Other is invalid - offset must have been off the grid.
+        // Other is invalid. This probably means that `offset` is off the grid.
         return self;
     }
 

}

export void fGameOfLife() {
    vec2 gridUv = gridPositionToUv(gl_FragCoord.xy, cellGridSize);
    vec4 object = validUv(gridUv) ? texture2D(cellGridTexture, gridUv) : createInvalidCell();

    gl_FragColor = object;

    if (!cellIsSeed(object)) {
        object = getCellForOffset(object, vec2(0, stepSize));
        object = getCellForOffset(object, vec2(stepSize, stepSize));
        object = getCellForOffset(object, vec2(stepSize, 0));
        object = getCellForOffset(object, vec2(stepSize, -1 * stepSize));
        object = getCellForOffset(object, vec2(0, -1 * stepSize));
        object = getCellForOffset(object, vec2(-1 * stepSize, -1 * stepSize));
        object = getCellForOffset(object, vec2(-1 * stepSize, 0));
        object = getCellForOffset(object, vec2(-1 * stepSize, stepSize));
        gl_FragColor = object;
    }
}

// Fragment shader for drawing the result of the Jump Flood algorithm

    return vec4(-1.0, -1.0, -1.0, -1.0);
}

int cellSeedIndex(const vec4 obj) {
    return int(obj[1]);
}
