Das X Window System des Massachusetts Institute of Technology ist inzwischen zu einen Standard im Bereich der Grafik auf Unix Systemen geworden. Deshalb wurde der Raytracer und dessen Tool für dieses System geschrieben.
X ist eine Client-Server Architektur, auch wenn X nur auf einer Maschine betrieben wird. Es gibt den Server der auf dem Rechner läuft an dem sich die Grafikkarte und der Bildschirm befindet. Der Server enthält die Routinen die eng mit der Grafikhardware zusammenarbeiten, den Treiber für die Grafikkarte. Der Client ist das Anwendungsprogramm welches auf dem Bildschirm eine Ausgabe macht. Hier zeigt sich der Vorteil der Client-Server Architektur, denn der Client brauch nicht auf der Maschiene laufen auf der sich das Display befindet. So ist es möglich auf einem Server der kein Bildschirm hat den Client (Anwendungsprogramm) zu starten und am Arbeitsplatz der eine Grafikkarte und einen Bildschirm besitzt kann das Programm sichtbargemacht werden und man kann so arbeiten als wenn das Programm lokal gestartet wäre. Dies ist nur dann von Vorteil wenn der Server eine höhere Rechenleistung besitzt als die lokale Maschiene. Abb. 3.
Abbildung 3: Client Server Architektur
Da der X-Server den Zugriff auf die Hardware hat, ist es auch möglich die Hardware - 3D Funktionen der Grafikkarten zu nutzen. So kann der Client auf einem Server gestartet werden und das Display welches zusätzlich die 3D Funktionen in Hardware ausführt kann die Grafik anzeigen. Dies führt zu einer hohen Grafikleistung.
Ein Engpass kann das Netzwerk sein, denn alle Grafikbefehle können nur durch eine Kommunikation mit dem Server ausgeführt werden. Um nicht bei jedem Bildpunkt eine Kommunikation über das Netzwerk erfolgen muß wird größtenteils gepuffert gearbeitet.
Zusätzlich gibt es auch Erweiterungen des X-Protokolls (definierte Kommandos die über das Netzwerk geschickt werden, damit der Client und der Server Daten austauschen können), eine Erweiterung ist die PEX-3D Extension, hierbei handelt es sich um eine Erweiterung der Kommunikation damit die 3D Funktionalität der Hardware genutzt werden kann. Abb. 4 Man kann sich vorstellen wenn eine Linie gezeichnet werden soll kann man ersten jeden Bildpunkt einzeln über das Netzwerk an den Server schicken, das währe recht aufwendig. Besser ist es wenn man das Kommando ,,zeichne Linie von x1,y1 nach x2,y2'' an den Server schickt. So kann man sich die PEX3D Erweiterung vorstellen, dies aber in 3dimensionalen Raum. Wenn eine Linie von x1,y1,z1 nach x2,y2,z2 gezeichnet werden soll muß der Client diese als Projektion in dem 2dimensionalen Raum berechnen und dann dem Server sagen ,,zeichne Linie von x1, y1 nach x2, y2''. Wenn der Server die PEX3D Erweiterung hat kann dem Server gleich gesagt werden ,,zeichne Linie von x1,y1,z1 nach x2,y2,z2''.
Abbildung 4: PEX Protokollerweiterung
Das hat viele Vorteile, erstens kann die Rechenlast vom Client auf den Server verteilt werden, zweitens braucht nicht jeder Client den ganzen Programmcode für die Berechnung der Grafik, sondern der Code steckt nur einmal im Server. Ein großer Vorteil ist darin zu sehen das der Server die Funktionalität nicht braucht wenn die Hardware das kann, so kann der Server das Kommando gleich an die Hardware weiterreichen und es muß nicht mehr vom Prozessor gerechnet werden. Als großen Nachteil ist die Entwicklung der Extension zu sehen, das PEX3D hat zur Zeit den Stand von 1992, und es ist leider so das die Entwicklung nicht mit der Entwicklung von den Grafikbibliotheken mithalten kann, wer also eine hohe Funktionalität zum Beispiel für ein CAD-System benötigt ist darauf angewiesen die Programmbibliothek im Client unterzubringen. Beim XFree86 ist es leider noch so das die für PC-Technik erhältlichen 3D-Grafikkarten mehr als Spielekarten zu betrachten sind, so das der X-Server zwar die 3D Erweiterung hat, diese aber selbst in 2D umrechnet und somit die Hardware nicht nutzt.
Es gibt noch viele weitere Extensionen der X-Server wie XIE die X-Image-Extension die alle derzeitigen Algorithmen für die Bildbearbeitung zur Verfügung stellt. XIE und PEX3D sind Erweiterungen die beim Start des Servers dazugeladen werden müssen, da diese nur von einigen Programmen benötigt werden werden diese Standartmäßig nicht geladen. Das spart Speicherplatz da die Funktionalität doch sehr groß ist.
Das X Windowsystem legt keine feste Benutzeroberfläche fest, es stellt nur die Windows zur Verfügung. Die grundlegenden Grafikfunktionen werden von Xlib zur Verfügung gestellt, hier gibt es keine Bedienelemente. X Toolkit Intrinsics fassen immer wiederkehrende Grafikoperationen zu Widgets zusammen. Widgets sind Grafikobjekte, aus denen man sich nach dem Baukastenprinzip die gesamte grafische Oberfläche basteln kann, wie Buttons, Rollbalken, Menüs, etc.. Xlib und Intrinsics sind Bestandteil des X Window Systems.
Da diese Bibliotheken für eine Grafische Bedienoberfläche noch recht wenige Bedienelemente zur Verfügung stellt gib es aufbauent auf dem XToolkit weitere Bibliotheken, eine viel angewendete ist Motif. Motif wird von der OSF entwickelt und ist ein Kommerzielles Produkt, es berücksichtigt die Standards CDE und IEEE 1295.
Motif baut auf Intrinsics und Xlib auf, es existiert eine Klassenhierachie von Widgets. Motif stellt eine sehr Umfangreiche und flexible Bibliothek von Widgets zur Verfügung, mit dessen Hilfe man sehr effizient eine Grafische Oberfläche für das Anwendungsprogramm zusammenbauen kann.