AW: Star Wars Jedi Fallen Order im Techniktest: Welche CPU und GPU sind für die Singleplayer-Perle nötig?
Besonders gut ist die Performance der UE4 ja leider nie, aber es wird echt Zeit, dass diese DX11 Steinzeit-API endlich verschwindet. In 1080p limitiert hier die schnellste Spiele-CPU schon bei den Mittelklasse-GPUs, das ist einfach nicht mehr zeitgemäß.
Das liegt weniger an D3D11 als vielmehr daran, dass die Engine intern eine extrem ineffiziente API-Abstraktion benutzt, die hier knapp drei mal so viel CPU-Zeit frisst wie der Worker-Thread der jeweiligen D3D11-Implementierung. Fast jedes UE4-Spiel wird vom Engine-eigenen Render-Thread limitiert, und D3D12 wird daran nichts ändern, im Gegenteil, wenn man da nicht gewaltig den Renderer optimiert oder zumindest Multithreading unterstützt, wird es eher langsamer.
Gibt mit Supraland ein UE4-Spiel (zugegebenerweise auf einem etwas älteren Build der Engine), das unter Linux Vulkan und unter Windows D3D11 nutzt. Die Windows-Version läuft selbst unter Linux über Proton im CPU-Limit deutlich besser, obwohl da auch nur D3D11 nach Vulkan übersetzt wird (allerdings eben mit zusätzlichem Worker-Thread). Dazu stottert es in beiden Versionen gewaltig, weil die Engine ihre Shader immer erst dann compiliert, wenn sie erstmals benötigt werden - das ist schon mit D3D11 eine schlechte Idee, mit den neuen APIs aber eine
richtig schlechte.
Fortnite scheint laut Tests aber einigermaßen zu laufen mit D3D12, vielleicht tut sich da in Zukunft ja etwas.
Dass die Engine praktisch immer mies auf AMD läuft, dürfte wohl viele Gründe haben, einer davon ist aber sicherlich die unglaublich archaische Implementierung von Deferred Shading. Frostbite war damals wohl eine der ersten Engines (
die erste?), die Tiled Deferred Shading mit Compute-Shadern benutzt hat, um Speicherbandbreite zu sparen - und das schon zu einer Zeit, da gab es UE4 noch nicht einmal. UE4 nutzt fürs Lighting aber immer noch klassisches additives Blending wie zu DX9-Zeiten, wobei dann die Geometrie von Lichtkegeln und -Kugeln in die Szene gerendert wird. Das ist ineffizient und alles andere als zeitgemäß.
Zumal UE4-Spiele auch aus irgendwelchen Gründen immer 6-8 verschiedene Render-Targets im G-Buffer haben (selbst Octopath Traveler hat 6!), während fast alle andere Spiele mit 3-5 auskommen.