Neuigkeiten
Neu: Webanwendung Firewall (WAF) in Serverspace
Serverspace Black Friday
DF
Daniil Fedorov
März 19 2025
Aktualisiert am 19. März 2025

UAV

UAV (Unordered Access View) ist ein Mechanismus in Direct3D und Vulkan APIs, das es Shadern ermöglicht, Daten zu schreiben GPU Speicherressourcen ohne strikte Zugriffsreihenfolge. Im Gegensatz zu herkömmlichen Puffern und Texturen, die in Pixel- und Vertex-Shadern schreibgeschützt sind, unterstützen UAVs das gleichzeitige Lesen und Schreiben aus mehreren Shader-Threads.

Hauptmerkmale von UAV

  • Beliebiger Zugriff – Daten können in beliebiger Reihenfolge gelesen und geschrieben werden, wodurch UAVs ideal für parallele Berechnungen sind.
  • Unterstützung für mehrere Ressourcentypen – UAVs können auf Texturen, Puffer und andere angewendet werden GPU Speicherressourcen.
  • Verwendung in Compute Shadern – UAVs werden häufig in Compute Shadern verwendet, wo umfangreiche Datenschreibvorgänge ohne strikte Zugriffsstruktur erforderlich sind.
  • Kompatibilität mit verschiedenen Pipeline-Stufen – In Direct3D 12 und Vulkan können UAVs nicht nur in Compute Shaders, sondern auch in Pixel- und sogar Geometry Shaders verwendet werden.

Wo werden UAVs eingesetzt?

  • Physikalisch basierte Beleuchtung – Ermöglicht Shadern, Zwischenberechnungen der globalen Beleuchtung zu speichern.
  • Nachbearbeitung – Effekte wie Gaußsche Unschärfe oder Tiefenschärfe können UAVs nutzen, um Berechnungen zu beschleunigen.
  • Texturgenerierung und -zuordnung – Wird in Techniken wie Screen Space Reflections (SSR) oder Voxelisierung verwendet.
  • Physik-Simulationen – Wird bei der Verarbeitung dynamischer Systeme wie Partikel- oder Fluiddynamik angewendet.

Codebeispiel

Ein Beispiel für die Erstellung eines UAV für einen Puffer in Direct3D 12:

D3D12_UNORDERED_ACCESS_VIEW_DESC uavDesc = {};
uavDesc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
uavDesc.Format = DXGI_FORMAT_UNKNOWN;
uavDesc.Buffer.FirstElement = 0;
uavDesc.Buffer.NumElements = elementCount;
uavDesc.Buffer.StructureByteStride = sizeof(MyStruct);
uavDesc.Buffer.CounterOffsetInBytes = 0;

device->CreateUnorderedAccessView(buffer, nullptr, &uavDesc, uavHandle);

Fazit

UAV (Unordered Access View) ist ein wichtiges Werkzeug für GPU Speicheroperationen und bieten Flexibilität beim Schreiben und Verarbeiten von Daten. Aufgrund ihrer Leistungsfähigkeit und Vielseitigkeit werden UAVs häufig für Rendering, Simulationen und andere rechenintensive Aufgaben eingesetzt.

Wir verwenden Cookies, um Ihr Erlebnis auf der Website zu verbessern Serverspace besser. Indem Sie weiterhin auf unserer Website surfen, stimmen Sie unseren zu
Cookies und Datenschutzerklärung.