PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VS3.0 Displacement Mapping Demo


dildo4u
2005-04-30, 18:19:48
http://www.guru3d.com/newsitem.php?id=2613


"This small yet nice demo is written in OpenGL uses NV_vertex_program3 option on NVIDIA newest cards to perturb a grid mesh and simulate a water effect. For those who are not too familiar with the OpenGL nomenclature, NV_vertex_program3 is what the DX folks refer to as Vertex Shaders 3.0.

If this demo fails to detect VS3.0 hardware support, it will still run but will only give the illusion of displacement (a 2D water effect instead of a full 3D), so ATi users might still enjoy this one. There is no support for the FX cards..."

http://img209.echo.cx/img209/6469/virtual6md.jpg

Spasstiger
2005-04-30, 18:47:05
Habs eben auf ner Radeon 9700 und ner GeForce 6800 getestet. Mit der Radeon 9700 sahs rangezoomt eher sch.. aus ;). Mit der GeForce 6800 und VS3.0 sahs dafür umso besser aus, dank der Umgebungsreflektionen auf jeden Fall ein Fortschritt gegenüber der T&L Water Demo ;).
Jetzt müsste man den Effekt noch in Half-Life 2 einbauen. :)

Gast
2005-04-30, 19:00:32
Jetzt müsste man den Effekt noch in Half-Life 2 einbauen. :)

halt ich nicht für sinnvoll, dort gibt es keine derart großen wellen, und für die kleinen reicht das herkömliche wasser in HL2 auch.

alleine dieser miniaturpool hat 32000 vertices, wieviel bräuchte man wohl für einen ganzen kanal in HL2 ;)

Spasstiger
2005-04-30, 19:03:49
halt ich nicht für sinnvoll, dort gibt es keine derart großen wellen, und für die kleinen reicht das herkömliche wasser in HL2 auch.

alleine dieser miniaturpool hat 32000 vertices, wieviel bräuchte man wohl für einen ganzen kanal in HL2 ;)

Was hat das denn mit der Größe der Wellen zu tun? Ich stell es mir einfach spassig vor, wenn Physikobjekte echte Wellen auf der Oberfläche verursachen und dabei der Spiegelungseffekt immer noch erhalten bleibt. Die Implementierung über Vertex-Shader scheint ja auch recht performant zu sein (dafür, dass es imo sehr gut aussieht). Theoretisch packt eine moderne High-End-Karte ja schon über 500 Millionen untexturierte Polygone in der Sekunde.

Die Wellen des HL2-Wassers sehen ja bisher wirklich nicht spannend aus.

Tigerchen
2005-04-30, 19:57:44
Ich hab hier noch ne PCGH vom Januar 2004 rumliegen. Da wird der Durchbruch für Displacement mapping fürs laufende Jahr 2004 prognostiziert. Und was kommt? Eine einsame Techdemo im Jahre 2005. Wann kommt es denn nun wirklich? Oder ist das nur so ein Feature nur für Demos wie das HDR-Demo von ATI?

Demirug
2005-04-30, 20:14:37
Ich hab hier noch ne PCGH vom Januar 2004 rumliegen. Da wird der Durchbruch für Displacement mapping fürs laufende Jahr 2004 prognostiziert. Und was kommt? Eine einsame Techdemo im Jahre 2005. Wann kommt es denn nun wirklich? Oder ist das nur so ein Feature nur für Demos wie das HDR-Demo von ATI?


???

Es gab doch gleich zum NV40 start eine Demo und ein Spiel das es nutzt gibt es auch schon.

Das es nicht breiter genutzt wird dürfte wohl auch daran liegen das ATI im R420 kein SM3 hat.

RLZ
2005-04-30, 20:21:14
Theoretisch packt eine moderne High-End-Karte ja schon über 500 Millionen untexturierte Polygone in der Sekunde.

Wobei man in der Praxis nur ein Bruchteil davon aus der Karte bekommt.
Mit Vertex-TextureLookup hat man noch 33 Millionen.
Dazu müsste die ganze Wasseroberfläche gleichmässig fein tesseliert sein, da man nicht nachträglich Geometrie hinzufügen kann. Da aber eine Oberfläche ein quadratisches Problem darstellt, wird es aber ziemlich übel.
Vorallem die Spiegelungen werden dann noch an den Wasserrändern schön aufreissen. :rolleyes:
Wenn wir dann schonmal dabei sind, bräuchten wir auch noch eine unheimlich hoch aufgelöste Displacement-Textur für das Wasser. :D

