Beiträge von ARCHIVE_Coda

    Fullscreen oder Windowed? Die Sache ist halt es gibt auch einen gewissen Present-Overhead, d.h. die GPU kommt egal was du renderst wohl nicht viel über 300FPS.

    D.h. man sollte es eher mit sehr vielen Dreiecken versuchen und vor allem den Vertex-Cache optimieren, d.h. indizierte Geometrie und vorher durch ATI Tootle oder sowas durchlassen.

    Du solltest übrigens auch für dynamische Vertexdaten VBOs verwenden, die musst du dann halt entsprechend anlegen, damit sie im AGP- und nicht im Videospeicher liegen.

    Jo, trotzdem wunderts mich warum keine game engine die ich kenne soviel schafft. Weder die von 3DGameStudio A5, noch Irrlicht, Ogre, Dreamotion oder Blitz oder meine Engines. Meistens hängts dann bei 150 FPS bei 50000 Dreiecken und das ist zu wenig.


    Es kommt drauf an wie du renderst. Ogre verwendet Hardware-Vertexbuffer und sollte das durchaus schaffen.

    Mit OpenGL bekomm ich im leeren Zustand nichtmal richtig viel FPS. Mit einem Dreieck sinkts dann nochmal drastisch auf 500 und dann gehts noch weiter runter. Bei einer GeForce 6600GT kommt bei einem Dreieck so ca. 300FPS raus.


    Mit welcher Methode renderst du? glVertex? CVAs? VBOs?

    Falls ersteres ist mir das klar.

    Mal angenommen wir haben eine Grafikkarte mit derzeit geläufigen 600 MHz (Kerntaktfrequenz).

    Wenn wir dann pro Dreieck etwa 10 Maschinenzyklen brauchen kommen wir auf 0.00000167 Sekunden * 10 Zyklen = 0.0000167 Sekunden. 30000 Dreiecke hat unsere Szene desshalb sind es dann 0.5 Sekunden die wir zum rendern dieser benötigen und da wir noch tonnenweise Shader verarbeiten brauchen wir noch etwas länger. Vermutlich bauen die Engines dann ein Lowpolymodell daraus und fügen eine neue Normalmap hinzu, was aber gröbster Schwachsinn ist, da kann es doch gleich der Modeller machen.

    Achja: Das ist nur eine untertriebene Rechnung, denn es kommt noch das auslesen aus dem Video-RAM, das übertragen auf die Grafikkarte und noch einiges anderes hinzu.


    Die Rechnung stimmt nur nicht. 1/600.000.000Hz ist nämlich nicht 0.00000167=0.167*10^-5 sondern 0.167*10^-8. Sind ja nur 3 Zehnerpotenzen.

    10 Cycles/Tri wären 60MTris/s bei 600Mhz, also bei 30FPS immer noch 2 Mio. pro Frame.

    Mit reinem Flat-Shading bekommst du durch eine Radeon 4870 bei 725Mhz wenn du das selbe Dreieck in optimaler Tri-Order immer wieder renderst auch 725MTri/s durch (Das Tri-Setup limitiert auf 1 Tri/Cycle). Ist natürlich ein rein theroetisches Konstrukt, aber es läuft durch.

    Die Shader-ALUs könnten sogar noch mehr transformieren, denn das Ding hat 160 parallele Vec5-ALUs. Für MVP*Vertex braucht man 4 Takte pro Transformation in einer ALU (4 DOT4 oder 4 MAD, je nach Ordnung der Matrix). Das macht dann also summa sumarum 40 Tris/Takt, also theoretische 29 Mrd. Tris/s reine Transformationsleistung im Vertexshader.

    Da kommt natürlich dann aber auch noch der Pixelshader dazu und evtl. Geometry-Shader dazu.

    Crysis pusht auch schon mal 2,8Mio/Frame z.B:
    http://www.mental-asylum.de/files2/crysistris.jpg