Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Multiplikation und Division von 2 Vektoren ist in meinem Tafelwerk nicht definiert also kann man davon ausgehen, dass es auch so ist.
Ich habe diese Funktion eingebaut, damit man komponentenweise multiplizieren kann, was bei der Parallelisierung gerne verwendet wird.
Statt 4 bzw. n Komponenten einzeln zu multiplizieren wird dies in ein vektor zusammen gepackt und mit 4 Komponenten gleichzeitig multipliziert.
Optimierungsroutine, also gehört es zum Ende des Artikels.
Es gibt die Multiplikation von Vektor und einem Skalar(einzelne Komponente), welches Vielfachbildung genannt wird.
Dann gibt es ein Skalarprodukt, welches durch ein Punkt gekennzeichnet ist, meine Multiplikation durch ein Stern und Kreuzprodukt durch ein x für 2 Vektoren.
Danke für den Hinweis und werde das heute Mittag dann ändern.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
TAK2004 hat geschrieben:
Nein ich will das in mehrere Artikel verpacken jede Nummer wäre ein Artikel, so dass man es schön in ruhe über längere zeit lernen kann und nicht immer in einen hin und her springt.
Okay. Das beruhigt mich, denn in dem oben verlinkten OpenGL 3 Tutorial sind bereits Überschriften für Instancing, Oclussion Query, Conditional Rendering, Transform Feedback etc enthalten. Alleine das Inhaltsverzeichniss geht über eine Bildschirmseite.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Hab die Liste um 1 Punkt Geometry Shader geupdated, da die OpenGL3.2 Specs diese noch in den Core übernommen haben.
Man muss gucken, wie schnell ich vor ran komme aber ich hoffe noch den GLSL Artikel mit Version 1.5 schreiben zu können.
Nicht dass ich jetzt noch weitere 6Monate brauche und dann 3.3 da ist.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich bin auf Dauerbelastung, da ich am Google Lunar XPrize mit mache, an meiner Engine arbeite und noch ein Reallife habe. Ob ich nun noch eine Tutorialreihe schreibe fällt da nicht mehr auf xD
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab gerade die Skalarprodukt funktion überarbeitet und da man dort auch noch informationen über Gradmaß und Bogenmaß benötigt, ist nun meine Frage, soll ich dazu auch noch was schreiben oder kann man hier schon von ausgehen, dass man weiß, was Gradmaß und Bogenmaß ist ? Ich tendiere dazu es hinzu zu fügen aber man muss ja auch nicht alles schreiben, was einen einfällt.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Hm, wer nicht weiß, was das ist, findet es bei der Suchmaschiene seiner Wahl bei der Suche nach "Gradmaß Bogenmaß", aber jeder, der sich anschickt mit OpenGL ernsthaft was machen zu wollen - und OpenGL 3 suggeriert das - sollte schon die beiden und vielleicht noch Neugrad/Gon kennen, wobei letztere eher in der Landschaftsvermessung/Kartographie eine Rolle spielen.
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Die Frage ist, was ist ein gutes Abgrenzungskriterium. Ich habe mich dabei immer an die Regel gehalten: alles, was Stoff des normalen Gymnasiums ist, gehört zur Allgemeinbildung und wird daher vorausgesetzt. Was darüber hinausgeht, ist spezieller Stoff. Nimm z.B. Bezierkurven: (weil mir gerade Julia einfällt ). So etwas ist erklärungsbedürftig. Bogenmaß/Gradmaß find ich kann vorausgesetzt werden. Man braucht nicht bei Adam und Eva anzufangen, ist ja auch so schon umfangreich genug.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
So, der Inhalt des Linearen Algebra Artikels ist zusammen geschrieben, nun würde ich euch bitten, euch durch zu kämpfen und zu schreiben, was rein/raus sollte, damit dann Anschließend eine Rechtschreibung, Grammatik und eventuelle Neubildung von Sätzen statt finden kann.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Sa Mär 14, 2009 17:48 Beiträge: 99
Programmiersprache: D, Java, C++
TAK2004 hat geschrieben:
So, der Inhalt des Linearen Algebra Artikels ist zusammen geschrieben, nun würde ich euch bitten, euch durch zu kämpfen und zu schreiben, was rein/raus sollte, damit dann Anschließend eine Rechtschreibung, Grammatik und eventuelle Neubildung von Sätzen statt finden kann.
Ich find den Artikel gut, allerdings stellt sich mir die Frage, warum dieser mit "OpenGL 3" in Verbindung gebracht werden muss. Klar, zur deutlicheren Führung durch den gesamt Workshop "OpenGL 3", allerdings bezieht sich alles dort genannte genauso auf ältere OpenGL Versionen.
Außerdem finde ich sollte der letzte Absatz: "Exkurs in die Optimierung" rausgenommen werden.
Meiner Meinung nach geht es in dem Artikel um Lineare Algebra, nicht um die Optimierung von Sourcecode, wie man eine Vektor implementation auf Performance trimmt gehört eher in einen weiteren Artikel ("Performancetuning" oder sowas), und wo wir gerade beim Thema sind:
Wenn du schon C++ Beispiele anbringst (was mir persönlich nichts ausmacht, da ich in D Programmiere ), dann halte diese doch wenigstens Syntaktisch leichter, warum musst du Templates benutzen nur um zu zeigen wie eine Implementierung eines Vektors aussehen könnte? Das könnte den ein oder anderen Pascaler verwirren, da C++ doch syntaktisch was völlig anderes ist.
Natürlich spiegeln die obigen Aussagen meine Meinung wieder, ich find' es auf jedenfall lobenswert das du dir so eine Arbeit machst, danke dafür!
Nach einer kleinen DIskusion mit Tak im IRC mach ich mal folgende Vorschläge:
Kein Leser will zu Anfang die lineare Algebra lernen nur um weiter zu lesen. Daher verzichtet zu anfang vollständig darauf. Schreibt ein minimales Programm. Nach Möglichkeit verwendet für das erste Beispiel SDL (gepatcht oder aus dem SVN) Es müss folgendes enthalten:
Ein OpenGL3.x fenster mit forward compatible context erstellen.
Hintergrund löschen
VBO mit geometriedaten für ein einzelnes 3eck erstellen. Koordinaten in screenspace (-1...1,-1....1) dazu für jede ecke eine Farbe: Damit hier keine falschen ideen aufkommen gleich der inhalt des float arrays:
0,1, 0,1, //position 1
1,0,0, 0, //red
0.8,-0.5,0,1, //position 2
0,1,0,0, //green
-0.8,-0.5,0,1 //position 3
0,0,1,0 //blue
Der Vertexshader sollte nichts machen, als die position zu setzten. Der Fragmentshader soll nur die Farbe übernehmen.
Das zusätzliche drum herum, reicht vollkommen aus um jemanden der neu ist vollständig zu verwirren. Also anschließen jede codezeile ausführlich erklären.
Für schnelle erfolge ignoriert weiterhin die lineare algebra und führt 2D texturen ein. Das macht all diejenigen glücklich, die ein 2D game schreiben wollen. EIn wenig texturen addieren oder so zeigt den sinn von shaderen
Anschließend das tutorial noch mit den Blendfunktionen und transparenz beenden.
========================================================
Ein wenig 3D: Benutz die parallel projektion. Ab hier kann man auch die lineare algebra so zeigen das auch auf dem Bildschirm etwas sichbar beliet. W der Position bleibt rst mal noch 1
=========================================
Erklärung der perspektive und vollständiger ersatz für den Opengl1 Matrixstack
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
@oc2k1: ich stimme Dir zu. Aber ich möchte eines anregen: In das erste Tutorial sollte vorneweg ein erklärender Vierzeiler kommen. Es ist eine Wohltat, wenn man erstmal ganz kurz und prägnant darüber informiert wird,
1. Worum es sich genau handelt (Computergrafik ganz kurz anreißen)
2. Was vom Leser in weiterer Folge geleistet werden muss bzw. erwartet wird (nötige Kenntnisse bzw. die Bereitschaft zu lernen)
Wir ersparen damit sowohl uns als auch den interessierten Lesern eine Menge Zeit. Erfahrungsgemäß kommen hier Leute an, die die nötigen Kenntnisse noch nicht haben - darum kommen sie ja eben her. Denen sollte man fairerweise die Chance geben, selbst zu beurteilen, ob sie so etwas anfangen wollen oder nicht. Schönfärberei wäre hier fehl am Platz.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich habe hier nun das Algebra ausgegliedert und als Grundlage Kategorisiert.
Wer nicht fit ist kann hier anfangen, wer einigermaßen fit ist, kann es überspringen und rein gucken, wenn er mal etwas nicht weiß(Nachschlagewerk).
Aufgrund der Empfehlungen, dass man vieleicht erstmal zeigen sollte, wie OpenGL später aussehen kann.
Habe ich einen Artikel "Vorschau auf das kommende" am Anfang eingefügt.
In diesen Tutorial wird dann einfach ein komplexeres OpenGL Programm gezeigt(binary,Screenshots/video what ever) und auch garnicht erläutert(nicht auf den code eingegangen), damit man einfach sehen kann, ist es das was ich will.
Dazu sollte dann auch ein bischen Text rein, was der Entwickler zu erwarten hat.
Oc2k1 übte Kritik über die Verwendung von Windows und Linux Code, für die Erstellung des Grafikcontext. Es sei doch einfacher SDL zu nehmen und die Erstellung von einem Kontext lässt man eh von einer Bibliothek machen. Natürlich ist das richtig allerdings ist dies eine OpenGL3 Tutorialreihe und kein OpenGL3 mit SDL. OpenGL3 hat genau 2 Möglichkeiten einen Grafikkontext zu erstellen und der eine ist für das Linux und Mac OS zur verfügung stehende X11 Desktopfenster System und der andere ist für das Windows Fenster System. Darum sollen auch diese beiden Funktionalitäten von der OpenGL API vorgestellt werden. Mir ist es auch nur wichtig, dass die Erstellung des GC erläutert wird und nicht ein ganzes Funktionfähiges Windows und Linux Beispiel durch exerziert wird.
Sollte er diesen Weg einschlagen, dann kann er sich durch den beiligenden und vollständigen Programmcode arbeiten oder mit SDL wählen. Das muss jeder für sich entscheiden.
Die Verwendung eines Frameworks hat auf die weiteren Artikel keinen Einfluss, da man nie wieder mit dem Fenstersystem in berührung kommt.
Zum Thema Beispielcode, ich kann es natürlich auf einfaches c runter brechen, ich hatte code gewählt, weil ich so nur copy/paste aus meinen Bibliotheken machen brauchte und die Typnamen geändert habe.
Zum Thema Exkurs zur Optimierung, ich habe es 2 Leuten zum rein schauen gegeben und der eine von beiden war ein Anfänger und war sehr glücklich über diesen Bereich.
Der andere hatte mit OpenGL nichts zu tun und meinte, dass er einfach den Schluss übersprungen hat, es heisst ja auch Exkurs.
Meinungen sind erwünscht!
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wenn die Optimierungen zusammen mit dem gesamten Matheteil als Grundlagen ausgelagert werden, so wie jetzt, dann ist das OK. Denn der Ausgelagerte Teil ist dann Thematisch eine Einheit. Bestehend aus den Grundlagen und Hinweisen zur Optimierung am Ende. So ist das Ok.
Wenn das alles in einem Größeren Tutorial mit einem anderen Thema, nämlich OGL3, eingebaut wäre, würde das dann nichtmehr so passen. Das wäre quasi dann eine Ergänzung zu einer Ergänzung.
Ich sehe es im Allgemeinen so wie oc2k1:
Unsere Tutorials wurden deshalb so gut angenommen, weil Anfänger schnell zu Ergebnissen kamen. Erst im weiteren Verlauf mussten sie feststellen, dass das Erreichte nur der Anfang war und es jetzt erst richtig losgeht. Auf die Art hält man die Motivation hoch. Wenn man alles vom Urschleim her erklärt und dabei am Ende noch nichtmal was "zum rumspielen" bei rauskommt, dann verliert man schnell die Lust.
Bei den Alten Tutorials haben wir durch den Quickstart und dem Sonnensystem-Beispiel innerhalb von 2 Tutorials einen recht großen Fortschritt gemacht. Dabei wurde nicht alles Haarklein erklärt, sondern nur soweit, dass ein grundlegendes Verständnis dafür da war. Die Anfänger hatten nach 2 Tuts das Gefühl mit OpenGL was machen zu können. Das ist das aller Wichtigste: Den Leuten das Gefühl zu vermitteln, dass Sie mit OpenGL3 ihre Ideen umsetzen können. Und zwar ohne Computergraphik zu studieren.
Ich wäre deshalb dafür die detailierten Erklärungen und Optimierungen erst später zu bringen. Quasi so ein Stufenmodell:
Stufe 1: Dem Leser etwas OpenGL3.0iges geben damit er sieht es läuft auf seinem Rechner und er hat das gerade selber gemacht. Toll!
Stufe 2: Dem Leser die Basissachen beibringen. Wie z.B. Rotationen, Texturen, Blending, Selektion.
Stufe 3: Dem Leser erklären, dass die gelernten Sachen in großen Projekten so nicht gehen werden, sondern dass man optimieren muss --> Optimierungen für das gelernte.
Stufe 4: Komplexe Sachen und Effekte die man einem Anfänger nicht zumuten würde.
Stufe 5: Shaderpower!
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Mitglieder in diesem Forum: 0 Mitglieder und 4 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.