Hallo!
Shader sind ja eine tolle Sache, doch so genervt habe ich mich ab ein paar Zeilen Code fast noch nie!! - Für mich ist das ganze eigentlich noch ziemlich Neuland, und deswegen brauch ich Euch menschliche Debugger, solang das so kompliziert und undurchsichtig bleibt.
Ich arbeite mit den ARB_VERTEX_PROGRAM/ARB_FRAGMENT_PROGRAM Extensions.
Mein Einstieg: Bastle einen unabhängigen Phong-Shader (Per-Pixel), der mit jeder Art von Geometrie eine sauber Beleuchtung hinkriegt. Das ganze soll von Material- sowie Licht-Eigenschaften der OpenGL abhängen und sonst von keinen zusätzlichen Parametern extra für den Shader!
OpenGL beleuchtet ja eigentlich schon Phong, doch eben nur per Vertex (Gouraud)... das ganze nun mit einem Vertex-/Fragment-Programm nachzubauen ist leider doch schwieriger als ich zuerst dachte. Vielleicht sollte ich, vorausgesetzt wir kriegen das hin, ein Grundlagentutorial schreiben, das wirklich jeden Schritt beschreibt. Im Netz lässt sich ne Menge Material dazu finden, doch von Doku keine Rede...
Hier der Code und Exes, eine mit Standard OpenGL-Lighting als Vergleich, die andere mit dem Phong-Shader: PhongShader. Funzt schon irgendwie, leider nur auf den ersten Blick, denn wie man sieht kommte es an den Rändern der Kugel zu seltsamen Verzerrungen... Besonders am Glanzlicht zu sehen, doch auch die Diffuse Beleuchtung machte da Probleme!
(Taste 5 um Teapot zu beleuchten) Auf der gebogenen Bauch der Kanne sieht man so eine Art Lichtkegel, mit starker Helligkeit und definierten Winkel, obwohl Phong klar mit Punktlichtern arbeitet. Hier ein gute Einführung : PhongIllumination
Ich bin mir fast sicher dass es irgendwie an den Vektroberechnungen im Vertex Shader liegt... vielleicht am View-Vektor? Oder Licht?
Bitte schaut es euch an... ich habe besonders Mühe all diese Koordinatensystemtransformationen richtig zu verstehen (eye-/view-/object-/world-/camera-space). Und dann das Dilemma mit den Row-/Column-Matrizen... waahhh
thx
elix
_________________ "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
Cool! GLSL möchte ich dann auch noch angehen, zuerst aber die wirklichen Basics... mit Worten: ASSEMBLER. Bin sonst nicht unbedingt der Fanatiker, aber ich denke in solch einem zeitkritischen Bereich, wo alle nur so nach Performance hächeln, lohnt es sich die Mühle bis ins letzte zu kennen. Die Befehle sind wirklich einfach, ihre exakte Abfolge macht da jedoch schon mehr Probleme! - Kurzum: Ich seh nicht ein, hier eine pseudo-Hochsprache zu verwenden, die doch auch nicht wirklich mehr kann als die GPU drauf hat, oder?! - Wenn dann Schleifen und If-Thens möglich sind... sieht's schon anders aus. Ab welcher GeForce-Klasse geht das überhaupt, weiss das jemand? Und unterscheidet sich da GLSL sehr von den Möglichkeiten der ARB_VERTEX_PROGRAM/ARB_FRAGMENT_PROGRAM Extensions?
Eines ist klar: das verflixte Phong will ich einfach in dry graka asm , hab schon zu viel Zeit damit verknorzt...
(Nachher kommt dann noch Bump- und Parallax Mapping, es soll da so ein echtes Licht Tutorial geben...)
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Lars macht mir Angst....
_________________ "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, das war halb ernst wegen Windows Vista gemeint. Ich glaube zwar nicht, dass es so extrem kommen wird. Bei den Patenten war es ja auch nicht so. Aber es ist gut jederzeit für die Zukunft gerüstet zu sein. Bei Cg muß man zwar die beiden DLL's von NVidia ins Programmverzeichnis packen, aber falls es irgendwann mal soweit kommen wird, dass wir alle ausschließlich D3D sinnvoll verwenden können, hat man zumindest die Shader schon fast im HLSL Format. Falls es alles so schlimm kommt. Desweiteren funktionieren Cg Shader wegen dem verbuggten Compiler auch auf ATI Karten besser als GLSL Shader. Bei NVidia ist es ja eh der gleiche Compiler. Cg ist als Sprache HLSL und GLSL überlegen. Man kann objektoriertiert mit Interfaces (mit virtuellen Methoden) und Klassen (ohne Zeiger nur structs) programmieren und es gibt dynamische Arrays. Diese erweiterten Sachen funktionieren mit HLSL nur eingeschränkt, aber der HLSL Compiler optimiert weitaus besser als Cg und GLSL. Cg 1.4 bietet auch unter OpenGL .fx Dateien, in denen man mehrere Renderpass in verschiedenen Versionen spezifizieren kann. Alles in allem ist Cg eine interessante Sache, die man sich zumindest mal ansehen sollte. Sowohl wegen der erweiterten Sprachmöglichkeiten als auch wegen der teilweisen Kompatibilität mit HLSL. Tatsache ist das, GLSL momentan nur eingeschränkt benutztbar ist. Es gibt jede Menge Probleme mit den Treibern (ATI fehlerhaft, NVidia langsam) und Inkompatibilitäten zwischen den Karten. Man kann mit dem Cg Compiler auch GLSL kompilieren falls man -oglsl als Argument übergibt.
ANGST
ANGST
ANGST
ANGST
ANGST
Willkommen, jeden Tag ein blaues Fenster. Wer sind wir? Programmierer, Entwickler, Erfinder, Wissenschaftler, Anvantgardisten oder einfach KONSUMENTEN??? Hast du die grüne Wiesen auf den Schreibtisch gesehen? Wie lang müssen wir diesen miesen running gag noch aushalten. Windows, DirectX und interpretiertes XML, DRAUF GES****N!!! Zwar muss ich den Rasen nicht mähen, doch erten kann ich so auch nichts... echt, WER sonst soll da sonst was ändern an der Zukunft als die Konstrukteure und Softwarearchitekten! Wollen wir denn diese wahnsinns schnellen Spiele, die blad nicht's mehr als eine stereotype Trade Show, wollen wir denn 10 verschiedene Fensterfunktionen? Wo sind wir denn, wenn wir unsere neue Sprache nur noch altes Material wieder und wieder nachplappern? Schnellschwätzer, plauppermal, specht... Wenn die Sprache nicht mehr frei ist, was ist denn die artikulierte IDEE?
Dieser elende Update-Wahn und doch kommen wir nicht vom Fleck, ich zumindest. GLslang, steht für mich fest, danach fang ich an endlich was damit auf die Beine zustellen, anstatt immer den neuen Standards hinterherzurennen! Bald zieh ich die Vorhänge und geh nach draussen!
Wer war überhaupt Bui-Tuong Phong?
asta la vista, langhorn dackel!
Registriert: Fr Mai 14, 2004 18:56 Beiträge: 804 Wohnort: GER/OBB/TÖL-WOR/Greiling
full ack, und mit so etwas kannst du vielleicht sogar die massen mobilisieren. Bau doch ne "We want OpenGL in MS Vista" Homepage, mit dienem Stil könnte da wirklich was draus werden
Mitglieder in diesem Forum: 0 Mitglieder und 9 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.