Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das sind auch zwei total unterschiedliche Dinge. mit einem Texture Buffer Objekt kann man in einem Shader auf einen großen Speicherbereich im VRAM zugreifen, ungefiltert (via textelFetch) und nur ein-dimensional.
Heute nutzt man aber eher SSBOs für solche Datenzugriffe, die sind was die Datenstrukturen angeht flexibler.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Nein, sind zwar beides Buffer Objekte, aber SSBO und UBO bilden unterschiedliche Teile der Hardware ab. SSBOs kann man (vereinfacht) als globalen Speicher sehen, und erlauben den (relativ) freien Zugriff auf große Speicherbereiche (min. 16 MByte, i.d.r. aber viel größer, man kann z.B. in einem Compute Shader direkt in ein SSBO schreiben). Daten eines UBOs landen i.d.R. irgendwo in einem Register und können somit von der GPU schneller zugegriffen werden. Die sind dann in der größe i.d.R. eingeschränkt (auf NV afair 64 KByte damit die immer komplett in die Register passen). Kann man sich ein wenig wie heap und stack vorstellen, wobei das natürlich je nach GPU-Design unterschiedlich ist und es z.B. zwischen AMD und NV grundlegende Unterschiede gibt.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
In modernem OpenGL und v.a Vulkan arbeitet man nur noch mit Buffer Objekten, v.a. SSBO und UBO, TBO nutzt man eigentlich eher selten. VBO und IBO nutzt man ja sowieso. SSBOs werden oft zusammen mit compute Shadern benutzt, die sowohl aus dem SSBO lesen und auch in das SSBO schreiben können. Damit kann man z.B. GPU-basierende Partikelsysteme umsetzen. Mache ich u.a. in meinen Vulkan-Demos, da gibt es u.a. auch eins für eine N-Body Simulation via Compute Shader bei der die Partikeldaten im SSBO liefen.
In modernem OpenGL und v.a Vulkan arbeitet man nur noch mit Buffer Objekten,
Das hat du recht, auch mit OpenGL 3.3 läuft vieles über Puffer, die wichtigsten sind VBO und VBA. Die Unifom-Variablen kann man auch mit eine Puffer übergeben (UBO). Und natürlich die Texturen, wobei die schon seit dem ersten OpenGL über einen Puffer gingen.
Wen man Tutorial mal abgeschlossen ist, würde es sich sicher mal lohnen Vulkan genauer anzugucken. Seit ich am Tutorial arbeite, sind bei mir auch schon wieder Fragen aufgekommen.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
mathias hat geschrieben:
Zitat:
In modernem OpenGL und v.a Vulkan arbeitet man nur noch mit Buffer Objekten,
Das hat du recht, auch mit OpenGL 3.3 läuft vieles über Puffer
Ich denke nicht, dass Sascha sich auf OpenGL 3.3 bezieht, wenn er von "modernem OpenGL" redet. Da gibt es ja noch gar keine SSBOs.
mathias hat geschrieben:
Und natürlich die Texturen, wobei die schon seit dem ersten OpenGL über einen Puffer gingen.
Nein. Texturen in OpenGL sind keine Buffer Objects, sondern eine eigene Art von OpenGL Objekt, die auf Bilddaten spezialisiert ist. Filterung, Kompression, Mipmapping – alles Dinge, die du bei Buffer Objects (also auch bei TBOs) nicht angeben kannst.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.