Static polymorphism is used for the renderer implementation, meaning that you can specify its type on compile time but cannot change it during run-time of your application.
That said, it is a simple and easily extendable interface for creating different types of renderers if needed. The most stable one, that is supported now is the ForwardRenderer, which is also the simplest one when it comes to 3D renderers.
Set up flow of the Renderer
Create a renderer object
auto renderer = std::make_shared<ForwardRenderer>();