naja, nach all der langen Zeit hab' ich auch endlich mal den Sprung in die Shaderthematik gewagt, und bis hierhin (1. Tut) bin ich ganz gut klar gekommen. Ich habe jetzt also einen VertexShader und einen FragmentShader geschrieben, welcher einfach nur die gebundene Textur ausgibt. Ich habe jetzt versucht, die Texturkoordinaten nachträglich zu verändern, was auch ganz gut geklappt hat:
Ich kann jetzt zum s und t Wert der Texturkoordinaten beliebige Werte dazuadddieren, die dann auch so ausgegeben werden. Ich würde jetzt gerne eine Wasserbewegung im Shader schreiben (habe schon eine geschrieben, die allerdings von der CPU berechnet wird, ist aber wirklich nur was für High-End Prozessoren). Ich kann aber jedes Fragment immer nur um die gleiche Anzahl Einheiten verschieben, also alles wird nach unten bzw. zur Seite verschoben. Ich brauche also für jedes Fragment einen anderen Wert, den ich zu den Texturkoordinaten addieren muss, da aber der Ablauf für jedes Fragment gleich ist, frage ich mich, wie das gehen soll. Gibt es da 'ne Lösung für? Oder habe ich das Konzept für sowas falsch verstanden?
_________________ Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen
wow, superschnelle Antwort, danke, auf sowas wäre ich garnicht gekommen. Aber welchen Wert der Textur soll ich dann benutzen? Soll ich also den Farbwert einer Textur in Koordinaten "umwandeln"? Außerdem hab' ich keine Ahnung, wie ich das dynamisieren (wenn's das Wort net gibt, egal, ich denke man weiss, was gemeint is' xD) soll.
_________________ Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen
Registriert: Sa Nov 13, 2004 11:00 Beiträge: 229 Wohnort: Steinhude
kannst dann zB eine 3D Textur als lookup benutzen, bei der du die dritte koordinate als Zeitangabe nimmst und somit ein ändernedes bild erhälst (fals du das mit dynamik meintest)
ich meinte mit Dynmik, dass die Kurven, die dann letztendlich ja das Wasser darstellen, nicht immer genau gleich aussehen dürfen, sonst hätte ich ja nur ein Standbild. Ich würde das gerne so machen, dass eine fliesende Wasserbewegung zustande kommt, nicht irgendein zufallsgeneriertes Gewurschtel. Mich würde mal interessieren, wie das in diesem RenderMonkey Shader von SoS funktionierte.
_________________ Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen
Mir fällt dort Spontan Displacement Mapping ein, bzw eine Bewegung mithilfe der Manipulation von Dreicken(ACHTUNG, teuere Angelegenheit)!
_________________ 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.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Ich würde das, wie oben schon erwähnt, mit einer 3D-Textur machen, bzw mit ~30 Texturen, die alle Stadien von Wassserbewegungen beinhalten. Ich habe da selbst erst vor kurzem ne Demo (mit Source) gemacht, die du dir ja mal anschauen könntest: http://laboda.delphigl.com/shader.html (ganz unten)
Die Texturen hab ich mit dem Caustics Generator (http://www.lysator.liu.se/~kand/caustics/) erstellt. Das Tolle an dem Programm ist, dass sowohl die Ränder der Textur so berechnet werden, dass sie, aneinandergereiht zB auf einem Quad zusammenpassen, als auch zeitlich so berechnet werden, dass nach dem letzten Frame wieder fließend in das erste Frame übergegangen wird.
_________________ "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
--------------------------- OK ---------------------------
Das der Fehler beim Bumpmappingprog, beim anderen kommen auch Fehler!
_________________ 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.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Ahhh, du hast wahrscheinlich ne ATI-Karte? Da habe ich schon immer Probleme mit Ich werd mal im Laufe des Tages (hoffentlich) fehlerfreie Demos uploaden.
_________________ "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
@La_Boda: Vielen Dank für deine Antwort, hat mir auf Anhieb ohne Probleme geholfen, dass man sowas mit Caustics lösen kann, hätte ich nie im Leben gedacht; dein Sample is' wirklich genial.
Hätte dann noch eine Frage zu diesem Thema: Worauf ich hinaus will, ist ein ultra-realistischer Regen. Jeder Tropfen soll die Umgebung hinter sich aufgrund der Lichtbrechung verzerren (ultra-realistisch eben xD). Kann ich den gleichen "Verzerr-Effekt" irgendwie auf ein geblendetes Quad übertragen? Und dann wäre da natürlich noch die Performance, würde ein High End Rechner sowas schaffen, wenn ich es mit der Anzahl der Tropfen nicht übertreiben würde?
_________________ Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Das kommt drauf an, ob man durch die Tropfen durch alles sehen können soll. Zum Beispiel andere Tropfen, die wiederum durchlässig sind. Da schätz ich gibts noch keine Hardware dazu. Aber ich würds auf jedem Fall auch mit nem Quad machen, auf das ich dann eine Bumpmap pappe, die ungefähr die Oberfläche eines Tropfens repräsentiert. Zuerst wird der Hintergrund des Tropfens in ne Textur gerendert. Den Vektor vom Beobachter "brichst" du dann an der Oberfläche des Tropfens. Den "gebrochenen" Vektor verfolgst du dann bis zur vorher erstellten Textur. Soweit die Theorie, hab mir das jedenfalls so überlegt. Kann mir mal jemand sagen, ob ich da irgendwelche Denkfehler drinne hab?
@ultrarealistisch: Es geht durchaus noch realistischer, zum Beispiel, in dem du die Wasseroberfläche nicht mit ner statischen Bumpmap, sondern mit einer dynamischen "beklebst". Habe das selber schon versucht, und nix gescheites zusammengebracht (egtil gar nix ), und erlaube mir mal, das als eine der "Königsdisziplinen" der 3D-Programmierung zu deklarieren.
_________________ "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
ja, Tropfen in den Tropfen sichtbar, das fällt keinem auf, wenn der Regen erstmal fällt, die Lichtbrechung denke ich fällt schon auf. Ich brauche das jetzt garnicht so realistisch, dass das Licht mit dem ganzen Vektorzeugs da gebrochen wird, "animierte Brechung" möchte ich aber schon haben. Ich will also mit dem Caustics-Generator 'ne Art Wasserbewegung für nur einen Tropfen generieren, die dann in jedem Tropfen durchgehend abläuft. Jetzt brauche ich als Textur für den Hintergrund eines Tropfens das, was man genau in diesem Moment durch den Tropfen sieht (was genau mein Problem ist: Wie kriege ich den Hintergrund eines Tropfens vom aktuellen Standpunkt?). Dann multipliziere ich den Hintergrund (sobald ich rausfinde oder mir das jemand sagt, wie das geht) mit einer anderen Textur, dass sie etwas aufgehellt wird (damit man den Tropfenumriss erkennen kann) und lege noch die Caustics drüber, fertig. Bleibt halt nur noch das Problem mit dem in Textur rendern, wobei ich natürlich sagen muss, dass mein Regentropfen kein Quad, sondern was komplexeres ist, denn Regentropfen sind ja nicht viereckig ^^. Habe das Renderpass-Tut verstanden und auch nachvollzogen, aber wie ich das mit anderen Formen als Quad anstelle, weiss ich nicht.
_________________ Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also Regentropfen mit Shadern zu bepflastern halte ich für überflüssig. Kann das Beurteilen, da es bei mir gerade selbiges tut. Sofern es keine Zentimergroße in zeitlupe fallenden Tropfen sind wird das sowieso niemandem auffallen. Und wenn sie es sind, dann wird es sicherlich nicht mehr realistisch aussehen. Von daher würde ich mich eher auf das drumherum der Tropfen beschränken. Also ein Pfütze in der ein tropfen einschlägt und Microwellen wirft und vielleicht sogar ganz leicht spritzt.
(Hardcore) Eine Glasscheibe auf der die Tropfen landen. Dabei sind sie dann nicht mehr flüchtig und dann kann man erkennen, dass sich der Hintergrund darin bricht. Aber aufgrund der Größe der Tropfen würde dort wahrscheinlich auch eine 8x8 große Textur ausreichen bei der die Unterseite Hell und die Oberseite Dunkel wäre. Also Himmel unten und Boden oben. Wenn man die ein wenig rund aufträgt und danebenher schauen kann sollte das schon einen entsprechenden Realismusseffekt geben. Allerdings Wasser und Glas ist wirklich pervers. Da sich die Tropfen nun zusammenschließen und zu größeren werden können. Also alleine die Physikalischen Berechnungen sind der Hammer und unterliegen der Chaostheorie was die Berechnung nicht leichter macht.
...genau deswegen frage ich, Zeitlupe wird in meiner geplanten Engine/zu realisierendem Projekt eine große Rolle spielen, deswegen wüsste ich halt gerne wie ich das mit dem RenderToTexture-Zeugs hinkriege.
_________________ Der Bump Mapping User ist nur zu faul, selbst eine Wand mit Tesselation zu erstellen
Mitglieder in diesem Forum: 0 Mitglieder und 19 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.