<?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=Render_Hardware_Interface_%28RHI%29</id>
	<title>Render Hardware Interface (RHI) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.janvolkland.de/index.php?action=history&amp;feed=atom&amp;title=Render_Hardware_Interface_%28RHI%29"/>
	<link rel="alternate" type="text/html" href="https://wiki.janvolkland.de/index.php?title=Render_Hardware_Interface_(RHI)&amp;action=history"/>
	<updated>2026-10-11T23:08:32Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in UnrealWiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.janvolkland.de/index.php?title=Render_Hardware_Interface_(RHI)&amp;diff=175&amp;oldid=prev</id>
		<title>Elaina: Elaina verschob die Seite Render Hardware Interface (RHI) in Unreal Engine 5 nach Render Hardware Interface (RHI): Redundanten Titelzusatz entfernt</title>
		<link rel="alternate" type="text/html" href="https://wiki.janvolkland.de/index.php?title=Render_Hardware_Interface_(RHI)&amp;diff=175&amp;oldid=prev"/>
		<updated>2026-09-06T09:37:54Z</updated>

		<summary type="html">&lt;p&gt;Elaina verschob die Seite &lt;a href=&quot;/index.php/Render_Hardware_Interface_(RHI)_in_Unreal_Engine_5&quot; class=&quot;mw-redirect&quot; title=&quot;Render Hardware Interface (RHI) in Unreal Engine 5&quot;&gt;Render Hardware Interface (RHI) in Unreal Engine 5&lt;/a&gt; nach &lt;a href=&quot;/index.php/Render_Hardware_Interface_(RHI)&quot; title=&quot;Render Hardware Interface (RHI)&quot;&gt;Render Hardware Interface (RHI)&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-145:rev-175 --&gt;
&lt;/table&gt;</summary>
		<author><name>Elaina</name></author>
	</entry>
	<entry>
		<id>https://wiki.janvolkland.de/index.php?title=Render_Hardware_Interface_(RHI)&amp;diff=145&amp;oldid=prev</id>
		<title>Elaina am 3. September 2026 um 14:19 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.janvolkland.de/index.php?title=Render_Hardware_Interface_(RHI)&amp;diff=145&amp;oldid=prev"/>
		<updated>2026-09-03T14:19:45Z</updated>

		<summary type="html">&lt;p&gt;&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 3. September 2026, 14:19 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Hinweis|Stand: Unreal Engine 5.8. Dieser Artikel fasst die aktuelle offizielle Epic-Dokumentation zusammen.}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Das &amp;#039;&amp;#039;&amp;#039;Render Hardware Interface (RHI)&amp;#039;&amp;#039;&amp;#039; ist die hardwarenahe Abstraktionsschicht des Unreal-Renderers. Rendering-Code arbeitet über ein gemeinsames Unreal-Interface, während das jeweils aktive Backend die Befehle auf eine konkrete Grafik-API wie Direct3D 12, Vulkan oder Metal abbildet.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Das &amp;#039;&amp;#039;&amp;#039;Render Hardware Interface (RHI)&amp;#039;&amp;#039;&amp;#039; ist die hardwarenahe Abstraktionsschicht des Unreal-Renderers. Rendering-Code arbeitet über ein gemeinsames Unreal-Interface, während das jeweils aktive Backend die Befehle auf eine konkrete Grafik-API wie Direct3D 12, Vulkan oder Metal abbildet.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Elaina</name></author>
	</entry>
	<entry>
		<id>https://wiki.janvolkland.de/index.php?title=Render_Hardware_Interface_(RHI)&amp;diff=137&amp;oldid=prev</id>
		<title>Elaina: Die Seite wurde neu angelegt: „Das &#039;&#039;&#039;Render Hardware Interface (RHI)&#039;&#039;&#039; ist die hardwarenahe Abstraktionsschicht des Unreal-Renderers. Rendering-Code arbeitet über ein gemeinsames Unreal-Interface, während das jeweils aktive Backend die Befehle auf eine konkrete Grafik-API wie Direct3D 12, Vulkan oder Metal abbildet.  {| class=&quot;wikitable&quot; |+ Artikelstatus |- ! Bezugsstand | Unreal Engine 5.8 |- ! Letzte Aktualisierung | 2. September 2026 |- ! Modul | &lt;code&gt;RHI&lt;/code&gt; |- ! Zentrale H…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.janvolkland.de/index.php?title=Render_Hardware_Interface_(RHI)&amp;diff=137&amp;oldid=prev"/>
		<updated>2026-09-02T22:00:23Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Das &amp;#039;&amp;#039;&amp;#039;Render Hardware Interface (RHI)&amp;#039;&amp;#039;&amp;#039; ist die hardwarenahe Abstraktionsschicht des Unreal-Renderers. Rendering-Code arbeitet über ein gemeinsames Unreal-Interface, während das jeweils aktive Backend die Befehle auf eine konkrete Grafik-API wie Direct3D 12, Vulkan oder Metal abbildet.  {| class=&amp;quot;wikitable&amp;quot; |+ Artikelstatus |- ! Bezugsstand | Unreal Engine 5.8 |- ! Letzte Aktualisierung | 2. September 2026 |- ! Modul | &amp;lt;code&amp;gt;RHI&amp;lt;/code&amp;gt; |- ! Zentrale H…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Das &amp;#039;&amp;#039;&amp;#039;Render Hardware Interface (RHI)&amp;#039;&amp;#039;&amp;#039; ist die hardwarenahe Abstraktionsschicht des Unreal-Renderers. Rendering-Code arbeitet über ein gemeinsames Unreal-Interface, während das jeweils aktive Backend die Befehle auf eine konkrete Grafik-API wie Direct3D 12, Vulkan oder Metal abbildet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Artikelstatus&lt;br /&gt;
