Make some Shader Core private members protected to facilitate extension.

Otherwise, it is basically not possible to override/extend prepare()