<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.janvolkland.de/index.php?action=history&amp;feed=atom&amp;title=Paralleles_Rendering_und_RHI-Thread</id>
	<title>Paralleles Rendering und RHI-Thread - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.janvolkland.de/index.php?action=history&amp;feed=atom&amp;title=Paralleles_Rendering_und_RHI-Thread"/>
	<link rel="alternate" type="text/html" href="https://wiki.janvolkland.de/index.php?title=Paralleles_Rendering_und_RHI-Thread&amp;action=history"/>
	<updated>2026-10-11T23:08:31Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in UnrealWiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.janvolkland.de/index.php?title=Paralleles_Rendering_und_RHI-Thread&amp;diff=171&amp;oldid=prev</id>
		<title>Elaina: Elaina verschob die Seite Paralleles Rendering und RHI-Thread in Unreal Engine 5 nach Paralleles Rendering und RHI-Thread: Redundanten Titelzusatz entfernt</title>
		<link rel="alternate" type="text/html" href="https://wiki.janvolkland.de/index.php?title=Paralleles_Rendering_und_RHI-Thread&amp;diff=171&amp;oldid=prev"/>
		<updated>2026-09-06T09:37:33Z</updated>

		<summary type="html">&lt;p&gt;Elaina verschob die Seite &lt;a href=&quot;/index.php/Paralleles_Rendering_und_RHI-Thread_in_Unreal_Engine_5&quot; class=&quot;mw-redirect&quot; title=&quot;Paralleles Rendering und RHI-Thread in Unreal Engine 5&quot;&gt;Paralleles Rendering und RHI-Thread in Unreal Engine 5&lt;/a&gt; nach &lt;a href=&quot;/index.php/Paralleles_Rendering_und_RHI-Thread&quot; title=&quot;Paralleles Rendering und RHI-Thread&quot;&gt;Paralleles Rendering und RHI-Thread&lt;/a&gt;: Redundanten Titelzusatz entfernt&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 6. September 2026, 09:37 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;de&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(kein Unterschied)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key unrealwikidb:diff:1.41:old-141:rev-171 --&gt;
&lt;/table&gt;</summary>
		<author><name>Elaina</name></author>
	</entry>
	<entry>
		<id>https://wiki.janvolkland.de/index.php?title=Paralleles_Rendering_und_RHI-Thread&amp;diff=141&amp;oldid=prev</id>
		<title>Elaina: Die Seite wurde neu angelegt: „{{Hinweis|Stand: Unreal Engine 5.8. Dieser Artikel fasst die aktuelle offizielle Epic-Dokumentation zusammen.}}  &#039;&#039;&#039;Paralleles Rendering&#039;&#039;&#039; verteilt die CPU-Arbeit des Renderers auf mehrere Threads. Der &#039;&#039;&#039;RHI Thread&#039;&#039;&#039; ist dabei der Thread, der Unreal-Befehle über das &#039;&#039;Render Hardware Interface&#039;&#039; (RHI) in Aufrufe der jeweiligen Grafik-API wie DirectX 12 oder Vulkan übersetzt. Das ist CPU-Parallelität und nicht automatisch Multi-GPU-Rendering.  == Die…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.janvolkland.de/index.php?title=Paralleles_Rendering_und_RHI-Thread&amp;diff=141&amp;oldid=prev"/>
		<updated>2026-09-03T13:02:55Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „{{Hinweis|Stand: Unreal Engine 5.8. Dieser Artikel fasst die aktuelle offizielle Epic-Dokumentation zusammen.}}  &amp;#039;&amp;#039;&amp;#039;Paralleles Rendering&amp;#039;&amp;#039;&amp;#039; verteilt die CPU-Arbeit des Renderers auf mehrere Threads. Der &amp;#039;&amp;#039;&amp;#039;RHI Thread&amp;#039;&amp;#039;&amp;#039; ist dabei der Thread, der Unreal-Befehle über das &amp;#039;&amp;#039;Render Hardware Interface&amp;#039;&amp;#039; (RHI) in Aufrufe der jeweiligen Grafik-API wie DirectX 12 oder Vulkan übersetzt. Das ist CPU-Parallelität und nicht automatisch Multi-GPU-Rendering.  == Die…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Hinweis|Stand: Unreal Engine 5.8. Dieser Artikel fasst die aktuelle offizielle Epic-Dokumentation zusammen.}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Paralleles Rendering&amp;#039;&amp;#039;&amp;#039; verteilt die CPU-Arbeit des Renderers auf mehrere Threads. Der &amp;#039;&amp;#039;&amp;#039;RHI Thread&amp;#039;&amp;#039;&amp;#039; ist dabei der Thread, der Unreal-Befehle über das &amp;#039;&amp;#039;Render Hardware Interface&amp;#039;&amp;#039; (RHI) in Aufrufe der jeweiligen Grafik-API wie DirectX 12 oder Vulkan übersetzt. Das ist CPU-Parallelität und nicht automatisch Multi-GPU-Rendering.&lt;br /&gt;
