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!
Polygon(e) einer Schnittebene berechnen
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Polygon(e) einer Schnittebene berechnen
- 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
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
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.
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.
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Polygon(e) einer Schnittebene berechnen
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
Ja, sorry, das hatte ich nicht explizit erwähnt... dachte das Icon im Thread reicht ;)
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Polygon(e) einer Schnittebene berechnen
Übersehen – mein Fehler.
- dot
- Establishment
- Beiträge: 1746
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: Polygon(e) einer Schnittebene berechnen
Sagt wer? Ich bin zwar eher ein Fan von D3D aber das hör ich zum Ersten mal...maxx2097 hat geschrieben:Auf die Schnelle gegoogled scheint aber die Kombination GeometryShader/ATI in OpenGL da nicht 100% sauber zu laufen, oder?
http://www.opengl.org/registry/specs/EX ... edback.txtmaxx2097 hat geschrieben:Und bei der Implementierung des Stream Output Buffers in OpenGL bin ich mir da auf den ersten Blick auch nicht so sicher.