Btw.: das Interessante an der Demo ist eigentlich, dass er mit FBO´s statt PBuffer eine 3 fach höhere Performance erreicht. :up:

Demirug
2005-04-30, 20:32:38
Wobei man in der Praxis nur ein Bruchteil davon aus der Karte bekommt.
Mit Vertex-TextureLookup hat man noch 33 Millionen.
Dazu müsste die ganze Wasseroberfläche gleichmässig fein tesseliert sein, da man nicht nachträglich Geometrie hinzufügen kann. Da aber eine Oberfläche ein quadratisches Problem darstellt, wird es aber ziemlich übel.
Vorallem die Spiegelungen werden dann noch an den Wasserrändern schön aufreissen. :rolleyes:
Wenn wir dann schonmal dabei sind, bräuchten wir auch noch eine unheimlich hoch aufgelöste Displacement-Textur für das Wasser. :D

Die Geometrie wird bei sowas doch mehrfach genutzt und die Displacmentmap berechnet man dynamisch für den aktuellen Bereich in der GPU.

Btw.: das Interessante an der Demo ist eigentlich, dass er mit FBO´s statt PBuffer eine 3 fach höhere Performance erreicht. :up:

Und das obwohl nVidia das ganze noch als sehr BETA bezeichnet.

Gast
2005-04-30, 21:30:05
Was hat das denn mit der Größe der Wellen zu tun?

ganz einfach, die kleinen wellen die in HL2 eh schon praktisch perfekt aussehen. bei so kleinen wellen würde der optische vorteil durch displacement-mapping kaum vorhanden sein, das bringt erst was wenn die wellen so groß sind dass du sie von der seite beobachten kannst.

Gast
2005-04-30, 22:29:57
Habs eben auf ner Radeon 9700 und ner GeForce 6800 getestet. Mit der Radeon 9700 sahs rangezoomt eher sch.. aus ;). Mit der GeForce 6800 und VS3.0 sahs dafür umso besser aus, dank der Umgebungsreflektionen auf jeden Fall ein Fortschritt gegenüber der T&L Water Demo ;).
Jetzt müsste man den Effekt noch in Half-Life 2 einbauen. :)

die alte wasserdemo is uralt und diese hier is kaum besser,nur etwas verfeinert
dafür das die technik angeblich so voran geschritten ist schon enttäuschend

Spasstiger
2005-04-30, 22:42:50
die alte wasserdemo is uralt und diese hier is kaum besser,nur etwas verfeinert
dafür das die technik angeblich so voran geschritten ist schon enttäuschend

In der T&L-Water reißt das Wasser ja extrem schnell auf und sieht nicht mal halb so realistisch aus. Man könnte ja auch argumentieren, dass Gebäude in Spielen heute genauso eckig/rund sind wie in Quake 3, kein Fortschritt ...
;)

tombman
2005-05-01, 07:18:39
Weiß wer wie man da auf wireframe umschalten kann oder in echtes Vollbild?

Ansonsten is die demo eher *gähn*

Tigerchen
2005-05-01, 07:28:45
???

Es gab doch gleich zum NV40 start eine Demo und ein Spiel das es nutzt gibt es auch schon.

Das es nicht breiter genutzt wird dürfte wohl auch daran liegen das ATI im R420 kein SM3 hat.

Displacement mapping wird schon seit einer halben Ewigkeit versprochen. Jetzt wird es eben mit dem Zusatz VS 3.0 beworben. In der Praxis aber ist davon nach wie vor wenig zu sehen.

Demirug
2005-05-01, 09:21:39
Displacement mapping wird schon seit einer halben Ewigkeit versprochen. Jetzt wird es eben mit dem Zusatz VS 3.0 beworben. In der Praxis aber ist davon nach wie vor wenig zu sehen.


Displacement mapping ist ja auch als eigenständige Sache im DX vorgesehen. Nur hat Matrox ja nie passende Treiber fertig gestellt. Mit VS 3.0 ist die gleiche Funktionalität erreichbar also nimmt man jetzt dies.

Ailuros
2005-05-01, 09:29:32
Displacement mapping wird schon seit einer halben Ewigkeit versprochen. Jetzt wird es eben mit dem Zusatz VS 3.0 beworben. In der Praxis aber ist davon nach wie vor wenig zu sehen.


Welcher Entwickler haette auch jegliches Interesse zeigen koennen an dem pre-sampled-Quark (ATI/NVIDIA <NV4x)?