|-&lt;br /&gt;
! Bezugsstand&lt;br /&gt;
| Unreal Engine 5.8&lt;br /&gt;
|-&lt;br /&gt;
! Letzte Aktualisierung&lt;br /&gt;
| 2. September 2026&lt;br /&gt;
|-&lt;br /&gt;
! Modul&lt;br /&gt;
| &amp;lt;code&amp;gt;RHI&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Zentrale Header&lt;br /&gt;
| &amp;lt;code&amp;gt;DynamicRHI.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RHICommandList.h&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RHIResources.h&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Aufgabe des RHI ==&lt;br /&gt;
&lt;br /&gt;
Das RHI bildet eine gemeinsame Schnittstelle zwischen Unreals Renderer und den plattformspezifischen Grafik-APIs. Es abstrahiert unter anderem:&lt;br /&gt;
&lt;br /&gt;
* Grafik- und Compute-Pipelines&lt;br /&gt;
* Buffer und Texturen&lt;br /&gt;
* Shader und Shader-Parameter&lt;br /&gt;
* Render Passes&lt;br /&gt;
* Command Lists und Command Contexts&lt;br /&gt;
* Ressourcenübergänge und Synchronisation&lt;br /&gt;
* Queries, Fences und Readbacks&lt;br /&gt;
* Raytracing-Ressourcen und -Pipelines&lt;br /&gt;
&lt;br /&gt;
Die Abstraktion ist bewusst hardwarenah. Sie soll plattformunabhängigen Rendering-Code ermöglichen, ohne die Eigenschaften moderner Low-Level-APIs vollständig zu verbergen.&lt;br /&gt;
&lt;br /&gt;
== Grobe Einordnung im Renderer ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Spiel- und Engine-Systeme&lt;br /&gt;
        |&lt;br /&gt;
Renderer / Render Dependency Graph&lt;br /&gt;
        |&lt;br /&gt;
RHI-Befehle und RHI-Ressourcen&lt;br /&gt;
        |&lt;br /&gt;
plattformabhängiges RHI-Backend&lt;br /&gt;
        |&lt;br /&gt;
Direct3D 12 / Vulkan / Metal&lt;br /&gt;
        |&lt;br /&gt;
