I wanted to write small software renderer that will follow almost the same flow as OpenGL does, but got stuck with understanding of the rendering pipeline. After reading tons of info across the Internet I came to conclusion that the rendering pipeline is part of hardware. What OpenGL does it just delivers data from the app to video memory and tells when pipeline must be executed.
But then I came across the info about rendering pipeline in Unity3D. After that I got confused. If pipeline is "fixed" by hardware then how Unity3D can have it's own rendering pipeline? Is it somehow another layer of abstraction that utilizes the same terminology at app/engine level which means preparing all the resources for hardware pipeline execution? Or the pipeline is orchestrated by OpenGL itself, but the computation is done on the GPU? Or Unity3D uses Vulkan that provides such capability which explains why it's like that? Or maybe I misunderstood the whole concept incorrectly?