Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Aug 07, 2025 06:46

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Okt 27, 2005 21:50 
Offline
DGL Member
Benutzeravatar

Registriert: Di Feb 25, 2003 15:10
Beiträge: 147
Wohnort: Koblenz a. Rhein
Hi Leute!
Hab ne allgemeine Frage was die Shader im Bezug auf Wasser betrifft..
in nem vorigen Thread kam sowas raus
Zitat:
Wasser: Shader + Displacementmapping + Einfache Physik

Also.. zu dem Shader..
Kann mir einer so grob erklären wie das Prinzip da klappt ? Also wie die Spiegelung gemacht wird ?
von Irgendnem Punkt aus auf ne Textur rendern und das dann irgendwie mit dem Shader verarbeiten O_o oder wie soll das gehen ?
Kann mir irgendwie nix vorstellen was nich krass aufwendig is..
Danke schonma!

_________________
mir fällt kein Spruch mehr ein für meine Signatur :( naja... :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 29, 2005 17:31 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Für solche Fälle wäre ne Shader-DB im Wiki ne geile Sache oder?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 30, 2005 23:32 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Also der Vorschlag oben wird sich definitiv nicht so einfach umsetzen lassen, ich kenne grade mal ein Spiel wo diese Art von Effekten eingesetzt wird.

Shader sollten für den Anfang reichen!
Zur Reflektion: Entweder mit Cubemaps arbeiten, oder du musst in eine Textur Rendern!

Edit:
Sry, du verstehst ja eigentlich nichts davon!
Hier nochmal etwas mehr:
Reflektionstexturen = RenderToTexture( Winkel berechnen in welche Richtung es zeigen muss ) -> Verarbeiten im Shader nach Höhenmodell des Wassers
Eigentlicher Untergrund = RenderToTexture -> Textur wie vorhergehende im Höhenmodell verarbeiten, dabei sind die Verzerrungen allerdings anderst

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 31, 2005 10:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Da ich selbst schon nen Wassershader programmiert habe, aber grad den Ausführungen von speedmaster selbst ned folgen kann ;) schreib ich mal, wies ich gemacht habe:
Grundsätzlich hast du zwei Möglichkeiten:
1. Mit Cubemaps: Du erzeugst mit RenderToTexture die sechs Seiten einer Cubemap oder, weil das sehr rechenintensiv ist, du nimmst schon ne fertige Cubemap, also zB mitm Himmel drauf. Du nimmst dann die Normalen einer Bumpmap, die in verschiedene Punkte der Cubemap zeigen und erhältst so eine verwirbelte Wasseroberfläche.
Auf meiner Page habe ich da mal was gemacht: http://laboda.delphigl.com/shader.html
2. Mit RenderToTexture allein: Du renderst einmal die ganze (!) Szene, nach unten gespiegelt (glScalef(1, -1, 1)) in eine Textur, die du dann wiederum mit einer Bumpmap verwirbelst und dann auf die Wasseroberfläche legst. Einer schöner Effekt wäre dann noch möglich, wenn du das, was unter dem Wasser liegt auch in eine Textur renderst und verwirbelst und das Ganze dann mit dem obenliegendem Teil blendest.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 31, 2005 11:43 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Nun, deine App funzt bei mir nicht!
Code:
  1. ---------------------------
  2. Opengl15_template
  3. ---------------------------
  4. ERROR: 0:12: '/' :  wrong operand types  no operation '/' exists that takes a left-hand operand of type '3-component vector of float' and a right operand of type 'const int' (or there is no acceptable conversion)
  5. ERROR: 1 compilation errors.  No code generated.
  6.  
  7.  
  8. ---------------------------
  9. OK  
  10. ---------------------------


Zudem glaube ich, wenn ich deinen Ausführungen folgen konnte, das deine Methode zwar ein hübsches Wasser erzeugen kann, aber physikalisch nicht korrekt ist!

Habe mal eine Demo gefunden wo auch Objekte die im Wasser waren extra Wellen erzeugt haben( Allerdings richtige Wellen ), und das ganze extrem Performant! Leider weiss ich nicht mehr wo es ist!

Edit:

Deine anderen Demos funktionieren auch nicht, graka: ATI RADEON 9600 Pro

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 31, 2005 12:42 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Speedmaster hat geschrieben:
Deine anderen Demos funktionieren auch nicht, graka: ATI RADEON 9600 Pro

Schau dir den GLSL-Code an und ergänze Integer zu Float durch .0.
Das ist zumindest der Fehler den du gequotet hast.
ATI ist da "genauer".


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 31, 2005 14:44 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Ja, das liegt an den berüchtigten Inkompatibilitäten zwischen NV und ATI. Ich habe ne NV-Grafikkarte daheim, und bei der funktioniert alles reibungslos. Ich bemühe mich zwar immer, alles korrekt zu programmieren, aber leider geht mir da immer wieder was durch die Lappen.
Aber wie i0n0s schon korrekt gesagt hat, musst nur den Shader-Sourcecode ändern.

€: Ich weis, dass das Ganze nicht recht realistisch ist, aber wenn du wirklich mit OBjekten deine Wasseroberfläche verwirbeln willst, wirst du sehr viel Arbeit vor dir haben. Und ich glaube nicht, dass das wirklich so performant ist, es sei denn, eshandelt sich nur um eine Demo zu diesem Effekt allein, aber in einem Spiel ist das nur schwer rechenzeitsparend zu implementieren.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 31, 2005 15:13 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Physikalisch korrekte Wasserbewegungen??? In Echtzeit??? Wozu braucht man sowas? Das merkt doch niemand, wenn die eine Welle in Wirklichkeit 2 Pixel weiter links wäre ^^

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 31, 2005 16:15 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Guckt euch mal das Wasser von AOE 3 an, dort sind schon teilweisse ähnliche Effekte zu beobachten.

Physikalisch korrekte Wasserbewegungen wird es so schnell nicht geben, "halbkkorrekte" allerdings schon, dort wird mehr oder weniger mit einer art "Bounding Box" gearbeitet, dies erzeugt die Illusion das wenn z.b. ein Stein im Wasser ist, sich das Wasser an diesem Punkt anderst verhält!

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.021s | 15 Queries | GZIP : On ]