Sh allows GPUs to be programmed directly in C++, as a natural extension of the language. Sh backends include support for the ARB fragment and vertex programming extensions as well as the OpenGL Shading Language. The new v 0.7.8 adds better backend infrastructure that allows much more flexibility, for example running parts of a GPU application on the host CPU and parts on the GPU at the same time.