Die Suchmaschine spuckt nur ihren nach Klickanzahl sortierten,
Werbung-gesponserten, Zielgruppen-relevanten Algorithmen-Dreck aus ...
Soviel ich weiss muss eine 3D-GPU aus Koordinaten Linien zwischen
Punkten zeichnen können und diese mit Flächen füllen, vielleicht Textur
draufmachen je nach Lichtwinkel beleuchtet usw.
Wie funktioniert das überhaupt ? Läuft da Microcode drin ? Es müsste
wohl recht viel und schnell berechnet werden ...
Natürlich geht das. Eine "einfache" 3D-GPU ist nichts anderes als ein
Mikroprozessor, der eine Grafikpipeline "emuliert". Eine Grafikpipeline
ist relativ komplex, gugst du:
https://de.wikipedia.org/wiki/Grafikpipeline
2⁵ schrieb:> Eine "einfache" 3D-GPU ist nichts anderes als ein> Mikroprozessor, der eine Grafikpipeline "emuliert".
Bis vor 1-2 Jahren hattest du recht. Aktuell setzen sich allerdings
Analogprozessoren durch, da hier eine Linie einfach durch einen
Verstärker mit entsprechendem Steigungsfaktor generiert wird, ganz ohne
Takt und Latenz.
Flächenfüllen ergibt sich aus einem Komparator (entweder kleiner als die
Linie oder größer -> gefüllt oder leer).
Man kann natürlich einen FPGA nehmen, wenn einen die neuen Entwicklungen
nicht interessieren. Bei den Fragen wird auch eher der Stand von 1990
erreicht als der Stand von 2010, von daher sollte es ausreichen.
Konrad schrieb:> Aktuell setzen sich allerdings Analogprozessoren durch, da hier eine> Linie einfach durch einen Verstärker mit entsprechendem Steigungsfaktor> generiert wird, ganz ohne Takt und Latenz.
Ist das so? Und wo genau setzen sich die durch? Haben aktuelle GPUs der
großen Hersteller solche Analogschaltungen eingebaut?
Aber ja, man kann in FPGAs auch eine GPU einbauen. Es gab sogar mal ein
Projekt mit einer FPGA Grafikkarte:
https://en.wikipedia.org/wiki/Open_Graphics_Project
Um eine Linie zwischen zwei Punkten in n-Dimensionen zu zeichnen gibt es
Algorithmen. Genauso für das Füllen von Flächen.
https://de.wikipedia.org/wiki/Rasterung_von_Linien
Konrad schrieb:> Analogprozessoren
Hm... ich versuche gerade, Analogprozessoren mit meiner Vorstellung von
3d-Modellen die mittels eines größeren Aufwandes peu à peu in einen
2d-Framebuffer gerastet werden zu verbinden und schaffe dies nicht.
Könntest du hier mehr Infos geben? Zumal die Darstellung von einfarbigen
Linien bzw. Flächen im 3d-Prozess eher weniger gebraucht wird. Mir wäre
auch neu, dass diese Technik im Consumerbereich (Nvidia und AMD) benutzt
wird. Hier wird, vereinfacht gesagt, nach wie vor durch eine hohe Anzahl
von Unified-Shadern die parallel arbeiten die Aufgabe erledigt.
Zur eigentlichen Fragestellung: Die ersten brauchbaren Consumer-Chipsets
(Voodoo 1 & Co) kamen ja erst Mitte der 90er Jahre raus, ebenso die
PlayStation 1. Die damalige 3d-Leistung war ja noch arg limitiert. Die
Profikarten vorher (TIGA & Co) wahren ja eher Signalprozessoren, die
sich auf dem Framebuffer austoben durften. Trotz allem dürfte der
Nachbau eines aus heutiger Sicht simplen 3d-Chipsatzes (Voodoo oder PS1)
trotzdem noch eine anspruchsvolle Aufgabe sein.
Wobei man ja auch Silicon Graphics nicht vergessen darf, die hatten ja
schon Ende der 80er Jahre Geometrie-Coprozessoren. Evtl. findet man hier
Informationen, wie diese aufgebaut waren.
2⁵ schrieb:> Trotz allem dürfte der> Nachbau eines aus heutiger Sicht simplen 3d-Chipsatzes (Voodoo oder PS1)> trotzdem noch eine anspruchsvolle Aufgabe sein.
Das stimmt, aber es ist jetzt möglich. Damit meine ich, dass es
heutzutage günstige FPGA Boards mit groß genugem FPGA gibt um sowas als
Projekt anzugehen. Das wäre vor 15 Jahren für Privatleute nicht
bezahlbar gewesen wenn es überhaupt in ein damals verfügbares FPGA
gepasst hätte.
Gustl B. schrieb:> Konrad schrieb:>> Aktuell setzen sich allerdings Analogprozessoren durch, da hier eine>> Linie einfach durch einen Verstärker mit entsprechendem Steigungsfaktor>> generiert wird, ganz ohne Takt und Latenz.>> Ist das so? Und wo genau setzen sich die durch? Haben aktuelle GPUs der> großen Hersteller solche Analogschaltungen eingebaut?
Das ist ziemlich unwahrscheinlich, da die für compute-Anwendungen
ziemlich nutzlos wären.
Kann man solche Analogschaltungen in 7nm FinFET überhaupt umsetzen? Hat
hier jemand genug Ahnung von dem Thema oder Quellen, um die Frage zu
beantworten?
Konrad schrieb:> Man kann natürlich einen FPGA nehmen, wenn einen die neuen Entwicklungen> nicht interessieren. Bei den Fragen wird auch eher der Stand von 1990> erreicht als der Stand von 2010, von daher sollte es ausreichen.Gustl B. schrieb:> Das stimmt, aber es ist jetzt möglich. Damit meine ich, dass es> heutzutage günstige FPGA Boards mit groß genugem FPGA gibt um sowas als> Projekt anzugehen. Das wäre vor 15 Jahren für Privatleute nicht> bezahlbar gewesen wenn es überhaupt in ein damals verfügbares FPGA> gepasst hätte.
Vor ca. 10 Jahren hatte ich eine GPU geschrieben, zuerst nur
integerbasiert, später dann mit 24Bit-Float-Support. Eine Unit
ging locker in das kleinste CycloneII bzw. StratixI, d.h. mein
Projekt wäre auch ab 2005 möglich gewesen (frühere grosse
FPGAs hätten es auch getan, d.h. ab 2002/2003). Bei grösseren
FPGAs und mehreren Speicherkanälen wären auch 2-8 Units
möglich gewesen. Bei 150-200MHz (CylconeII) und 200-300MHz
(StratixI) wären man schon bei 2-8 mal 150-300MPixel, d.h.
deutlichst jenseits einer RivaTNT2 von 1999, etwa auch dem
Niveau einer GForce3 von 2001. Das kann man jetzt weiterrechnen
und kommt auf einer aktuellen Stratix oder Virtex auf etwa
den Stand von 2015. Das ganze allerdings ohne Shaderunits.
Wie aufwändig wäre es, die einfachste Form zu realisieren ? Also nur
einfarbig gefüllte Dreiecke zeichnen (mit Beleuchtung, Drehung zur
Kamera usw.) ? Es würde dann so aussehen wie im Spiel "Elite" nur
gefüllt ... vielleicht so wie in "Star Fox".
Ernst schrieb:> Wie aufwändig wäre es, die einfachste Form zu realisieren ? Also nur> einfarbig gefüllte Dreiecke zeichnen (mit Beleuchtung, Drehung zur> Kamera usw.) ? Es würde dann so aussehen wie im Spiel "Elite" nur> gefüllt ... vielleicht so wie in "Star Fox".
Der Aufwand hängt ganz stark davon ab, wie gut du dich mit dem System
auskennst, auf dem es laufen soll, wie gut deine Mathekenntnisse sind
und was du genau machen willst.
Für jemanden, der sich damit auskennt, sollte eine "minimale"
Grafikpipline in z.B. Python in ein paar Stunden umzusetzen sein. Jemand
der bis jetzt nur LEDs zum blinken gebracht hat und keine Ahnung hat was
ne Matrix ist, braucht für eine "Grafikengine wie in Star Fox, die auf
einem FPGA laufen soll, vermutlich mehrere Jahre.
Das hängt davon ab, wie gut du die entsprechenden
Algorithmen kennst und wie gut du sie in HDL umsetzen
kannst.
Grob teilt man das Design in folgende Teile auf:
- Register-Set zur Ansteuerung für die CPU
- Speicherinterfaces (mehrere für Vektoren,
Texturen, Z-Buffer-Read/Write und Pixelbuffer)
- TnL-Unit zum Transformieren der Vektoren
(per FPGA-internen MUL-Units)
- für slicebasierten Ansatz (teilt Dreiecke in
horz. Linien auf) ein oder mehrere Slicer-Units,
die alle 3 Linien der Dreiecke in horz. Slicepakete
unterteilt
- Slicer zum Zeichnen der horz. Slices
- (VGA- oÄ Ansteuerung, ist aber von den anderen
Einheiten unabhängig, da nur der Pixelbuffer ausgelesen
werden muss)
Die letzen drei Einheiten sind eiglich relativ einfach,
schwieriger sind die vielen Speicherinterfaces, da idR
nur ein Speicher (z.B. SDRAM) zur Verfügung steht.
Die Registerbank (z.B. per Altera-Avalon) ist idR auch
sehr einfach.
Ich kannte die Raster- und Mathealgorithmen recht gut,
die Umsetzung in HDL zu der Zeit war für mich auch sehr
einfach. Der Aufwand lag so bei 3-4 Monaten in der
Freizeit, der grösste Teil davon war bei mir das Testen.
Ernst schrieb:> Wie aufwändig wäre es, die einfachste Form zu realisieren ? Also nur> einfarbig gefüllte Dreiecke zeichnen (mit Beleuchtung, Drehung zur> Kamera usw.) ?
Dafür brauchst du nur ein paar OP-Amps. Wer sich auskennt, baut das in
einem Tag zusammen.
Konrad schrieb:> Dafür brauchst du nur ein paar OP-Amps. Wer sich auskennt, baut das in> einem Tag zusammen.
Operationsverstärkern waren nie so mein Ding - wollten einfach nicht ins
Hirn. Die sind ja auch recht komplex, ich meine das die
Ausbildungsunterlagen dazu über sehr viele Seiten gingen.
@Sigi:
Das klingt alles andere als einfach ... es wird wohl für mich
unerreichbar sein. Die FPGA haben wohl schon Multiplikations-Blöcke drin
- was kommt denn als nächstes :-)
Trotzdem danke ich euch für die Antworten ... einen Versuch war es wert.
Konrad schrieb:> Also nur einfarbig gefüllte Dreiecke zeichnen (mit Beleuchtung, Drehung zur
Kamera usw.) ?
>> Dafür brauchst du nur ein paar OP-Amps. Wer sich auskennt, baut das in> einem Tag zusammen.
Quatsch!
> Wobei man ja auch Silicon Graphics nicht vergessen darf, die hatten ja> schon Ende der 80er Jahre Geometrie-Coprozessoren.
Die brauchten dafür aber immer noch einen dicken Beisteller
und mehrere Hosenträger um ihn anzuschliessen.
Der erste echte 3D Adapter ist der ZX Leo.
Belegt räumlich zwar auch 4 Steckplätze, steckt aber im Rechner.
Konrad schrieb:> Aktuell setzen sich allerdings Analogprozessoren durch
Und die werden dann zusammen mit den autonomen Straßenfahrzeugen fertig.
Oder wo kann ich solche Grafikbausteine kaufen?
Konrad schrieb:> Ernst schrieb:>> Wie aufwändig wäre es, die einfachste Form zu realisieren ? Also nur>> einfarbig gefüllte Dreiecke zeichnen (mit Beleuchtung, Drehung zur>> Kamera usw.) ?> Dafür brauchst du nur ein paar OP-Amps. Wer sich auskennt, baut das in> einem Tag zusammen.
Ja, sowieso tut er das.
Und wer das in einem Tag zusammenbaut, der hat dann auch die nötigen
Fertigungsprozesse in der Hand, um diese analoge Bildverarbeitung auf
den selben Chip zu bringen wie das digitale Interface zum Prozessor und
dzum Display.
Nun. schrieb:> Hab ich abseits von Forschungsprojekten noch nichts gesehen.
Da war ja die vielgepriesene und wohlverdient in der Versenkung
verschwundene Fuzzy-Logik schon mal weiter.
Ernst schrieb:> Operationsverstärkern waren nie so mein Ding - wollten einfach nicht ins> Hirn. Die sind ja auch recht komplex,
Im Grunde nicht, so lange man mitten im Arbeitsbereich bleibt.
> ich meine das die> Ausbildungsunterlagen dazu über sehr viele Seiten gingen.
Naja, die Datenblätter von FPGAs samt integrierter Module sind ja nun
auch nicht von der schmalsten Sorte...