PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ab wann ist Displacement Mapping möglich?


LordDeath
2006-09-10, 18:33:49
hallo,

in der aktuellen pcgh (10/2006) steht auf seite 72, dass die kommenden geometry shader displacement mapping ermöglichen werden.
warum wird das als D3D 10 feature beworben? können die heutigen karten das nicht?

Spasstiger
2006-09-10, 18:44:33
Außer der Matrox Parhelia ist mir keine Grafikkarte bekannt, die einen speziellen Hardware-Support für Displacement Mapping besitzt. Es ist zwar möglich, wie bei ATIs Truform vorhandene Gittermodelle höher aufzulösen, aber neue Strukturen erzeugen wie bei Displacement-Mapping ist meines Wissens nach nur softwareseitig möglich (also über die CPU).
Der Geometry Shader bietet nun die Möglichkeit, im Grafikchip beliebige Eckpunkte neu zu erzeugen.

Der Vertex Shader kann nur vorhandene Eckpunkte bearbeiten, also deren Positionen und Farbwerte ändern.

Gast
2006-09-10, 19:16:40
mit SM3 ist presampled-displacement-mapping möglich. dabei wird eine highmap in einer textur hinterlegt und ein gitternetz aus eckpunkten entsprechend geformt.

allerdings müssen diese eckpunkte alle zur gpu geschickt werden.

heutige GPUs können keine eckpunkte erstellen wie es für "echtes" displacement-mapping nötig wäre, damit wird auch ein automatisches geometry-LOD über displacement-maps unmöglich.

geometry-shader können mit D3D10 nun auch eckpunkte erstellen.

LordDeath
2006-09-10, 19:21:35
allerdings müssen diese eckpunkte alle zur gpu geschickt werden.

heißt das, dass beim einsatz von displacement mapping unter d3d9/winxp die cpu zu stark belastet wird?

Spasstiger
2006-09-10, 19:28:17
heißt das, dass beim einsatz von displacement mapping unter d3d9/winxp die cpu zu stark belastet wird?
Die CPU und der Bus. Denn die zusätzlichen Eckpunkte müssen ja auch an die Grafikkarte weitergeleitet werden. Displacement Mapping läuft mit heutigen Karten komplett über die CPU (abgesehen von der Parhelia, die aber hinsichtlich ihrer 3D-Leistung im Jahr 2006 völlig uninteressant ist).
Man sieht es ja schon an Truform, welches auf Radeons außer der 8500 und der 9100 nur in Software läuft. Selbst beim alten Half-Life bricht mein Rechner (P4 2,53 GHz, Radeon 9700 @ AGP4x) manchmal in den ruckelnden Bereich ein, wenn ich mit aktiviertem Truform spiele.

Ich freu mich jedenfalls schon auf meine D3D10-Karte im nächsten Rechner. Wird sicherlich einige Spielereien geben, mit denen man die Geometry-Shader füttern kann.

Mir fiele da auch eine Möglichkeit ein, wie ich damit eine zukünftige Diplom- oder Studienarbeit im Bereich hardwarebeschleunigte Videocodierung gestalten könnte, zumindest wenn ich mich in Richtung Nachrichtentechnik vertiefe. ;) Aber programmiertechnisch fehlt mir dazu jegliches Hintergrundwissen (was nicht heißt, dass man sich dieses im Rahmen einer solchen Arbeit nicht aneignen könnte).

Gast
2006-09-10, 19:39:10
Selbst beim alten Half-Life bricht mein Rechner (P4 2,53 GHz, Radeon 9700 @ AGP4x) manchmal in den ruckelnden Bereich ein, wenn ich mit aktiviertem Truform spiele.


wobei aber in diesem fall die kompletten polygone komplett von der cpu berechnet werden müssen, im falle von presampled displacement mapping müssen die eckpunkte "nur" zur gpu geschickt werden, und werden dann dort "geformt".

Spasstiger
2006-09-10, 19:42:59
wobei aber in diesem fall die kompletten polygone komplett von der cpu berechnet werden müssen, im falle von presampled displacement mapping müssen die eckpunkte "nur" zur gpu geschickt werden, und werden dann dort "geformt".
Jo, ich weiß. Bei ATIs Truform läuft halt der komplette Erzeugungsvorgang über die CPU (abgesehen von Radeon 8500 und Radeon 9100).
Mit SM3.0 könnte man das Ganze beschleunigen.

Gast
2006-09-10, 22:51:20
Mit SM3.0 könnte man das Ganze beschleunigen.

Ne das kann auch keine Polygone erzeugen. Man könnte höchstens Render-To-Vertexbuffer machen - das geht aber auch schon mit SM2.

Ich bin ja mal gespannt ob es ATi mit R600 wieder "in Hardware" macht. Die Hardware könnte es wohl.

