add other shader support in PrepareProgram