This is a pretty open question, covering 5+ years of development from many people and teams. I’ll give you a high level overview of my own perspective. It’s going to be incomplete, so I linked all the releases announcements/release notes made since 4.24 so that you can review the most complete information you can probably get. You will have follow up questions, I’m sure, the ideal would be to open new ticket and reduce the scope of your questions so that we can assign the questions to the corresponding expert. For example, you could ask what were the top 10 RHI changes made over the course of UE5. Something like that, then open new tickets if you want to drill some of those points, etc. Here my very high level take on your questions:
The main reasons for these changes:
The changes are made to introduce new features (Lumen/Nanite/VSM/Chaos/MegaLights/Substrate/OpenWorld/ProceduralContent/etc.) and this cascades into changes to the UE architecture (RHI parallelization/Task system/etc.) for scalability, usability, stability, etc. Those features are meant to keep Unreal Engine competitive on the engine market and to support innovations in Fortnite ecosystem.
I’m not a rendering specialist, I cannot list exactly the reasons for the RHI/RDG changes, but in general the changes were made to support the new rendering features, take advantages of modern graphics API (DirectX 12, Vulkan, Metal, OpenGLES, …) and use modern GPU features (RayTracing, DLSS). In 5.4, the RHI was parallelized to improve scalability as well.
The task system was modified to fix all kind of issues. Deadlocks, core underutilization, latency, task dependencies, bug fixes. A lot of efforts in UE5 were made to offload the main thread and the render thread and to utilize all the cores. So the task system had to scale to handle the load. This is an ongoing challenge.
Their impact on performance and compatibility
The changes usually introduce performance/compatibility/stability issues. When we introduce a new features, we get it into a workable/shippable state and we ship it, typically in Fortnite. After than, we go back and fix architectural issues, performance issue, bugs, etc. The performance impact for RHI/Task/RDG system changes, I don’t know, they are never used alone, but if you check the various demo we made over the time (Valley of the Ancients, CitySample, ElectricDream, TheWitcher) and all the content in Fortnite, you can presume those core systems are doing ok. Compatibility wise… it depends what you mean by compatibility. Device/platforms compatibility? or do you means compatible with old engine?
How they support new rendering features like Lumen, Nanite, and VSM
I don’t know precisely, but RHI/RDG/Task are kind of core to the engine. They are probably essential part to get Lumen/Nanite/VSM working.
I will open a new ticket later to inquire about more detailed issues. For now, I would like to ask some high-level questions:
We tried to check the release notes for versions 4.25 and 4.26, but the official website and the links you provided do not open these two pages. Could you please provide the corresponding update notes?
Regarding the underlying modifications to RHI, RDG, are there any performance comparison data available?
If we attempt to port or implement UE5’s new rendering features (such as Lumen, Nanite, and VSM) based on UE4’s underlying RHI, RDG, what potential risks might we encounter aside from performance?
Q: We tried to check the release notes for versions 4.25 and 4.26, but the official website and the links you provided do not open these two pages. Could you please provide the corresponding update notes?
The old release notes (4.24, 4.25 and 4.26) were not migrated by the doc team when the documentation site was updated because they didn’t expect they would be needed anymore, but they were able to export the old ones in PDF. I’m still missing the 4.26 but I should have them by tomorrow.
Q: Regarding the underlying modifications to RHI, RDG, are there any performance comparison data available?
No, we don’t have such data readily available. Epic has rolling performance data to ensure the Engine doesn’t regress over time, but we don’t keep ‘feature’ specific perf data around. Typically, devs will implement a feature, benchmark it, if there is a regression, they will either assume it moving forward or fix it. Sometime, we have a before/after stats, but this is not something frequent unless we get significant gain.
Q: If we attempt to port or implement UE5’s new rendering features (such as Lumen, Nanite, and VSM) based on UE4’s underlying RHI, RDG, what potential risks might we encounter aside from performance?
I don’t have a good answer to that. That’s one of the question you can ask in a separated ticket for the rendering team but I suspect you will have to start pulling few changes that will pull other changes, and it will cascade into pulling several related changes. Resolving all of that into something that works will probably be challenging. You could get a very high level view by comparing the 5.6 rendering code with the 4.24 code and see how much it changed.