PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Techdemo für Wasser Shader?


Monger
2004-03-16, 23:50:52
Tja, ich brauch wiedermal eure Hilfe...

Ich suche eine schon ziemlich alte Demo, die auf ziemlich genial einfache Weise gezeigt hat was man mit Pixelshadern für schöne Wassereffekte machen kann...

Dazu hatte man einen Blick auf ein quadratisches Bassin, das mit Wasser gefüllt war. Wenn man irgendwo auf die Oberfläche klickte, bildeten sich Ringe wie von Regentropfen. Da man an mehreren Stellen klicken konnte, ergaben sich damit sehr schöne Interferenzen...

Ich möchte das Ding zu Demonstrationszwecken, weil ich in einem kleinen Vortrag zeigen möchte wie man mit Shadern Objekte interaktiv beeinflussen kann, und gerade Wasser finde ich ein sehr geeignetes Beispiel. Ich brauch also nicht den Quellcode, sondern lediglich die Bin.
Und ich will nicht unbedingt Morrowind zur Demonstration laufen lassen...

Ich hab so schwach in Erinnerung, dass die Demo kurz nach Einführung von DX8 aufgekommen sein muss. Vielleicht war sie sogar von ATI oder nVIDIA, aber wenn ja, kann ich sie auf keiner Herstellerseite mehr finden. Den Namen weiß ich leider auch nicht mehr...


Kommt das irgendjemandem bekannt vor? Kann mir da jemand helfen?


Edit: im DirectX SDK gibt es auch ein Beispiel namens "water" was so ähnlich, aber um Längen hässlicher ist. Nicht gerade die erste Wahl...

Quasar
2004-03-17, 00:16:50
http://www.forum-3dcenter.net/vbulletin/showthread.php?s=&threadid=36100

Schau dort. Eins von denen wird's sein (ich weiß, welches du meinst, aber mir ist auch der Name entfallen).

Bubble simuliert denselben Effekt mit einer freischwebenden Quecksilbersphäre ;)

Small Pond ist es, was du suchst IMO.

Demirug
2004-03-17, 07:15:01
IM DX SDK gibt es auch ein Beispiel mit einer Wasserfläche. Ich vermute aber mal das du diese nicht meinst weil es Beispiele für DX7 Wasser sind.

aths
2004-03-17, 09:40:40
Japp, Small Ponds war (ist) eine Demo für die GF2 MX.

Monger
2004-03-17, 13:54:46
Original geschrieben von Demirug
IM DX SDK gibt es auch ein Beispiel mit einer Wasserfläche. Ich vermute aber mal das du diese nicht meinst weil es Beispiele für DX7 Wasser sind.

Jetzt bin ich doch ein wenig irritiert: Wieso ist das ein Beispiel für DX7 Wasser??? Gab es mit T&L schon Funktionen die genau sowas unterstützt haben, oder wurde das per Software gerendert? Naja, das Beispiel im DX SDK sieht ja nun auch wirklich nicht prickelnd aus.

Bis jetzt dachte ich immer, dass solche Wassereffekte erst mit DX8 möglich waren. Nicht umsonst hat ja Morrowind damals mit seinem Wassershader ordentlich Eindruck gemacht.

Edit: Mist... ausgerechnet der Mirror für Smallponds ist tot.

Editedit: Selber suchen macht schlau: nVIDIA hat natürlich noch alle Demos irgendwo aufm Server. Habs also doch noch gefunden.

Monger
2004-03-17, 14:12:44
Nachtrag:

Natürlich geht eine nVIDIA Demo nicht auf einer Radeon - egal wie alt die Demo auch sein mag... Mist!

Deshalb die Frage: kennt jemand vielleicht ein Beispiel für ATI Karten, das vielleicht ähnlich eindrucksvoll ist, und vorallem auch auf einem Mobile Chip laufen könnte?

Demirug
2004-03-17, 14:26:36
Original geschrieben von Monger
Jetzt bin ich doch ein wenig irritiert: Wieso ist das ein Beispiel für DX7 Wasser??? Gab es mit T&L schon Funktionen die genau sowas unterstützt haben, oder wurde das per Software gerendert? Naja, das Beispiel im DX SDK sieht ja nun auch wirklich nicht prickelnd aus.

Bis jetzt dachte ich immer, dass solche Wassereffekte erst mit DX8 möglich waren. Nicht umsonst hat ja Morrowind damals mit seinem Wassershader ordentlich Eindruck gemacht.

Edit: Mist... ausgerechnet der Mirror für Smallponds ist tot.

Editedit: Selber suchen macht schlau: nVIDIA hat natürlich noch alle Demos irgendwo aufm Server. Habs also doch noch gefunden.

