Added shader implementation.

Also swapped set GPU state location function to make things more
logical.