typedef image(dimensions=2[], shadow, sampled) float sampler2DArrayShadow;
typedef image(dimensions=cube, shadow, sampled) float samplerCubeShadow;
typedef image(dimensions=cube[], shadow, sampled) float samplerCubeArrayShadow;
typedef image(dimensions=2[], shadow, sampled) float sampler2DArrayShadow;
typedef image(dimensions=cube, shadow, sampled) float samplerCubeShadow;
typedef image(dimensions=cube[], shadow, sampled) float samplerCubeArrayShadow;