Seite 1 von 1

Polygon(e) einer Schnittebene berechnen

Verfasst: 29.04.2011, 18:12
von maxx2097
Hallo zusammen,

ich grüble gerade darüber, wie man möglichst Effizient (=schnell) das/die Polygon(e) eines beliebigen 3D-Objekts mit einer beliebigen Ebene bestimmen könnte.
Evtl. wäre dies auch mit einem Shader möglich, wobei es da wahrscheinlich Probleme mit der Genauigkeit geben könnte (das Ergebnis müsste ja wahrscheinlich in eine Textur kodiert werden).

Hat jemand Ansätze?

Danke!

Re: Polygon(e) einer Schnittebene berechnen

Verfasst: 29.04.2011, 18:21
von Krishty
  • Modell zur GPU schicken
  • Durchreich-Vertex-Shader setzen
  • Parameter der Ebene als Shader-Konstanten setzen
  • Stream Output Buffer für Geometry Shader setzen (nix da Texturen)
  • Im Geoshader die Schnittkante des aktuellen Dreiecks mit der Ebene berechnen
    • falls vorhanden, an den Output-Stream anhängen
    • sonst einfach garnichts tun
  • Ausgabepuffer von der GPU holen
  • ???
  • PROFIT
Ich habe aber selber nie mit Stream Output gearbeitet, darum ohne Gewähr.

Mit einem Compute Shader, dem Modell als StructuredBuffer und den Schnittpunkten als AppendStructuredBuffer könnte es nochmal schneller sein (und du sparst das Setup der VS-/GS-Pipeline), aber ob du den nutzen kannst hängt von der Hardware deiner Nutzer ab (müsste D3D 11 sein, CS mit D3D 10.1-Hardware ist doof).

Gruß, Ky

Re: Polygon(e) einer Schnittebene berechnen

Verfasst: 29.04.2011, 18:58
von maxx2097
Hi Krishty,

wow... vielen Dank für die schnelle Antwort! Das hört sich doch recht vielversprechend an.
Auf die Schnelle gegoogled scheint aber die Kombination GeometryShader/ATI in OpenGL da nicht 100% sauber zu laufen, oder? Und bei der Implementierung des Stream Output Buffers in OpenGL bin ich mir da auf den ersten Blick auch nicht so sicher.

Aber ich werde da mal forschen.

Re: Polygon(e) einer Schnittebene berechnen

Verfasst: 29.04.2011, 19:00
von Krishty
Dass du mit OpenGL arbeitest, wusste ich nicht. Keine Ahnung, wie das dort aussieht und wie die Qualität der Implementierung ist.

Re: Polygon(e) einer Schnittebene berechnen

Verfasst: 29.04.2011, 19:18
von maxx2097
Ja, sorry, das hatte ich nicht explizit erwähnt... dachte das Icon im Thread reicht ;)

Re: Polygon(e) einer Schnittebene berechnen

Verfasst: 29.04.2011, 19:21
von Krishty
Übersehen – mein Fehler.

Re: Polygon(e) einer Schnittebene berechnen

Verfasst: 29.04.2011, 20:54
von dot
maxx2097 hat geschrieben:Auf die Schnelle gegoogled scheint aber die Kombination GeometryShader/ATI in OpenGL da nicht 100% sauber zu laufen, oder?
Sagt wer? Ich bin zwar eher ein Fan von D3D aber das hör ich zum Ersten mal...
maxx2097 hat geschrieben:Und bei der Implementierung des Stream Output Buffers in OpenGL bin ich mir da auf den ersten Blick auch nicht so sicher.
http://www.opengl.org/registry/specs/EX ... edback.txt