Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Hab mich mal wieder ein wenig mit glsl beschäftigt und ein kleines Szenario mit ner Wasserfläche die über Shader reflektiert gebastelt (der Shader basiert auf nem Shader aus dem aktuellen Rendermonkey) und wollte mal so wissen wie die Performance der Szene bei anderen Leuten (v.a. NVidia) aussieht. Im Fenstermodus gehts bei mir noch mit knapp ~225FpS, aber maximiert sinds nur ~70FpS was leider recht wenig ist. Hab auch testweise noch nen zweiten Shader eingebaut der etwas performanter ist, aber trotzdem nicht die Leistungsrakete. Steuerung ist wie folgt : Bei gedrückter Maustaste kann man sich umsehen, Mausrad zoomt, +/- steuern den Alphawert der Wasserfläche und mit w kann man zwischen den beiden Wassershadern umschalten.
Dank geht übrigens noch an Mars für den DDS-Loader, den hab ich etwas modifiziert damit ich ne 3D-Noise-Textur aus ner DDS-Datei laden kann. Muss ich ja, denn Noise kann die Radeon9700 ja leider nicht in Hardware.
P.S. : Würde mich interessieren ob (Lars Implementation hab ich ja bereits gesehen *lechz*) schon jemand anderes mit glslang reflektierendes Wasser realisiert hat und v.a. wie er das gemacht hat. Wie gesagt realisiere ich die Wellen auf dem Wasser über Noise (via nem Lookup in ner 3D-Noisetextur) und eigentlich habe ich gedacht das die Performance besser wäre.
Bez. DDS Loader: könntest du den geänderten Source (mit 3D-Texturenunterstützung) auch online stellen - dann kann ich meine Version damit abgleichen .
Wäre irgendwo ohnehin nicht schlecht, wenn man auf DelphiGL eine Sektion mit nützlichen Codeschnippseln aufbauen könnte (vielleicht auch als Teil des Forums).
Radeon 9800 Pro
800*600 kein AF, kein AA
spiegelndes Wasser: ca 280 FPS
blaues Wasser: ca 210 FPS
Ich scrolle nur die Normalmap. Da das Wasser dank z correct Bumpmapping zwischen den Bumps herfließt, sieht man wie sich in Bewegung die Kante zwischen Wasser und Boden verändert. Auch auf dem 2. Bild ist das Wasser eigentlich in Bewegung. An Stelle der Cubemap benutze ich planare Reflektion und rendere die Reflektion und das was unter dem Wasser ist in eine Texture, die dann anhand des Fresnel Wertes überblendet werden.
Es kann sein, daß die Helligkeit der Bilder nicht auf jedem Monitor richtig angezeigt wird.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Tja, wie gesagt lieber ein wenig bei der CPU sparen aber dafür dann ne passende GPU kaufen. Die 299€ die ich vor über nem Jahr für meine Radeon9700 bezahlt habe waren definitiv gut angelegt, und da sich das Ding (Hercules halt) noch brachial übertakten lässt (100Mhz mehr GPU-Takt geht ohne Grafikfehler, mehr kann man im Overclockingtool nicht einstellen) wird sie mir wohl auch noch ein paar Monate länger den Dienst erweisen dürfen.
Das Ergebnis der GeForceFX5600 scheint mal wieder zu bestätigen das die Karten zwar PS2.0 können, das aber auch eher ein Marketingfeature ist, denn 60FpS im Fenster sind nicht grade der bringer. Liefs dafür denn wenigstens ohne erkennbare Bildfehler?
@Lars :
Besonders Bild 7 sieht mal wieder verdammt gut aus...wenns nicht bald ne Demo gibt setzts Prügel
Ja, beide Shader schauen korrekt (und gut) aus - der "nur spiegelnde" Shader ist etwas schneller (80 bzw. 30 FpS). Man merkt auch gut, dass wirklich die Shader herbremsen, als die Framerate spürbar in die Höhe geht, wenn nur ein Teil der Wasseroberfläche sichtbar ist.
GLSL dürfte ohnehin erst mit der nächsten oder übernächsten Grafikkartengeneration wirklich wichtig werden, sodass ich schon zufrieden bin, mit einer <150 Euro Karte überhaupt schon mit GLSL herumspielen zu können - zur Zeit scheinen ohnehin die ARB_x_PROGRAM Erweiterungen sowohl weiter verbreitet zu sein, als auch stabiler zu laufen.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Hab mal ne aktualisierte Version hochgeladen (nur Exe, 280KByte) in der jetzt neben Vollbild auch ne Benchmarkfunktion eingebaut ist. Mittels 'd' wird diese gestartet, geht beide Shader durch und zeigt dann das Ergebnis an. Mir ist dabei übrigens aufgefallen das AA und AF doch performancetechnisch stärker ins Gewicht fallen als erwartet, zumal Radeonkarten da traditionell nicht so stark drunter leiden wie NV-Karten. Für alle dies interessiert hier nen paar Ergebnisse von meiner Radeon9700 (alle im Fenstermodus) :
(links : Standard-GPU-Takt 275Mhz, 4xAA und 16xAF, rechts : Standard-GPU-Takt 275Mhz ohne AA und ohne AF)
(links : GPU-Takt 330Mhz, 4xAA und 16xAF, rechts : Standard-GPU-Takt 330Mhzohne AA und ohne AF)
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Bei den aktuellen Treiber von NVidia ist die glSlang-Unterstützung noch nicht offiziel. D.h. das man diese erst über einen Registry-Hack aktivieren muss um diese nutzen zu können.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Du hast sicher den VSync aktiviert, oder? Denn die Frameraten sind für so ne High-End-Karte doch erschreckend gering. Kannste das bitte auch mal ohne VSync probieren und auch sagen ob das Wasser korrekt aussieht?
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.