Datendschungel
Freitag, 24. August 2007
Was macht eine Grafikkarte?
Hmm ja... Das sind doch diese Dinger die man in den Computer steckt und erstmal nicht viel bemerkt.... Bis man ein Spiel startet. Das sieht auf einmal wunderbar aus. Aber wieso um Himmelsgottswillen? Der Computer ist ja noch gleich schnell, oder?

Um das zu erklären machen wir einen kurzen Abstecher in die Geschichte und Technik von 3D, keine Angst, ich werde versuchen mich einfach auszudrücken. Und wenn ihr nur Bahnhof versteht guckt euch doch kurz den Artikel Ganz simpel an, okay? ^^

Also: Zuerstmal hatten Computer keine Grafik, sondern nur Drucker. Irgendwann kam dann mal einer auf die Idee das ein Fernseher doch Ideal währe. Aber einen Bildschirm zu beschreiben ist gar nicht so einfach, dazu muss nähmlich das Signal erst in ein Format gewandelt werden das ein Bildschirm anzeigen kann. Und dieses Bild will auch generiert werden...

Dazu hat man erstmal einen Speicher. Dieser wird von einer Art Konverter ausgelesen und dann auf den Bildschirm übertragen. Jetzt gibt es eigentlich zwei Möglichkeiten was man in diesen Speicher schreiben kann: Entweder man schreibt in diesen Speicher direkt ein Zeichen. Dazu gibt es ein spezielles System, das ASCII System. Dabei wird jedem Zeichen eine Zahl zugeordnet, also eine Einheit mit der ein Computer umgehen kann. Eigentlich kann man damit nicht wirklich Zeichnen, sondern nur Buchstaben Ausgeben. Aber damals war Speicher teuer und so konnte man ihn sehr gut sparen, denn in einem Byte (acht Nullen oder Einsen) kann man locker einen solchen Buchstaben unterbringen. Und die Tabelle welche Zahl welcher Buchstabe ist konnte man auf Festspeicher unterbringen, die kann man nicht beschreiben sind aber sehr viel billiger. Und vom beschreibbaren Speicher braucht man nicht viel, damals konnte man sowieso meist nur 40 Zeichen auf dem Bildschirm... Also 40 Bytes Speicher.

Aber was hat das jetzt mit 3D zu tun? Nun es gibt auch noch ein anderes System, das Bitmapping: Dabei wird bei jedem Pixel (Punkt auf dem Bildschirm) ein eigener Speicher festgelegt in dem gespeichert ist was dieses Pixel denn jetzt tun soll. Am Anfang machte man das noch so das man ein Bit pro Pixel nutzte. Auf gut Deutsch: War ein Bit auf eins, war das entsprechende Pixel weiss, war das Bit auf 0 war es schwarz. Dadurch brauchte man nicht soviel Speicher, der wie gesagt seht teuer war.

Okay das ist noch immer kein 3D, aber wir kommen der Sache näher: Als Speicher billiger wurde benutze man immer mehr Speicher benutzt um Farbe darzustellen, das heisst da die Zahl jetzt eine Farbe angibt. So sind mit einem Byte pro Pixel schon 256 Farben möglich. Das wurde mit der Zeit als Speicher immer billiger wurde immer mehr ausgweitet. Heute sind 32 Bit, also 4 Bytes normal. Das ergibt dann stolze 16.8 Millionen Farben.

Und jetzt komme ich zu 3D, ehrlich ;)

Die Idee hinter einer Grafikkarte ist folgende: In dieser Karte wird im Prinzip eine 3D Landschaft erzeugt und dann auf den Bildschirm projiziert. Dazu gebe ich der Grafikkarte Koordinaten wo meine Punkte zu stehen haben, und zwar in den drei Dimensionen: Breite, Höhe und Tiefe. Dazu sage ich noch wie man diese Punkte verbinden soll, also zb eine Linie zwischen zwei Punkten oder ein Dreieck zwischen Dreien. Ausserdem gebe ich noch eine Farbe für die Flächen an.

Ich habe das jetzt also in die Grafikkarte geschmissen... Und jetzt? Jetzt fängt die Grafikkarte an zu rechnen, wir haben nämlich noch einige Probleme:
1. Wir haben das ganze aus einer bestimmten Position festgelegt, man will sich aber bewegen können.
2. Die Flächen haben eigentlich noch keine Farben.
3. Das Zeugs muss auf den Bildschirm.
4. Ein Objekt ist hinter einem anderen, was mache ich jetzt?

