Ich hab ma schnell ne kleine Wasserdemo gemacht ...
nur irgendwie ist mir das ganze viel zu CPU lastig - ich würde gerne Vertex Shader dafür benutzen. Außerdem gibt es noch Probleme mit dem Alpha-Blending.
Ich würde die Fkt. DrawWater() gerne so optimieren: -das alle Vertexe als ein Polygon gezeichnet werden -das keine Sinus/Cosinus-Berechnungen pro Frame mehr nötig sind [*1] -das Vertex Shader diese Arbeit übernehmen
*1 = das hatte ich schon mal hinbekommen, indem ich zwei Arrays mit den entsprechenden Sinuswerten vorberechnet habe und dann beim Zeichnen mit einer Hilfsvariable zur das Array geloopt bin - hatte aber den Nachteil das das Wasser nach einigen Sekunden immer gezuckt hat -> der berechnete Sinuswert am Anfang und Ende des Arrays war nicht 0! -> und er kann es auch nicht sein -> den: verschiedene "Wassergrößen" sind mgl. (Vielleicht poste ich diese Variante noch nach)
PS: gibt nicht irgendwo einfache Tutorials für Shader? (besonders Vertex Shader)Dieser Post wurde am 09.06.2004 um 18:21 Uhr von FloSoft editiert.
Also ich habe jetzt selbst Wasser mit nem Vertex Shader hinbekommen (in Cg) - zum kompilieren wird ein installierter Cg Compiler benötigt. Außerdem muss die Grafikkarte Multitexturing und Vertex Shader unterstützen (isja logisch
Aber das beste ist: das Wasser sieht jetzt vieeeeeel besser aus und wird bei mir doppelt so schnell gezeichnet (spricht 50% mehr FPS!) - Wow ich bin beeindruckt von diesem Shader Zeugs!!!
Nur das Problem mit eingeschaltetem Blending konnte ich noch nicht lösen: Wenn man von einer bestimmten Seite durchs Wasser schaut (durch mehrer geblendete Wellen) werden die Pixel immer heller -> es sollen aber nur die Wellen beblendet werden hinter denen keine zweite Welle mehr ist. Das muss man vielleicht irgendwie mit einer anderen Tiefentest-Fkt. machen ?!
füg der Zipdatei noch die cg.dll hinzu, die benötigt man zum starten von der exe, dann muss man das nicht extra installieren. -- class God : public ChuckNorris { };
Ich konnte die DLLs leider nicht in das ZIP mit reinpacken -> Freenet-Server errlaubt keine Files > 512KB > verdammte *Piep*!!!
Die DLLs reichen aber nur aus um die bereits kompilierte EXE auszuführen ... zum kompilieren des Projektes werden noch ne Menge andere Dateien vom Cg-Compiler benötigt - wer ausreichend Bandbreite hat findet hier entsprechendes Material:
Wäre es nicht auch schön mal ein Forum speziell für Shader-Sprachen zu eröffnen, ... gibt ja ziemlich viele (Cg, GLSL, HLSL, die von RenderMan,...)? Shader sind (und da bin ich mir 100%ig sicher) die Zukunft im Grafikbereich!
Leider bin ich die nächste Woche nett @home, ... also nicht wundern wenn nicht gleich ne Antwort kommt.