Optimize the performance of unstructured grids
This branch supports and optimizes unstructured grid volume rendering
Our requirement is to support high performance unstructured grid volume rendering.First, we modified MapperVolume and VolumeRendererStructured to support unstructured grid rendering. The test code is modified based on the original demo.cxx, and test.vtk file is added to test the volume rendering of unstructured grid. We found that the GPU test performance was poor, and the sampler kernel took 43ms. Through the nsight system, we found that the sampler kernel had 329121792 bytes of local memory. The problem lies in CellLocatorTwoLevel. In order to be compatible with multiple data types, CoordinateSystem uses MultiplexerArrayType, which makes the code branch of CellLocatorTwoLevel call complex. A lot of local memory is generated on the GPU. Therefore, we propose a modification method to identify the data type of CoordinateSystem in advance and pass the data type to CellLocatorTwoLevel as a template parameter. After modification, the sampler kernel time is reduced to 1ms. local memory reduced to 152174592 bytes. Therefore, the optimization method is submitted for your reference in the hope that it will be helpful for unstructured grids.