Spasstiger
2006-09-10, 22:53:56
Ne das kann auch keine Polygone erzeugen.
Ich weiß, hab mich auch auf das presampled-displacement-mapping bezogen.

Schoki_MADz
2006-09-12, 17:21:58
Ich kenn mich mit dem technischen Hintergrund bei displacement mapping nicht so gut aus, aber auf der Xbox360 gabs schon vor über 10 Monaten qualitativ wirklich sehr feines parallax mapping (ist oder das gleiche, oder?). Sollte in der Form dann doch am PC auch möglich sein.

http://img247.imageshack.us/img247/1963/pmapping01hs1.jpg
http://img247.imageshack.us/img247/7961/pmapping02as5.jpg

Monger
2006-09-12, 17:37:38
Ich kenn mich mit dem technischen Hintergrund bei displacement mapping nicht so gut aus, aber auf der Xbox360 gabs schon vor über 10 Monaten qualitativ wirklich sehr feines parallax mapping (ist oder das gleiche, oder?). Sollte in der Form dann doch am PC auch möglich sein.

http://img247.imageshack.us/img247/1963/pmapping01hs1.jpg
http://img247.imageshack.us/img247/7961/pmapping02as5.jpg

Nein, Parallax Mapping ist ein ganz normales Normal Mapping Verfahren. Das wurde auch schon in Splinter Cell 3 verwendet.

Gast
2006-09-12, 17:40:50
Ich kenn mich mit dem technischen Hintergrund bei displacement mapping nicht so gut aus, aber auf der Xbox360 gabs schon vor über 10 Monaten qualitativ wirklich sehr feines parallax mapping (ist oder das gleiche, oder?).


nein das ist was komplett anderes, den einzigen grund für diese verwechslung kann höchstens das marketing von epic sein, welches ihren parallax-mapping-algorithmus als virtual displacement mapping verkauft.

parallax-mapping gibt es auch in einigen pc-spielen und funktioniert mit jeder SM2-hardware.
parallax-mapping ist im prinzip "nur" ein weiterentwickeltes bump-mapping-verfahren, bei dem nur die beleuchtung an die fiktiven unebenheiten angepasst wird.

beim displacement-mapping wird dagegen echte geometrie verformt, oder sogar erst in der GPU erzeugt.

Gast
2006-09-12, 17:42:11
Nein, Parallax Mapping ist ein ganz normales Normal Mapping Verfahren. Das wurde auch schon in Splinter Cell 3 verwendet.

als normalmapping würde ich es nicht bezeichnen, schließlich reicht die oberflächennormale alleine nicht aus, man braucht auch die höhe.

Spasstiger
2006-09-12, 17:46:25
Nein, Parallax Mapping ist ein ganz normales Normal Mapping Verfahren. Das wurde auch schon in Splinter Cell 3 verwendet.
Gabs sogar schon in Farcry, auch wenns im Spiel selbst nicht zum Einsatz kam. Gab allerdings eine Custommap, wo das jemand verwendet hat.
Und in Techdemos konnte man Parallax-Mapping schon nach Release der ersten DX9-Karten (Radeon 9700/Pro) bewundern.
Ist also so gesehen ein Feature, das mit PC-Hardware schon vor 4 Jahren möglich war.

@Schoki_MADz: Parallax Mapping Displacement Mapping heißt, dass aus einer Textur eine echte dreidimensionale Oberfläche (in Form eines Drahtgittermodells) erzeugt wird, die auch Einfluss auf die Kollisionsabfrage haben kann, von Multisampling-AntiAliasing behandelt wird und sich halt auch sonst wie echte Geometrie verhält.
Mit Displacement-Mapping könnte man z.B. echte Einschusslöcher in Wänden direkt auf der Grafikkarte erzeugen (im Gegensatz zu den Parallax-Mapping-Einschusslöchern, wie man sie aus Fear kennt).

Mit dem Geometryshader kann man sogar soweit gehen, dass man regelrecht Löcher in die Geometrie reinhauen kann, durch die der Spieler dann auch durchwandern und durchschiessen kann.
Könnte man dem Geometryshader eigentlich die Aufgabe der Kollisionsabfrage übertragen? Oder bleibt das weiterhin im Zuständigkeitsbereich der CPU? Denn dann müsste die erzeugte Geometrie auch wieder an die CPU zurückgegeben werden. Und das kostet ja wieder Bandbreite und Geschwindigkeit.

del_4901
2006-09-12, 17:56:37
Displacement Mapping ist Deteailerzeugung auf Vertexebene.
Parallax Mapping ist Detailerzeugung auf Pixelebene.

Ich will euch ja nicht bremsen, aber mit dem GS der ersten Generation wird es kein Displacementmapping geben, da viel zu langsam.

aths
2006-09-12, 18:15:41
hallo,

