Simplify ArrayHandleSwizzle
As we update the ArrayHandle
s to the new buffer style, simplify
ArrayHandleSwizzle
by implementing it on top of
ArrayHandleTransform
. Also, introduce some C++11 template concepts to
handle variable arguments better.
In this conversion, some features have been removed. Previously if the swizzle dropped some components, you were still allowed to write to the array. This would be an in place write that would only update the passed components. This feature has been removed and if any components are dropped, the array becomes read only. If all components are swizzled, then the array becomes writable (through templating).
Another lost feature is that the swizzle map is no longer checked for correctness. The array handle just assumes that the indices are correct.
It should be noted that it does not look like ArrayHandleSwizzle
is
actually used anywhere. If it is not used by any customers, we may
want to consider deprecating the class.