Registriert: Di Mai 18, 2004 16:45 Beiträge: 2621 Wohnort: Berlin
Programmiersprache: Go, C/C++
Uniform bilden aktuell(OpenGL 3 und aufwärts) das größte Bottleneck in deferred rendering engines. Uniform updates benötigen sehr häufig einen syncpoint, dieser ist eine synchronisierung zwischen GPU und CPU, also beide warten aufeinander, bis sie frei sind und genau die Bus Frequence überlappt. Dann werden Daten ausgetauscht und beide dürfen normal weiter arbeiten. Syncpoints kann man laut "Zero Overhead" Team mit einem Profiler auf spüren, diese Calls kosten in der regel auf der CPU mehr als 1us. Bindless API und UBO zielt genau auf dieses Problem ab. UBO benutzt man, um die Anzahl der Syncpoints zu reduzieren, in dem man mehrere Daten in ein Objekt packt und das Objekt dann updated. Matrizen für Kamera und Licht werden häufig als UBO verpackt oder Shader und deren Settings für ein Material(was deferred rendering sehr exessiv benutzt).
Google mal nach Zero Driver Overhead und da gibt es dann diverse links zu verwandte Paper. NV hatte glaub bei Command Buffer Object Slide ne Liste von Syncpoint Kaniddaten.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
glBindBufferBase(GL_UNIFORM_BUFFER, 2, m_SharedUBO);// binde UBO auf location 2, kann in Init() wenn jeder Drawcall den nutzen soll
glNamedBufferSubData(m_SharedUBO, 0, sizeof(SharedTransformUniforms), &m_SharedTransformUniforms);// async update, wenn noch nicht von der GPU benötigt
location sagt an welcher Stelle im VAO die Daten liegen und erspart das lästige rum hantieren mit namen im Shader suchen und dann mit den Daten zu verbinden. Man bindet im VAO die Attribute und im Shader sagt man, in welchen Array die liegen.
Mitglieder in diesem Forum: 0 Mitglieder und 3 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.