RLZ
2005-05-01, 10:41:50
Die Geometrie wird bei sowas doch mehrfach genutzt und die Displacmentmap berechnet man dynamisch für den aktuellen Bereich in der GPU.
Selbst dann wird es imo eine Unmenge an Geometrie. Es ist ja noch ein Unterschied ob man den niederfrequenten Anteil einer Meeresoberfläche (wie in dem einem Flugsimulator) oder solche hochfrequenten Dinge wie durch ins Wasser geworfene Gegenstände entstehende Wellen darstellen will.
Du hast da aber mehr Erfahrung mit, wieviel Geometrie man für so etwas braucht. Deswegen glaub ich dir mal es gehen würde...

stav0815
2005-05-01, 12:35:11
Selbst dann wird es imo eine Unmenge an Geometrie. Es ist ja noch ein Unterschied ob man den niederfrequenten Anteil einer Meeresoberfläche (wie in dem einem Flugsimulator) oder solche hochfrequenten Dinge wie durch ins Wasser geworfene Gegenstände entstehende Wellen darstellen will.
Du hast da aber mehr Erfahrung mit, wieviel Geometrie man für so etwas braucht. Deswegen glaub ich dir mal es gehen würde...
dafür nimmt auch die Wellelänge ab. ausserdem kann man - bei 3D Shootern - die wasserflächen ja begrenzen...

Spasstiger
2005-05-01, 13:43:02
Was meinen denn die Gurus hier jetzt: Wäre es möglich, solches Wasser in Next-Gen-Spielen (z.b. mit UE3) zu implementieren, wenn Wasserflächen nur stark begrenzt eingesetzt werden? Also vielleicht mal ein Becken in einem Tempel oder ein kurzer Flussabschnitt.
Oder reicht dafür die Grafikkartenleistung mittelfristig nicht aus?
Und kann man den Effekt so limitieren, dass zwar jedes neue Objekt Wellen verursacht, aber nur eine max. Anzahl von Wellenerregern berechnet wird?

Tigerchen
2005-05-01, 14:54:12
Mit VS 3.0 ist die gleiche Funktionalität erreichbar also nimmt man jetzt dies.

Das wurde in der Ausgabe 2/2004 der PCGH ja auch genau so geschrieben. Nur mittlerweile sind schon wieder 15 Monate vorbei und ich seh nicht viel. Wann gehts denn los?

Demirug
2005-05-01, 14:59:22
Das wurde in der Ausgabe 2/2004 der PCGH ja auch genau so geschrieben. Nur mittlerweile sind schon wieder 15 Monate vorbei und ich seh nicht viel. Wann gehts denn los?


02/2004 glaubte man ja auch noch an eine SM3 Lösung von ATI im Jahr 2004.

Bevor ATI keine SM3 Karten am Markt hat wird es da keinen großen Durchburch geben. Das andere Problem ist das es in der Regel keine guten Fallback Lösungen dafür gibt.

SentinelBorg
2005-05-02, 11:04:53
Was meinen denn die Gurus hier jetzt: Wäre es möglich, solches Wasser in Next-Gen-Spielen (z.b. mit UE3) zu implementieren, wenn Wasserflächen nur stark begrenzt eingesetzt werden? Also vielleicht mal ein Becken in einem Tempel oder ein kurzer Flussabschnitt.
Oder reicht dafür die Grafikkartenleistung mittelfristig nicht aus?
Und kann man den Effekt so limitieren, dass zwar jedes neue Objekt Wellen verursacht, aber nur eine max. Anzahl von Wellenerregern berechnet wird?
Das sollte eigentlich kein Problem sein. Die Vertexshader sind atm ja eh chronisch unterbelastet. Und da hier die Geometriedaten dann gleich direkt in der GPU erzeugt werden und man so keine Probleme mit der AGP/PCIe Bandbreite bekommt, kann man hier auch mit Leichtigkeit Unmengen an Vertices darstellen.

Sentinel

Ailuros
2005-05-02, 12:37:43
Was meinen denn die Gurus hier jetzt: Wäre es möglich, solches Wasser in Next-Gen-Spielen (z.b. mit UE3) zu implementieren, wenn Wasserflächen nur stark begrenzt eingesetzt werden? Also vielleicht mal ein Becken in einem Tempel oder ein kurzer Flussabschnitt.
Oder reicht dafür die Grafikkartenleistung mittelfristig nicht aus?
Und kann man den Effekt so limitieren, dass zwar jedes neue Objekt Wellen verursacht, aber nur eine max. Anzahl von Wellenerregern berechnet wird?