GPU und Treiber&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
High-Level-Rendering-Code wird in modernen UE-Versionen häufig über den [[Render Dependency Graph]] beschrieben. Bei der Ausführung werden daraus RHI-Befehle, die das aktive Backend anschließend in native API-Kommandos übersetzt.&lt;br /&gt;
&lt;br /&gt;
== Dynamisches RHI und Backends ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FDynamicRHI&amp;lt;/code&amp;gt; ist die zentrale Schnittstelle des zur Laufzeit gebundenen RHI-Backends. Konkrete Implementierungen stellen die Verbindung zur jeweiligen Grafik-API her. Dazu gehören beispielsweise Schnittstellen für Direct3D 12 und Vulkan.&lt;br /&gt;
&lt;br /&gt;
Das ausgewählte Backend wird während des Engine-Starts initialisiert. Welches RHI verwendet wird, hängt von Plattform, Projektkonfiguration und Startparametern ab. Das aktive Backend stellt die tatsächlichen Ressourcen, Command Contexts und Submit-Pfade bereit.&lt;br /&gt;
&lt;br /&gt;
Wichtig: RHI-Objekte sind Unreal-Abstraktionen. Ein &amp;lt;code&amp;gt;FRHIBuffer&amp;lt;/code&amp;gt; ist nicht selbst ein &amp;lt;code&amp;gt;ID3D12Resource&amp;lt;/code&amp;gt;; das D3D12-Backend verwaltet darunter das native Objekt.&lt;br /&gt;
&lt;br /&gt;
== RHI-Ressourcen ==&lt;br /&gt;
&lt;br /&gt;
Viele GPU-Objekte werden als von &amp;lt;code&amp;gt;FRHIResource&amp;lt;/code&amp;gt; abgeleitete Typen dargestellt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHI-Typ&lt;br /&gt;
! Aufgabe&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FRHIBuffer&amp;lt;/code&amp;gt;&lt;br /&gt;
| Allgemeiner GPU-Buffer mit Größe, Stride und Nutzungsflags&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FRHITexture&amp;lt;/code&amp;gt;&lt;br /&gt;
| Texturressource einschließlich Format, Ausdehnung und Mip-Struktur&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FRHIShaderResourceView&amp;lt;/code&amp;gt; (SRV)&lt;br /&gt;
| Lesende Sicht auf eine Ressource für Shader&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FRHIUnorderedAccessView&amp;lt;/code&amp;gt; (UAV)&lt;br /&gt;
| Schreibende beziehungsweise ungeordnet lesend-schreibende Sicht&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FRHIUniformBuffer&amp;lt;/code&amp;gt;&lt;br /&gt;
| Gebündelte konstante Shader-Parameter&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FRHIGPUFence&amp;lt;/code&amp;gt;&lt;br /&gt;
| GPU-seitiger Synchronisationspunkt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FRHIGPUBufferReadback&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hilfsobjekt für asynchrones Zurücklesen eines Buffers&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ressourcen besitzen Beschreibungen und Nutzungsflags. Diese Informationen sind wichtig, weil moderne APIs Speicher, Bindung und erlaubte Zugriffe explizit behandeln.&lt;br /&gt;
&lt;br /&gt;
== Command Lists ==&lt;br /&gt;
&lt;br /&gt;
Rendering- und Compute-Arbeit wird über RHI Command Lists aufgezeichnet. Sie enthalten keine beliebige Spiellogik, sondern eine geordnete Folge grafischer Befehle.&lt;br /&gt;
&lt;br /&gt;
=== Wichtige Typen ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;FRHIComputeCommandList&amp;lt;/code&amp;gt; stellt die gemeinsame Compute-Schnittstelle bereit.&lt;br /&gt;
* &amp;lt;code&amp;gt;FRHICommandList&amp;lt;/code&amp;gt; erweitert diese um Grafikbefehle, beispielsweise Render Passes und Draw-Aufrufe.&lt;br /&gt;
* &amp;lt;code&amp;gt;FRHICommandListImmediate&amp;lt;/code&amp;gt; ist die unmittelbare Haupt-Command-List. Sie sollte nicht ohne Not verwendet werden, wenn parallele Ausführung erhalten bleiben soll.&lt;br /&gt;
* &amp;lt;code&amp;gt;FRHICommandListExecutor&amp;lt;/code&amp;gt; koordiniert Übersetzung und Übermittlung aufgezeichneter Command Lists.&lt;br /&gt;
&lt;br /&gt;
Typische Befehle umfassen:&lt;br /&gt;
&lt;br /&gt;
* Render Pass beginnen und beenden&lt;br /&gt;
* Grafik- oder Compute-PSO setzen&lt;br /&gt;
* Shader-Parameter binden&lt;br /&gt;
* Vertex- und Index-Buffer setzen&lt;br /&gt;
* Draw oder Dispatch auslösen&lt;br /&gt;
* Ressourcen kopieren&lt;br /&gt;
* Ressourcenübergänge einleiten&lt;br /&gt;
* GPU-Fences schreiben&lt;br /&gt;
&lt;br /&gt;
== Threads und Befehlsfluss ==&lt;br /&gt;
&lt;br /&gt;
Unreals Rendering arbeitet über mehrere Ebenen. Vereinfacht gilt:&lt;br /&gt;
&lt;br /&gt;
# Der &amp;#039;&amp;#039;&amp;#039;Game Thread&amp;#039;&amp;#039;&amp;#039; aktualisiert die Spielwelt und stößt Rendering-Arbeit an.&lt;br /&gt;
# Der &amp;#039;&amp;#039;&amp;#039;Render Thread&amp;#039;&amp;#039;&amp;#039; verarbeitet die Render-Szene und zeichnet plattformunabhängige RHI-Befehle auf.&lt;br /&gt;
# Der &amp;#039;&amp;#039;&amp;#039;RHI Thread&amp;#039;&amp;#039;&amp;#039; kann diese Befehle für das aktive Backend übersetzen und an die Grafik-API weitergeben.&lt;br /&gt;
# Das Backend übermittelt native Command Lists an die GPU-Queues.&lt;br /&gt;
&lt;br /&gt;
Diese Trennung erlaubt Parallelisierung. Renderer-Code sollte deshalb nicht unnötig blockieren oder voraussetzen, dass ein aufgezeichneter Befehl sofort auf der GPU ausgeführt wurde.&lt;br /&gt;
&lt;br /&gt;
== Pipeline State Objects ==&lt;br /&gt;
&lt;br /&gt;
Moderne Grafik-APIs bündeln viele Zustände in &amp;#039;&amp;#039;&amp;#039;Pipeline State Objects&amp;#039;&amp;#039;&amp;#039; (PSOs). Unreal unterscheidet unter anderem:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;FRHIGraphicsPipelineState&amp;lt;/code&amp;gt; für Grafik-Pipelines&lt;br /&gt;
* &amp;lt;code&amp;gt;FRHIComputePipelineState&amp;lt;/code&amp;gt; für Compute-Pipelines&lt;br /&gt;
* &amp;lt;code&amp;gt;FRHIRayTracingPipelineState&amp;lt;/code&amp;gt; für Raytracing&lt;br /&gt;
&lt;br /&gt;
Ein Grafik-PSO beschreibt beispielsweise Shader-Stufen, Blend-, Rasterizer- und Depth-Stencil-Zustand sowie Render-Target-Formate. Ein Compute-PSO benötigt vor allem den Compute Shader und die zum Backend gehörende Bindungsstruktur.&lt;br /&gt;
&lt;br /&gt;
Häufig wechselnde oder erst während des Spiels kompilierte PSOs können Ruckler verursachen. Deshalb sind PSO-Caching und eine frühzeitige Vorbereitung wichtiger Zustände für reale Projekte relevant.&lt;br /&gt;
&lt;br /&gt;
== Ressourcenstatus und Barriers ==&lt;br /&gt;
&lt;br /&gt;
In Direct3D 12 und Vulkan müssen Ressourcenzugriffe explizit synchronisiert werden. Eine Ressource kann beispielsweise als Kopierziel, Shader-Eingabe oder UAV-Ausgabe verwendet werden. Der Status muss vor der jeweiligen Nutzung passen.&lt;br /&gt;
&lt;br /&gt;
Das RHI beschreibt Zugriffe unter anderem über RHI-Zustände und Übergänge. Bei RDG-Ressourcen übernimmt der Render Dependency Graph einen großen Teil der Planung, sofern alle Ressourcen korrekt als Pass-Parameter angegeben wurden.&lt;br /&gt;
&lt;br /&gt;
Fehlerhafte Übergänge können zu Validierungsfehlern, beschädigten Ergebnissen oder GPU-Hängern führen. Besondere Vorsicht ist nötig, wenn Ressourcen außerhalb von RDG manuell verwaltet oder zwischen unabhängigen Queues ausgetauscht werden.&lt;br /&gt;
&lt;br /&gt;
== Synchronisation und Readback ==&lt;br /&gt;
&lt;br /&gt;
CPU und GPU arbeiten asynchron. Ein Submit bedeutet deshalb nicht, dass die GPU-Arbeit bereits beendet ist.&lt;br /&gt;
&lt;br /&gt;
Typische Werkzeuge sind:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;GPU-Fence:&amp;#039;&amp;#039;&amp;#039; signalisiert das Erreichen eines Punkts in einer GPU-Queue&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Queue- beziehungsweise Pipeline-Übergänge:&amp;#039;&amp;#039;&amp;#039; koordinieren Graphics- und Async-Compute-Arbeit&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Readback-Ressourcen:&amp;#039;&amp;#039;&amp;#039; übertragen Ergebnisse in CPU-lesbaren Speicher&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Staging-Buffer:&amp;#039;&amp;#039;&amp;#039; dienen als Zwischenspeicher für Upload oder Readback&lt;br /&gt;
&lt;br /&gt;
Die CPU sollte nur dann auf Readback-Daten zugreifen, wenn der zugehörige Fence abgeschlossen ist. Häufige synchrone Wartezeiten zerstören die Parallelität und sollten im normalen Frame-Pfad vermieden werden.&lt;br /&gt;
&lt;br /&gt;
== RHI und Render Dependency Graph ==&lt;br /&gt;
&lt;br /&gt;
RHI und RDG erfüllen unterschiedliche Aufgaben:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ebene&lt;br /&gt;
! Verantwortung&lt;br /&gt;
|-&lt;br /&gt;
| RDG&lt;br /&gt;
| Beschreibung von Passes und Abhängigkeiten, Ressourcenlebenszeiten, Culling, Planung und Parallelisierung&lt;br /&gt;
|-&lt;br /&gt;
| RHI&lt;br /&gt;
| Hardwarenahe Befehle, Ressourcen und Pipeline-Zustände für das aktive Grafik-Backend&lt;br /&gt;
|-&lt;br /&gt;
| Plattform-RHI&lt;br /&gt;
| Übersetzung in native Direct3D-12-, Vulkan- oder Metal-Objekte und -Kommandos&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Für neuen High-Level-Rendering-Code ist RDG meist der bevorzugte Einstieg. Direkter RHI-Code bleibt wichtig, wenn hardwarenahe Kontrolle nötig ist oder ein System unterhalb beziehungsweise außerhalb des normalen Render Graphs arbeitet.&lt;br /&gt;
&lt;br /&gt;
== Debugging und Diagnose ==&lt;br /&gt;
&lt;br /&gt;
Bei RHI-Problemen helfen unter anderem:&lt;br /&gt;
&lt;br /&gt;
* aussagekräftige Namen für Ressourcen und Render-Passes&lt;br /&gt;
* Grafik-API-Debug-Layer und GPU-basierte Validierung in Entwicklungsumgebungen&lt;br /&gt;
* RHI- und RDG-Validierung&lt;br /&gt;
* Unreal Insights sowie RDG Insights&lt;br /&gt;
* GPU-Captures mit Werkzeugen wie RenderDoc oder PIX, sofern die Konfiguration dies unterstützt&lt;br /&gt;
* Prüfung von Nutzungsflags, Ressourcenstatus und Queue-Zugehörigkeit&lt;br /&gt;
* Kontrolle der Lebensdauer nativer und abstrahierter Ressourcen&lt;br /&gt;
* Fences und Readback-Zeitpunkte protokollieren&lt;br /&gt;
&lt;br /&gt;
== Bezug zum Heterogeneous-Multi-GPU-Projekt ==&lt;br /&gt;
&lt;br /&gt;
Das Projekt [[UE5 Heterogeneous Multi-GPU]] verwendet für die Primary GPU weiterhin Unreals regulären D3D12-RHI-Pfad. Die Intel-Worker-GPU wird dagegen aktuell über ein separat erzeugtes &amp;lt;code&amp;gt;ID3D12Device&amp;lt;/code&amp;gt; mit eigener Direct Command Queue, eigenen Command Lists und eigener Fence-Synchronisation angesprochen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UE-Renderer&lt;br /&gt;
    |&lt;br /&gt;
    +-- reguläres D3D12-RHI --&amp;gt; RTX 5060 (Primary)&lt;br /&gt;
    |&lt;br /&gt;
    +-- ExperimentalMultiGPU --&amp;gt; separates ID3D12Device&lt;br /&gt;
                                  --&amp;gt; Intel UHD (Worker)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Worker-Pfad ist nicht automatisch Bestandteil von &amp;lt;code&amp;gt;GDynamicRHI&amp;lt;/code&amp;gt;. Dadurch ergeben sich besondere Aufgaben:&lt;br /&gt;
