More complete shader class.