&lt;br /&gt;
== Die beteiligten Stufen ==&lt;br /&gt;
&lt;br /&gt;
; Game Thread&lt;br /&gt;
: Aktualisiert Spielwelt, Actors und UObjects und übergibt Renderzustand asynchron an den Renderer.&lt;br /&gt;
; Render Thread&lt;br /&gt;
: Baut aus der Szene plattformunabhängige Renderbefehle und Command Lists auf. Eine Command List ist eine geordnete Liste von Grafikbefehlen.&lt;br /&gt;
; RHI Thread&lt;br /&gt;
: Übersetzt bzw. führt diese Listen im Backend für die konkrete Grafik-API aus.&lt;br /&gt;
; GPU&lt;br /&gt;
: Arbeitet die eingereichten Grafik- und Compute-Kommandos ab.&lt;br /&gt;
&lt;br /&gt;
Diese Stufen können an verschiedenen Frames arbeiten. Unreal bewahrt dabei die Einreichungsreihenfolge, die auch ein serieller Renderer hätte. Synchronisationspunkte und Fences sorgen dafür, dass ein Verbraucher nicht vor seinem Produzenten läuft.&lt;br /&gt;
&lt;br /&gt;
== Wo die Parallelität entsteht ==&lt;br /&gt;
&lt;br /&gt;
Der Render Thread kann Command Lists in parallelen Aufgaben vorbereiten. Auf geeigneten Plattformen kann auch das RHI-Backend mehrere Listen parallel übersetzen. Der getrennte RHI Thread verhindert, dass die Übersetzung aller API-Aufrufe den Render Thread direkt blockiert.&lt;br /&gt;
&lt;br /&gt;
Nicht jeder Vorgang passt in dieses Modell. Bestimmte Lock-/Unlock- oder Ressourcenoperationen können einen Flush erzwingen oder Daten kopieren und später einreihen. Häufige erzwungene Synchronisation nimmt den Threads den möglichen Zeitgewinn.&lt;br /&gt;
&lt;br /&gt;
== Thread-Sicherheit in eigenem Code ==&lt;br /&gt;
&lt;br /&gt;
Rendercode darf nicht einfach auf veränderliche &amp;lt;code&amp;gt;UObject&amp;lt;/code&amp;gt;- oder Actor-Daten des Game Threads zugreifen. Sonst entsteht eine &amp;#039;&amp;#039;Race Condition&amp;#039;&amp;#039;: Das Ergebnis hängt vom zufälligen zeitlichen Ablauf der Threads ab.&lt;br /&gt;
&lt;br /&gt;
Das übliche Muster ist:&lt;br /&gt;
&lt;br /&gt;
# Der Game Thread besitzt Gameplay-Daten.&lt;br /&gt;
# Benötigte Werte werden in eine renderseitige Struktur oder einen Scene Proxy kopiert.&lt;br /&gt;
# Ein Render Command übergibt diese Kopie an den Render Thread.&lt;br /&gt;
# Ressourcen werden erst freigegeben, wenn Fence oder vorgesehener Cleanup-Mechanismus ihre Nutzung abgeschlossen meldet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FlushRenderingCommands&amp;lt;/code&amp;gt; blockiert den Game Thread bis der Renderer aufgeholt hat. Das kann für seltene Editor-/Offline-Operationen sinnvoll sein, sollte aber nicht zum normalen Gameplay-Pfad werden.&lt;br /&gt;
&lt;br /&gt;
== Prüfen und eingrenzen ==&lt;br /&gt;
&lt;br /&gt;
Unreal Insights zeigt Game-, Render- und RHI-Thread getrennt in Timing Insights. Verglichen werden sollten identische, reproduzierbare Szenen und mehrere Frames.&lt;br /&gt;
&lt;br /&gt;
Nützliche Diagnosevariablen aus der Epic-Dokumentation:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;r.RHIThread.Enable 0&amp;lt;/code&amp;gt; deaktiviert den separaten RHI Thread.&lt;br /&gt;
* &amp;lt;code&amp;gt;r.RHICmdUseDeferredContexts 0&amp;lt;/code&amp;gt; deaktiviert die Backend-Parallelisierung.&lt;br /&gt;
* &amp;lt;code&amp;gt;r.RHICmdUseParallelAlgorithms 0&amp;lt;/code&amp;gt; deaktiviert die Frontend-Parallelisierung.&lt;br /&gt;
* &amp;lt;code&amp;gt;r.RHICmdBypass 1&amp;lt;/code&amp;gt; umgeht Command Lists; dies wird nur berücksichtigt, wenn der RHI Thread deaktiviert ist.&lt;br /&gt;
&lt;br /&gt;
Diese Schalter sind Diagnosewerkzeuge, keine pauschalen Performance-Tipps. Wirkung und Standard können von Plattform und RHI abhängen. Für belastbare Aussagen immer in der Zielkonfiguration messen.&lt;br /&gt;
&lt;br /&gt;
== Typische Befunde ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Render Thread voll ausgelastet, RHI Thread wartet:&amp;#039;&amp;#039;&amp;#039; Engpass eher beim Aufbau der Renderarbeit.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RHI Thread voll ausgelastet:&amp;#039;&amp;#039;&amp;#039; Übersetzung oder Treiberarbeit begrenzt die CPU-Seite.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Viele Flushes/Fences:&amp;#039;&amp;#039;&amp;#039; Zu enge Synchronisation oder ungeeignete Ressourcenpfade untersuchen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;GPU voll ausgelastet, CPU-Threads mit Luft:&amp;#039;&amp;#039;&amp;#039; Parallelisierung der CPU behebt den eigentlichen GPU-Engpass nicht.&lt;br /&gt;
&lt;br /&gt;
== Bezug: UE5 Heterogeneous Multi-GPU ==&lt;br /&gt;
&lt;br /&gt;
Für Jans Projekt müssen zwei Achsen getrennt betrachtet werden:&lt;br /&gt;
&lt;br /&gt;
* Parallel Rendering und RHI Thread verteilen hauptsächlich &amp;#039;&amp;#039;&amp;#039;CPU-Arbeit&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Heterogeneous Multi-GPU verteilt &amp;#039;&amp;#039;&amp;#039;GPU-Arbeit und Ressourcen&amp;#039;&amp;#039;&amp;#039; auf mehrere Adapter.&lt;br /&gt;
&lt;br /&gt;
Eine zweite GPU hilft daher nicht automatisch bei einem RHI-Thread-Limit. Umgekehrt kann ein langsamer serieller CPU-Pfad mehrere GPUs unterfüttern. Die offizielle RHI-API beschreibt Fähigkeiten wie Multithreading und parallele RHI-Ausführung; &amp;lt;code&amp;gt;FRHIGPUMask&amp;lt;/code&amp;gt; repräsentiert aktive GPU-Indizes. Ob heterogene Adapter einen konkreten Pfad unterstützen, muss jedoch für D3D12/Vulkan, Treiber, Speicherfreigabe und Kopierpfad separat validiert werden.&lt;br /&gt;
&lt;br /&gt;
Praktischer Messplan: zuerst Single-GPU-Baseline in Unreal Insights, dann RHI Thread und Parallelalgorithmen einzeln vergleichen, anschließend erst Multi-GPU aktivieren und CPU-Zeiten, GPU-Zeiten sowie Transferkosten getrennt erfassen.&lt;br /&gt;
&lt;br /&gt;
== Quellen ==&lt;br /&gt;
&lt;br /&gt;
* [https://dev.epicgames.com/documentation/en-us/unreal-engine/parallel-rendering-overview-for-unreal-engine?application_version=5.8 Epic: Parallel Rendering Overview (UE 5.8)]&lt;br /&gt;
* [https://dev.epicgames.com/documentation/en-us/unreal-engine/threaded-rendering-in-unreal-engine?application_version=5.8 Epic: Threaded Rendering (UE 5.8)]&lt;br /&gt;
* [https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-insights-in-unreal-engine?application_version=5.8 Epic: Unreal Insights (UE 5.8)]&lt;br /&gt;
* [https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/RHI/FRHIGlobals?application_version=5.8 Epic API: FRHIGlobals (UE 5.8)]&lt;br /&gt;
* [https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/RHI/FRHIGPUMask?application_version=5.8 Epic API: FRHIGPUMask (UE 5.8)]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Unreal Engine 5]]&lt;br /&gt;
[[Kategorie:Rendering]]&lt;br /&gt;
[[Kategorie:Multi-GPU]]&lt;/div&gt;</summary>
		<author><name>Elaina</name></author>
	</entry>
</feed>