&lt;br /&gt;
* native Ressourcen des Worker-Devices dürfen nicht wie normale RHI-Ressourcen der Primary GPU behandelt werden&lt;br /&gt;
* Shader-Bytecode muss mit dem Zielgerät und dessen Fähigkeiten kompatibel sein&lt;br /&gt;
* Root Signature und PSO müssen für das Worker-Device erzeugt werden&lt;br /&gt;
* Command Allocator, Command List, Queue und Fence benötigen eine eigene Lebensdauerverwaltung&lt;br /&gt;
* Datenübertragung zwischen Primary und Worker muss ausdrücklich geplant werden&lt;br /&gt;
* Cross-Adapter-Ressourcen benötigen passende Heap- und Ressourcenflags; andernfalls ist ein Transfer über System-RAM erforderlich&lt;br /&gt;
* Fehler- und Device-Removal-Behandlung muss pro Device erfolgen&lt;br /&gt;
&lt;br /&gt;
Langfristig kann geprüft werden, welche Teile sinnvoll als eigene Unreal-Abstraktion oberhalb der nativen Devices modelliert werden. Eine direkte Erweiterung des regulären RHI um heterogene unabhängige Devices wäre dagegen ein erheblich größerer Eingriff in Engine-Annahmen, Ressourcenverwaltung und Scheduling.&lt;br /&gt;
&lt;br /&gt;
== Praktische Merksätze ==&lt;br /&gt;
&lt;br /&gt;
* RHI abstrahiert die Grafik-API, aber nicht die grundlegenden Regeln moderner GPUs.&lt;br /&gt;
* Command-Aufzeichnung und GPU-Ausführung finden zeitlich getrennt statt.&lt;br /&gt;
* Ressourcenstatus, Queue-Zugehörigkeit und Lebensdauer müssen immer eindeutig sein.&lt;br /&gt;
* RDG ist für neuen High-Level-Code meist geeigneter als manuelle Immediate-RHI-Befehle.&lt;br /&gt;
* Native Objekte verschiedener D3D12-Devices sind nicht beliebig austauschbar.&lt;br /&gt;
* Für einen unabhängigen Worker-Pfad müssen Synchronisation und Transfers ausdrücklich entworfen werden.&lt;br /&gt;
&lt;br /&gt;
== Quellen und weiterführende Dokumentation ==&lt;br /&gt;
&lt;br /&gt;
* [https://dev.epicgames.com/documentation/unreal-engine/graphics-programming-overview-for-unreal-engine Graphics Programming Overview] – Epic Games, UE 5.8&lt;br /&gt;
* [https://dev.epicgames.com/documentation/unreal-engine/API/Runtime/RHI RHI API Reference] – Epic Games, UE 5.8&lt;br /&gt;
* [https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/RHI/FDynamicRHI FDynamicRHI] – API-Referenz, Epic Games, UE 5.8&lt;br /&gt;
* [https://dev.epicgames.com/documentation/unreal-engine/API/Runtime/RHI/FRHICommandList FRHICommandList] – API-Referenz, Epic Games, UE 5.8&lt;br /&gt;
* [https://dev.epicgames.com/documentation/unreal-engine/API/Runtime/RHI/FRHIBuffer FRHIBuffer] – API-Referenz, Epic Games, UE 5.8&lt;br /&gt;
* [https://dev.epicgames.com/documentation/unreal-engine/API/Runtime/RHI/FRHITexture FRHITexture] – API-Referenz, Epic Games, UE 5.8&lt;br /&gt;
* [https://dev.epicgames.com/documentation/unreal-engine/parallel-rendering-overview-for-unreal-engine Parallel Rendering Overview] – Epic Games, UE 5.8&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Dieser Artikel ist eine eigenständige deutschsprachige Zusammenfassung mit Projektbezug und keine vollständige Übersetzung der Epic-Dokumentation.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Unreal Engine 5]]&lt;br /&gt;
[[Kategorie:RHI]]&lt;br /&gt;
[[Kategorie:Rendering]]&lt;br /&gt;
[[Kategorie:Direct3D 12]]&lt;br /&gt;
[[Kategorie:Grafikprogrammierung]]&lt;/div&gt;</summary>
		<author><name>Elaina</name></author>
	</entry>
</feed>