Ich schreibe eine Partikelsimulation, bei der die Logik mit Intel AVX aktualisiert wird. Ich verwende einen SoA-Ansatz, um meine "SIMD-Freundlichkeit" zu maximieren, aber ich mische die Partikelpositionskomponenten beim Aktualisieren des Vertexpuffers in das XYZ-Format .Ist es möglich, Vertex auf GPU aus einem Nicht-XYZ-Vertexpuffer zu konstruieren?
Ist es möglich, den Shuffle-Teil auszuschließen und einfach die Eckdaten im XXYYZZ-Format zu übergeben und jeden Eckpunkt in einer Shaderstufe zu konstruieren?
Mein erster Gedanke war, unter Verwendung von drei Scheitelpunktpuffern mit x, y und z Komponenten getrennt, und jeden Vertex konstruiert unter Verwendung des gleichen Index Index, der die x, y und z-Komponente eines Knotens zuzugreifen.
Ich bin mir bewusst, dass dies nicht der konventionelle Weg ist, aber ich möchte betonen, dass dies nur ein Experiment ist. Vielleicht hat irgendjemand etwas über diesen Ansatz gelernt (wenn es überhaupt möglich ist) und/oder könnte er mich in die richtige Richtung weisen? Vielleicht gibt es auch einen Namen?
Vielen Dank!
Ich dachte, ich könnte ein paar Worte über meine Ergebnisse teilen. Mit diesem Ansatz kann ich die Mischvorgänge vollständig ausschließen, die zuvor den größten Teil der Bildzeit verbraucht haben. Dies bedeutet, dass ich meine Partikelpositionskomponenten in drei verschiedenen Arrays und drei separaten Vertex-Puffern speichern kann. Nur ein einfaches 'memcpy' zum Neuabbilden der Vertexdaten. Mein vorheriges Ergebnis war ~ 80 FPS für 1 Million + Partikel. Jetzt bekomme ich aber ~ 230 FPS für die gleiche Menge an Partikeln. Danke nochmal dafür, dass du dein Wissen zu diesem Thema weitergegeben hast. – SvinSimpe