Also: In dieser Karte wird eine 4x4 Matrix erzeugt. WARTET, nicht abschalten, ich erklärs ja ;). Eine 2x2 Matrix kann man sich als eine Fläche mit vielen Feldern vorstellen. Jede dieser Flächen hat eine Koordinate. Damit kann man dieses Feld ansteuern. Bei einer 3x3 Matrix kommt noch eine Dimension dazu, jetzt haben wir also die üblichen Koordinaten Tiefe, Höhe und Breite. Versucht euch nicht eine 4x4 Matrix vorzustellen, das geht in der realen Welt nicht. Man kann einfach sagen das in dieser vierten Dimension gerechnet wird, alles andere wird zu kompliziert....

Naja jedenfalls ist das auch schon der erste Grund wieso man eine Grafikkarte braucht: Bis dahin waren Grafikkarten Hauptsächlich dieser Speicher. Nun wurde etwas neues erfunden: Der GPU (Grafic Prozessing Unit). Dieser ist auf solche Matrix-Rechnungen spezialisiert und ist darin rund 30(!) mal schneller als ein normaler Prozessor!

Jetzt kommt der nächste Schritt: Farbe! Das ist zugleich auch der dritte...
Und das geht so: Da wir die Formen jetzt in einer Matrix haben kann man auch einfach die Position der "Kamera" bestimmen, indem man sie auch einfach in die Matrix legt. Also wissen wir jetzt wie viel dieser Formen sichtbar ist. Diese werden jetzt Pixel für Pixel in die entsprechende Farbe gewandelt.

Und jetzt noch der letzte Punkt: Was passiert wenn eine Form überdeckt wird? Dazu hat jeder Pixel neben den üblichen Farbangaben noch einen zusätzlichen Speicher in dem sozusagen die Entfernung zur Kamera gespeichert ist. Damit lässt sich einfach feststellen was vorne und was hinten ist.

Soweit sogut, aber was mache ich wenn ich z.b. einen Bildschirm (also im Bild ^^)? Nun dieser ganze Vorgang oben spielt sich in einem Buffer, also einem Speicher ab der dann ausgelesen wird. Und was man jetzt macht ist das man einfach mehrere Buffer anlegt. Das heisst das man meist für ein normales Bild zwei Buffer hat: Im einen ist das aktuelle Bild, im anderen wird das neue Zusammengesetzt. Wenn das neue komplett ist werden die Buffer vertauscht und das neue Bild angezeigt. Das macht eine moderne Grafikkarte teilweise hundertmal in der Sekunde, selbst bei Spielen wie FEAR....
An dieser Technik gibt es auch ein Nachteil: Der Bildschirm 2 würde auch in Echtzeit berechnet, das heisst es bräuchte die doppelte Power.... Das ist auch der Grund wieso das Spiegelung und ähnliches Zeug auch heute noch nicht ganz echt wirkt.

So das wars mal wieder, bis denne
Euer Fanatik

Permalink (0 Kommentare)   Kommentieren



Mittwoch, 22. August 2007
Navigation im Weltraum?
Ich werde hier mal etwas ausbrechen und was erzählen was nur ein Hirngespinst meinerseits ist: Sollten wir irgendwann durch den Weltraum fliegen, wie orientieren wir uns dann?

Das Problem ist ja das sich da draussen alles bewegt, man also keinen Fixpunkt hat, ausserdem kommt noch eine neue Achse dazu.

Ich hatte da mal folgende Idee: Man nehme die Sonne und lege darauf ein Netz, ganz so wie bei der Erde. Nur wird an jedem Schnittpunkt des Netzes noch eine Achse gegen oben hinzugefügt. Das Problem was wir jetzt noch haben, nämlich das nichts fix am Himmel steht, liesse sich dann einigermassen einfach umgehen:
Man lege fest welchen Kreis die Sonne voraussichtlich wandern wird. Wenn man nun einen Planet oder ähnliches in unserem Sonnensystem errechnen will dann gibt man einen Fixpunkt zu einem bestimmten Datum, die Umlaufbahn und die Geschwindigkeit an. Daraus liesse sich dann immer die aktuelle Position errechnen. Und wenn es nicht in unserem System sein sollte dann kann man auch eine weitere Sonne im Verhältnis zu unserer berechnen, und dann um diese denn entsprechenden Orbit.

Ich weiss nicht ob das funktionieren würde wenn nicht dann sagt es mir doch ^^ Was ich auch noch gerne wüsste: Wie macht man sowas heute?

Permalink (0 Kommentare)   Kommentieren



