More work on shader generation