ARCHIV 1999-2006

ARCHIV :: # 1281

Apple, die Erfinder der Echtzeitshader-API?

Überraschende Fundstücke aus der Vergangenheit

Autor: kai - Datum: 27.09.2002

Seit John Carmack die Industrie wissen lies, dass er die Zukunft von Echtzeit-3D in einer Highlevel-Shadersprache sieht ist das Thema in aller Munde. Mit dem GeForce3 kam der erste Chip raus, der eine programmierbare Shadereinheit hatte. Ich habe selbst viel lesen müssen, was das jetzt im Endeffekt genau bedeutet und wie das ganze funktioniert und was es für Möglichkeiten bietet, und um denen, die davon noch nichts wissen hier mal meine extrem verkürzte Zusammenfassung (ohne Gewähr).. Programmierbare Shader wie es sie in GeForce 3&4, Radeon 8500/9000/9700 und 3dlabs P10 und Matrox Parhelia gibt, stellen die logische Weiterentwicklung vom T&L (Transformation & Lighting) der früheren Chips (GeForce1,2,2mx,4mx,Original Radeon) dar. Während beim T&L aber nur die Transformation und die Beleuchtung von der GPU, also dem Grafikchip übernommen wurde, bieten Realtime-shader die Möglichkeit, durch winzige Programme, die man an den Grafikchip schicken kann, völlig frei zu bestimmen, wie mit den jeweiligen Vertexdaten eines Objekts (Texturkoordinaten, Position, Farbe, Transparenz) auf welche Art und Weise verfahren wird. Die Möglichkeiten, die sich dadurch ergeben sind unendlich und nur durch den Einfallsreichtum der Programmierer beschränkt. Früher musste man für eine simple Deformation eines Modells die kompletten Vertexdaten wieder an die Grafikkarte übertragen, mittels Shader kann man sich das sparen. Ein paar Beispiele für Shader-Effekte sind Deformationen aller Art (z.B. "Aufblasen" und Verbiegen von Objekten), Displacementmapping (d.h. "echtes" Bumpmapping, bei dem die Oberflächenstruktur real vorhanden ist), Fellsimulation, CPU-unabhängige Partikelsysteme (auch "echter" Nebel in Form von Schwaden oder Wolken!), Toon Shader, Caustics (Lichtbrechung unter Wasser), Reflektionen, realistischer Schattenwurf (wir erinnern uns an die Doom3-Demo zur GeForce3-Präsentation auf der MacWorld Tokyo!) und Bewegungsunschärfe. Diese Shader sind, wie von Carmack gewünscht, mittlerweile in einer High-Level-Shadersprache programmierbar, davon sind seit der Einführung des GeForce3 einige erschienen, am populärsten ist wohl nVidias Cg und Microsoft's HLSL (DirectX)
Nun gut, zurück zum Thema: Da bei den 10.2 Entwicklertools u.a. ein Programm namens OpenGL Shaderbuilder dabei ist mit dem man ebensolches programmieren kann, begab ich mich im Netz auf die Suche nach den .shdr-Dateien, die das Programm verwendet um zu sehen, ob irgendjemand vielleicht schon tolles Zeug wie das hier programmiert hat. Irgendwann fand ich mich auf Apples Webseite wieder, und was ich da per Zufall fand, konnte ich kaum glauben: Eine Entwickler-Seite von 1997, die soweit ich das sehe mehr oder weniger das beschreibt, was jetzt als neuester Hype gefeiert wird! Die API hiess Quickdraw3D, und war ihrer Zeit offensichtlich weit voraus! Sicherlich, das Hardwaregegenstück programmierbarer Grafikchip fehlte damals, aber im Gegensatz zu den damals erhältlichen netzwerkrenderingbasierten Shader-APIs wie Renderman war Quickdraw3D durchaus eine Realtime-3D-API!
Tja.. Ich glaub, es wird Zeit, das "leading the way" mp3 rauszukramen....Apple war seiner Zeit scheinbar mal wieder voraus, Newton etc. lassen grüssen!..

P.S.: Und wer noch nicht genug hat vom Trip in die Vergangenheit, der sollte sich mal den offiziellen Apple-Mirror ansehen! Hurra, Apple hat ein Unix! ;-)

Kommentare

Hurra, Apple hat ein Unix! ;-)

Von: LC II-Besitzer | Datum: 27.09.2002 | #1
"Hurra, Apple hat ein Unix! ;-) "
Wir haben vorhin noch versucht, A/UX auf einem LC II und einem Performa 475 zu installieren. Leider erfolglos. Benötigt dieses System tatsächlich eine FPU, um einen Kernel zu kompilieren?

Hardware

Von: ufish | Datum: 27.09.2002 | #2
Gab es nicht auch mal eine HWBeschleunigerkarte für Quickdraw 3D von Apple?

Von: Günther | Datum: 27.09.2002 | #3
AU/X benötigt tatsächlich eine FPU bzw. einen 68040 Prozessor. Unterstützte Systeme sind die Quadras bzw. Apples Serverlinie. Selbst auf einem LC mit "richtigem" 68040er dürfte es schwer sein AU/X zum Laufen zu bringen. Ich hatte bisher mit Quadra 650/700/800/900ern Erfolg. Auch soll es mit aufgerüsteten Centris gehen, da die die selbe Platine wie die Quadras haben.

Günther

Schade!

Von: LC II-Besitzer | Datum: 27.09.2002 | #4
Danke für die Infos, Günther.
Der nächst größere ist leider ein PM8100, auf dem auch weder A/UX, noch NetBSD laufen. Mal zu klein/alt, mal zu groß/neu -- es wäre zum verzweifeln, wenn nicht wenigstens MacOS vernünftig laufen würde ;-)

Von: Mike | Datum: 27.09.2002 | #5
A/UX habich auf einem IIfx laufen ;-)

Man darf das letzte update für den AWS nicht draufspielen, ausser es IST ein AWS ...

Und es ist leider in der Tat sehr schwer das Teil auf einer Breiten Palette von Kisten zum Laufen zu bringen, am besten gehen 68040-basierte Quadras.

Die schnellste Kiste, die zu der Zeit verfügbar war, wurde in der Regel für die Entwicklung verwendet, und dort läufts halt auch immer am besten...

****

>Die API hiess Quickdraw3D, und war ihrer Zeit offensichtlich weit voraus!

Klingt als ob Du behaupten wolltest, QD3D nicht zu kennen ? Nie 3D Modelle unter System 7/8 im "Album" gedreht, äh geruckelt ? *ggg*

Schande über Dich! Aber nun mehr ists egal ;-)

Das gab's schon in den Achtzigern

Von: M. Bresink | Datum: 28.09.2002 | #6
Programmierbare Shader wurden von Rob Cook und Pat Hanrahan Anfang der 1980-er Jahre bei Lucasfilm erfunden. Die Technik floss in das Grafiksystem REYES ein, aus dem später RenderMan und die Firma PIXAR entstand.

RenderMan ist durchaus als Echtzeit-API geeignet, nur die Software "PRMan" (Photo-Realistic RenderMan), die eine von vielen Varianten ist, ein RenderMan-System umzusetzen, braucht so viel Rechenkapazität, dass man sie nicht in Echtzeit laufen lassen kann. Eine komplette RenderMan-Umgebung (sowohl mit einem echtzeitfähigen Renderer ähnlich wie QD3D als auch mit einem im Netzwerk parallelisierbaren PRMan) war fester Bestandteil der Vorgängerversionen von Mac OS X, nämlich NEXTSTEP 3.x und OpenStep. Steve Jobs verkaufte solche Systeme schon seit September 1992.