Non-nil means that we have obtained TShaderProgramCache instance, with valid Hash and ShaderProgram. Note that ShaderProgram may still be Nil, if it failed to link.
Separate values for each rendering pass, since different rendering passes probably have different BaseLights and so will require different shaders. This makes multi-pass rendering, like for shadow volumes, play nicely with shaders. Otherwise we could recreate shaders at each rendering pass.