Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

21.02.2007, 23:36

Das macht man anderst. Man die Höhe des Terrains unterhalb des Wasserspiegels in eine Textur. Dann hast du eine Höhentextur. Anhand dieser Textur berechnest du:
1. Den Grad der Reflexion
2. Die Verblauung
Ins Wasser könntest du evtl. noch einbauen:
Reflection
Refraction
Normal Mapping

Bis jetzt sieht das Wasser noch ein bisschen mickrig aus und die Performance ist sauschlecht, aber das liegt wahrscheinlich an dem Bump-Mapping.

Edit: Was aber trotzdem gut aussieht, das Bump - Mapping. Falls du mal schönere Terrain editieren willst, hier ein guter Editor.
http://www.earthsculptor.com/

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

12

22.02.2007, 10:29

Also bräuchte ich eine extra Heightmap für alles, was unter Wasser liegt?

Was meinst du damit, dass ich ins Wasser noch Normalmapping und Reflection einbauen könnte? Es hat doch schon so eine Art Bumpmapping über die Volumentextur und es spiegelt bereits die Skybox.
Refraction wär doch, dass man auf den Meeres grund sieht und das dann verzerrt wird?

Bisher hab ich eigentlich das Wasser so eingeplant, dass man grundsätzlich nciht auf den Meeresgrund sieht. Sieht man ja auch Wireframe, das ich alle Terrainbereiche unter Wasser wegschneiden hab lassen.

Du kannst dir die Shader ja ruhig anschaun. Sind die beiden Dateien mit der *.fx Endung. Unkompiliert, in HLSL geschrieben.

EDIT: Was die Performance betrifft, so glaube ich dass das an der Texturierung des Terrains liegt. Er muss pro Pixel 5 Texturen samplen.

13

22.02.2007, 10:55

Bei mir müssen pro Pixel 7 Texturen gesampelt werden :)...und ich habe 250-300 FPS. Schau mal wie oft du Schader Parameter setzt, das macht nämlich einiges aus. Kannst auch mal die Patchs größer machen, so 32x32 ist ein guter Wert.

Wenn du wirklich weiche Ränder willst, dann brauchst du auch eine Heightmap unter dem Wasser, sieht sowieso besser aus.

Du könntest noch das Terrain spiegeln. Da reicht es auch, wenn du das Terrain einfach blau färbst, in eine Textur renderst und dann die Textur auf das Wasser setzt, das entlastet die Grafikkarte und sieht gut aus.

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

14

22.02.2007, 17:46

Ich hab die Bewegung des Wasser jetzt etwas verbessert ... kachlig wirkt es leider immer noch.
Außerdem steht das Wasser jetzt auf Höhe 5. So reicht es für einen weichen transparentübergang an den Ufern gerade aus und ich muss nicht eine extra Heightmap für das Zeug unterwasser hernehmen.
Das Terrain färbt sich jetzt nach unten blau ein, damit es ungefähr so aussieht als wäre es unter Wasser. Die "versenkten Teile" der Skybox hab ich in der selben Farbe eingefärbt -
und da ist mein momentanes Problem ... wenn ich mit der Farbe zu weit zum Horizont geh, sieht man es sobald man höher scrollt. Ist die Meeresgrundfarbe erst weiter unten, so sieht man an den Uferstellen manchmal noch weise bereiche der Skybox durch die Transparenz des Wassers.

Ich hab die aktuelle version hochgeladen. Hier nochmal der Link:
http://www.goldenvertices.freewebspace4a…raphicsDemo.zip

Die Performance konnte ich durch deine Vorschläge ein winziges bischen heben.
Warum es aber ansich so langsam ist, ist mir ein Rätsel

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden
  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

16

22.02.2007, 19:19

Oh sry. Bisher war noch die alte Skybox drin. Da tritt der Fehler von dem ich grad sprach nooooch öfter auf.

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

17

23.02.2007, 20:44

Hm... also wenn ich jetzt das Terrain im Wasser spiegeln lassen will, dann müsste ich alles über dem Wasser zunächst mal an der Wasserebene spiegeln und in eine Textur rendern soweit ich mich informiert habe. Dann wär es wohl wirklich sinnvoll das Terrain in Terrain über und unter dem Wasser zu teilen.

Gibt es auch noch andere Möglichkeiten? Wenn nicht, dann lass ich es sein. ich bin schon froh genug, dass ich es soweit geschafft habe und ich will nicht schon wieder an zu hoch gesteckten Zielen scheitern.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

23.02.2007, 20:56

wenn es nur um spiegelung geht kannst du auch mit dem stencilbuffer was tricksen (gibt auch ein sample dazu im dx sdk).
wenn du wellen mit brechung etc. willst, musst du wohl zur textur + shader variante greifen.

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

19

23.02.2007, 21:10

Hm dann werd ich wohl drauf verzichten... weil eine glatte Spiegelung ist wohl nicht so das wahre beim Wasser.

Ein Sample im DX SDK zur Spieglung hab ich nicht gefunden. :( Hätt ich jetzt trotzdem gern angesehn.
Ich hab das August06.

Trotzdem Danke für die Auskunft. :)

Werbeanzeige