Moi niet Guru :D .....aber es muss sich jetzt nicht unbedingt nur um Wellen auf einer gelegentlichen Pfuetze handeln. Man koennte so manchen Schnickschnack mit dem Zeug implementieren und so lange man den grid eines gelegentliches Effektes auch klein haelt wird es wohl auch kein besonderes Leistungsproblem sein.

Das PowerVR cloth demo benutzt PS/VS3.0, wo der Fall eines Tuchs auf ein beliebiges Objekt simuliert wird. Die Anzahl der Instruktionen ist zwar verrueckt hoch aber was ist schon ein 64*64 grid in einer 1280*1024 Szene?

Ga
2005-05-02, 13:18:19
Mann kann damit auch einfach detailliertere Modelle darstellen, diese Modelle müssen ja nicht ausschließlich Wasseroberflächen sein. Aktuell wird noch viel Bump-Mapping dafür verwendet, mit Displacement Mapping hat man aber sehr viel hübschere Resultate. ;)

Demirug
2005-05-02, 13:21:19
Mann kann damit auch einfach detailliertere Modelle darstellen, diese Modelle müssen ja nicht ausschließlich Wasseroberflächen sein. Aktuell wird noch viel Bump-Mapping dafür verwendet, mit Displacement Mapping hat man aber sehr viel hübschere Resultate. ;)

Solange man keine Tesselationseinheit hat ist dieses Anwendungsmodel uninteresant.

Neomi
2005-05-02, 13:48:27
Solange man keine Tesselationseinheit hat ist dieses Anwendungsmodel uninteresant.

Genau. Programmierbare Tesselation wäre zwar richtig schick (dann kann man auch gleich die elendigen Pointsprites und andere halbherzig umgesetzten Sachen durch eine bessere Lösung ersetzen), für die Aufgabe würden aber ganz normale High Order Surfaces schon ausreichen.

Demirug
2005-05-02, 13:57:57
Genau. Programmierbare Tesselation wäre zwar richtig schick (dann kann man auch gleich die elendigen Pointsprites und andere halbherzig umgesetzten Sachen durch eine bessere Lösung ersetzen), für die Aufgabe würden aber ganz normale High Order Surfaces schon ausreichen.

HOS ist problematisch weil die Modele meist als reguläres Mesh vorliegen und nicht als Patches.

Ailuros
2005-05-02, 14:40:21
Solange man keine Tesselationseinheit hat ist dieses Anwendungsmodel uninteresant.

Ergo wird wohl nichts damit selbst durch die WGF2.0-Aera werden.

Demirug
2005-05-02, 14:42:38
Ergo wird wohl nichts damit selbst durch die WGF2.0-Aera werden.

Ach dieser Geometrieprocessor könnte durchaus als Tesselator verwendebar sein.

Ailuros
2005-05-02, 15:47:57
Ach dieser Geometrieprocessor könnte durchaus als Tesselator verwendebar sein.

Wurde deshalb die Tesselations-Einheit als optional "degradiert", weil man den GS unter Umstaenden auch fuer Tesselations-Aufgaben quasi "misbrauchen" kann?

stav0815
2005-05-02, 16:38:59
Genau. Programmierbare Tesselation wäre zwar richtig schick (dann kann man auch gleich die elendigen Pointsprites und andere halbherzig umgesetzten Sachen durch eine bessere Lösung ersetzen), für die Aufgabe würden aber ganz normale High Order Surfaces schon ausreichen.
Diese "halbherzigen" Lösungen sind aber durchaus sehr performant.

Demirug
2005-05-02, 17:00:56
Wurde deshalb die Tesselations-Einheit als optional "degradiert", weil man den GS unter Umstaenden auch fuer Tesselations-Aufgaben quasi "misbrauchen" kann?

Was für eine Option? Das ganze ist komplet gestrichen.

Neomi
2005-05-02, 18:00:47
Diese "halbherzigen" Lösungen sind aber durchaus sehr performant.

Pointsprites sind zwar performant, das war es dann aber auch schon.

Die funktionalen Einschränkungen:
Höhe und Breite sind immer identisch, also auch nur quadratische Quads. Allerdings nur in Pixeln, was dann bei Auflösungen mit nicht quadratischen Pixeln seltsam aussieht. Drehen kann man die Dinger nicht und einen Ausschnitt aus einem Texturatlas kann man auch nicht darstellen, immer nur die ganze Textur. Weitere Daten kann man in den Texturregistern nicht übergeben, nichtmal einen über alle Vertices eines Sprites replizierten Vektor.

