The viewer currently stores data redundantly in two separate representations. Maintaining a single representation would save on memory and simplify the code. Also if a volume has as many Z slices as X and Y, then tiling all the Z slices in a big XY texture atlas loses its efficiency.
Solution
Evaluate whether we can store all volume data as 3d arrays and 3d textures rather than 2d texture atlases on gpu. (Consider whether fuse operation can work, linear filtering on 3d texture lookups, etc.
Use Case
The viewer currently stores data redundantly in two separate representations. Maintaining a single representation would save on memory and simplify the code. Also if a volume has as many Z slices as X and Y, then tiling all the Z slices in a big XY texture atlas loses its efficiency.
Solution
Evaluate whether we can store all volume data as 3d arrays and 3d textures rather than 2d texture atlases on gpu. (Consider whether fuse operation can work, linear filtering on 3d texture lookups, etc.