in der aktuellen pcgh (10/2006) steht auf seite 72, dass die kommenden geometry shader displacement mapping ermöglichen werden.
warum wird das als D3D 10 feature beworben? können die heutigen karten das nicht?Es ist seit einigen DX-Generationen Mode, von Displacement-Mapping zu sprechen. Je nach dem, was man darunter versteht, ist das "HW-Beschleunigt" mit D3D8, D3D9, D3D9 SM 3 oder D3D10 möglich ...

Imo sollte man nicht fragen "Ab wann ist Feature XYZ" möglich. Beispielsweise ist auf einigen, aber nicht allen DX7-Karten Dot3-Bumpmapping möglich. Letztlich ist es wurscht, wo ein Effekt produziert wird (CPU, GPU) – Hauptsache, Performance und Qualität sind tauglich für Spiele. Wegen der Kollisionsabfrage dürfte es ohnehin dauern, ehe Displacementmapping auf die GPU ausgelagert wird. Dort, wo die Kollisionabfrage nicht vorhanden oder nicht exakt sein muss, könnte man das (allerdings ohne geometrisches LOD) schon heute.

Schoki_MADz
2006-09-12, 18:23:06
@Schoki_MADz: Parallax Mapping heißt, dass aus einer Textur eine echte dreidimensionale Oberfläche (in Form eines Drahtgittermodells) erzeugt wird, die auch Einfluss auf die Kollisionsabfrage haben kann, von Multisampling-AntiAliasing behandelt wird und sich halt auch sonst wie echte Geometrie verhält.
Mit Displacement-Mapping könnte man z.B. echte Einschusslöcher in Wänden direkt auf der Grafikkarte erzeugen (im Gegensatz zu den Parallax-Mapping-Einschusslöchern, wie man sie aus Fear kennt).

Mit dem Geometryshader kann man sogar soweit gehen, dass man regelrecht Löcher in die Geometrie reinhauen kann, durch die der Spieler dann auch durchwandern und durchschiessen kann.
Könnte man dem Geometryshader eigentlich die Aufgabe der Kollisionsabfrage übertragen? Oder bleibt das weiterhin im Zuständigkeitsbereich der CPU? Denn dann müsste die erzeugte Geometrie auch wieder an die CPU zurückgegeben werden. Und das kostet ja wieder Bandbreite und Geschwindigkeit.

Ahh ich glaube jetzt verstehe ich. Parallax Mapping ist sozusagen die fake variante von Displacement Mapping. Sieht auf den ersten Blick ähnlich aus, ist aber ist in wirklichkeit "flach" während Displacement Mapping echte Geometrie erzeugt.

Finde als Zwischenschritt das Parallax Mapping aber auch schon sehr genial, siehe die Bilder. Das wirkt im Spiel schon sehr plastisch, fast zum Anfassen.

Gast
2006-09-12, 18:48:46
@Schoki_MADz: Parallax Mapping heißt, dass aus einer Textur eine echte dreidimensionale Oberfläche (in Form eines Drahtgittermodells) erzeugt wird, die auch Einfluss auf die Kollisionsabfrage haben kann, von Multisampling-AntiAliasing behandelt wird und sich halt auch sonst wie echte Geometrie verhält.

die durch parallax-mapping entstandenen (bzw. verformten) polygone entstehen doch erst in der GPU, die kollisionsabfrage findet aber auf der cpu statt, damit wird parallax-mapping wohl kaum einfluss auf die kollisionsabfrage haben.

Gast
2006-09-12, 18:52:39
Ahh ich glaube jetzt verstehe ich. Parallax Mapping ist sozusagen die fake variante von Displacement Mapping. Sieht auf den ersten Blick ähnlich aus, ist aber ist in wirklichkeit "flach" während Displacement Mapping echte Geometrie erzeugt.


parallax-mapping ist eine bumpmapping-form auf pixelebene, displacement-mapping auf vertexebene.

mit bumpmapping versucht man natürlich nicht vorhandene geometrie zu faken. ich würde aber trotzdem nicht parallax-mapping direkt als fake von displacement-mapping bezeichnen.



Finde als Zwischenschritt das Parallax Mapping aber auch schon sehr genial, siehe die Bilder. Das wirkt im Spiel schon sehr plastisch, fast zum Anfassen.

stimmt, sieht sehr gut aus, auch aus vor allem bei löchern, erhebungen wirken nicht ganz so gut. der effekt bleibt auch aus sehr flachen winkeln noch erhalten, lediglich wenn ein loch bzw. eine erhebung direkt an eine echte polygonkante grenzt fällt das ganze auf.