Dann noch die fiesen Fallen:
D3DRS_POINTSCALEENABLE muß eingeschaltet sein, da sonst bei ATI-Karten die berechnete Größe (oPts) nicht berücksichtigt wird, es gilt dann nur die hinterlegte konstante Größe. Und das, obwohl dieser Wert nur für den Fixed Function Pfad eine Bedeutung haben sollten. Auf der GeForce 3 funktionieren Pointsprites dafür nur, wenn die Textur in Stage 3 ist. Ein klitzekleines Detail, nach dem man lange suchen kann. Im XBox SDK wurde es irgendwo nebenbei erwähnt.

Pointsprites sind so gut wie gar nicht dokumentiert, sie werden eher am Rande erwähnt, zumindest im DirectX SDK. Sieht eher aus wie ein Checklistenfeature, das nur drin ist, um drin zu sein. Eine flexiblere Lösung wäre da wirklich deutlich besser.

Coda
2005-05-02, 18:03:19
Was für eine Option? Das ganze ist komplet gestrichen.Öh, was ist an WGF 2.0 dann noch großartig toll im Vergleich zu DX9?

Demirug
2005-05-02, 18:54:30
Öh, was ist an WGF 2.0 dann noch großartig toll im Vergleich zu DX9?

Viel größeren Spielraum was die Resourcen angeht. Wobei die letzte Grafik die ich gesehen haben das "Unlimitiert" des mal in den DX-Next PPTs stand scheinbar etwas aufgehoben hat.

Der zweite Punkt der vielleicht noch wichtiger ist. Keine CAPS mehr.

Gast
2005-05-02, 18:55:15
Was ist CAPS?

Demirug
2005-05-02, 19:08:11
CAPS ist bei DX eine Datenstrucktur welche die Eigenschaften der Hardware enthält. Also welches Shadermodel, Texturegrößeren usw.

Aufgrund dieser Daten entscheident man dann welche Effekt Variante man jeweils benutzten kann.

Gast
2005-05-02, 19:10:14
Aha und wodurch wird CAPS dann ersetzt? Irgendwoher muss die API doch wissen was dir Karte kann und was nicht.

Demirug
2005-05-02, 19:17:08
Die Karte muss alles können was in der Spec steht. Sonst darf sie sich nicht als WGF 2.0 kompatibel bezeichnen.

Coda
2005-05-02, 19:28:07
Ok, das habe ich mir schon fast gedacht. Ist dann wenigstens Render-To-Vertexbuffer möglich? Das wäre ja fast so gut wie eine Tesselationseinheit...

Demirug
2005-05-02, 19:35:10
Ok, das habe ich mir schon fast gedacht. Ist dann wenigstens Render-To-Vertexbuffer möglich? Das wäre ja fast so gut wie eine Tesselationseinheit...

Es war mal drin und ich hoffe das es in der Final immer noch vorhanden ist.

robbitop
2005-05-03, 08:58:36
Warum nahm man denn die Geometrieeinheit aus der Spec?
Man munkelt ja, dass bereits im originalen NV30 und im R400 je eine enthalten sein sollte. In Serie5 sicher auch. Es wäre doch langsam mal Zeit dafür.

Gast
2005-05-03, 10:51:37
Ok, das habe ich mir schon fast gedacht. Ist dann wenigstens Render-To-Vertexbuffer möglich? Das wäre ja fast so gut wie eine Tesselationseinheit...


gibt es das nicht schon im nv40?

Ailuros
2005-05-03, 11:02:44
Was für eine Option? Das ganze ist komplet gestrichen.

Der Geometrie Shader wurde gestrichen oder die (optionale) Tesselations-Einheit?

Coda
2005-05-03, 11:07:46
gibt es das nicht schon im nv40?Doch, aber nicht in der DirectX API.

Demirug
2005-05-03, 11:11:57
Der Geometrie Shader wurde gestrichen oder die (optionale) Tesselations-Einheit?

Die Tesselationseinheit. Der Geometrieshader ist noch da.

Coda
2005-05-03, 11:12:35
Oh, dann hab ich was falsch verstanden hier. Aber was ist da der Unterschied?

Ailuros
2005-05-03, 11:55:15
Oh, dann hab ich was falsch verstanden hier. Aber was ist da der Unterschied?

http://www.beyond3d.com/articles/directxnext/index.php?p=4#top

Der Artikel ist schon relativ alt, vielleicht kann Demi das Ganze ein bisschen besser aufklaeren.

Ich verstehe momentan unter dem GS einen quasi Topologie-Prozessor.

aths
2005-05-03, 15:56:10
gibt es das nicht schon im nv40?Das geht sogar schon im NV30 :)