Wo wird ein Spiel gerendert?

  • Jaja, ich weiß, hardwaretechnisch übernimmt das Rendering von 3D-Spielen die GPU. Bei Spielen wird dabei das Verfahren der Rasterisierung verwendet. Aber irgendwo muss es dafür ja auch Softwareseitig was geben.

    Ist es die Engine des Spiels?
    Über diese werden viele Effekte gesteuert...

    Ist es die API (Direct3D/OpenGL)?
    Diese macht die ganzen Effekte überhaupt erst möglich...

    Ist es der Grafikkartentreiber?


    Ist das von Spiel zu Spiel unterschiedlich?

  • Ja es ist unterschiedlich. alte adventures sind ein beispiel dafür.

    Am Ende muss immer ein 2D Bild entstehen. Dein Monitor hat ne X und ne Y Achse, die ist in bestimmte teile eingeteilt, z.b. 1280x1024, ergo deine auflösung. im beispiel etwa 1,3 Millionen einzelne quadratische Pixel. für diese pixel muss ein farbwert bestimmt werden. bei nen bild oder halt vorgerenderten bildern wird im idealfall einfach jedes vorberechnete pixel übernommen, bei einem 3d modell geht das nicht.

    Die meisten Spiele bestehen aus anordnungen von dreiecken in einem 3D Raum. Es ist also ne 3te Achse, die Z im spiel. jetzt ist es die schwierigkeit diese idealen linien in pixel umzuwandeln, das rendern. stell dir eine kleine bildfläche mit einer diagonalen vor (mal nen strich auf karopapier), jetzt muss die grafikkarte entscheiden welche einzige farbe das karo bekommen soll. ist soviel linie drin das es schwarz werden soll, oder zu wenig das es weiß wird.

    am ende hast du dann flächen mit treppenförmigen kanten. und weil es 3d ist muss am besten vorher entschieden werden welche bereiche sichtbar sind und welche nicht, früher wurde einfach der z wert überprüft, heute etwas cleverer.

    weil das hässlich ist kommen dann noch effekte hinzu, wie transparenz, antialaising.

    Aber im Prinzip passiert das alles auf der grafikkarte. die api stellt nur die möglichkeit der befehle zur vergügung, die die engine ansprechen kann. der treiber hat da nicht viel mit am hut, er stellt wieder nur eine schnittstelle.

    OpenGL Code sieht deswegen ganz seltsam aus, weil objekte aufgerufen werden und verändert...

    Ein neuer Ansatz ist aber das rendering mit der cpu, wobei es das auch schon früher so 96 rum gab, da ist nur das problem das die cpu einem spezialisiertem chip unterlegen ist und zu langsam arbeitet. aber vor allem intel arbeitet an nen neuen verfahren indem die cpu lichtstrahlen nachzeichnet. das ist das raytracing....

    hier mal zur rasterisierung:
    Grafikpipeline ? Wikipedia

  • Aha.

    Ja, Intel will das Raytracing voran treiben. Dies arbeitet ganz anders als die Rasterisierung, da werden nämlich sozusagen Lichtstrahlen verfolgt. Wird bei den ganzen Offline-Sachen gemacht, wie Animationsfilme oder im Cinebench (OpenGL-Test ausgenommen :fresse:). Auch dafür gibt es einen Verusch eines speziellen Chips, aber meist wird dies von der CPU durchgeführt (allerdings gibt es in Maya auch einen GPU-Raytracer und die Intel-Larrabee-GPU kann das auch prima da sie aus vielen vielen kleinen Pentium 1 besteht).

    Also gibt es wohl keinen echten softwareseitgen Punkt wo im Spiel die Rasterisierung durchgeführt wird, wir wohl alles direkt hardwareseitig gemacht.

  • am ende muss es immer irgendeine hardware geben. aber die grafikchipentwickler haben ganze rechnerfarmen, die einen gpu chip per software nachbilden, wo man dann drauf spielen kann. allerdings in sehr geringen frameraten.

  • Muss jetz nochas loswerden, weiss ned obs hier reinpast aber.....

    Mein Dad hatfür einen Kunden ein neue Toshiba Laptop mt Dockingsttion Besorgt, die wird per USB ans Notebook angeschlossen, nun hat die Station auchn Monitorausgang, das Bild ist verblüffend gut über USB, jetz meine Frage, warum zum Teufel sind die Monitoren ned alle schon lange per USb an den Pc angeschlossen, oder eignet sich das eher nur für Desktop Arbeit???

    IBM Thinkpads: 340CSE, 360PE, 240, 701CS, 380XD, 760XD, 600X, R30, T23,T30, X30, 2x X40, X60s, T41, T43p, R50e, R52, R61, T500, X200s, X201, X220.

  • Zitat von Dirk

    am ende muss es immer irgendeine hardware geben. aber die grafikchipentwickler haben ganze rechnerfarmen, die einen gpu chip per software nachbilden, wo man dann drauf spielen kann. allerdings in sehr geringen frameraten.


    Ich würd dafür eher FPGAs nehmen ;)
    @oldie: vergleich mal die Datenraten von PCIe / DVI mit denen von USB - Merksch was?

  • rechnen wir den jux mal aus spaß durch.

    ein film auf dvd hat 25fps, bei full hd auflösung von 1920*1080
    eine unkomprimierte bmp datei dieser größe hat 6 221 824 Bytes, lasst uns mit 5,93MB rechnen.

    5,93 * 25 = 148,25

    148,25MB/s sind schon recht viel, aber das schafft sogar USB 2.0.

    Kommen wir jedoch auf 60fps oder mehr, in manchen Spielen sogar 120fps so erhalten wir 711,6MB/s, da reicht USB 2.0 nicht mehr aus...

    Hab sogar schon was mit 200fps gespielt, das ist rund ein Gigabyte pro Sekunde

    USB 2.0 hat außerdem nur 4 Leitungen, davon sind nur 2 Datenleitungen, eine rein, eine raus. Da der gemeine Monitor fast nie Daten schickt sondern lediglich empfängt (man kann aber am Rechner Monitorinformationen abrufen) bedürfen wir der Rückleitung kaum, diese kann ganz schwach sein. Die 711,6MB/s wären außerdem Digital, in analog sähe das ganze nochmals anders aus, da bräuchten wir nämlich für halbwegs brauchbare Bildqualität 3 Leitungen (RGB). Mach das mal mit USB...

    Außerdem werden über den VGA-Port 37 Volt Strom mitgegeben, das ist mit USB doch schwieriger...


    Alle Angaben wohlgemerkt mit Megabyte, nicht Megabit...

  • achtung usb arbeitet auch per polling. nen usb anschluss kann also nicht kontinuierlich daten senden. außerdem scheint es so zu sein, das das usb device so eine art virtuelle grafikkarte einrichtet und die glaub ich nicht ohne irgendwas echtes auskommt.

    mein samsung bilderrahmen kann auch per usb als bildschirm angeschlossen werden. ist aber auch eher fummelig. und die anleitung warnt ausdrücklich davor das als primären bildschirm auszuwählen.

  • Zitat

    USB 2.0 hat außerdem nur 4 Leitungen, davon sind nur 2 Datenleitungen, eine rein, eine raus.


    Ich Bedauere: FAIL
    Das ist bei usb3.0 so, bei usb 2.0 gibts +5V Daten+, Daten-, Masse
    Daten+ und - sind für die symmetrische (störsichere) Übertragung notwendig -> eigentlich nur 1 leitung

  • das gabs auch mal als pcmcia krams, und ich meine nur als wirklich zusätzlicher ausgang. hab zumindest noch nie eine standalone lösung gesehen. wäre beim homeserver interessant, weil der braucht ja keine grafikkarte ...

  • Zitat von meekee7

    rechnen wir den jux mal aus spaß durch.

    ein film auf dvd hat 25fps, bei full hd auflösung von 1920*1080
    eine unkomprimierte bmp datei dieser größe hat 6 221 824 Bytes, lasst uns mit 5,93MB rechnen.

    5,93 * 25 = 148,25

    148,25MB/s sind schon recht viel, aber das schafft sogar USB 2.0.

    USB2.0 schafft praktisch vll 30MB/s, die 480 sind MBit!

  • Hochgeschwindigkeitskameras sollen 20 Milliarden fps schaffen.
    Das machen unsere Monitore wegen der Reaktionszeiten sicher nicht mehr mit.

    Die allerallerbesten TFTs sollen Reaktionszeiten von einer Millisekunde haben, das würden ein Maximum von 1000 fps bedeuten, welche man auch im 2D-Bereich sicher nicht zustandebekäme.

    Trotzdem ergäbe das 5930MB/s, macht das mal mit USB/Firewire/eSata, das ist selbst für Glasfaser oft zu viel...

  • Von einer Hochgeschwindigkeitskamera abfilmen lassen :fresse:

    Das USB nicht wirklich als Monitorport geeignet ist haben wir ja nun festgestellt.

    Zurück zum Anfang.

    Hardwareseitig wird das Spiel in der GPU gerendert (oder in mehreren GPUs), aber wo ist da softwareseitig was? Ich rede von dem hier normalen Verfahren der Rasterisierung, nicht solche speziellen Sachen wie Quake 4 Raytraced.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!