Klar konnte man mit DX7 auch schon Wasser machen. Mit DX8 war es dann nur möglich die Reflektion pro Pixel zu berechnen.

DrumDub
2004-03-17, 14:28:38
auf was für nen mobile chip soll es denn laufen?

hier gibts auf jeden fall nen ps2.0/vs1.1 wasser-demo unter direct3d: http://esprit.campus.luth.se/~humus/

Monger
2004-03-17, 14:40:32
Original geschrieben von Demirug
Klar konnte man mit DX7 auch schon Wasser machen. Mit DX8 war es dann nur möglich die Reflektion pro Pixel zu berechnen.

Wenn man mit Shadern pro Pixel berechnen konnte, wie war das dann vorher? Pro Texturkachel?!?

Konnte man den Aufschlag von Regentropfen in eine Wasseroberfläche simulieren?

aths
2004-03-17, 14:57:33
Original geschrieben von Monger
Wenn man mit Shadern pro Pixel berechnen konnte, wie war das dann vorher? Pro Texturkachel?!?Pro Vertex.
Original geschrieben von Monger
Konnte man den Aufschlag von Regentropfen in eine Wasseroberfläche simulieren? Wenn die Tesselation fein genug ist, ja.

Monger
2004-03-17, 15:07:03
Original geschrieben von aths
Pro Vertex.
Sorry meine Unkenntnis... Ein Vertex ist die Fläche die von einem Polygon umfasst wird, oder?

Coda
2004-03-17, 15:20:17
Nein, der Eckpunkt

Monger
2004-03-17, 15:28:39
Original geschrieben von Coda
Nein, der Eckpunkt

Eigentlich logisch, denn der Vertex Shader verschiebt ja die Eckpunkte...

Okay, das erklärt auch dieses etwas schwammige Aussehen der DX SDK Demo.


Noch weiß ich leider nicht, auf welchem Notebook der Vortrag laufen soll, deshalb versuche ich mir mal ausreichend Demos von den beiden großen Herstellern und allgemein funktionierende zusammenzukratzen, damit ich auf jeden Fall gerüstet bin.

aths
2004-03-17, 16:19:01
Original geschrieben von Monger
Sorry meine Unkenntnis... Ein Vertex ist die Fläche die von einem Polygon umfasst wird, oder? Nein, das wäre das Dreieck. Die finale Farbe (aus Material und Licht) wird beim Vertexlighting pro Vertex berechnet, dann allerdings über das Dreieck interpoliert.

Monger
2004-03-17, 16:32:10
Original geschrieben von aths
Nein, das wäre das Dreieck. Die finale Farbe (aus Material und Licht) wird beim Vertexlighting pro Vertex berechnet, dann allerdings über das Dreieck interpoliert.

Das heißt, bei Vertexbeleuchtung (was anscheinend Stand der Technik unter DX7 war ?) ist ein Dreieck immer einfarbig, bzw. kann nur mit einem Farbwert zu der Grundtextur gemischt werden?!?

Also angenommen ich hab bei einem Dreieck (was der Einfachheit halber nur eine weiße Textur trägt) bei zwei Vertices weiß berechnet, und für eines schwarz. Dann wird das Dreieck im Endeffekt hellgrau?

Und Shader können eben mit ihre per-Pixel Berechnung genau das aushebeln, indem sie z.B. einen Farbverlauf von Schwarz nach weiß über das Dreieck generieren.

War das jetzt so grob richtig?

aths
2004-03-17, 17:37:19
Original geschrieben von Monger
Das heißt, bei Vertexbeleuchtung (was anscheinend Stand der Technik unter DX7 war ?) ist ein Dreieck immer einfarbig, bzw. kann nur mit einem Farbwert zu der Grundtextur gemischt werden?!?

Also angenommen ich hab bei einem Dreieck (was der Einfachheit halber nur eine weiße Textur trägt) bei zwei Vertices weiß berechnet, und für eines schwarz. Dann wird das Dreieck im Endeffekt hellgrau?

Und Shader können eben mit ihre per-Pixel Berechnung genau das aushebeln, indem sie z.B. einen Farbverlauf von Schwarz nach weiß über das Dreieck generieren.

War das jetzt so grob richtig? Nein. Angenommen, zwei Eckpunkte sind weiß, einer ist schwarz. Dann hast du einen Farbverlauf über das Dreieck. Das geht schon mit Uralt-Grakas. Mit Pixelshadern kann man aber pro Pixel die korrekte Beleuchtung ausrechnen. Das ist genauer, als die Beleuchtung nur pro Eckpunkt zu machen und die resultierende Farbe über das Dreieck zu interpolieren.