The vtkDataSetSurfaceFilter may delegate its processing to an internal vtkGeometryFilter which has been parallelized and now may be much faster. The delegation is switched off by default though, because according to the vtkDataSetSurfaceFilter::SetDelegation method ’ the two filters produce slightly different output’. Could you clarify under what circumstances or for what inputs the filters produce different output, and how the outputs are different?

Thanks a lot!

From what I remember, the differences were due to 1) different ways boundary surfaces are extracted from structured datasets, and 2) vtkGeometryFilter does not handle all types of higher-order cells (i.e., the triangulation process). These could be changed with some work: one of the hardest aspects of working with these filters is that they are used so heavily that backward compatibility (including passing the VTK test suite) is a big hurdle to overcome.

I see. The phrase ‘slightly different results’ had me worried that I could expect topological differences when processing unstructured grid, but I don’t think that’s the case, right? When the input contains non-linear cells, vtkDataSetSurfaceFilter bypasses the delegation and processes the entire input in its own implementation which is slower but correct. That seems reasonable to me, although I would expect that for the non-linear sub-division level == 1 case the triangulation is straightforward for all cell types (except polyhedron/polygon?) so this situation could probably be addressed separately and more efficiently?

I agree with your assessment.