Montag, 20. August 2007
Wie geht das mit dem Internet
Jeder nutzt es jeder kennt es: Das World Wide Web. Aber was steckt dahinter? Nun angefangen hat das alles in der Schweiz an der CERN (Conseil Européen pour la Recherche Nucléaire) wo ein Mann namens Tim Berners-Lee eine Methode suchte einfach wissenschaftliche Informationen zu publizieren. Es sollte jedem möglich sein dort etwas zu schreiben und etwas zu lesen. Schliesslich macht er das so: Es gibt einen Server (eigentlich ein ganz normaler PC) dort läuft ein Programm das Zugriffe auf ein bestimmtes Verzeichnis regelt. Und damit man auch auf dieses Verzeichnis zugreifen kann, bekommt jeder Computer der sich in dieses Netz einloggt eine Nummer, die so genannte IP.

Dies sind 4x3 Zahlen nach dem Schema 000.000.000.000, welche automatisch zugewiesen werden. Diese werden übrigens knapp weshalb im Moment auf eine neue Technologie umgesattelt wir d, IPv6. Dadurch wird eine Hexadezimale (Dort ist 16 zehn, das heisst also das erst bei sechzehn eine zweite Ziffer angehängt wird wobei die zahlen 10-16 durch die Buchstaben a-g ersetzt werden) Zahl in diesem Muster verwendet:

0000:0000:0000:0000:0000:0000:0000:0000

Durch die Hexadezimale Schreibweise sind somit 340,28 Sextillionen IP Adressen verfügbar. Um euch das zu Augen zu führen: Das sind pro Quadratmillimeter der Erde ca. 667 Billiarden Adressen. Das sollte eigentlich genügen ;)

Aber jetzt weiter im Text: Diese IPs waren doch recht umständlich zu handhaben und so hat er noch Domains hinzugefügt. Diese funktionieren so:

http://<-- Das ist das benutze Protokoll (später)
www. <--- Kann auch ein anderer Name sein, zb forum. man nennt das subdomain
google. <--- Der eigentliche Name der Seite
de <--- Der so genannte Top-Level-Domain. Dieser wird von speziellen Anbietern zusammen mit einem Namen vergeben, eben zb Google.

Ausserdem könnte man noch speziell angeben welche Datei man jetzt will.

Ausserdem gibt es noch Transfer Protokolle, hauptsächlich http für normale Webseiten und ftp für Datenübertragung.

Jetzt fehlt uns nur noch etwas: Eine Möglichkeit Texte für dieses System zu schreiben, und vor allem die spezielle Eigenschaft des Internets zu nutzen: Die Links. Dazu hat er HTML (Hypertext Markup Language) entwickelt. Damit schreibt man eigentlich einfach einen Text und kann durch einfache Befehle Schriften simpel formatieren und Links setzten. Natürlich entwickelten sich weitere Sprachen die weit mehr möglich machten, allerdings würde das hier etwas zu weit gehen. Daher machen wir das vielleicht später mal noch.

So jetzt haben wir alles technische aber noch können wir damit nichts anfangen. Jetzt kommt das sogennante Server-Client (Sklave-Kunde) Modell zum Zug: Auf einem Rechner läuft ein Programm das einen Ordner verwaltet in dem die Website liegt. Wenn nun eine Anfrage auf diesen Server kommt dann schickt er die geforderten Daten zurück. Und dort steht der Client Rechner, also zb deiner wenn du das hier liesst. Dort läuft ein Browser der diese Anfragen verfassen kann und auch die Dateien anzeigen kann die er bekommt (eben zb HTML).

Diese Verbindung sucht sich selbst einen Weg durch das Netz, das heisst also das meist kein direkter Kontakt zwischen Client und Server existiert sondern sich irgendwo durch die Welt schlängelt. Heute gibt es 13 Grosse Rechner die solche Anfragen zu einem grossen Teil weiterreichen.

Weil es aber vorkommen kann das nun manche Daten länger haben weil sie einen anderen Weg genommen haben wurden Pakete entwickelt. In diesen sind kurze Sequenzen der Daten gespeichert und dieser werden dann auf dem Client wieder zusammengesetzt.

Noch kurz zur Geschichte des Internets: Zuerst wurde es wie gedacht Hauptsächlich in der CERN verwendet. Irgendwann kam aber das US Militär auf die Idee das eine solches Netz im Kriegsfall besser zu halten wäre als ein Traditionelles da es keinen Zentralen Punkt gibt denn man ausschalten kann. Dadurch wurden viele Universitäten mit dem Internet verbunden weil sie Militärisch wichtig waren. Und bald hatten das fast alle Unis und die Studenten benutzen E-Mail und schrieben Websiten. Irgendwann kam es dann auch an die Öffentlichkeit. Und da ist es passiert: Man schrieb kaum noch im Internet, niemand hatte Zeit und Lust sich in die Technologien einzuarbeiten. Aber das geht jetzt wieder zu ende: Durch Blogs und Dinge wie MySpace oder Foren wird das Internet wieder von den Usern regiert...

Bis bald:
Fanatik

Permalink (0 Kommentare)   Kommentieren