del_4901
2006-09-12, 19:02:02
die durch parallax-mapping entstandenen (bzw. verformten) polygone entstehen doch erst in der GPU, die kollisionsabfrage findet aber auf der cpu statt, damit wird parallax-mapping wohl kaum einfluss auf die kollisionsabfrage haben.
Das wird Displacementmapping auch nicht haben. Außerdem wird da niks verformt, sondern nur der Farbwert bzw. die Beleuchtung des Pixels anders berechnet.

Gast
2006-09-12, 19:29:40
Außerdem wird da niks verformt,...
Wo wird "niks" verformt? Bei Parallax- oder Displacement-Mapping?

Gast
2006-09-12, 19:34:58
Das wird Displacementmapping auch nicht haben. Außerdem wird da niks verformt, sondern nur der Farbwert bzw. die Beleuchtung des Pixels anders berechnet.

das was du beschreibst ist bump-mapping, kein displacement-mapping.

del_4901
2006-09-12, 19:38:43
Lest ihr überhaupt, was ich da quote ... ich machs doch nicht zum Spass!
Bei Parallax Mapping wird nichts verformt. Und bei Bumpmapping wird NUR anders beleuchtet! Bei Displacement Mapping werden neue Vertices eingezogen. (da kann dann auch was verformt werden)
Parallax Mapping bestimmt über die Parallaxenverschiebung (daher auch der Name) den richtigen Texel. Hierfür gibt es auch 2 leicht unterschiedliche Ansätze. Das Offset Mapping (mathematisch ungenau kämpft mit Aliasingproblemen, bei kleinen Strukturen) und das Virtual Displacement Mapping(genauer aber rechenaufwändiger) Eine Mischform von beidem ist das Steep Parallax Mapping.

Gast
2006-09-12, 19:53:07
Lest ihr überhaupt, was ich da quote ... ich machs doch nicht zum Spass!
Natürlich, aber liest du auch was du schreibst und nicht nur, was ich von dir gequotet habe? (Sorry.)
Das wird Displacementmapping auch nicht haben. Außerdem wird da niks verformt, sondern nur der Farbwert bzw. die Beleuchtung des Pixels anders berechnet.
Ob sich das "da" jetzt auf deinen Quote oder auf das DM in deinem ersten Satz bezieht, wird für mich nicht deutlich - zumindest nicht, wenn ich mir nicht sicher bin, ob du weist, wovon du sprichst (sorry).

Gast
2006-09-12, 20:35:09
Außer der Matrox Parhelia ist mir keine Grafikkarte bekannt, die einen speziellen Hardware-Support für Displacement Mapping besitzt.

Und für die gibts keinen Treiber der das zur Verfügung stellen würde.

Gast
2006-09-12, 20:47:00
Und für die gibts keinen Treiber der das zur Verfügung stellen würde.

treiber schon, anwendung ist mir keine bekannt.

Spasstiger
2006-09-12, 21:40:00
Ob sich das "da" jetzt auf deinen Quote oder auf das DM in deinem ersten Satz bezieht, wird für mich nicht deutlich - zumindest nicht, wenn ich mir nicht sicher bin, ob du weist, wovon du sprichst (sorry).
Für mich ist auf den ersten Blick offensichtlich, dass er sich auf den Quote und damit das Parallax-Mapping bezogen hat. Denn er bezieht sich direkt auf das Wort "verformt" aus dem Quote.

Hat eigentlich noch einer eine Antwort auf meine Frage von oben: Wäre mit dem Geometry-Shader auch Kollisionsabfrage möglich?

Gast
2006-09-12, 21:47:37
Hat eigentlich noch einer eine Antwort auf meine Frage von oben: Wäre mit dem Geometry-Shader auch Kollisionsabfrage möglich?

kann ich mir nicht vorstellen, der GS sieht ja immer nur den aktuellen mesh, welcher bearbeitet wird.

del_4901
2006-09-13, 01:47:48
Für mich ist auf den ersten Blick offensichtlich, dass er sich auf den Quote und damit das Parallax-Mapping bezogen hat. Denn er bezieht sich direkt auf das Wort "verformt" aus dem Quote.

Hat eigentlich noch einer eine Antwort auf meine Frage von oben: Wäre mit dem Geometry-Shader auch Kollisionsabfrage möglich?
nein, denn die CPU hat davon keinen Schimmer.

Gast
2006-09-13, 03:00:30
Ich wär mir da nicht so sicher

Monger
2006-09-13, 08:22:56
nein, denn die CPU hat davon keinen Schimmer.

Naja, ab Direct3D 10 werden die Grafikkarten schon ziemlich mächtig...

Eins davon war afaik, dass dieser sture "reinlesen, Schritt A, Schritt B, raus damit" Rhythmus durchbrochen wird. Die GPU sollte auch Zwischeninformationen im Speicher ablegen können, von wo sie die CPU aus holen kann...

Also: vielleicht kann man die Kollisionsberechnung bereits in der GPU durchführen. Ob das performant ist, sei mal dahingestellt...