Tiefenbuffer-Berechnung auf CPU Multithreaded

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Mirror
Establishment
Beiträge: 184
Registriert: 25.08.2019, 05:00
Alter Benutzername: gdsWizard
Kontaktdaten:

Tiefenbuffer-Berechnung auf CPU Multithreaded

Beitrag von Mirror »

Hallo,


ich bin am überlegen ob ich eine Tiefenbufferberechnung auf der CPU realisiere. Dabei soll das Ganze multithreaded sein. Die Frage ist jetzt wie synchronisiert man sowas am Besten ?
Eine Lösung wäre das Dreieck in weitere kleinere zu zerlegen und diese dann an die einzelnen Threads zu senden. Aber bei vielen kleinen Dreiecken erscheint mir das viel Overhead zu sein. Auch gebe es die Möglichkeit die Dreiecke in Blockspalten und Blockzeilen einzuteilen und jeder Thread muss dann die Blockzeilen und Blockspalten locken.

Wie würdet ihr das ganze angehen ?
ehemals gdsWizard, http://www.mirrorcad.com
Benutzeravatar
Krishty
Establishment
Beiträge: 7974
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Tiefenbuffer-Berechnung auf CPU Multithreaded

Beitrag von Krishty »

seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Matthias Gubisch
Establishment
Beiträge: 418
Registriert: 01.03.2009, 19:09

Re: Tiefenbuffer-Berechnung auf CPU Multithreaded

Beitrag von Matthias Gubisch »

Was da der beste Weg ist kommt denke ich sehr stark auf deinen Workload an.

Wenn du viele kleine Dreiecke hast dann solltest du den Image in Tiles aufteilen und die Dreiecke da einsortieren.
Dann rendert jeder Thread sein Tile
Kein Sync nötig, dafür werden Dreiecke die über mehrere Tiles gehen mehrmals gerastert.

Bei eher wenigen dafür großen Dreiecken entweder ein Dreieck per Thread, oder Subdivision wie du oben bereits erwähnt hast und dann wieder in die Tiles einsortieren.

Man kann das auch kombinieren und ab x tiles die ein Dreieck abdeckt eine andere Methode wählen.

Eigentlich habe ich mir schon lange vorgenommen das da mal nachzubauen:
https://research.nvidia.com/sites/defau ... _paper.pdf

Denke das lässt sich auf der CPU auch umsetzen.
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Mirror
Establishment
Beiträge: 184
Registriert: 25.08.2019, 05:00
Alter Benutzername: gdsWizard
Kontaktdaten:

Re: Tiefenbuffer-Berechnung auf CPU Multithreaded

Beitrag von Mirror »

Ich habe mich entschlossen, die Dreiecke mittels boolscher Algebra in Tiles einzusortieren. Da wäre keine Synchronisation nötig. Die Papers sind sehr gut.

Danke an Euch Beide !!! Ihr habt mir sehr geholfen.
ehemals gdsWizard, http://www.mirrorcad.com
Antworten