Using multiple shaders, basic. Needs a lot of cleanup.