I have done some engine work before, but mostly stemming from rewriting the shader code for NetImmerse in order to force the engine to operate on graphics processors it was never meant to operate on... And built a few rudimentary engines in Objective C. - I am far from an expert on this topic, I lean towards hardware and hardware development... But doing that stuff lets me see what the hardware can do.
I am a hardware enthusiast first and foremost.
Unity is a very powerful engine... But we need to put things into perspective.
A game engine is *not* a single entity, it is a collection of "pieces" to form an entire cohesive puzzle... Just like a car engine requires multiple components to function... A game Engine has a render, scripting, physics, audio and so much more.
For example Gamebryo will use a 3rd party "middleware" known as "Speed Tree" in order to handle the rendering of Tree's, it's just another component of the engine that lent itself to some very impressive tree-management back in 2005 that set the graphics benchmark.
Unity's strength is in it's development pipeline and platform accessibility and how big the development community is... And of course. Price. - Which has meant it's very ideally suited to indie developers as it's very easy to pick up and get started and make an "okay" game on your very first attempt... For cheap and very quickly, downside is... It gets tarnished with a certain kind of brush and asset flippers love it.
Unity also prefers C# rather than C++ like Unreal Engine, C# is a managed language so things like memory management tends to be automatic, so for someone like myself, I would feel more at home with Unity than Unreal Engine... So basically what your background experience/training/capabilities are may influence your engine of choice, that's not a bad thing, you are choosing something that augments your capabilities rather than works against it.
It is no secret though that Unity tends to be a step behind Unreal, CryEngine, idTech, Frostbite in terms of features... But they have come a long way and you can do some damn ground breaking stuff with the engine... I.E. Ray Tracing is a thing and Unity is starting to embrace it.
But really, the results and presentation of a game comes down to in large part... The developer and the platform it is running on.
Unity is very much a jack-of-trades game engine which is designed to scale to every single platform in existence rather than trying to get every single last possible processing cycle and byte of Ram out of a console, that's not a bad thing... And Unity can certainly be a graphics spectical, it's just generally not the development focus of developers who use it.