use struct member population for shapes.
Remove DEVICE_OUT and DEVICE_OUT_ARRAY, refactor
ViewCullingData to allow full struct copy to avoid any additional
overhead from removing device pointer modification, as device
data now copied into local variable for modification, before writing
back to device memory.
Shader source requires explicit conversions and shader address
space qualifers in certain places in order to compile for Metal.
We also require constructors for a number of default struct types.
Authored by Apple: Michael Parkin-White
Ref #96261